@pie-element/inline-dropdown 3.10.7 → 4.10.16-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,78 +3,6 @@
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
- ## [3.10.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.10.6...@pie-element/inline-dropdown@3.10.7) (2022-04-12)
7
-
8
- **Note:** Version bump only for package @pie-element/inline-dropdown
9
-
10
-
11
-
12
-
13
-
14
- ## [3.10.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.10.5...@pie-element/inline-dropdown@3.10.6) (2022-03-28)
15
-
16
- **Note:** Version bump only for package @pie-element/inline-dropdown
17
-
18
-
19
-
20
-
21
-
22
- ## [3.10.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.10.4...@pie-element/inline-dropdown@3.10.5) (2022-03-22)
23
-
24
- **Note:** Version bump only for package @pie-element/inline-dropdown
25
-
26
-
27
-
28
-
29
-
30
- ## [3.10.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.10.3...@pie-element/inline-dropdown@3.10.4) (2022-03-08)
31
-
32
- **Note:** Version bump only for package @pie-element/inline-dropdown
33
-
34
-
35
-
36
-
37
-
38
- ## [3.10.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.10.2...@pie-element/inline-dropdown@3.10.3) (2022-03-08)
39
-
40
- **Note:** Version bump only for package @pie-element/inline-dropdown
41
-
42
-
43
-
44
-
45
-
46
- ## [3.10.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.10.1...@pie-element/inline-dropdown@3.10.2) (2022-02-21)
47
-
48
- **Note:** Version bump only for package @pie-element/inline-dropdown
49
-
50
-
51
-
52
-
53
-
54
- ## [3.10.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.10.0...@pie-element/inline-dropdown@3.10.1) (2022-02-04)
55
-
56
- **Note:** Version bump only for package @pie-element/inline-dropdown
57
-
58
-
59
-
60
-
61
-
62
- # [3.10.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.9.9...@pie-element/inline-dropdown@3.10.0) (2022-01-24)
63
-
64
-
65
- ### Bug Fixes
66
-
67
- * use preview prompt for prompt, rationale and teacher instructions to fix table rendering PD-1456 ([f330601](https://github.com/pie-framework/pie-elements/commit/f3306019a2d1c8ce3e2783823dfe9ef0a0394e4f))
68
-
69
-
70
- ### Features
71
-
72
- * **drag-in-the-blank, inline-dropdown:** move rationale after the item content PD-1379 ([fd71c58](https://github.com/pie-framework/pie-elements/commit/fd71c5853bdd63b31a746241dd5649e5de051300))
73
-
74
-
75
-
76
-
77
-
78
6
  ## [3.9.9](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@3.9.8...@pie-element/inline-dropdown@3.9.9) (2022-01-10)
79
7
 
80
8
  **Note:** Version bump only for package @pie-element/inline-dropdown
@@ -3,70 +3,6 @@
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
- ## [3.6.16](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.15...@pie-element/inline-dropdown-configure@3.6.16) (2022-04-12)
7
-
8
- **Note:** Version bump only for package @pie-element/inline-dropdown-configure
9
-
10
-
11
-
12
-
13
-
14
- ## [3.6.15](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.14...@pie-element/inline-dropdown-configure@3.6.15) (2022-03-28)
15
-
16
- **Note:** Version bump only for package @pie-element/inline-dropdown-configure
17
-
18
-
19
-
20
-
21
-
22
- ## [3.6.14](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.13...@pie-element/inline-dropdown-configure@3.6.14) (2022-03-22)
23
-
24
- **Note:** Version bump only for package @pie-element/inline-dropdown-configure
25
-
26
-
27
-
28
-
29
-
30
- ## [3.6.13](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.12...@pie-element/inline-dropdown-configure@3.6.13) (2022-03-08)
31
-
32
- **Note:** Version bump only for package @pie-element/inline-dropdown-configure
33
-
34
-
35
-
36
-
37
-
38
- ## [3.6.12](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.11...@pie-element/inline-dropdown-configure@3.6.12) (2022-03-08)
39
-
40
- **Note:** Version bump only for package @pie-element/inline-dropdown-configure
41
-
42
-
43
-
44
-
45
-
46
- ## [3.6.11](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.10...@pie-element/inline-dropdown-configure@3.6.11) (2022-02-21)
47
-
48
- **Note:** Version bump only for package @pie-element/inline-dropdown-configure
49
-
50
-
51
-
52
-
53
-
54
- ## [3.6.10](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.9...@pie-element/inline-dropdown-configure@3.6.10) (2022-02-04)
55
-
56
- **Note:** Version bump only for package @pie-element/inline-dropdown-configure
57
-
58
-
59
-
60
-
61
-
62
- ## [3.6.9](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.8...@pie-element/inline-dropdown-configure@3.6.9) (2022-01-24)
63
-
64
- **Note:** Version bump only for package @pie-element/inline-dropdown-configure
65
-
66
-
67
-
68
-
69
-
70
6
  ## [3.6.8](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@3.6.7...@pie-element/inline-dropdown-configure@3.6.8) (2022-01-10)
71
7
 
72
8
  **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>');
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vaW5saW5lLWRyb3Bkb3duLXRvb2xiYXIudGVzdC5qc3giXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJvbkFkZENob2ljZSIsImplc3QiLCJmbiIsIm9uUmVtb3ZlQ2hvaWNlIiwib25TZWxlY3RDaG9pY2UiLCJvblRvb2xiYXJEb25lIiwidmFsdWUiLCJjaGFuZ2UiLCJtb2NrUmV0dXJuVmFsdWUiLCJzZXROb2RlQnlLZXkiLCJtb3ZlRm9jdXNUbyIsIm1vdmVBbmNob3JUbyIsImRvY3VtZW50IiwiZ2V0TmV4dFRleHQiLCJrZXkiLCJ3cmFwcGVyIiwiZGVmYXVsdHMiLCJub2RlIiwiZGF0YSIsInRvSlNPTiIsImdldCIsImNob2ljZXMiLCJsYWJlbCIsImNvcnJlY3QiLCJwcm9wcyIsImRpc2FibGVMaWZlY3ljbGVNZXRob2RzIiwiaXQiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJ3IiwiYmVmb3JlRWFjaCIsImluc3RhbmNlIiwib25SZXNwQXJlYUNoYW5nZSIsInN0YXRlIiwicmVzcEFyZWFNYXJrdXAiLCJ0b0VxdWFsIiwib25Eb25lIiwibm90IiwidG9CZUNhbGxlZCIsInRvQmVDYWxsZWRXaXRoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7Ozs7O0FBRUFBLFFBQVEsQ0FBQyxNQUFELEVBQVMsWUFBTTtBQUNyQixNQUFJQyxXQUFXLEdBQUdDLElBQUksQ0FBQ0MsRUFBTCxFQUFsQjtBQUNBLE1BQUlDLGNBQWMsR0FBR0YsSUFBSSxDQUFDQyxFQUFMLEVBQXJCO0FBQ0EsTUFBSUUsY0FBYyxHQUFHSCxJQUFJLENBQUNDLEVBQUwsRUFBckI7QUFDQSxNQUFJRyxhQUFhLEdBQUdKLElBQUksQ0FBQ0MsRUFBTCxFQUFwQjtBQUVBLE1BQU1JLEtBQUssR0FBRztBQUNaQyxJQUFBQSxNQUFNLEVBQUVOLElBQUksQ0FBQ0MsRUFBTCxHQUFVTSxlQUFWLENBQTBCO0FBQ2hDQyxNQUFBQSxZQUFZ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QUNuRkcsUUFBQUEsQ0FBQyxDQUFDRSxRQUFGLEdBQWE1QixjQUFiLENBQTRCLEtBQTVCLEVBQW1DLEdBQW5DO0FBRUF3QixRQUFBQSxNQUFNLENBQUN4QixjQUFELENBQU4sQ0FBdUJvQyxjQUF2QixDQUFzQyxHQUF0QztBQUNELE9BSkMsQ0FBRjtBQUtELEtBWk8sQ0FBUjtBQWFELEdBbkRPLENBQVI7QUFvREQsQ0ExSE8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNoYWxsb3cgfSBmcm9tICdlbnp5bWUnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgUmVzcEFyZWFUb29sYmFyIH0gZnJvbSAnLi4vaW5saW5lLWRyb3Bkb3duLXRvb2xiYXInO1xuXG5kZXNjcmliZSgnTWFpbicsICgpID0+IHtcbiAgbGV0IG9uQWRkQ2hvaWNlID0gamVzdC5mbigpO1xuICBsZXQgb25SZW1vdmVDaG9pY2UgPSBqZXN0LmZuKCk7XG4gIGxldCBvblNlbGVjdENob2ljZSA9IGplc3QuZm4oKTtcbiAgbGV0IG9uVG9vbGJhckRvbmUgPSBqZXN0LmZuKCk7XG5cbiAgY29uc3QgdmFsdWUgPSB7XG4gICAgY2hhbmdlOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHtcbiAgICAgIHNldE5vZGVCeUtleTogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG4gICAgICAgIG1vdmVGb2N1c1RvOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHtcbiAgICAgICAgICBtb3ZlQW5jaG9yVG86IGplc3QuZm4oKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9KSxcbiAgICBkb2N1bWVudDoge1xuICAgICAgZ2V0TmV4dFRleHQ6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe1xuICAgICAgICBrZXk6ICcxJ1xuICAgICAgfSlcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgd3JhcHBlciA9ICgpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIG9uQWRkQ2hvaWNlLFxuICAgICAgb25SZW1vdmVDaG9pY2UsXG4gICAgICBvblNlbGVjdENob2ljZSxcbiAgICAgIG5vZGU6IHtcbiAgICAgICAga2V5OiAnMScsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB0b0pTT046IGplc3QuZm4oKSxcbiAgICAgICAgICBnZXQ6IChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdpbmRleCcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICcwJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuICdjb3cnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHZhbHVlLFxuICAgICAgb25Ub29sYmFyRG9uZSxcbiAgICAgIGNob2ljZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnY293ICcsXG4gICAgICAgICAgdmFsdWU6ICcwJyxcbiAgICAgICAgICBjb3JyZWN0OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ2RvZyAnLFxuICAgICAgICAgIHZhbHVlOiAnMScsXG4gICAgICAgICAgY29ycmVjdDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnY2F0ICcsXG4gICAgICAgICAgdmFsdWU6ICcyJyxcbiAgICAgICAgICBjb3JyZWN0OiBmYWxzZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMgfTtcblxuICAgIHJldHVybiBzaGFsbG93KDxSZXNwQXJlYVRvb2xiYXIgey4uLnByb3BzfSAvPiwgeyBkaXNhYmxlTGlmZWN5Y2xlTWV0aG9kczogdHJ1ZSB9KTtcbiAgfTtcblxuICBkZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gICAgaXQoJ1JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICBleHBlY3Qod3JhcHBlcigpKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2xvZ2ljJywgKCkgPT4ge1xuICAgIGxldCB3O1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcigpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uUmVzcEFyZWFDaGFuZ2UnLCAoKSA9PiB7XG4gICAgICBpdCgnc2V0cyBzdGF0ZScsICgpID0+IHtcbiAgICAgICAgdy5pbnN0YW5jZSgpLm9uUmVzcEFyZWFDaGFuZ2UoJzxkaXY+dGVzdDwvZGl2PicpO1xuXG4gICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuc3RhdGUucmVzcEFyZWFNYXJrdXApLnRvRXF1YWwoJzxkaXY+dGVzdDwvZGl2PicpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25Eb25lJywgKCkgPT4ge1xuICAgICAgaXQoJ2RvZXMgbm90IGNhbGwgb25BZGRDaG9pY2UgaWYgY2hvaWNlIGlzIGVtcHR5JywgKCkgPT4ge1xuICAgICAgICB3Lmluc3RhbmNlKCkub25Eb25lKCc8ZGl2PjxwPjwvcD48L2Rpdj4nKTtcblxuICAgICAgICBleHBlY3Qob25BZGRDaG9pY2UpLm5vdC50b0JlQ2FsbGVkKCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2NhbGxzIG9uQWRkQ2hvaWNlIGlmIGNob2ljZSBub3QgZW1wdHknLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vbkRvbmUoJzxkaXY+dGVzdDwvZGl2PicpO1xuXG4gICAgICAgIGV4cGVjdChvbkFkZENob2ljZSkudG9CZUNhbGxlZFdpdGgoJzAnLCAnPGRpdj50ZXN0PC9kaXY+Jyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvblNlbGVjdENob2ljZScsICAoKSA9PiB7XG4gICAgICBpdCgnY2FsbHMgb25Ub29sYmFyRG9uZSBhbmQgb25TZWxlY3RDaG9pY2UnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblNlbGVjdENob2ljZSgnY2F0JywgJzInKTtcblxuICAgICAgICBleHBlY3Qob25Ub29sYmFyRG9uZSkudG9CZUNhbGxlZCgpO1xuICAgICAgICBleHBlY3Qob25TZWxlY3RDaG9pY2UpLnRvQmVDYWxsZWRXaXRoKCcyJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvblJlbW92ZUNob2ljZScsICgpID0+IHtcbiAgICAgIGl0KCdjYWxscyBvblRvb2xiYXJDaGFuZ2UgaWYgcmVtb3ZlZCB2YWx1ZSBpcyB0aGUgb25lIHNlbGVjdGVkIGFzIGNvcnJlY3QnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblJlbW92ZUNob2ljZSgnY293JywgJzAnKTtcblxuICAgICAgICBleHBlY3Qob25Ub29sYmFyRG9uZSkudG9CZUNhbGxlZCgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdjYWxscyBvblJlbW92ZUNob2ljZSBpZiByZW1vdmVkIHZhbHVlIGlzIG5vdCB0aGUgb25lIHNlbGVjdGVkIGFzIGNvcnJlY3QnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblJlbW92ZUNob2ljZSgnY2F0JywgJzInKTtcblxuICAgICAgICBleHBlY3Qob25SZW1vdmVDaG9pY2UpLnRvQmVDYWxsZWRXaXRoKCcyJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==