@pie-lib/config-ui 12.0.0-beta.5 → 12.1.0-next.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 (139) hide show
  1. package/CHANGELOG.json +8 -1653
  2. package/CHANGELOG.md +345 -4
  3. package/LICENSE.md +5 -0
  4. package/NEXT.CHANGELOG.json +1 -0
  5. package/lib/__tests__/alert-dialog.test.js +262 -0
  6. package/lib/__tests__/checkbox.test.js +227 -0
  7. package/lib/__tests__/choice-utils.test.js +14 -0
  8. package/lib/__tests__/form-section.test.js +252 -0
  9. package/lib/__tests__/help.test.js +270 -0
  10. package/lib/__tests__/input.test.js +268 -0
  11. package/lib/__tests__/langs.test.js +541 -0
  12. package/lib/__tests__/number-text-field-custom.test.js +362 -0
  13. package/lib/__tests__/number-text-field.test.js +421 -0
  14. package/lib/__tests__/radio-with-label.test.js +233 -0
  15. package/lib/__tests__/settings-panel.test.js +184 -0
  16. package/lib/__tests__/settings.test.js +653 -0
  17. package/lib/__tests__/tabs.test.js +211 -0
  18. package/lib/__tests__/two-choice.test.js +124 -0
  19. package/lib/__tests__/with-stateful-model.test.js +221 -0
  20. package/lib/alert-dialog.js +41 -11
  21. package/lib/alert-dialog.js.map +1 -1
  22. package/lib/checkbox.js +59 -49
  23. package/lib/checkbox.js.map +1 -1
  24. package/lib/choice-configuration/__tests__/feedback-menu.test.js +287 -0
  25. package/lib/choice-configuration/__tests__/index.test.js +253 -0
  26. package/lib/choice-configuration/feedback-menu.js +25 -27
  27. package/lib/choice-configuration/feedback-menu.js.map +1 -1
  28. package/lib/choice-configuration/index.js +183 -186
  29. package/lib/choice-configuration/index.js.map +1 -1
  30. package/lib/choice-utils.js +6 -8
  31. package/lib/choice-utils.js.map +1 -1
  32. package/lib/feedback-config/__tests__/feedback-config.test.js +201 -0
  33. package/lib/feedback-config/__tests__/feedback-selector.test.js +177 -0
  34. package/lib/feedback-config/feedback-selector.js +70 -74
  35. package/lib/feedback-config/feedback-selector.js.map +1 -1
  36. package/lib/feedback-config/group.js +23 -26
  37. package/lib/feedback-config/group.js.map +1 -1
  38. package/lib/feedback-config/index.js +42 -45
  39. package/lib/feedback-config/index.js.map +1 -1
  40. package/lib/form-section.js +32 -26
  41. package/lib/form-section.js.map +1 -1
  42. package/lib/help.js +38 -48
  43. package/lib/help.js.map +1 -1
  44. package/lib/index.js +2 -3
  45. package/lib/index.js.map +1 -1
  46. package/lib/input.js +13 -18
  47. package/lib/input.js.map +1 -1
  48. package/lib/inputs.js +59 -68
  49. package/lib/inputs.js.map +1 -1
  50. package/lib/langs.js +57 -71
  51. package/lib/langs.js.map +1 -1
  52. package/lib/layout/__tests__/config.layout.test.js +70 -0
  53. package/lib/layout/__tests__/layout-content.test.js +6 -0
  54. package/lib/layout/config-layout.js +79 -48
  55. package/lib/layout/config-layout.js.map +1 -1
  56. package/lib/layout/index.js +1 -1
  57. package/lib/layout/index.js.map +1 -1
  58. package/lib/layout/layout-contents.js +59 -61
  59. package/lib/layout/layout-contents.js.map +1 -1
  60. package/lib/layout/settings-box.js +26 -34
  61. package/lib/layout/settings-box.js.map +1 -1
  62. package/lib/mui-box/index.js +42 -51
  63. package/lib/mui-box/index.js.map +1 -1
  64. package/lib/number-text-field-custom.js +152 -90
  65. package/lib/number-text-field-custom.js.map +1 -1
  66. package/lib/number-text-field.js +75 -64
  67. package/lib/number-text-field.js.map +1 -1
  68. package/lib/radio-with-label.js +31 -17
  69. package/lib/radio-with-label.js.map +1 -1
  70. package/lib/settings/display-size.js +17 -21
  71. package/lib/settings/display-size.js.map +1 -1
  72. package/lib/settings/index.js +14 -20
  73. package/lib/settings/index.js.map +1 -1
  74. package/lib/settings/panel.js +141 -142
  75. package/lib/settings/panel.js.map +1 -1
  76. package/lib/settings/settings-radio-label.js +30 -17
  77. package/lib/settings/settings-radio-label.js.map +1 -1
  78. package/lib/settings/toggle.js +40 -26
  79. package/lib/settings/toggle.js.map +1 -1
  80. package/lib/tabs/index.js +19 -31
  81. package/lib/tabs/index.js.map +1 -1
  82. package/lib/tags-input/__tests__/index.test.js +183 -0
  83. package/lib/tags-input/index.js +50 -62
  84. package/lib/tags-input/index.js.map +1 -1
  85. package/lib/two-choice.js +34 -44
  86. package/lib/two-choice.js.map +1 -1
  87. package/lib/with-stateful-model.js +9 -13
  88. package/lib/with-stateful-model.js.map +1 -1
  89. package/package.json +14 -11
  90. package/src/__tests__/alert-dialog.test.jsx +283 -0
  91. package/src/__tests__/checkbox.test.jsx +249 -0
  92. package/src/__tests__/choice-utils.test.js +12 -0
  93. package/src/__tests__/form-section.test.jsx +334 -0
  94. package/src/__tests__/help.test.jsx +184 -0
  95. package/src/__tests__/input.test.jsx +192 -0
  96. package/src/__tests__/langs.test.jsx +457 -0
  97. package/src/__tests__/number-text-field-custom.test.jsx +438 -0
  98. package/src/__tests__/number-text-field.test.jsx +341 -0
  99. package/src/__tests__/radio-with-label.test.jsx +259 -0
  100. package/src/__tests__/settings-panel.test.js +187 -0
  101. package/src/__tests__/settings.test.jsx +515 -0
  102. package/src/__tests__/tabs.test.jsx +193 -0
  103. package/src/__tests__/two-choice.test.js +110 -0
  104. package/src/__tests__/with-stateful-model.test.jsx +145 -0
  105. package/src/alert-dialog.jsx +30 -8
  106. package/src/checkbox.jsx +43 -37
  107. package/src/choice-configuration/__tests__/feedback-menu.test.jsx +163 -0
  108. package/src/choice-configuration/__tests__/index.test.jsx +234 -0
  109. package/src/choice-configuration/feedback-menu.jsx +6 -6
  110. package/src/choice-configuration/index.jsx +208 -199
  111. package/src/feedback-config/__tests__/feedback-config.test.jsx +141 -0
  112. package/src/feedback-config/__tests__/feedback-selector.test.jsx +97 -0
  113. package/src/feedback-config/feedback-selector.jsx +50 -55
  114. package/src/feedback-config/group.jsx +21 -22
  115. package/src/feedback-config/index.jsx +27 -29
  116. package/src/form-section.jsx +26 -18
  117. package/src/help.jsx +20 -28
  118. package/src/input.jsx +1 -1
  119. package/src/inputs.jsx +35 -44
  120. package/src/langs.jsx +41 -46
  121. package/src/layout/__tests__/config.layout.test.jsx +59 -0
  122. package/src/layout/__tests__/layout-content.test.jsx +3 -0
  123. package/src/layout/config-layout.jsx +53 -23
  124. package/src/layout/layout-contents.jsx +38 -40
  125. package/src/layout/settings-box.jsx +16 -19
  126. package/src/mui-box/index.jsx +35 -43
  127. package/src/number-text-field-custom.jsx +117 -65
  128. package/src/number-text-field.jsx +51 -34
  129. package/src/radio-with-label.jsx +26 -10
  130. package/src/settings/display-size.jsx +12 -11
  131. package/src/settings/index.js +2 -1
  132. package/src/settings/panel.jsx +101 -92
  133. package/src/settings/settings-radio-label.jsx +26 -10
  134. package/src/settings/toggle.jsx +37 -18
  135. package/src/tabs/index.jsx +8 -8
  136. package/src/tags-input/__tests__/index.test.jsx +113 -0
  137. package/src/tags-input/index.jsx +35 -38
  138. package/src/two-choice.jsx +15 -19
  139. package/README.md +0 -12
@@ -8,33 +8,32 @@ exports["default"] = exports.Panel = void 0;
8
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
12
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
11
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
14
12
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
13
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
14
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
16
15
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
18
17
  var _react = _interopRequireDefault(require("react"));
19
18
  var _propTypes = _interopRequireDefault(require("prop-types"));
20
- var _styles = require("@material-ui/core/styles");
21
19
  var _get2 = _interopRequireDefault(require("lodash/get"));
22
20
  var _set = _interopRequireDefault(require("lodash/set"));
23
- var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
24
- var _Input = _interopRequireDefault(require("@material-ui/core/Input"));
25
- var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
21
+ var _styles = require("@mui/material/styles");
22
+ var _Select = _interopRequireDefault(require("@mui/material/Select"));
23
+ var _Input = _interopRequireDefault(require("@mui/material/Input"));
24
+ var _MenuItem = _interopRequireDefault(require("@mui/material/MenuItem"));
25
+ var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
26
26
  var _debug = _interopRequireDefault(require("debug"));
27
27
  var _toggle = _interopRequireDefault(require("./toggle"));
28
28
  var _twoChoice = require("../two-choice");
29
29
  var _settingsRadioLabel = _interopRequireDefault(require("./settings-radio-label"));
30
- var _index = require("../index");
30
+ var _numberTextField = _interopRequireDefault(require("../number-text-field"));
31
31
  var _checkbox = _interopRequireDefault(require("../checkbox"));
32
- var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
33
32
  var _excluded = ["isConfigProperty"];
34
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
35
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
36
- 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; }
37
- 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; }
33
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
34
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
35
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
36
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
38
37
  var log = (0, _debug["default"])('pie-lib:config-ui:settings:panel');
39
38
  var labelValue = {
40
39
  label: _propTypes["default"].string,
@@ -62,14 +61,29 @@ CheckboxChoice.propTypes = {
62
61
  value: _propTypes["default"].bool,
63
62
  onChange: _propTypes["default"].func
64
63
  };
65
- var Radio = function Radio(_ref2) {
66
- var classes = _ref2.classes,
67
- label = _ref2.label,
68
- value = _ref2.value,
69
- onChange = _ref2.onChange,
70
- choices = _ref2.choices;
71
- return /*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
72
- className: classes.radioSettings,
64
+ var StyledNChoice = (0, _styles.styled)(_twoChoice.NChoice)(function (_ref2) {
65
+ var theme = _ref2.theme;
66
+ return {
67
+ marginTop: theme.spacing(0.5),
68
+ paddingBottom: theme.spacing(0.5),
69
+ width: '100%',
70
+ '& > label': {
71
+ color: 'rgba(0, 0, 0, 0.89)',
72
+ transform: 'translate(0, 10px) scale(1)',
73
+ fontSize: '18px',
74
+ marginTop: theme.spacing(2.5)
75
+ },
76
+ '& > div': {
77
+ marginTop: theme.spacing(2.5)
78
+ }
79
+ };
80
+ });
81
+ var Radio = function Radio(_ref3) {
82
+ var label = _ref3.label,
83
+ value = _ref3.value,
84
+ onChange = _ref3.onChange,
85
+ choices = _ref3.choices;
86
+ return /*#__PURE__*/_react["default"].createElement(StyledNChoice, {
73
87
  direction: "horizontal",
74
88
  customLabel: _settingsRadioLabel["default"],
75
89
  value: value,
@@ -81,113 +95,97 @@ var Radio = function Radio(_ref2) {
81
95
  Radio.propTypes = _objectSpread(_objectSpread({}, baseTypes), {}, {
82
96
  choices: _propTypes["default"].arrayOf(_propTypes["default"].shape(labelValue))
83
97
  });
84
- var StyledRadio = (0, _styles.withStyles)(function (theme) {
98
+ var StyledRadio = Radio;
99
+ var StyledLabel = (0, _styles.styled)('p')(function (_ref4) {
100
+ var theme = _ref4.theme;
85
101
  return {
86
- radioSettings: {
87
- marginTop: theme.spacing.unit / 2,
88
- paddingBottom: theme.spacing.unit / 2,
89
- width: '100%',
90
- '& > label': {
91
- color: 'rgba(0, 0, 0, 0.89)',
92
- transform: 'translate(0, 10px) scale(1)',
93
- fontSize: '14px'
94
- },
95
- '& > div': {
96
- marginTop: theme.spacing.unit * 2.5
97
- }
98
- },
99
- label: {
100
- display: 'none'
101
- }
102
+ margin: 0,
103
+ fontSize: theme.typography.fontSize
102
104
  };
103
- })(Radio);
104
- var Dropdown = (0, _styles.withStyles)(function (theme) {
105
+ });
106
+ var StyledSelect = (0, _styles.styled)(_Select["default"])(function (_ref5) {
107
+ var theme = _ref5.theme;
105
108
  return {
106
- label: {
107
- margin: 0,
108
- fontSize: theme.typography.fontSize
109
- },
110
- wrapper: {
111
- marginTop: theme.spacing.unit / 2,
112
- border: '2px solid lightgrey',
113
- borderRadius: '4px',
114
- padding: "0 ".concat(theme.spacing.unit, "px")
115
- }
109
+ marginTop: theme.spacing(0.5),
110
+ border: '2px solid lightgrey',
111
+ padding: "0 ".concat(theme.spacing(1)),
112
+ borderRadius: '4px'
116
113
  };
117
- })(function (_ref3) {
118
- var classes = _ref3.classes,
119
- label = _ref3.label,
120
- value = _ref3.value,
121
- _onChange2 = _ref3.onChange,
122
- _ref3$choices = _ref3.choices,
123
- choices = _ref3$choices === void 0 ? [] : _ref3$choices;
114
+ });
115
+ var Dropdown = function Dropdown(_ref6) {
116
+ var label = _ref6.label,
117
+ value = _ref6.value,
118
+ _onChange2 = _ref6.onChange,
119
+ _ref6$choices = _ref6.choices,
120
+ choices = _ref6$choices === void 0 ? [] : _ref6$choices;
124
121
  var getItemLabel = function getItemLabel(l) {
125
122
  return typeof l === 'string' ? l : l.label;
126
123
  };
127
124
  var getItemValue = function getItemValue(l) {
128
125
  return typeof l === 'string' ? l : l.value;
129
126
  };
130
- return /*#__PURE__*/_react["default"].createElement("div", null, label && /*#__PURE__*/_react["default"].createElement("p", {
131
- className: classes.label
132
- }, label), /*#__PURE__*/_react["default"].createElement(_Select["default"], {
133
- className: classes.wrapper,
127
+ return /*#__PURE__*/_react["default"].createElement("div", null, label && /*#__PURE__*/_react["default"].createElement(StyledLabel, null, label), /*#__PURE__*/_react["default"].createElement(StyledSelect, {
134
128
  value: value || choices && choices[0],
135
- onChange: function onChange(_ref4) {
136
- var target = _ref4.target;
129
+ onChange: function onChange(_ref7) {
130
+ var target = _ref7.target;
137
131
  return _onChange2(target.value);
138
132
  },
139
133
  input: /*#__PURE__*/_react["default"].createElement(_Input["default"], {
140
134
  id: "dropdown-".concat(label)
141
135
  }),
142
- disableUnderline: true
136
+ disableUnderline: true,
137
+ MenuProps: {
138
+ transitionDuration: {
139
+ enter: 225,
140
+ exit: 195
141
+ }
142
+ }
143
143
  }, choices.map(function (l, index) {
144
144
  return /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
145
145
  key: index,
146
146
  value: getItemValue(l)
147
147
  }, getItemLabel(l));
148
148
  })));
149
- });
149
+ };
150
150
  Dropdown.propTypes = _objectSpread(_objectSpread({}, baseTypes), {}, {
151
151
  choices: _propTypes["default"].arrayOf(_propTypes["default"].string)
152
152
  });
153
- var TextField = (0, _styles.withStyles)(function (theme) {
153
+ var StyledTypography = (0, _styles.styled)(_Typography["default"])(function (_ref8) {
154
+ var theme = _ref8.theme;
154
155
  return {
155
- field: {
156
- marginRight: theme.spacing.unit * 3,
157
- marginTop: theme.spacing.unit
158
- }
156
+ marginRight: theme.spacing(3),
157
+ marginTop: theme.spacing(1)
159
158
  };
160
- })(function (_ref5) {
161
- var classes = _ref5.classes,
162
- label = _ref5.label;
163
- return /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
164
- className: classes.field
165
- }, label);
166
159
  });
167
- var NumberField = (0, _styles.withStyles)(function (theme) {
160
+ var TextField = function TextField(_ref9) {
161
+ var label = _ref9.label;
162
+ return /*#__PURE__*/_react["default"].createElement(StyledTypography, null, label);
163
+ };
164
+ var StyledNumberTextField = (0, _styles.styled)(_numberTextField["default"])(function (_ref0) {
165
+ var theme = _ref0.theme;
168
166
  return {
169
- field: {
170
- width: '35%',
171
- marginRight: theme.spacing.unit * 3,
172
- marginTop: theme.spacing.unit
173
- },
174
- wrapper: {
175
- marginTop: theme.spacing.unit / 2,
167
+ width: '35%',
168
+ marginRight: theme.spacing(3),
169
+ marginTop: theme.spacing(1),
170
+ '& .MuiInputBase-root': {
171
+ marginTop: theme.spacing(0.5),
176
172
  border: '2px solid lightgrey',
177
173
  borderRadius: '4px',
178
- padding: "0 ".concat(theme.spacing.unit, "px")
174
+ padding: "0 ".concat(theme.spacing(1)),
175
+ backgroundColor: 'transparent'
179
176
  }
180
177
  };
181
- })(function (_ref6) {
182
- var classes = _ref6.classes,
183
- label = _ref6.label,
184
- value = _ref6.value,
185
- _ref6$onChange = _ref6.onChange,
186
- _onChange3 = _ref6$onChange === void 0 ? function () {} : _ref6$onChange,
187
- suffix = _ref6.suffix,
188
- min = _ref6.min,
189
- max = _ref6.max;
190
- return /*#__PURE__*/_react["default"].createElement(_index.NumberTextField, {
178
+ });
179
+ var NumberField = function NumberField(_ref1) {
180
+ var label = _ref1.label,
181
+ value = _ref1.value,
182
+ _ref1$onChange = _ref1.onChange,
183
+ _onChange3 = _ref1$onChange === void 0 ? function () {} : _ref1$onChange,
184
+ suffix = _ref1.suffix,
185
+ min = _ref1.min,
186
+ max = _ref1.max;
187
+ return /*#__PURE__*/_react["default"].createElement(StyledNumberTextField, {
188
+ variant: 'standard',
191
189
  label: label || 'Label',
192
190
  value: value,
193
191
  max: max,
@@ -196,27 +194,26 @@ var NumberField = (0, _styles.withStyles)(function (theme) {
196
194
  return _onChange3(value);
197
195
  },
198
196
  suffix: suffix,
199
- className: classes.field,
200
197
  showErrorWhenOutsideRange: true,
201
- inputClassName: classes.wrapper,
202
198
  disableUnderline: true
203
199
  });
204
- });
200
+ };
205
201
  NumberField.propTypes = _objectSpread(_objectSpread({}, baseTypes), {}, {
206
- classes: _propTypes["default"].object,
207
202
  suffix: _propTypes["default"].string,
208
203
  min: _propTypes["default"].number,
209
204
  max: _propTypes["default"].number,
210
205
  value: _propTypes["default"].number
211
206
  });
212
207
  TextField.propTypes = _objectSpread({}, baseTypes);
213
- var ToggleWrapper = function ToggleWrapper(_ref7) {
214
- var label = _ref7.label,
215
- value = _ref7.value,
216
- onChange = _ref7.onChange;
208
+ var ToggleWrapper = function ToggleWrapper(_ref10) {
209
+ var disabled = _ref10.disabled,
210
+ label = _ref10.label,
211
+ value = _ref10.value,
212
+ onChange = _ref10.onChange;
217
213
  return /*#__PURE__*/_react["default"].createElement(_toggle["default"], {
218
214
  label: label,
219
215
  checked: !!value,
216
+ disabled: !!disabled,
220
217
  toggle: onChange
221
218
  });
222
219
  };
@@ -231,25 +228,30 @@ var tagMap = {
231
228
  checkbox: CheckboxChoice,
232
229
  textField: TextField
233
230
  };
234
- var Group = (0, _styles.withStyles)(function (theme) {
231
+ var StyledGroup = (0, _styles.styled)('div')(function (_ref11) {
232
+ var theme = _ref11.theme;
235
233
  return {
236
- group: {
237
- margin: "0 0 ".concat(theme.spacing.unit * 2, "px 0")
238
- },
239
- groupHeader: {
240
- color: '#495B8F',
241
- fontSize: theme.typography.fontSize + 2,
242
- fontWeight: 600,
243
- marginBottom: theme.spacing.unit
244
- },
245
- numberFields: {
246
- fontSize: theme.typography.fontSize,
247
- marginBottom: 0
248
- }
234
+ margin: "0 0 ".concat(theme.spacing(2), " 0")
235
+ };
236
+ });
237
+ var StyledGroupHeader = (0, _styles.styled)('div')(function (_ref12) {
238
+ var theme = _ref12.theme;
239
+ return {
240
+ color: '#495B8F',
241
+ fontSize: theme.typography.fontSize + 2,
242
+ fontWeight: 600,
243
+ marginBottom: theme.spacing(1)
249
244
  };
250
- })(function (props) {
251
- var classes = props.classes,
252
- model = props.model,
245
+ });
246
+ var StyledNumberFields = (0, _styles.styled)('p')(function (_ref13) {
247
+ var theme = _ref13.theme;
248
+ return {
249
+ fontSize: theme.typography.fontSize,
250
+ marginBottom: 0
251
+ };
252
+ });
253
+ var Group = function Group(props) {
254
+ var model = props.model,
253
255
  label = props.label,
254
256
  group = props.group,
255
257
  configuration = props.configuration,
@@ -290,9 +292,7 @@ var Group = (0, _styles.withStyles)(function (theme) {
290
292
  if (type === 'numberFields') {
291
293
  return /*#__PURE__*/_react["default"].createElement("div", {
292
294
  key: "numberField-".concat(label)
293
- }, /*#__PURE__*/_react["default"].createElement("p", {
294
- className: classes.numberFields
295
- }, label), Object.keys(fields).map(function (fieldKey) {
295
+ }, /*#__PURE__*/_react["default"].createElement(StyledNumberFields, null, label), Object.keys(fields).map(function (fieldKey) {
296
296
  return getTag(group, "".concat(key, ".").concat(fieldKey), "".concat(key, ".fields.").concat(fieldKey));
297
297
  }));
298
298
  }
@@ -307,25 +307,26 @@ var Group = (0, _styles.withStyles)(function (theme) {
307
307
  // if type is toggle, radio, dropdown, numberField or numberText
308
308
  return getTag(group, key);
309
309
  };
310
- return /*#__PURE__*/_react["default"].createElement("div", {
311
- className: classes.group
312
- }, /*#__PURE__*/_react["default"].createElement("div", {
313
- className: classes.groupHeader
314
- }, label), Object.keys(group).map(function (key) {
310
+ return /*#__PURE__*/_react["default"].createElement(StyledGroup, null, /*#__PURE__*/_react["default"].createElement(StyledGroupHeader, null, label), Object.keys(group).map(function (key) {
315
311
  return content(group, key);
316
312
  }));
317
- });
318
- var Panel = /*#__PURE__*/function (_React$Component) {
319
- (0, _inherits2["default"])(Panel, _React$Component);
320
- var _super = _createSuper(Panel);
313
+ };
314
+ Group.propTypes = {
315
+ model: _propTypes["default"].object,
316
+ label: _propTypes["default"].string,
317
+ group: _propTypes["default"].object,
318
+ configuration: _propTypes["default"].object,
319
+ onChange: _propTypes["default"].func
320
+ };
321
+ var Panel = exports.Panel = /*#__PURE__*/function (_React$Component) {
321
322
  function Panel() {
322
323
  var _this;
323
324
  (0, _classCallCheck2["default"])(this, Panel);
324
325
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
325
326
  args[_key] = arguments[_key];
326
327
  }
327
- _this = _super.call.apply(_super, [this].concat(args));
328
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "change", function (key, value) {
328
+ _this = _callSuper(this, Panel, [].concat(args));
329
+ (0, _defineProperty2["default"])(_this, "change", function (key, value) {
329
330
  var isConfigProperty = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
330
331
  log('[changeModel]', key, value);
331
332
  var _this$props = _this.props,
@@ -343,7 +344,8 @@ var Panel = /*#__PURE__*/function (_React$Component) {
343
344
  });
344
345
  return _this;
345
346
  }
346
- (0, _createClass2["default"])(Panel, [{
347
+ (0, _inherits2["default"])(Panel, _React$Component);
348
+ return (0, _createClass2["default"])(Panel, [{
347
349
  key: "render",
348
350
  value: function render() {
349
351
  var _this2 = this;
@@ -354,9 +356,9 @@ var Panel = /*#__PURE__*/function (_React$Component) {
354
356
  modal = _this$props2.modal;
355
357
  log('render:', model);
356
358
  var renderedGroups = Object.keys(groups || {}).map(function (group) {
357
- var showGroup = Object.entries(groups[group]).some(function (_ref8) {
358
- var _ref9 = (0, _slicedToArray2["default"])(_ref8, 2),
359
- propVal = _ref9[1];
359
+ var showGroup = Object.entries(groups[group]).some(function (_ref14) {
360
+ var _ref15 = (0, _slicedToArray2["default"])(_ref14, 2),
361
+ propVal = _ref15[1];
360
362
  return !!propVal;
361
363
  });
362
364
  if (showGroup) {
@@ -374,9 +376,7 @@ var Panel = /*#__PURE__*/function (_React$Component) {
374
376
  return /*#__PURE__*/_react["default"].createElement("div", null, renderedGroups, modal);
375
377
  }
376
378
  }]);
377
- return Panel;
378
379
  }(_react["default"].Component);
379
- exports.Panel = Panel;
380
380
  (0, _defineProperty2["default"])(Panel, "propTypes", {
381
381
  model: _propTypes["default"].object,
382
382
  configuration: _propTypes["default"].object,
@@ -389,6 +389,5 @@ exports.Panel = Panel;
389
389
  onChangeModel: function onChangeModel() {},
390
390
  onChangeConfiguration: function onChangeConfiguration() {}
391
391
  });
392
- var _default = Panel;
393
- exports["default"] = _default;
394
- //# sourceMappingURL=panel.js.map
392
+ var _default = exports["default"] = Panel;
393
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfZ2V0MiIsIl9zZXQiLCJfc3R5bGVzIiwiX1NlbGVjdCIsIl9JbnB1dCIsIl9NZW51SXRlbSIsIl9UeXBvZ3JhcGh5IiwiX2RlYnVnIiwiX3RvZ2dsZSIsIl90d29DaG9pY2UiLCJfc2V0dGluZ3NSYWRpb0xhYmVsIiwiX251bWJlclRleHRGaWVsZCIsIl9jaGVja2JveCIsIl9leGNsdWRlZCIsIl9jYWxsU3VwZXIiLCJ0IiwibyIsImUiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwib3duS2V5cyIsInIiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwibG9nIiwiZGVidWciLCJsYWJlbFZhbHVlIiwibGFiZWwiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJ2YWx1ZSIsImJhc2VUeXBlcyIsIm9uQ2hhbmdlIiwiZnVuYyIsIkNoZWNrYm94Q2hvaWNlIiwiX3JlZiIsImNyZWF0ZUVsZW1lbnQiLCJjaGVja2VkIiwiZXZlbnQiLCJ0YXJnZXQiLCJwcm9wVHlwZXMiLCJib29sIiwiU3R5bGVkTkNob2ljZSIsInN0eWxlZCIsIk5DaG9pY2UiLCJfcmVmMiIsInRoZW1lIiwibWFyZ2luVG9wIiwic3BhY2luZyIsInBhZGRpbmdCb3R0b20iLCJ3aWR0aCIsImNvbG9yIiwidHJhbnNmb3JtIiwiZm9udFNpemUiLCJSYWRpbyIsIl9yZWYzIiwiY2hvaWNlcyIsImRpcmVjdGlvbiIsImN1c3RvbUxhYmVsIiwiU2V0dGluZ3NSYWRpb0xhYmVsIiwiaGVhZGVyIiwib3B0cyIsImFycmF5T2YiLCJzaGFwZSIsIlN0eWxlZFJhZGlvIiwiU3R5bGVkTGFiZWwiLCJfcmVmNCIsIm1hcmdpbiIsInR5cG9ncmFwaHkiLCJTdHlsZWRTZWxlY3QiLCJTZWxlY3QiLCJfcmVmNSIsImJvcmRlciIsInBhZGRpbmciLCJjb25jYXQiLCJib3JkZXJSYWRpdXMiLCJEcm9wZG93biIsIl9yZWY2IiwiX3JlZjYkY2hvaWNlcyIsImdldEl0ZW1MYWJlbCIsImwiLCJnZXRJdGVtVmFsdWUiLCJfcmVmNyIsImlucHV0IiwiaWQiLCJkaXNhYmxlVW5kZXJsaW5lIiwiTWVudVByb3BzIiwidHJhbnNpdGlvbkR1cmF0aW9uIiwiZW50ZXIiLCJleGl0IiwibWFwIiwiaW5kZXgiLCJrZXkiLCJTdHlsZWRUeXBvZ3JhcGh5IiwiVHlwb2dyYXBoeSIsIl9yZWY4IiwibWFyZ2luUmlnaHQiLCJUZXh0RmllbGQiLCJfcmVmOSIsIlN0eWxlZE51bWJlclRleHRGaWVsZCIsIk51bWJlclRleHRGaWVsZCIsIl9yZWYwIiwiYmFja2dyb3VuZENvbG9yIiwiTnVtYmVyRmllbGQiLCJfcmVmMSIsIl9yZWYxJG9uQ2hhbmdlIiwic3VmZml4IiwibWluIiwibWF4IiwidmFyaWFudCIsImV2Iiwic2hvd0Vycm9yV2hlbk91dHNpZGVSYW5nZSIsIm51bWJlciIsIlRvZ2dsZVdyYXBwZXIiLCJfcmVmMTAiLCJkaXNhYmxlZCIsInRvZ2dsZSIsInRhZ01hcCIsInJhZGlvIiwiZHJvcGRvd24iLCJudW1iZXJGaWVsZCIsImNoZWNrYm94IiwidGV4dEZpZWxkIiwiU3R5bGVkR3JvdXAiLCJfcmVmMTEiLCJTdHlsZWRHcm91cEhlYWRlciIsIl9yZWYxMiIsImZvbnRXZWlnaHQiLCJtYXJnaW5Cb3R0b20iLCJTdHlsZWROdW1iZXJGaWVsZHMiLCJfcmVmMTMiLCJHcm91cCIsInByb3BzIiwibW9kZWwiLCJncm91cCIsImNvbmZpZ3VyYXRpb24iLCJnZXRUYWciLCJpbm5lcktleSIsIl9nZXQiLCJnZXQiLCJpc0NvbmZpZ1Byb3BlcnR5IiwicHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJ0YWdQcm9wcyIsIlRhZyIsInR5cGUiLCJfZXh0ZW5kczIiLCJ2IiwiY29udGVudCIsImN1cnJlbnRHcm91cCIsImZpZWxkcyIsImZpZWxkS2V5IiwiY2hvaWNlS2V5Iiwib2JqZWN0IiwiUGFuZWwiLCJleHBvcnRzIiwiX1JlYWN0JENvbXBvbmVudCIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwidW5kZWZpbmVkIiwiX3RoaXMkcHJvcHMiLCJvbkNoYW5nZU1vZGVsIiwib25DaGFuZ2VDb25maWd1cmF0aW9uIiwic2V0IiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJyZW5kZXIiLCJfdGhpczIiLCJfdGhpcyRwcm9wczIiLCJncm91cHMiLCJtb2RhbCIsInJlbmRlcmVkR3JvdXBzIiwic2hvd0dyb3VwIiwiZW50cmllcyIsInNvbWUiLCJfcmVmMTQiLCJfcmVmMTUiLCJfc2xpY2VkVG9BcnJheTIiLCJwcm9wVmFsIiwiY2hhbmdlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXR0aW5ncy9wYW5lbC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IHNldCBmcm9tICdsb2Rhc2gvc2V0JztcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvc3R5bGVzJztcbmltcG9ydCBTZWxlY3QgZnJvbSAnQG11aS9tYXRlcmlhbC9TZWxlY3QnO1xuaW1wb3J0IElucHV0IGZyb20gJ0BtdWkvbWF0ZXJpYWwvSW5wdXQnO1xuaW1wb3J0IE1lbnVJdGVtIGZyb20gJ0BtdWkvbWF0ZXJpYWwvTWVudUl0ZW0nO1xuaW1wb3J0IFR5cG9ncmFwaHkgZnJvbSAnQG11aS9tYXRlcmlhbC9UeXBvZ3JhcGh5JztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5cbmltcG9ydCBUb2dnbGUgZnJvbSAnLi90b2dnbGUnO1xuaW1wb3J0IHsgTkNob2ljZSB9IGZyb20gJy4uL3R3by1jaG9pY2UnO1xuaW1wb3J0IFNldHRpbmdzUmFkaW9MYWJlbCBmcm9tICcuL3NldHRpbmdzLXJhZGlvLWxhYmVsJztcbmltcG9ydCBOdW1iZXJUZXh0RmllbGQgZnJvbSAnLi4vbnVtYmVyLXRleHQtZmllbGQnO1xuaW1wb3J0IENoZWNrYm94IGZyb20gJy4uL2NoZWNrYm94JztcblxuY29uc3QgbG9nID0gZGVidWcoJ3BpZS1saWI6Y29uZmlnLXVpOnNldHRpbmdzOnBhbmVsJyk7XG5cbmNvbnN0IGxhYmVsVmFsdWUgPSB7XG4gIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB2YWx1ZTogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbmNvbnN0IGJhc2VUeXBlcyA9IHtcbiAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHZhbHVlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5jb25zdCBDaGVja2JveENob2ljZSA9ICh7IGxhYmVsLCB2YWx1ZSwgb25DaGFuZ2UgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxDaGVja2JveFxuICAgICAgY2hlY2tlZD17dmFsdWV9XG4gICAgICBsYWJlbD17bGFiZWx9XG4gICAgICBvbkNoYW5nZT17KGV2ZW50KSA9PiB7XG4gICAgICAgIG9uQ2hhbmdlKGV2ZW50LnRhcmdldC5jaGVja2VkKTtcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn07XG5cbkNoZWNrYm94Q2hvaWNlLnByb3BUeXBlcyA9IHtcbiAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxufTtcblxuY29uc3QgU3R5bGVkTkNob2ljZSA9IHN0eWxlZChOQ2hvaWNlKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcoMC41KSxcbiAgcGFkZGluZ0JvdHRvbTogdGhlbWUuc3BhY2luZygwLjUpLFxuICB3aWR0aDogJzEwMCUnLFxuICAnJiA+IGxhYmVsJzoge1xuICAgIGNvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjg5KScsXG4gICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDAsIDEwcHgpIHNjYWxlKDEpJyxcbiAgICBmb250U2l6ZTogJzE4cHgnLFxuICAgIG1hcmdpblRvcDogdGhlbWUuc3BhY2luZygyLjUpLFxuICB9LFxuICAnJiA+IGRpdic6IHtcbiAgICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcoMi41KSxcbiAgfSxcbn0pKTtcblxuY29uc3QgUmFkaW8gPSAoeyBsYWJlbCwgdmFsdWUsIG9uQ2hhbmdlLCBjaG9pY2VzIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkTkNob2ljZVxuICAgICAgZGlyZWN0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICBjdXN0b21MYWJlbD17U2V0dGluZ3NSYWRpb0xhYmVsfVxuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgaGVhZGVyPXtsYWJlbH1cbiAgICAgIG9wdHM9e2Nob2ljZXN9XG4gICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgLz5cbiAgKTtcbn07XG5cblJhZGlvLnByb3BUeXBlcyA9IHsgLi4uYmFzZVR5cGVzLCBjaG9pY2VzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc2hhcGUobGFiZWxWYWx1ZSkpIH07XG5cbmNvbnN0IFN0eWxlZFJhZGlvID0gUmFkaW87XG5cbmNvbnN0IFN0eWxlZExhYmVsID0gc3R5bGVkKCdwJykoKHsgdGhlbWUgfSkgPT4gKHtcbiAgbWFyZ2luOiAwLFxuICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSxcbn0pKTtcblxuY29uc3QgU3R5bGVkU2VsZWN0ID0gc3R5bGVkKFNlbGVjdCkoKHsgdGhlbWUgfSkgPT4gKHtcbiAgbWFyZ2luVG9wOiB0aGVtZS5zcGFjaW5nKDAuNSksXG4gIGJvcmRlcjogJzJweCBzb2xpZCBsaWdodGdyZXknLFxuICBwYWRkaW5nOiBgMCAke3RoZW1lLnNwYWNpbmcoMSl9YCxcbiAgYm9yZGVyUmFkaXVzOiAnNHB4Jyxcbn0pKTtcblxuY29uc3QgRHJvcGRvd24gPSAoeyBsYWJlbCwgdmFsdWUsIG9uQ2hhbmdlLCBjaG9pY2VzID0gW10gfSkgPT4ge1xuICBjb25zdCBnZXRJdGVtTGFiZWwgPSAobCkgPT4gKHR5cGVvZiBsID09PSAnc3RyaW5nJyA/IGwgOiBsLmxhYmVsKTtcbiAgY29uc3QgZ2V0SXRlbVZhbHVlID0gKGwpID0+ICh0eXBlb2YgbCA9PT0gJ3N0cmluZycgPyBsIDogbC52YWx1ZSk7XG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIHtsYWJlbCAmJiA8U3R5bGVkTGFiZWw+e2xhYmVsfTwvU3R5bGVkTGFiZWw+fVxuICAgICAgPFN0eWxlZFNlbGVjdFxuICAgICAgICB2YWx1ZT17dmFsdWUgfHwgKGNob2ljZXMgJiYgY2hvaWNlc1swXSl9XG4gICAgICAgIG9uQ2hhbmdlPXsoeyB0YXJnZXQgfSkgPT4gb25DaGFuZ2UodGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgaW5wdXQ9ezxJbnB1dCBpZD17YGRyb3Bkb3duLSR7bGFiZWx9YH0gLz59XG4gICAgICAgIGRpc2FibGVVbmRlcmxpbmVcbiAgICAgICAgTWVudVByb3BzPXt7IHRyYW5zaXRpb25EdXJhdGlvbjogeyBlbnRlcjogMjI1LCBleGl0OiAxOTUgfSB9fVxuICAgICAgPlxuICAgICAgICB7Y2hvaWNlcy5tYXAoKGwsIGluZGV4KSA9PiAoXG4gICAgICAgICAgPE1lbnVJdGVtIGtleT17aW5kZXh9IHZhbHVlPXtnZXRJdGVtVmFsdWUobCl9PlxuICAgICAgICAgICAge2dldEl0ZW1MYWJlbChsKX1cbiAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICApKX1cbiAgICAgIDwvU3R5bGVkU2VsZWN0PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd24ucHJvcFR5cGVzID0geyAuLi5iYXNlVHlwZXMsIGNob2ljZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpIH07XG5cbmNvbnN0IFN0eWxlZFR5cG9ncmFwaHkgPSBzdHlsZWQoVHlwb2dyYXBoeSkoKHsgdGhlbWUgfSkgPT4gKHtcbiAgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNpbmcoMyksXG4gIG1hcmdpblRvcDogdGhlbWUuc3BhY2luZygxKSxcbn0pKTtcblxuY29uc3QgVGV4dEZpZWxkID0gKHsgbGFiZWwgfSkgPT4ge1xuICByZXR1cm4gPFN0eWxlZFR5cG9ncmFwaHk+e2xhYmVsfTwvU3R5bGVkVHlwb2dyYXBoeT47XG59O1xuXG5jb25zdCBTdHlsZWROdW1iZXJUZXh0RmllbGQgPSBzdHlsZWQoTnVtYmVyVGV4dEZpZWxkKSgoeyB0aGVtZSB9KSA9PiAoe1xuICB3aWR0aDogJzM1JScsXG4gIG1hcmdpblJpZ2h0OiB0aGVtZS5zcGFjaW5nKDMpLFxuICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcoMSksXG4gICcmIC5NdWlJbnB1dEJhc2Utcm9vdCc6IHtcbiAgICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcoMC41KSxcbiAgICBib3JkZXI6ICcycHggc29saWQgbGlnaHRncmV5JyxcbiAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgIHBhZGRpbmc6IGAwICR7dGhlbWUuc3BhY2luZygxKX1gLFxuICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgfSxcbn0pKTtcblxuY29uc3QgTnVtYmVyRmllbGQgPSAoeyBsYWJlbCwgdmFsdWUsIG9uQ2hhbmdlID0gKCkgPT4geyB9LCBzdWZmaXgsIG1pbiwgbWF4IH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkTnVtYmVyVGV4dEZpZWxkXG4gICAgICB2YXJpYW50PXsnc3RhbmRhcmQnfVxuICAgICAgbGFiZWw9e2xhYmVsIHx8ICdMYWJlbCd9XG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBtYXg9e21heH1cbiAgICAgIG1pbj17bWlufVxuICAgICAgb25DaGFuZ2U9eyhldiwgdmFsdWUpID0+IG9uQ2hhbmdlKHZhbHVlKX1cbiAgICAgIHN1ZmZpeD17c3VmZml4fVxuICAgICAgc2hvd0Vycm9yV2hlbk91dHNpZGVSYW5nZVxuICAgICAgZGlzYWJsZVVuZGVybGluZVxuICAgIC8+XG4gICk7XG59O1xuXG5OdW1iZXJGaWVsZC5wcm9wVHlwZXMgPSB7XG4gIC4uLmJhc2VUeXBlcyxcbiAgc3VmZml4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBtaW46IFByb3BUeXBlcy5udW1iZXIsXG4gIG1heDogUHJvcFR5cGVzLm51bWJlcixcbiAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIsXG59O1xuXG5UZXh0RmllbGQucHJvcFR5cGVzID0ge1xuICAuLi5iYXNlVHlwZXMsXG59O1xuXG5jb25zdCBUb2dnbGVXcmFwcGVyID0gKHsgZGlzYWJsZWQsIGxhYmVsLCB2YWx1ZSwgb25DaGFuZ2UgfSkgPT4gKFxuICA8VG9nZ2xlIGxhYmVsPXtsYWJlbH0gY2hlY2tlZD17ISF2YWx1ZX0gZGlzYWJsZWQ9eyEhZGlzYWJsZWR9IHRvZ2dsZT17b25DaGFuZ2V9IC8+XG4pO1xuXG5Ub2dnbGVXcmFwcGVyLnByb3BUeXBlcyA9IHsgLi4uYmFzZVR5cGVzLCB2YWx1ZTogUHJvcFR5cGVzLmJvb2wgfTtcblxuY29uc3QgdGFnTWFwID0ge1xuICB0b2dnbGU6IFRvZ2dsZVdyYXBwZXIsXG4gIHJhZGlvOiBTdHlsZWRSYWRpbyxcbiAgZHJvcGRvd246IERyb3Bkb3duLFxuICBudW1iZXJGaWVsZDogTnVtYmVyRmllbGQsXG4gIGNoZWNrYm94OiBDaGVja2JveENob2ljZSxcbiAgdGV4dEZpZWxkOiBUZXh0RmllbGQsXG59O1xuXG5jb25zdCBTdHlsZWRHcm91cCA9IHN0eWxlZCgnZGl2JykoKHsgdGhlbWUgfSkgPT4gKHtcbiAgbWFyZ2luOiBgMCAwICR7dGhlbWUuc3BhY2luZygyKX0gMGAsXG59KSk7XG5cbmNvbnN0IFN0eWxlZEdyb3VwSGVhZGVyID0gc3R5bGVkKCdkaXYnKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBjb2xvcjogJyM0OTVCOEYnLFxuICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSArIDIsXG4gIGZvbnRXZWlnaHQ6IDYwMCxcbiAgbWFyZ2luQm90dG9tOiB0aGVtZS5zcGFjaW5nKDEpLFxufSkpO1xuXG5jb25zdCBTdHlsZWROdW1iZXJGaWVsZHMgPSBzdHlsZWQoJ3AnKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSxcbiAgbWFyZ2luQm90dG9tOiAwLFxufSkpO1xuXG5jb25zdCBHcm91cCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IG1vZGVsLCBsYWJlbCwgZ3JvdXAsIGNvbmZpZ3VyYXRpb24sIG9uQ2hhbmdlIH0gPSBwcm9wcztcblxuICAvKipcbiAgICogQHBhcmFtIGdyb3VwIC0gdGhlIGdyb3VwIG9mIHNldHRpbmdzXG4gICAqIEBwYXJhbSBrZXkgLSB0aGUga2V5KG9yIHBhdGgpIHRvIGJlIHVzZWQgdG8gc2V0IG9yIGdldCBmcm9tIG1vZGVsIG9yIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIGlubmVyS2V5IC0gdGhlIGtleShvciBwYXRoKSB0byBiZSB1c2VkIHRvIGdldCBmcm9tIHRoZSBncm91cCAodXNlZCBvbmx5IGZvciBudW1iZXJGaWVsZCB0eXBlKVxuICAgKiBAcmV0dXJucyB0YWcgdGhhdCBjb3JyZXNwb25kcyB0byBlbGVtZW50IHR5cGUgKi9cbiAgY29uc3QgZ2V0VGFnID0gKGdyb3VwLCBrZXksIGlubmVyS2V5KSA9PiB7XG4gICAgY29uc3QgeyBpc0NvbmZpZ1Byb3BlcnR5LCAuLi5wcm9wZXJ0aWVzIH0gPSBnZXQoZ3JvdXAsIGlubmVyS2V5IHx8IGtleSk7XG4gICAgY29uc3QgdmFsdWUgPSBpc0NvbmZpZ1Byb3BlcnR5ID8gZ2V0KGNvbmZpZ3VyYXRpb24sIGtleSkgOiBnZXQobW9kZWwsIGtleSk7XG4gICAgY29uc3QgdGFnUHJvcHMgPSB7IC4uLnByb3BlcnRpZXMsIGtleSwgdmFsdWUgfTtcbiAgICBjb25zdCBUYWcgPSB0YWdNYXBbdGFnUHJvcHMudHlwZV07XG5cbiAgICByZXR1cm4gPFRhZyBrZXk9e2tleX0gey4uLnRhZ1Byb3BzfSBvbkNoYW5nZT17KHYpID0+IG9uQ2hhbmdlKGtleSwgdiwgaXNDb25maWdQcm9wZXJ0eSl9IC8+O1xuICB9O1xuXG4gIGNvbnN0IGNvbnRlbnQgPSAoZ3JvdXAsIGtleSkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IGdyb3VwW2tleV07XG5cbiAgICBpZiAoIWN1cnJlbnRHcm91cCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgeyB0eXBlLCBsYWJlbCwgZmllbGRzLCBjaG9pY2VzIH0gPSBjdXJyZW50R3JvdXA7XG5cbiAgICBpZiAodHlwZSA9PT0gJ251bWJlckZpZWxkcycpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYga2V5PXtgbnVtYmVyRmllbGQtJHtsYWJlbH1gfT5cbiAgICAgICAgICA8U3R5bGVkTnVtYmVyRmllbGRzPntsYWJlbH08L1N0eWxlZE51bWJlckZpZWxkcz5cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZmllbGRzKS5tYXAoKGZpZWxkS2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0VGFnKGdyb3VwLCBgJHtrZXl9LiR7ZmllbGRLZXl9YCwgYCR7a2V5fS5maWVsZHMuJHtmaWVsZEtleX1gKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnY2hlY2tib3hlcycpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYga2V5PXtgY2hlY2tib3gtJHtsYWJlbH1gfT5cbiAgICAgICAgICA8cD57bGFiZWx9PC9wPlxuICAgICAgICAgIHtPYmplY3Qua2V5cyhjaG9pY2VzKS5tYXAoKGNob2ljZUtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGdldFRhZyhncm91cCwgYCR7a2V5fS4ke2Nob2ljZUtleX1gLCBgJHtrZXl9LmNob2ljZXMuJHtjaG9pY2VLZXl9YCk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBpZiB0eXBlIGlzIHRvZ2dsZSwgcmFkaW8sIGRyb3Bkb3duLCBudW1iZXJGaWVsZCBvciBudW1iZXJUZXh0XG4gICAgcmV0dXJuIGdldFRhZyhncm91cCwga2V5KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRHcm91cD5cbiAgICAgIDxTdHlsZWRHcm91cEhlYWRlcj57bGFiZWx9PC9TdHlsZWRHcm91cEhlYWRlcj5cblxuICAgICAge09iamVjdC5rZXlzKGdyb3VwKS5tYXAoKGtleSkgPT4ge1xuICAgICAgICByZXR1cm4gY29udGVudChncm91cCwga2V5KTtcbiAgICAgIH0pfVxuICAgIDwvU3R5bGVkR3JvdXA+XG4gICk7XG59O1xuXG5Hcm91cC5wcm9wVHlwZXMgPSB7XG4gIG1vZGVsOiBQcm9wVHlwZXMub2JqZWN0LFxuICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgZ3JvdXA6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNvbmZpZ3VyYXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbn07XG5cbmV4cG9ydCBjbGFzcyBQYW5lbCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgY29uZmlndXJhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBncm91cHM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgb25DaGFuZ2VNb2RlbDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25DaGFuZ2VDb25maWd1cmF0aW9uOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBtb2RhbDogUHJvcFR5cGVzLm9iamVjdCxcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIG9uQ2hhbmdlTW9kZWw6ICgpID0+IHsgfSxcbiAgICBvbkNoYW5nZUNvbmZpZ3VyYXRpb246ICgpID0+IHsgfSxcbiAgfTtcblxuICBjaGFuZ2UgPSAoa2V5LCB2YWx1ZSwgaXNDb25maWdQcm9wZXJ0eSA9IGZhbHNlKSA9PiB7XG4gICAgbG9nKCdbY2hhbmdlTW9kZWxdJywga2V5LCB2YWx1ZSk7XG5cbiAgICBjb25zdCB7IG9uQ2hhbmdlTW9kZWwsIG9uQ2hhbmdlQ29uZmlndXJhdGlvbiB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBtb2RlbCA9IHsgLi4udGhpcy5wcm9wcy5tb2RlbCB9O1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSB7IC4uLnRoaXMucHJvcHMuY29uZmlndXJhdGlvbiB9O1xuXG4gICAgaWYgKGlzQ29uZmlnUHJvcGVydHkpIHtcbiAgICAgIHNldChjb25maWd1cmF0aW9uLCBrZXksIHZhbHVlKTtcbiAgICAgIG9uQ2hhbmdlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXQobW9kZWwsIGtleSwgdmFsdWUpO1xuICAgICAgb25DaGFuZ2VNb2RlbChtb2RlbCwga2V5KTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgZ3JvdXBzLCBtb2RlbCwgY29uZmlndXJhdGlvbiwgbW9kYWwgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBsb2coJ3JlbmRlcjonLCBtb2RlbCk7XG5cbiAgICBjb25zdCByZW5kZXJlZEdyb3VwcyA9IE9iamVjdC5rZXlzKGdyb3VwcyB8fCB7fSkubWFwKChncm91cCkgPT4ge1xuICAgICAgY29uc3Qgc2hvd0dyb3VwID0gT2JqZWN0LmVudHJpZXMoZ3JvdXBzW2dyb3VwXSkuc29tZSgoWywgcHJvcFZhbF0pID0+ICEhcHJvcFZhbCk7XG5cbiAgICAgIGlmIChzaG93R3JvdXApIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8R3JvdXBcbiAgICAgICAgICAgIGxhYmVsPXtncm91cH1cbiAgICAgICAgICAgIGtleT17Z3JvdXB9XG4gICAgICAgICAgICBtb2RlbD17bW9kZWx9XG4gICAgICAgICAgICBjb25maWd1cmF0aW9uPXtjb25maWd1cmF0aW9ufVxuICAgICAgICAgICAgZ3JvdXA9e2dyb3Vwc1tncm91cF19XG4gICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5jaGFuZ2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdj5cbiAgICAgICAge3JlbmRlcmVkR3JvdXBzfVxuICAgICAgICB7bW9kYWx9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBhbmVsO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsSUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBSixP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QUksQ0FBQyxDQUFDLENBQUMsQ0FBQ25GLEdBQUcsQ0FBQyxVQUFDNEMsS0FBSyxFQUFLO1FBQzlELElBQU0wQyxTQUFTLEdBQUd2SyxNQUFNLENBQUN3SyxPQUFPLENBQUNKLE1BQU0sQ0FBQ3ZDLEtBQUssQ0FBQyxDQUFDLENBQUM0QyxJQUFJLENBQUMsVUFBQUMsTUFBQTtVQUFBLElBQUFDLE1BQUEsT0FBQUMsZUFBQSxhQUFBRixNQUFBO1lBQUlHLE9BQU8sR0FBQUYsTUFBQTtVQUFBLE9BQU0sQ0FBQyxDQUFDRSxPQUFPO1FBQUEsRUFBQztRQUVoRixJQUFJTixTQUFTLEVBQUU7VUFDYixvQkFDRTFNLE1BQUEsWUFBQThELGFBQUEsQ0FBQytGLEtBQUs7WUFDSnhHLEtBQUssRUFBRTJHLEtBQU07WUFDYjFDLEdBQUcsRUFBRTBDLEtBQU07WUFDWEQsS0FBSyxFQUFFQSxLQUFNO1lBQ2JFLGFBQWEsRUFBRUEsYUFBYztZQUM3QkQsS0FBSyxFQUFFdUMsTUFBTSxDQUFDdkMsS0FBSyxDQUFFO1lBQ3JCdEcsUUFBUSxFQUFFMkksTUFBSSxDQUFDWTtVQUFPLENBQ3ZCLENBQUM7UUFFTjtRQUVBLE9BQU8sSUFBSTtNQUNiLENBQUMsQ0FBQztNQUVGLG9CQUNFak4sTUFBQSxZQUFBOEQsYUFBQSxjQUNHMkksY0FBYyxFQUNkRCxLQUNFLENBQUM7SUFFVjtFQUFDO0FBQUEsRUE3RHdCVSxpQkFBSyxDQUFDQyxTQUFTO0FBQUEsSUFBQXJLLGdCQUFBLGFBQTdCc0ksS0FBSyxlQUNHO0VBQ2pCckIsS0FBSyxFQUFFekcscUJBQVMsQ0FBQzZILE1BQU07RUFDdkJsQixhQUFhLEVBQUUzRyxxQkFBUyxDQUFDNkgsTUFBTTtFQUMvQm9CLE1BQU0sRUFBRWpKLHFCQUFTLENBQUM2SCxNQUFNO0VBQ3hCWSxhQUFhLEVBQUV6SSxxQkFBUyxDQUFDSyxJQUFJO0VBQzdCcUkscUJBQXFCLEVBQUUxSSxxQkFBUyxDQUFDSyxJQUFJO0VBQ3JDNkksS0FBSyxFQUFFbEoscUJBQVMsQ0FBQzZIO0FBQ25CLENBQUM7QUFBQSxJQUFBckksZ0JBQUEsYUFSVXNJLEtBQUssa0JBVU07RUFDcEJXLGFBQWEsRUFBRSxTQUFmQSxhQUFhQSxDQUFBLEVBQVEsQ0FBRSxDQUFDO0VBQ3hCQyxxQkFBcUIsRUFBRSxTQUF2QkEscUJBQXFCQSxDQUFBLEVBQVEsQ0FBRTtBQUNqQyxDQUFDO0FBQUEsSUFBQW9CLFFBQUEsR0FBQS9CLE9BQUEsY0FtRFlELEtBQUsiLCJpZ25vcmVMaXN0IjpbXX0=