@pie-element/inline-dropdown 7.0.0 → 8.0.0-hotfix.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,27 @@
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
+ # [8.0.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@6.7.10...@pie-element/inline-dropdown@8.0.0) (2025-10-02)
7
+
8
+
9
+ ### Features
10
+
11
+ * publish majors to adopt pie-toolbox split without breaking legacy bundles PD-5242 ([50ede62](https://github.com/pie-framework/pie-elements/commit/50ede624eff05e2bc52fa80e453d561c505ab38d))
12
+
13
+
14
+ ### Performance Improvements
15
+
16
+ * **multiple-choice:** adopt pie-toolbox split ([b4b8f45](https://github.com/pie-framework/pie-elements/commit/b4b8f45b68b71622b314c3d80fdc180832a640e1))
17
+
18
+
19
+ ### BREAKING CHANGES
20
+
21
+ * **multiple-choice:** publish majors to carry the pie-toolbox split without breaking legacy bundles
22
+
23
+
24
+
25
+
26
+
6
27
  # [7.0.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@6.7.10...@pie-element/inline-dropdown@7.0.0) (2025-10-01)
7
28
 
8
29
 
@@ -3,6 +3,14 @@
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
+ ## [7.0.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@6.6.0...@pie-element/inline-dropdown-configure@7.0.1) (2025-10-02)
7
+
8
+ **Note:** Version bump only for package @pie-element/inline-dropdown-configure
9
+
10
+
11
+
12
+
13
+
6
14
  # [7.0.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@6.6.0...@pie-element/inline-dropdown-configure@7.0.0) (2025-10-01)
7
15
 
8
16
  **Note:** Version bump only for package @pie-element/inline-dropdown-configure
@@ -0,0 +1,124 @@
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 _inlineDropdownToolbar = require("../inline-dropdown-toolbar");
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('Main', function () {
18
+ var onAddChoice = jest.fn();
19
+ var onRemoveChoice = jest.fn();
20
+ var onSelectChoice = jest.fn();
21
+ var onToolbarDone = jest.fn();
22
+ var value = {
23
+ change: jest.fn().mockReturnValue({
24
+ setNodeByKey: jest.fn().mockReturnValue({
25
+ moveFocusTo: jest.fn().mockReturnValue({
26
+ moveAnchorTo: jest.fn()
27
+ })
28
+ })
29
+ }),
30
+ document: {
31
+ getNextText: jest.fn().mockReturnValue({
32
+ key: '1'
33
+ })
34
+ }
35
+ };
36
+
37
+ var wrapper = function wrapper() {
38
+ var defaults = {
39
+ onAddChoice: onAddChoice,
40
+ onRemoveChoice: onRemoveChoice,
41
+ onSelectChoice: onSelectChoice,
42
+ node: {
43
+ key: '1',
44
+ data: {
45
+ toJSON: jest.fn(),
46
+ get: function get(key) {
47
+ if (key === 'index') {
48
+ return '0';
49
+ }
50
+
51
+ return 'cow';
52
+ }
53
+ }
54
+ },
55
+ value: value,
56
+ onToolbarDone: onToolbarDone,
57
+ choices: [{
58
+ label: 'cow ',
59
+ value: '0',
60
+ correct: true
61
+ }, {
62
+ label: 'dog ',
63
+ value: '1',
64
+ correct: false
65
+ }, {
66
+ label: 'cat ',
67
+ value: '2',
68
+ correct: false
69
+ }]
70
+ };
71
+
72
+ var props = _objectSpread({}, defaults);
73
+
74
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_inlineDropdownToolbar.RespAreaToolbar, props), {
75
+ disableLifecycleMethods: true
76
+ });
77
+ };
78
+
79
+ describe('snapshot', function () {
80
+ it('Renders', function () {
81
+ expect(wrapper()).toMatchSnapshot();
82
+ });
83
+ });
84
+ describe('logic', function () {
85
+ var w;
86
+ beforeEach(function () {
87
+ w = wrapper();
88
+ });
89
+ describe('onRespAreaChange', function () {
90
+ it('sets state', function () {
91
+ w.instance().onRespAreaChange('<div>test</div>');
92
+ expect(w.instance().state.respAreaMarkup).toEqual('<div>test</div>');
93
+ });
94
+ });
95
+ describe('onDone', function () {
96
+ it('does not call onAddChoice if choice is empty', function () {
97
+ w.instance().onDone('<div><p></p></div>');
98
+ expect(onAddChoice).not.toBeCalled();
99
+ });
100
+ it('calls onAddChoice if choice not empty', function () {
101
+ w.instance().onDone('<div>test</div>');
102
+ expect(onAddChoice).toBeCalledWith('0', '<div>test</div>', -1);
103
+ });
104
+ });
105
+ describe('onSelectChoice', function () {
106
+ it('calls onToolbarDone and onSelectChoice', function () {
107
+ w.instance().onSelectChoice('cat', '2');
108
+ expect(onToolbarDone).toBeCalled();
109
+ expect(onSelectChoice).toBeCalledWith('2');
110
+ });
111
+ });
112
+ describe('onRemoveChoice', function () {
113
+ it('calls onToolbarChange if removed value is the one selected as correct', function () {
114
+ w.instance().onRemoveChoice('cow', '0');
115
+ expect(onToolbarDone).toBeCalled();
116
+ });
117
+ it('calls onRemoveChoice if removed value is not the one selected as correct', function () {
118
+ w.instance().onRemoveChoice('cat', '2');
119
+ expect(onRemoveChoice).toBeCalledWith('2');
120
+ });
121
+ });
122
+ });
123
+ });
124
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vaW5saW5lLWRyb3Bkb3duLXRvb2xiYXIudGVzdC5qc3giXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJvbkFkZENob2ljZSIsImplc3QiLCJmbiIsIm9uUmVtb3ZlQ2hvaWNlIiwib25TZWxlY3RDaG9pY2UiLCJvblRvb2xiYXJEb25lIiwidmFsdWUiLCJjaGFuZ2UiLCJtb2NrUmV0dXJuVmFsdWUiLCJzZXROb2RlQnlLZXkiLCJtb3ZlRm9jdXNUbyIsIm1vdmVBbmNob3JUbyIsImRvY3VtZW50IiwiZ2V0TmV4dFRleHQiLCJrZXkiLCJ3cmFwcGVyIiwiZGVmYXVsdHMiLCJub2RlIiwiZGF0YSIsInRvSlNPTiIsImdldCIsImNob2ljZXMiLCJsYWJlbCIsImNvcnJlY3QiLCJwcm9wcyIsImRpc2FibGVMaWZlY3ljbGVNZXRob2RzIiwiaXQiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJ3IiwiYmVmb3JlRWFjaCIsImluc3RhbmNlIiwib25SZXNwQXJlYUNoYW5nZSIsInN0YXRlIiwicmVzcEFyZWFNYXJrdXAiLCJ0b0VxdWFsIiwib25Eb25lIiwibm90IiwidG9CZUNhbGxlZCIsInRvQmVDYWxsZWRXaXRoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7Ozs7O0FBRUFBLFFBQVEsQ0FBQyxNQUFELEVBQVMsWUFBTTtBQUNyQixNQUFJQyxXQUFXLEdBQUdDLElBQUksQ0FBQ0MsRUFBTCxFQUFsQjtBQUNBLE1BQUlDLGNBQWMsR0FBR0YsSUFBSSxDQUFDQyxFQUFMLEVBQXJCO0FBQ0EsTUFBSUUsY0FBYyxHQUFHSCxJQUFJLENBQUNDLEVBQUwsRUFBckI7QUFDQSxNQUFJRyxhQUFhLEdBQUdKLElBQUksQ0FBQ0MsRUFBTCxFQUFwQjtBQUVBLE1BQU1JLEtBQUssR0FBRztBQUNaQyxJQUFBQSxNQUFNLEVBQUVOLElBQUksQ0FBQ0MsRUFBTCxHQUFVTSxlQUFWLENBQTBCO0FBQ2hDQyxNQUFBQSxZQUFZLEVBQUVSLElBQUksQ0FBQ0MsRUFBTCxHQUFVTSxlQUFWLENBQTBCO0FBQ3RDRSxRQUFBQSxXQUFXLEVBQUVULElBQUksQ0FBQ0MsRUFBTCxHQUFVTSxlQUFWLENBQTBCO0FBQ3JDRyxVQUFBQSxZQUFZLEVBQUVWLElBQUksQ0FBQ0MsRUFBTDtBQUR1QixTQUExQjtBQUR5QixPQUExQjtBQURrQixLQUExQixDQURJO0FBUVpVLElBQUFBLFFBQVEsRUFBRTtBQUNSQyxNQUFBQSxXQUFXLEVBQUVaLElBQUksQ0FBQ0MsRUFBTCxHQUFVTSxlQUFWLENBQTBCO0FBQ3JDTSxRQUFBQSxHQUFHLEVBQUU7QUFEZ0MsT0FBMUI7QUFETDtBQVJFLEdBQWQ7O0FBZUEsTUFBTUMsT0FBTyxHQUFHLFNBQVZBLE9BQVUsR0FBTTtBQUNwQixRQUFNQyxRQUFRLEdBQUc7QUFDZmhCLE1BQUFBLFdBQVcsRUFBWEEsV0FEZTtBQUVmRyxNQUFBQSxjQUFjLEVBQWRBLGNBRmU7QUFHZkMsTUFBQUEsY0FBYyxFQUFkQSxjQUhlO0FBSWZhLE1BQUFBLElBQUksRUFBRTtBQUNKSCxRQUFBQSxHQUFHLEVBQUUsR0FERDtBQUVKSSxRQUFBQSxJQUFJLEVBQUU7QUFDSkMsVUFBQUEsTUFBTSxFQUFFbEIsSUFBSSxDQUFDQyxFQUFMLEVBREo7QUFFSmtCLFVBQUFBLEdBQUcsRUFBRSxhQUFDTixHQUFELEVBQVM7QUFDWixnQkFBSUEsR0FBRyxLQUFLLE9BQVosRUFBcUI7QUFDbkIscUJBQU8sR0FBUDtBQUNEOztBQUVELG1CQUFPLEtBQVA7QUFDRDtBQVJHO0FBRkYsT0FKUztBQWlCZlIsTUFBQUEsS0FBSyxFQUFMQSxLQWpCZTtBQWtCZkQsTUFBQUEsYUFBYSxFQUFiQSxhQWxCZTtBQW1CZmdCLE1BQUFBLE9BQU8sRUFBRSxDQUNQO0FBQ0VDLFFBQUFBLEtBQUssRUFBRSxNQURUO0FBRUVoQixRQUFBQSxLQUFLLEVBQUUsR0FGVDtBQUdFaUIsUUFBQUEsT0FBTyxFQUFFO0FBSFgsT0FETyxFQU1QO0FBQ0VELFFBQUFBLEtBQUssRUFBRSxNQURUO0FBRUVoQixRQUFBQSxLQUFLLEVBQUUsR0FGVDtBQUdFaUIsUUFBQUEsT0FBTyxFQUFFO0FBSFgsT0FOTyxFQVdQO0FBQ0VELFFBQUFBLEtBQUssRUFBRSxNQURUO0FBRUVoQixRQUFBQSxLQUFLLEVBQUUsR0FGVDtBQUdFaUIsUUFBQUEsT0FBTyxFQUFFO0FBSFgsT0FYTztBQW5CTSxLQUFqQjs7QUFxQ0EsUUFBTUMsS0FBSyxxQkFBUVIsUUFBUixDQUFYOztBQUVBLFdBQU8sbUNBQVEsZ0NBQUMsc0NBQUQsRUFBcUJRLEtBQXJCLENBQVIsRUFBd0M7QUFBRUMsTUFBQUEsdUJBQXVCLEVBQUU7QUFBM0IsS0FBeEMsQ0FBUDtBQUNELEdBekNEOztBQTJDQTFCLEVBQUFBLFFBQVEsQ0FBQyxVQUFELEVBQWEsWUFBTTtBQUN6QjJCLElBQUFBLEVBQUUsQ0FBQyxTQUFELEVBQVksWUFBTTtBQUNsQkMsTUFBQUEsTUFBTSxDQUFDWixPQUFPLEVBQVIsQ0FBTixDQUFrQmEsZUFBbEI7QUFDRCxLQUZDLENBQUY7QUFHRCxHQUpPLENBQVI7QUFNQTdCLEVBQUFBLFFBQVEsQ0FBQyxPQUFELEVBQVUsWUFBTTtBQUN0QixRQUFJOEIsQ0FBSjtBQUVBQyxJQUFBQSxVQUFVLENBQUMsWUFBTTtBQUNmRCxNQUFBQSxDQUFDLEdBQUdkLE9BQU8sRUFBWDtBQUNELEtBRlMsQ0FBVjtBQUlBaEIsSUFBQUEsUUFBUSxDQUFDLGtCQUFELEVBQXFCLFlBQU07QUFDakMyQixNQUFBQSxFQUFFLENBQUMsWUFBRCxFQUFlLFlBQU07QUFDckJHLFFBQUFBLENBQUMsQ0FBQ0UsUUFBRixHQUFhQyxnQkFBYixDQUE4QixpQkFBOUI7QUFFQUwsUUFBQUEsTUFBTSxDQUFDRSxDQUFDLENBQUNFLFFBQUYsR0FBYUUsS0FBYixDQUFtQkMsY0FBcEIsQ0FBTixDQUEwQ0MsT0FBMUMsQ0FBa0QsaUJBQWxEO0FBQ0QsT0FKQyxDQUFGO0FBS0QsS0FOTyxDQUFSO0FBUUFwQyxJQUFBQSxRQUFRLENBQUMsUUFBRCxFQUFXLFlBQU07QUFDdkIyQixNQUFBQSxFQUFFLENBQUMsOENBQUQsRUFBaUQsWUFBTTtBQUN2REcsUUFBQUEsQ0FBQyxDQUFDRSxRQUFGLEdBQWFLLE1BQWIsQ0FBb0Isb0JBQXBCO0FBRUFULFFBQUFBLE1BQU0sQ0FBQzNCLFdBQUQsQ0FBTixDQUFvQnFDLEdBQXBCLENBQXdCQyxVQUF4QjtBQUNELE9BSkMsQ0FBRjtBQU1BWixNQUFBQSxFQUFFLENBQUMsdUNBQUQsRUFBMEMsWUFBTTtBQUNoREcsUUFBQUEsQ0FBQyxDQUFDRSxRQUFGLEdBQWFLLE1BQWIsQ0FBb0IsaUJBQXBCO0FBRUFULFFBQUFBLE1BQU0sQ0FBQzNCLFdBQUQsQ0FBTixDQUFvQnVDLGNBQXBCLENBQW1DLEdBQW5DLEVBQXdDLGlCQUF4QyxFQUEyRCxDQUFDLENBQTVEO0FBQ0QsT0FKQyxDQUFGO0FBS0QsS0FaTyxDQUFSO0FBY0F4QyxJQUFBQSxRQUFRLENBQUMsZ0JBQUQsRUFBbUIsWUFBTTtBQUMvQjJCLE1BQUFBLEVBQUUsQ0FBQyx3Q0FBRCxFQUEyQyxZQUFNO0FBQ2pERyxRQUFBQSxDQUFDLENBQUNFLFFBQUYsR0FBYTNCLGNBQWIsQ0FBNEIsS0FBNUIsRUFBbUMsR0FBbkM7QUFFQXVCLFFBQUFBLE1BQU0sQ0FBQ3RCLGFBQUQsQ0FBTixDQUFzQmlDLFVBQXRCO0FBQ0FYLFFBQUFBLE1BQU0sQ0FBQ3ZCLGNBQUQsQ0FBTixDQUF1Qm1DLGNBQXZCLENBQXNDLEdBQXRDO0FBQ0QsT0FMQyxDQUFGO0FBTUQsS0FQTyxDQUFSO0FBU0F4QyxJQUFBQSxRQUFRLENBQUMsZ0JBQUQsRUFBbUIsWUFBTTtBQUMvQjJCLE1BQUFBLEVBQUUsQ0FBQyx1RUFBRCxFQUEwRSxZQUFNO0FBQ2hGRyxRQUFBQSxDQUFDLENBQUNFLFFBQUYsR0FBYTVCLGNBQWIsQ0FBNEIsS0FBNUIsRUFBbUMsR0FBbkM7QUFFQXdCLFFBQUFBLE1BQU0sQ0FBQ3RCLGFBQUQsQ0FBTixDQUFzQmlDLFVBQXRCO0FBQ0QsT0FKQyxDQUFGO0FBTUFaLE1BQUFBLEVBQUUsQ0FBQywwRUFBRCxFQUE2RSxZQUFNO0FBQ25GRyxRQUFBQSxDQUFDLENBQUNFLFFBQUYsR0FBYTVCLGNBQWIsQ0FBNEIsS0FBNUIsRUFBbUMsR0FBbkM7QUFFQXdCLFFBQUFBLE1BQU0sQ0FBQ3hCLGNBQUQsQ0FBTixDQUF1Qm9DLGNBQXZCLENBQXNDLEdBQXRDO0FBQ0QsT0FKQyxDQUFGO0FBS0QsS0FaTyxDQUFSO0FBYUQsR0FuRE8sQ0FBUjtBQW9ERCxDQTFITyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBSZXNwQXJlYVRvb2xiYXIgfSBmcm9tICcuLi9pbmxpbmUtZHJvcGRvd24tdG9vbGJhcic7XG5cbmRlc2NyaWJlKCdNYWluJywgKCkgPT4ge1xuICBsZXQgb25BZGRDaG9pY2UgPSBqZXN0LmZuKCk7XG4gIGxldCBvblJlbW92ZUNob2ljZSA9IGplc3QuZm4oKTtcbiAgbGV0IG9uU2VsZWN0Q2hvaWNlID0gamVzdC5mbigpO1xuICBsZXQgb25Ub29sYmFyRG9uZSA9IGplc3QuZm4oKTtcblxuICBjb25zdCB2YWx1ZSA9IHtcbiAgICBjaGFuZ2U6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe1xuICAgICAgc2V0Tm9kZUJ5S2V5OiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHtcbiAgICAgICAgbW92ZUZvY3VzVG86IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe1xuICAgICAgICAgIG1vdmVBbmNob3JUbzogamVzdC5mbigpLFxuICAgICAgICB9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIGRvY3VtZW50OiB7XG4gICAgICBnZXROZXh0VGV4dDogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG4gICAgICAgIGtleTogJzEnLFxuICAgICAgfSksXG4gICAgfSxcbiAgfTtcblxuICBjb25zdCB3cmFwcGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgb25BZGRDaG9pY2UsXG4gICAgICBvblJlbW92ZUNob2ljZSxcbiAgICAgIG9uU2VsZWN0Q2hvaWNlLFxuICAgICAgbm9kZToge1xuICAgICAgICBrZXk6ICcxJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHRvSlNPTjogamVzdC5mbigpLFxuICAgICAgICAgIGdldDogKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2luZGV4Jykge1xuICAgICAgICAgICAgICByZXR1cm4gJzAnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gJ2Nvdyc7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2YWx1ZSxcbiAgICAgIG9uVG9vbGJhckRvbmUsXG4gICAgICBjaG9pY2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ2NvdyAnLFxuICAgICAgICAgIHZhbHVlOiAnMCcsXG4gICAgICAgICAgY29ycmVjdDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnZG9nICcsXG4gICAgICAgICAgdmFsdWU6ICcxJyxcbiAgICAgICAgICBjb3JyZWN0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnY2F0ICcsXG4gICAgICAgICAgdmFsdWU6ICcyJyxcbiAgICAgICAgICBjb3JyZWN0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMgfTtcblxuICAgIHJldHVybiBzaGFsbG93KDxSZXNwQXJlYVRvb2xiYXIgey4uLnByb3BzfSAvPiwgeyBkaXNhYmxlTGlmZWN5Y2xlTWV0aG9kczogdHJ1ZSB9KTtcbiAgfTtcblxuICBkZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gICAgaXQoJ1JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICBleHBlY3Qod3JhcHBlcigpKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2xvZ2ljJywgKCkgPT4ge1xuICAgIGxldCB3O1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcigpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uUmVzcEFyZWFDaGFuZ2UnLCAoKSA9PiB7XG4gICAgICBpdCgnc2V0cyBzdGF0ZScsICgpID0+IHtcbiAgICAgICAgdy5pbnN0YW5jZSgpLm9uUmVzcEFyZWFDaGFuZ2UoJzxkaXY+dGVzdDwvZGl2PicpO1xuXG4gICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuc3RhdGUucmVzcEFyZWFNYXJrdXApLnRvRXF1YWwoJzxkaXY+dGVzdDwvZGl2PicpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25Eb25lJywgKCkgPT4ge1xuICAgICAgaXQoJ2RvZXMgbm90IGNhbGwgb25BZGRDaG9pY2UgaWYgY2hvaWNlIGlzIGVtcHR5JywgKCkgPT4ge1xuICAgICAgICB3Lmluc3RhbmNlKCkub25Eb25lKCc8ZGl2PjxwPjwvcD48L2Rpdj4nKTtcblxuICAgICAgICBleHBlY3Qob25BZGRDaG9pY2UpLm5vdC50b0JlQ2FsbGVkKCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2NhbGxzIG9uQWRkQ2hvaWNlIGlmIGNob2ljZSBub3QgZW1wdHknLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vbkRvbmUoJzxkaXY+dGVzdDwvZGl2PicpO1xuXG4gICAgICAgIGV4cGVjdChvbkFkZENob2ljZSkudG9CZUNhbGxlZFdpdGgoJzAnLCAnPGRpdj50ZXN0PC9kaXY+JywgLTEpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25TZWxlY3RDaG9pY2UnLCAoKSA9PiB7XG4gICAgICBpdCgnY2FsbHMgb25Ub29sYmFyRG9uZSBhbmQgb25TZWxlY3RDaG9pY2UnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblNlbGVjdENob2ljZSgnY2F0JywgJzInKTtcblxuICAgICAgICBleHBlY3Qob25Ub29sYmFyRG9uZSkudG9CZUNhbGxlZCgpO1xuICAgICAgICBleHBlY3Qob25TZWxlY3RDaG9pY2UpLnRvQmVDYWxsZWRXaXRoKCcyJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvblJlbW92ZUNob2ljZScsICgpID0+IHtcbiAgICAgIGl0KCdjYWxscyBvblRvb2xiYXJDaGFuZ2UgaWYgcmVtb3ZlZCB2YWx1ZSBpcyB0aGUgb25lIHNlbGVjdGVkIGFzIGNvcnJlY3QnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblJlbW92ZUNob2ljZSgnY293JywgJzAnKTtcblxuICAgICAgICBleHBlY3Qob25Ub29sYmFyRG9uZSkudG9CZUNhbGxlZCgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdjYWxscyBvblJlbW92ZUNob2ljZSBpZiByZW1vdmVkIHZhbHVlIGlzIG5vdCB0aGUgb25lIHNlbGVjdGVkIGFzIGNvcnJlY3QnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblJlbW92ZUNob2ljZSgnY2F0JywgJzInKTtcblxuICAgICAgICBleHBlY3Qob25SZW1vdmVDaG9pY2UpLnRvQmVDYWxsZWRXaXRoKCcyJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==