@pie-lib/editable-html-tip-tap 1.1.1-next.1 → 1.1.1-next.3
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/LICENSE.md +5 -0
- package/NEXT.CHANGELOG.json +1 -0
- package/lib/components/CharacterPicker.js +10 -24
- package/lib/components/CharacterPicker.js.map +1 -1
- package/lib/components/EditableHtml.js +0 -17
- package/lib/components/EditableHtml.js.map +1 -1
- package/lib/components/MenuBar.js +0 -17
- package/lib/components/MenuBar.js.map +1 -1
- package/lib/components/TiptapContainer.js +4 -17
- package/lib/components/TiptapContainer.js.map +1 -1
- package/lib/components/characters/characterUtils.js +0 -2
- package/lib/components/characters/characterUtils.js.map +1 -1
- package/lib/components/characters/custom-popper.js +0 -1
- package/lib/components/characters/custom-popper.js.map +1 -1
- package/lib/components/common/done-button.js +0 -1
- package/lib/components/common/done-button.js.map +1 -1
- package/lib/components/common/toolbar-buttons.js +0 -12
- package/lib/components/common/toolbar-buttons.js.map +1 -1
- package/lib/components/icons/CssIcon.js +0 -1
- package/lib/components/icons/CssIcon.js.map +1 -1
- package/lib/components/icons/RespArea.js +0 -10
- package/lib/components/icons/RespArea.js.map +1 -1
- package/lib/components/icons/TableIcons.js +0 -1
- package/lib/components/icons/TableIcons.js.map +1 -1
- package/lib/components/icons/TextAlign.js +0 -7
- package/lib/components/icons/TextAlign.js.map +1 -1
- package/lib/components/image/AltDialog.js +0 -5
- package/lib/components/image/AltDialog.js.map +1 -1
- package/lib/components/image/ImageToolbar.js +0 -13
- package/lib/components/image/ImageToolbar.js.map +1 -1
- package/lib/components/image/InsertImageHandler.js +0 -10
- package/lib/components/image/InsertImageHandler.js.map +1 -1
- package/lib/components/media/MediaDialog.js +0 -19
- package/lib/components/media/MediaDialog.js.map +1 -1
- package/lib/components/media/MediaToolbar.js +0 -2
- package/lib/components/media/MediaToolbar.js.map +1 -1
- package/lib/components/media/MediaWrapper.js +0 -11
- package/lib/components/media/MediaWrapper.js.map +1 -1
- package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js +2 -12
- package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js.map +1 -1
- package/lib/components/respArea/DragInTheBlank/choice.js +0 -8
- package/lib/components/respArea/DragInTheBlank/choice.js.map +1 -1
- package/lib/components/respArea/ExplicitConstructedResponse.js +0 -8
- package/lib/components/respArea/ExplicitConstructedResponse.js.map +1 -1
- package/lib/components/respArea/InlineDropdown.js +0 -8
- package/lib/components/respArea/InlineDropdown.js.map +1 -1
- package/lib/components/respArea/ToolbarIcon.js +0 -10
- package/lib/components/respArea/ToolbarIcon.js.map +1 -1
- package/lib/constants.js +0 -1
- package/lib/constants.js.map +1 -1
- package/lib/extensions/css.js +0 -11
- package/lib/extensions/css.js.map +1 -1
- package/lib/extensions/custom-toolbar-wrapper.js +1 -19
- package/lib/extensions/custom-toolbar-wrapper.js.map +1 -1
- package/lib/extensions/extended-table.js +1 -5
- package/lib/extensions/extended-table.js.map +1 -1
- package/lib/extensions/image-component.js +4 -21
- package/lib/extensions/image-component.js.map +1 -1
- package/lib/extensions/image.js +0 -11
- package/lib/extensions/image.js.map +1 -1
- package/lib/extensions/index.js +3 -12
- package/lib/extensions/index.js.map +1 -1
- package/lib/extensions/math.js +0 -16
- package/lib/extensions/math.js.map +1 -1
- package/lib/extensions/media.js +0 -15
- package/lib/extensions/media.js.map +1 -1
- package/lib/extensions/responseArea.js +0 -23
- package/lib/extensions/responseArea.js.map +1 -1
- package/lib/index.js +0 -7
- package/lib/index.js.map +1 -1
- package/lib/styles/editorContainerStyles.js +0 -2
- package/lib/styles/editorContainerStyles.js.map +1 -1
- package/lib/theme.js +0 -1
- package/lib/theme.js.map +1 -1
- package/lib/utils/size.js +0 -6
- package/lib/utils/size.js.map +1 -1
- package/package.json +9 -9
- package/src/__tests__/constants.test.js +1 -2
- package/src/__tests__/extensions.test.js +1 -1
- package/src/__tests__/index.test.jsx +1 -1
- package/src/components/CharacterPicker.jsx +11 -8
- package/src/components/EditableHtml.jsx +2 -2
- package/src/components/MenuBar.jsx +32 -186
- package/src/components/TiptapContainer.jsx +4 -1
- package/src/components/__tests__/AltDialog.test.jsx +1 -1
- package/src/components/__tests__/CharacterPicker.test.jsx +5 -3
- package/src/components/__tests__/DragInTheBlank.test.jsx +1 -1
- package/src/components/__tests__/ExplicitConstructedResponse.test.jsx +1 -1
- package/src/components/__tests__/ImageToolbar.test.jsx +1 -1
- package/src/components/__tests__/InlineDropdown.test.jsx +1 -1
- package/src/components/__tests__/MediaDialog.test.jsx +1 -1
- package/src/components/__tests__/MediaToolbar.test.jsx +1 -1
- package/src/components/__tests__/MenuBar.test.jsx +1 -1
- package/src/components/__tests__/TableIcons.test.jsx +1 -1
- package/src/components/__tests__/TextAlign.test.jsx +2 -2
- package/src/components/__tests__/choice.test.jsx +1 -1
- package/src/components/__tests__/done-button.test.jsx +2 -2
- package/src/components/__tests__/toolbar-buttons.test.jsx +2 -2
- package/src/components/image/AltDialog.jsx +1 -1
- package/src/components/image/InsertImageHandler.js +1 -1
- package/src/components/media/MediaDialog.js +4 -15
- package/src/components/respArea/DragInTheBlank/DragInTheBlank.jsx +1 -1
- package/src/components/respArea/DragInTheBlank/choice.jsx +34 -27
- package/src/components/respArea/ExplicitConstructedResponse.jsx +1 -1
- package/src/components/respArea/InlineDropdown.jsx +2 -3
- package/src/extensions/__tests__/custom-toolbar-wrapper.test.jsx +1 -1
- package/src/extensions/__tests__/extended-table.test.js +0 -21
- package/src/extensions/__tests__/image-component.test.jsx +1 -1
- package/src/extensions/__tests__/media.test.js +1 -1
- package/src/extensions/__tests__/responseArea.test.js +2 -2
- package/src/extensions/css.js +25 -23
- package/src/extensions/custom-toolbar-wrapper.jsx +1 -2
- package/src/extensions/extended-table.js +0 -3
- package/src/extensions/image-component.jsx +2 -2
- package/src/extensions/image.js +8 -6
- package/src/extensions/index.js +1 -3
- package/src/extensions/math.js +29 -27
- package/src/extensions/media.js +12 -14
- package/src/extensions/responseArea.js +91 -86
- package/src/styles/editorContainerStyles.js +0 -1
- package/lib/__tests__/EditableHtml.test.js +0 -374
- package/lib/__tests__/constants.test.js +0 -28
- package/lib/__tests__/extensions.test.js +0 -214
- package/lib/__tests__/index.test.js +0 -246
- package/lib/__tests__/size-utils.test.js +0 -57
- package/lib/__tests__/theme.test.js +0 -17
- package/lib/components/__tests__/AltDialog.test.js +0 -201
- package/lib/components/__tests__/CharacterPicker.test.js +0 -313
- package/lib/components/__tests__/CssIcon.test.js +0 -58
- package/lib/components/__tests__/DragInTheBlank.test.js +0 -309
- package/lib/components/__tests__/ExplicitConstructedResponse.test.js +0 -263
- package/lib/components/__tests__/ImageToolbar.test.js +0 -195
- package/lib/components/__tests__/InlineDropdown.test.js +0 -297
- package/lib/components/__tests__/InsertImageHandler.test.js +0 -162
- package/lib/components/__tests__/MediaDialog.test.js +0 -435
- package/lib/components/__tests__/MediaToolbar.test.js +0 -126
- package/lib/components/__tests__/MediaWrapper.test.js +0 -96
- package/lib/components/__tests__/MenuBar.test.js +0 -459
- package/lib/components/__tests__/RespArea.test.js +0 -171
- package/lib/components/__tests__/TableIcons.test.js +0 -153
- package/lib/components/__tests__/TextAlign.test.js +0 -216
- package/lib/components/__tests__/TiptapContainer.test.js +0 -196
- package/lib/components/__tests__/characterUtils.test.js +0 -189
- package/lib/components/__tests__/choice.test.js +0 -213
- package/lib/components/__tests__/custom-popper.test.js +0 -108
- package/lib/components/__tests__/done-button.test.js +0 -72
- package/lib/components/__tests__/toolbar-buttons.test.js +0 -277
- package/lib/extensions/__tests__/component.test.js +0 -314
- package/lib/extensions/__tests__/css.test.js +0 -218
- package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +0 -185
- package/lib/extensions/__tests__/extended-table.test.js +0 -114
- package/lib/extensions/__tests__/image.test.js +0 -178
- package/lib/extensions/__tests__/media.test.js +0 -296
- package/lib/extensions/__tests__/responseArea.test.js +0 -332
- package/lib/extensions/component.js +0 -308
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _react = _interopRequireDefault(require("react"));
|
|
5
|
-
var _react2 = require("@testing-library/react");
|
|
6
|
-
var _RespArea = require("../icons/RespArea");
|
|
7
|
-
describe('Chevron', function () {
|
|
8
|
-
it('renders without crashing', function () {
|
|
9
|
-
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.Chevron, null)),
|
|
10
|
-
container = _render.container;
|
|
11
|
-
expect(container).toBeInTheDocument();
|
|
12
|
-
});
|
|
13
|
-
it('rotates 0 degrees for right direction (default)', function () {
|
|
14
|
-
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.Chevron, {
|
|
15
|
-
direction: "right"
|
|
16
|
-
})),
|
|
17
|
-
container = _render2.container;
|
|
18
|
-
var svg = container.querySelector('svg');
|
|
19
|
-
expect(svg).toHaveStyle({
|
|
20
|
-
transform: 'rotate(0deg)'
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
it('rotates 90 degrees for down direction', function () {
|
|
24
|
-
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.Chevron, {
|
|
25
|
-
direction: "down"
|
|
26
|
-
})),
|
|
27
|
-
container = _render3.container;
|
|
28
|
-
var svg = container.querySelector('svg');
|
|
29
|
-
expect(svg).toHaveStyle({
|
|
30
|
-
transform: 'rotate(90deg)'
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
it('rotates -90 degrees for up direction', function () {
|
|
34
|
-
var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.Chevron, {
|
|
35
|
-
direction: "up"
|
|
36
|
-
})),
|
|
37
|
-
container = _render4.container;
|
|
38
|
-
var svg = container.querySelector('svg');
|
|
39
|
-
expect(svg).toHaveStyle({
|
|
40
|
-
transform: 'rotate(-90deg)'
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
it('rotates 180 degrees for left direction', function () {
|
|
44
|
-
var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.Chevron, {
|
|
45
|
-
direction: "left"
|
|
46
|
-
})),
|
|
47
|
-
container = _render5.container;
|
|
48
|
-
var svg = container.querySelector('svg');
|
|
49
|
-
expect(svg).toHaveStyle({
|
|
50
|
-
transform: 'rotate(180deg)'
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
it('applies custom style prop', function () {
|
|
54
|
-
var customStyle = {
|
|
55
|
-
color: 'red',
|
|
56
|
-
fontSize: '20px'
|
|
57
|
-
};
|
|
58
|
-
var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.Chevron, {
|
|
59
|
-
style: customStyle
|
|
60
|
-
})),
|
|
61
|
-
container = _render6.container;
|
|
62
|
-
var svg = container.querySelector('svg');
|
|
63
|
-
expect(svg).toHaveStyle({
|
|
64
|
-
color: 'red',
|
|
65
|
-
fontSize: '20px'
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
it('defaults to 0 rotation when no direction specified', function () {
|
|
69
|
-
var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.Chevron, null)),
|
|
70
|
-
container = _render7.container;
|
|
71
|
-
var svg = container.querySelector('svg');
|
|
72
|
-
expect(svg).toHaveStyle({
|
|
73
|
-
transform: 'rotate(0deg)'
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
describe('GripIcon', function () {
|
|
78
|
-
it('renders without crashing', function () {
|
|
79
|
-
var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.GripIcon, null)),
|
|
80
|
-
container = _render8.container;
|
|
81
|
-
expect(container).toBeInTheDocument();
|
|
82
|
-
});
|
|
83
|
-
it('renders two MoreVert icons', function () {
|
|
84
|
-
var _render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.GripIcon, null)),
|
|
85
|
-
container = _render9.container;
|
|
86
|
-
var moreVertIcons = container.querySelectorAll('svg');
|
|
87
|
-
expect(moreVertIcons.length).toBe(2);
|
|
88
|
-
});
|
|
89
|
-
it('applies custom style prop', function () {
|
|
90
|
-
var customStyle = {
|
|
91
|
-
color: 'blue'
|
|
92
|
-
};
|
|
93
|
-
var _render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.GripIcon, {
|
|
94
|
-
style: customStyle
|
|
95
|
-
})),
|
|
96
|
-
container = _render0.container;
|
|
97
|
-
var span = container.querySelector('span');
|
|
98
|
-
expect(span).toHaveStyle({
|
|
99
|
-
color: 'blue'
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
it('applies negative margin to first icon', function () {
|
|
103
|
-
var _render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.GripIcon, null)),
|
|
104
|
-
container = _render1.container;
|
|
105
|
-
var firstIcon = container.querySelector('svg');
|
|
106
|
-
expect(firstIcon).toHaveStyle({
|
|
107
|
-
margin: '0 -16px'
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
describe('ToolbarIcon', function () {
|
|
112
|
-
it('renders without crashing', function () {
|
|
113
|
-
var _render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.ToolbarIcon, null)),
|
|
114
|
-
container = _render10.container;
|
|
115
|
-
expect(container).toBeInTheDocument();
|
|
116
|
-
});
|
|
117
|
-
it('renders "+ Response Area" text', function () {
|
|
118
|
-
var _render11 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.ToolbarIcon, null)),
|
|
119
|
-
getByText = _render11.getByText;
|
|
120
|
-
expect(getByText('+ Response Area')).toBeInTheDocument();
|
|
121
|
-
});
|
|
122
|
-
it('applies correct font family', function () {
|
|
123
|
-
var _render12 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.ToolbarIcon, null)),
|
|
124
|
-
getByText = _render12.getByText;
|
|
125
|
-
var element = getByText('+ Response Area');
|
|
126
|
-
// Font family is applied via styled component, just verify text renders
|
|
127
|
-
expect(element).toBeInTheDocument();
|
|
128
|
-
});
|
|
129
|
-
it('applies bold font weight', function () {
|
|
130
|
-
var _render13 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.ToolbarIcon, null)),
|
|
131
|
-
getByText = _render13.getByText;
|
|
132
|
-
var element = getByText('+ Response Area');
|
|
133
|
-
expect(element).toHaveStyle({
|
|
134
|
-
fontWeight: 'bold'
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
it('has correct dimensions', function () {
|
|
138
|
-
var _render14 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.ToolbarIcon, null)),
|
|
139
|
-
getByText = _render14.getByText;
|
|
140
|
-
var element = getByText('+ Response Area');
|
|
141
|
-
expect(element).toHaveStyle({
|
|
142
|
-
width: '110px',
|
|
143
|
-
height: '28px'
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
it('has relative positioning', function () {
|
|
147
|
-
var _render15 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.ToolbarIcon, null)),
|
|
148
|
-
getByText = _render15.getByText;
|
|
149
|
-
var element = getByText('+ Response Area');
|
|
150
|
-
expect(element).toHaveStyle({
|
|
151
|
-
position: 'relative'
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
it('has nowrap white space', function () {
|
|
155
|
-
var _render16 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.ToolbarIcon, null)),
|
|
156
|
-
getByText = _render16.getByText;
|
|
157
|
-
var element = getByText('+ Response Area');
|
|
158
|
-
expect(element).toHaveStyle({
|
|
159
|
-
whiteSpace: 'nowrap'
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
it('has top offset', function () {
|
|
163
|
-
var _render17 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_RespArea.ToolbarIcon, null)),
|
|
164
|
-
getByText = _render17.getByText;
|
|
165
|
-
var element = getByText('+ Response Area');
|
|
166
|
-
expect(element).toHaveStyle({
|
|
167
|
-
top: '7px'
|
|
168
|
-
});
|
|
169
|
-
});
|
|
170
|
-
});
|
|
171
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfUmVzcEFyZWEiLCJkZXNjcmliZSIsIml0IiwiX3JlbmRlciIsInJlbmRlciIsImNyZWF0ZUVsZW1lbnQiLCJDaGV2cm9uIiwiY29udGFpbmVyIiwiZXhwZWN0IiwidG9CZUluVGhlRG9jdW1lbnQiLCJfcmVuZGVyMiIsImRpcmVjdGlvbiIsInN2ZyIsInF1ZXJ5U2VsZWN0b3IiLCJ0b0hhdmVTdHlsZSIsInRyYW5zZm9ybSIsIl9yZW5kZXIzIiwiX3JlbmRlcjQiLCJfcmVuZGVyNSIsImN1c3RvbVN0eWxlIiwiY29sb3IiLCJmb250U2l6ZSIsIl9yZW5kZXI2Iiwic3R5bGUiLCJfcmVuZGVyNyIsIl9yZW5kZXI4IiwiR3JpcEljb24iLCJfcmVuZGVyOSIsIm1vcmVWZXJ0SWNvbnMiLCJxdWVyeVNlbGVjdG9yQWxsIiwibGVuZ3RoIiwidG9CZSIsIl9yZW5kZXIwIiwic3BhbiIsIl9yZW5kZXIxIiwiZmlyc3RJY29uIiwibWFyZ2luIiwiX3JlbmRlcjEwIiwiVG9vbGJhckljb24iLCJfcmVuZGVyMTEiLCJnZXRCeVRleHQiLCJfcmVuZGVyMTIiLCJlbGVtZW50IiwiX3JlbmRlcjEzIiwiZm9udFdlaWdodCIsIl9yZW5kZXIxNCIsIndpZHRoIiwiaGVpZ2h0IiwiX3JlbmRlcjE1IiwicG9zaXRpb24iLCJfcmVuZGVyMTYiLCJ3aGl0ZVNwYWNlIiwiX3JlbmRlcjE3IiwidG9wIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvX190ZXN0c19fL1Jlc3BBcmVhLnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIgfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCB7IENoZXZyb24sIEdyaXBJY29uLCBUb29sYmFySWNvbiB9IGZyb20gJy4uL2ljb25zL1Jlc3BBcmVhJztcblxuZGVzY3JpYmUoJ0NoZXZyb24nLCAoKSA9PiB7XG4gIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q2hldnJvbiAvPik7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JvdGF0ZXMgMCBkZWdyZWVzIGZvciByaWdodCBkaXJlY3Rpb24gKGRlZmF1bHQpJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPENoZXZyb24gZGlyZWN0aW9uPVwicmlnaHRcIiAvPik7XG4gICAgY29uc3Qgc3ZnID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuICAgIGV4cGVjdChzdmcpLnRvSGF2ZVN0eWxlKHsgdHJhbnNmb3JtOiAncm90YXRlKDBkZWcpJyB9KTtcbiAgfSk7XG5cbiAgaXQoJ3JvdGF0ZXMgOTAgZGVncmVlcyBmb3IgZG93biBkaXJlY3Rpb24nLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q2hldnJvbiBkaXJlY3Rpb249XCJkb3duXCIgLz4pO1xuICAgIGNvbnN0IHN2ZyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICBleHBlY3Qoc3ZnKS50b0hhdmVTdHlsZSh7IHRyYW5zZm9ybTogJ3JvdGF0ZSg5MGRlZyknIH0pO1xuICB9KTtcblxuICBpdCgncm90YXRlcyAtOTAgZGVncmVlcyBmb3IgdXAgZGlyZWN0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPENoZXZyb24gZGlyZWN0aW9uPVwidXBcIiAvPik7XG4gICAgY29uc3Qgc3ZnID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuICAgIGV4cGVjdChzdmcpLnRvSGF2ZVN0eWxlKHsgdHJhbnNmb3JtOiAncm90YXRlKC05MGRlZyknIH0pO1xuICB9KTtcblxuICBpdCgncm90YXRlcyAxODAgZGVncmVlcyBmb3IgbGVmdCBkaXJlY3Rpb24nLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q2hldnJvbiBkaXJlY3Rpb249XCJsZWZ0XCIgLz4pO1xuICAgIGNvbnN0IHN2ZyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICBleHBlY3Qoc3ZnKS50b0hhdmVTdHlsZSh7IHRyYW5zZm9ybTogJ3JvdGF0ZSgxODBkZWcpJyB9KTtcbiAgfSk7XG5cbiAgaXQoJ2FwcGxpZXMgY3VzdG9tIHN0eWxlIHByb3AnLCAoKSA9PiB7XG4gICAgY29uc3QgY3VzdG9tU3R5bGUgPSB7IGNvbG9yOiAncmVkJywgZm9udFNpemU6ICcyMHB4JyB9O1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPENoZXZyb24gc3R5bGU9e2N1c3RvbVN0eWxlfSAvPik7XG4gICAgY29uc3Qgc3ZnID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuICAgIGV4cGVjdChzdmcpLnRvSGF2ZVN0eWxlKHsgY29sb3I6ICdyZWQnLCBmb250U2l6ZTogJzIwcHgnIH0pO1xuICB9KTtcblxuICBpdCgnZGVmYXVsdHMgdG8gMCByb3RhdGlvbiB3aGVuIG5vIGRpcmVjdGlvbiBzcGVjaWZpZWQnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q2hldnJvbiAvPik7XG4gICAgY29uc3Qgc3ZnID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuICAgIGV4cGVjdChzdmcpLnRvSGF2ZVN0eWxlKHsgdHJhbnNmb3JtOiAncm90YXRlKDBkZWcpJyB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0dyaXBJY29uJywgKCkgPT4ge1xuICBpdCgncmVuZGVycyB3aXRob3V0IGNyYXNoaW5nJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEdyaXBJY29uIC8+KTtcbiAgICBleHBlY3QoY29udGFpbmVyKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyB0d28gTW9yZVZlcnQgaWNvbnMnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8R3JpcEljb24gLz4pO1xuICAgIGNvbnN0IG1vcmVWZXJ0SWNvbnMgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnc3ZnJyk7XG4gICAgZXhwZWN0KG1vcmVWZXJ0SWNvbnMubGVuZ3RoKS50b0JlKDIpO1xuICB9KTtcblxuICBpdCgnYXBwbGllcyBjdXN0b20gc3R5bGUgcHJvcCcsICgpID0+IHtcbiAgICBjb25zdCBjdXN0b21TdHlsZSA9IHsgY29sb3I6ICdibHVlJyB9O1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEdyaXBJY29uIHN0eWxlPXtjdXN0b21TdHlsZX0gLz4pO1xuICAgIGNvbnN0IHNwYW4gPSBjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3BhbicpO1xuICAgIGV4cGVjdChzcGFuKS50b0hhdmVTdHlsZSh7IGNvbG9yOiAnYmx1ZScgfSk7XG4gIH0pO1xuXG4gIGl0KCdhcHBsaWVzIG5lZ2F0aXZlIG1hcmdpbiB0byBmaXJzdCBpY29uJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEdyaXBJY29uIC8+KTtcbiAgICBjb25zdCBmaXJzdEljb24gPSBjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG4gICAgZXhwZWN0KGZpcnN0SWNvbikudG9IYXZlU3R5bGUoeyBtYXJnaW46ICcwIC0xNnB4JyB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ1Rvb2xiYXJJY29uJywgKCkgPT4ge1xuICBpdCgncmVuZGVycyB3aXRob3V0IGNyYXNoaW5nJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFRvb2xiYXJJY29uIC8+KTtcbiAgICBleHBlY3QoY29udGFpbmVyKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyBcIisgUmVzcG9uc2UgQXJlYVwiIHRleHQnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBnZXRCeVRleHQgfSA9IHJlbmRlcig8VG9vbGJhckljb24gLz4pO1xuICAgIGV4cGVjdChnZXRCeVRleHQoJysgUmVzcG9uc2UgQXJlYScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnYXBwbGllcyBjb3JyZWN0IGZvbnQgZmFtaWx5JywgKCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0QnlUZXh0IH0gPSByZW5kZXIoPFRvb2xiYXJJY29uIC8+KTtcbiAgICBjb25zdCBlbGVtZW50ID0gZ2V0QnlUZXh0KCcrIFJlc3BvbnNlIEFyZWEnKTtcbiAgICAvLyBGb250IGZhbWlseSBpcyBhcHBsaWVkIHZpYSBzdHlsZWQgY29tcG9uZW50LCBqdXN0IHZlcmlmeSB0ZXh0IHJlbmRlcnNcbiAgICBleHBlY3QoZWxlbWVudCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2FwcGxpZXMgYm9sZCBmb250IHdlaWdodCcsICgpID0+IHtcbiAgICBjb25zdCB7IGdldEJ5VGV4dCB9ID0gcmVuZGVyKDxUb29sYmFySWNvbiAvPik7XG4gICAgY29uc3QgZWxlbWVudCA9IGdldEJ5VGV4dCgnKyBSZXNwb25zZSBBcmVhJyk7XG4gICAgZXhwZWN0KGVsZW1lbnQpLnRvSGF2ZVN0eWxlKHsgZm9udFdlaWdodDogJ2JvbGQnIH0pO1xuICB9KTtcblxuICBpdCgnaGFzIGNvcnJlY3QgZGltZW5zaW9ucycsICgpID0+IHtcbiAgICBjb25zdCB7IGdldEJ5VGV4dCB9ID0gcmVuZGVyKDxUb29sYmFySWNvbiAvPik7XG4gICAgY29uc3QgZWxlbWVudCA9IGdldEJ5VGV4dCgnKyBSZXNwb25zZSBBcmVhJyk7XG4gICAgZXhwZWN0KGVsZW1lbnQpLnRvSGF2ZVN0eWxlKHsgd2lkdGg6ICcxMTBweCcsIGhlaWdodDogJzI4cHgnIH0pO1xuICB9KTtcblxuICBpdCgnaGFzIHJlbGF0aXZlIHBvc2l0aW9uaW5nJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0QnlUZXh0IH0gPSByZW5kZXIoPFRvb2xiYXJJY29uIC8+KTtcbiAgICBjb25zdCBlbGVtZW50ID0gZ2V0QnlUZXh0KCcrIFJlc3BvbnNlIEFyZWEnKTtcbiAgICBleHBlY3QoZWxlbWVudCkudG9IYXZlU3R5bGUoeyBwb3NpdGlvbjogJ3JlbGF0aXZlJyB9KTtcbiAgfSk7XG5cbiAgaXQoJ2hhcyBub3dyYXAgd2hpdGUgc3BhY2UnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBnZXRCeVRleHQgfSA9IHJlbmRlcig8VG9vbGJhckljb24gLz4pO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBnZXRCeVRleHQoJysgUmVzcG9uc2UgQXJlYScpO1xuICAgIGV4cGVjdChlbGVtZW50KS50b0hhdmVTdHlsZSh7IHdoaXRlU3BhY2U6ICdub3dyYXAnIH0pO1xuICB9KTtcblxuICBpdCgnaGFzIHRvcCBvZmZzZXQnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBnZXRCeVRleHQgfSA9IHJlbmRlcig8VG9vbGJhckljb24gLz4pO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBnZXRCeVRleHQoJysgUmVzcG9uc2UgQXJlYScpO1xuICAgIGV4cGVjdChlbGVtZW50KS50b0hhdmVTdHlsZSh7IHRvcDogJzdweCcgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFNBQUEsR0FBQUYsT0FBQTtBQUVBRyxRQUFRLENBQUMsU0FBUyxFQUFFLFlBQU07RUFDeEJDLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxZQUFNO0lBQ25DLElBQUFDLE9BQUEsR0FBc0IsSUFBQUMsY0FBTSxlQUFDUixNQUFBLFlBQUFTLGFBQUEsQ0FBQ0wsU0FBQSxDQUFBTSxPQUFPLE1BQUUsQ0FBQyxDQUFDO01BQWpDQyxTQUFTLEdBQUFKLE9BQUEsQ0FBVEksU0FBUztJQUNqQkMsTUFBTSxDQUFDRCxTQUFTLENBQUMsQ0FBQ0UsaUJBQWlCLENBQUMsQ0FBQztFQUN2QyxDQUFDLENBQUM7RUFFRlAsRUFBRSxDQUFDLGlEQUFpRCxFQUFFLFlBQU07SUFDMUQsSUFBQVEsUUFBQSxHQUFzQixJQUFBTixjQUFNLGVBQUNSLE1BQUEsWUFBQVMsYUFBQSxDQUFDTCxTQUFBLENBQUFNLE9BQU87UUFBQ0ssU0FBUyxFQUFDO01BQU8sQ0FBRSxDQUFDLENBQUM7TUFBbkRKLFNBQVMsR0FBQUcsUUFBQSxDQUFUSCxTQUFTO0lBQ2pCLElBQU1LLEdBQUcsR0FBR0wsU0FBUyxDQUFDTSxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQzFDTCxNQUFNLENBQUNJLEdBQUcsQ0FBQyxDQUFDRSxXQUFXLENBQUM7TUFBRUMsU0FBUyxFQUFFO0lBQWUsQ0FBQyxDQUFDO0VBQ3hELENBQUMsQ0FBQztFQUVGYixFQUFFLENBQUMsdUNBQXVDLEVBQUUsWUFBTTtJQUNoRCxJQUFBYyxRQUFBLEdBQXNCLElBQUFaLGNBQU0sZUFBQ1IsTUFBQSxZQUFBUyxhQUFBLENBQUNMLFNBQUEsQ0FBQU0sT0FBTztRQUFDSyxTQUFTLEVBQUM7TUFBTSxDQUFFLENBQUMsQ0FBQztNQUFsREosU0FBUyxHQUFBUyxRQUFBLENBQVRULFNBQVM7SUFDakIsSUFBTUssR0FBRyxHQUFHTCxTQUFTLENBQUNNLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDMUNMLE1BQU0sQ0FBQ0ksR0FBRyxDQUFDLENBQUNFLFdBQVcsQ0FBQztNQUFFQyxTQUFTLEVBQUU7SUFBZ0IsQ0FBQyxDQUFDO0VBQ3pELENBQUMsQ0FBQztFQUVGYixFQUFFLENBQUMsc0NBQXNDLEVBQUUsWUFBTTtJQUMvQyxJQUFBZSxRQUFBLEdBQXNCLElBQUFiLGNBQU0sZUFBQ1IsTUFBQSxZQUFBUyxhQUFBLENBQUNMLFNBQUEsQ0FBQU0sT0FBTztRQUFDSyxTQUFTLEVBQUM7TUFBSSxDQUFFLENBQUMsQ0FBQztNQUFoREosU0FBUyxHQUFBVSxRQUFBLENBQVRWLFNBQVM7SUFDakIsSUFBTUssR0FBRyxHQUFHTCxTQUFTLENBQUNNLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDMUNMLE1BQU0sQ0FBQ0ksR0FBRyxDQUFDLENBQUNFLFdBQVcsQ0FBQztNQUFFQyxTQUFTLEVBQUU7SUFBaUIsQ0FBQyxDQUFDO0VBQzFELENBQUMsQ0FBQztFQUVGYixFQUFFLENBQUMsd0NBQXdDLEVBQUUsWUFBTTtJQUNqRCxJQUFBZ0IsUUFBQSxHQUFzQixJQUFBZCxjQUFNLGVBQUNSLE1BQUEsWUFBQVMsYUFBQSxDQUFDTCxTQUFBLENBQUFNLE9BQU87UUFBQ0ssU0FBUyxFQUFDO01BQU0sQ0FBRSxDQUFDLENBQUM7TUFBbERKLFNBQVMsR0FBQVcsUUFBQSxDQUFUWCxTQUFTO0lBQ2pCLElBQU1LLEdBQUcsR0FBR0wsU0FBUyxDQUFDTSxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQzFDTCxNQUFNLENBQUNJLEdBQUcsQ0FBQyxDQUFDRSxXQUFXLENBQUM7TUFBRUMsU0FBUyxFQUFFO0lBQWlCLENBQUMsQ0FBQztFQUMxRCxDQUFDLENBQUM7RUFFRmIsRUFBRSxDQUFDLDJCQUEyQixFQUFFLFlBQU07SUFDcEMsSUFBTWlCLFdBQVcsR0FBRztNQUFFQyxLQUFLLEVBQUUsS0FBSztNQUFFQyxRQUFRLEVBQUU7SUFBTyxDQUFDO0lBQ3RELElBQUFDLFFBQUEsR0FBc0IsSUFBQWxCLGNBQU0sZUFBQ1IsTUFBQSxZQUFBUyxhQUFBLENBQUNMLFNBQUEsQ0FBQU0sT0FBTztRQUFDaUIsS0FBSyxFQUFFSjtNQUFZLENBQUUsQ0FBQyxDQUFDO01BQXJEWixTQUFTLEdBQUFlLFFBQUEsQ0FBVGYsU0FBUztJQUNqQixJQUFNSyxHQUFHLEdBQUdMLFNBQVMsQ0FBQ00sYUFBYSxDQUFDLEtBQUssQ0FBQztJQUMxQ0wsTUFBTSxDQUFDSSxHQUFHLENBQUMsQ0FBQ0UsV0FBVyxDQUFDO01BQUVNLEtBQUssRUFBRSxLQUFLO01BQUVDLFFBQVEsRUFBRTtJQUFPLENBQUMsQ0FBQztFQUM3RCxDQUFDLENBQUM7RUFFRm5CLEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxZQUFNO0lBQzdELElBQUFzQixRQUFBLEdBQXNCLElBQUFwQixjQUFNLGVBQUNSLE1BQUEsWUFBQVMsYUFBQSxDQUFDTCxTQUFBLENBQUFNLE9BQU8sTUFBRSxDQUFDLENBQUM7TUFBakNDLFNBQVMsR0FBQWlCLFFBQUEsQ0FBVGpCLFNBQVM7SUFDakIsSUFBTUssR0FBRyxHQUFHTCxTQUFTLENBQUNNLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDMUNMLE1BQU0sQ0FBQ0ksR0FBRyxDQUFDLENBQUNFLFdBQVcsQ0FBQztNQUFFQyxTQUFTLEVBQUU7SUFBZSxDQUFDLENBQUM7RUFDeEQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUZkLFFBQVEsQ0FBQyxVQUFVLEVBQUUsWUFBTTtFQUN6QkMsRUFBRSxDQUFDLDBCQUEwQixFQUFFLFlBQU07SUFDbkMsSUFBQXVCLFFBQUEsR0FBc0IsSUFBQXJCLGNBQU0sZUFBQ1IsTUFBQSxZQUFBUyxhQUFBLENBQUNMLFNBQUEsQ0FBQTBCLFFBQVEsTUFBRSxDQUFDLENBQUM7TUFBbENuQixTQUFTLEdBQUFrQixRQUFBLENBQVRsQixTQUFTO0lBQ2pCQyxNQUFNLENBQUNELFNBQVMsQ0FBQyxDQUFDRSxpQkFBaUIsQ0FBQyxDQUFDO0VBQ3ZDLENBQUMsQ0FBQztFQUVGUCxFQUFFLENBQUMsNEJBQTRCLEVBQUUsWUFBTTtJQUNyQyxJQUFBeUIsUUFBQSxHQUFzQixJQUFBdkIsY0FBTSxlQUFDUixNQUFBLFlBQUFTLGFBQUEsQ0FBQ0wsU0FBQSxDQUFBMEIsUUFBUSxNQUFFLENBQUMsQ0FBQztNQUFsQ25CLFNBQVMsR0FBQW9CLFFBQUEsQ0FBVHBCLFNBQVM7SUFDakIsSUFBTXFCLGFBQWEsR0FBR3JCLFNBQVMsQ0FBQ3NCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztJQUN2RHJCLE1BQU0sQ0FBQ29CLGFBQWEsQ0FBQ0UsTUFBTSxDQUFDLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDdEMsQ0FBQyxDQUFDO0VBRUY3QixFQUFFLENBQUMsMkJBQTJCLEVBQUUsWUFBTTtJQUNwQyxJQUFNaUIsV0FBVyxHQUFHO01BQUVDLEtBQUssRUFBRTtJQUFPLENBQUM7SUFDckMsSUFBQVksUUFBQSxHQUFzQixJQUFBNUIsY0FBTSxlQUFDUixNQUFBLFlBQUFTLGFBQUEsQ0FBQ0wsU0FBQSxDQUFBMEIsUUFBUTtRQUFDSCxLQUFLLEVBQUVKO01BQVksQ0FBRSxDQUFDLENBQUM7TUFBdERaLFNBQVMsR0FBQXlCLFFBQUEsQ0FBVHpCLFNBQVM7SUFDakIsSUFBTTBCLElBQUksR0FBRzFCLFNBQVMsQ0FBQ00sYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUM1Q0wsTUFBTSxDQUFDeUIsSUFBSSxDQUFDLENBQUNuQixXQUFXLENBQUM7TUFBRU0sS0FBSyxFQUFFO0lBQU8sQ0FBQyxDQUFDO0VBQzdDLENBQUMsQ0FBQztFQUVGbEIsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLFlBQU07SUFDaEQsSUFBQWdDLFFBQUEsR0FBc0IsSUFBQTlCLGNBQU0sZUFBQ1IsTUFBQSxZQUFBUyxhQUFBLENBQUNMLFNBQUEsQ0FBQTBCLFFBQVEsTUFBRSxDQUFDLENBQUM7TUFBbENuQixTQUFTLEdBQUEyQixRQUFBLENBQVQzQixTQUFTO0lBQ2pCLElBQU00QixTQUFTLEdBQUc1QixTQUFTLENBQUNNLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDaERMLE1BQU0sQ0FBQzJCLFNBQVMsQ0FBQyxDQUFDckIsV0FBVyxDQUFDO01BQUVzQixNQUFNLEVBQUU7SUFBVSxDQUFDLENBQUM7RUFDdEQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUZuQyxRQUFRLENBQUMsYUFBYSxFQUFFLFlBQU07RUFDNUJDLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxZQUFNO0lBQ25DLElBQUFtQyxTQUFBLEdBQXNCLElBQUFqQyxjQUFNLGVBQUNSLE1BQUEsWUFBQVMsYUFBQSxDQUFDTCxTQUFBLENBQUFzQyxXQUFXLE1BQUUsQ0FBQyxDQUFDO01BQXJDL0IsU0FBUyxHQUFBOEIsU0FBQSxDQUFUOUIsU0FBUztJQUNqQkMsTUFBTSxDQUFDRCxTQUFTLENBQUMsQ0FBQ0UsaUJBQWlCLENBQUMsQ0FBQztFQUN2QyxDQUFDLENBQUM7RUFFRlAsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLFlBQU07SUFDekMsSUFBQXFDLFNBQUEsR0FBc0IsSUFBQW5DLGNBQU0sZUFBQ1IsTUFBQSxZQUFBUyxhQUFBLENBQUNMLFNBQUEsQ0FBQXNDLFdBQVcsTUFBRSxDQUFDLENBQUM7TUFBckNFLFNBQVMsR0FBQUQsU0FBQSxDQUFUQyxTQUFTO0lBQ2pCaEMsTUFBTSxDQUFDZ0MsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQy9CLGlCQUFpQixDQUFDLENBQUM7RUFDMUQsQ0FBQyxDQUFDO0VBRUZQLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxZQUFNO0lBQ3RDLElBQUF1QyxTQUFBLEdBQXNCLElBQUFyQyxjQUFNLGVBQUNSLE1BQUEsWUFBQVMsYUFBQSxDQUFDTCxTQUFBLENBQUFzQyxXQUFXLE1BQUUsQ0FBQyxDQUFDO01BQXJDRSxTQUFTLEdBQUFDLFNBQUEsQ0FBVEQsU0FBUztJQUNqQixJQUFNRSxPQUFPLEdBQUdGLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztJQUM1QztJQUNBaEMsTUFBTSxDQUFDa0MsT0FBTyxDQUFDLENBQUNqQyxpQkFBaUIsQ0FBQyxDQUFDO0VBQ3JDLENBQUMsQ0FBQztFQUVGUCxFQUFFLENBQUMsMEJBQTBCLEVBQUUsWUFBTTtJQUNuQyxJQUFBeUMsU0FBQSxHQUFzQixJQUFBdkMsY0FBTSxlQUFDUixNQUFBLFlBQUFTLGFBQUEsQ0FBQ0wsU0FBQSxDQUFBc0MsV0FBVyxNQUFFLENBQUMsQ0FBQztNQUFyQ0UsU0FBUyxHQUFBRyxTQUFBLENBQVRILFNBQVM7SUFDakIsSUFBTUUsT0FBTyxHQUFHRixTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFDNUNoQyxNQUFNLENBQUNrQyxPQUFPLENBQUMsQ0FBQzVCLFdBQVcsQ0FBQztNQUFFOEIsVUFBVSxFQUFFO0lBQU8sQ0FBQyxDQUFDO0VBQ3JELENBQUMsQ0FBQztFQUVGMUMsRUFBRSxDQUFDLHdCQUF3QixFQUFFLFlBQU07SUFDakMsSUFBQTJDLFNBQUEsR0FBc0IsSUFBQXpDLGNBQU0sZUFBQ1IsTUFBQSxZQUFBUyxhQUFBLENBQUNMLFNBQUEsQ0FBQXNDLFdBQVcsTUFBRSxDQUFDLENBQUM7TUFBckNFLFNBQVMsR0FBQUssU0FBQSxDQUFUTCxTQUFTO0lBQ2pCLElBQU1FLE9BQU8sR0FBR0YsU0FBUyxDQUFDLGlCQUFpQixDQUFDO0lBQzVDaEMsTUFBTSxDQUFDa0MsT0FBTyxDQUFDLENBQUM1QixXQUFXLENBQUM7TUFBRWdDLEtBQUssRUFBRSxPQUFPO01BQUVDLE1BQU0sRUFBRTtJQUFPLENBQUMsQ0FBQztFQUNqRSxDQUFDLENBQUM7RUFFRjdDLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxZQUFNO0lBQ25DLElBQUE4QyxTQUFBLEdBQXNCLElBQUE1QyxjQUFNLGVBQUNSLE1BQUEsWUFBQVMsYUFBQSxDQUFDTCxTQUFBLENBQUFzQyxXQUFXLE1BQUUsQ0FBQyxDQUFDO01BQXJDRSxTQUFTLEdBQUFRLFNBQUEsQ0FBVFIsU0FBUztJQUNqQixJQUFNRSxPQUFPLEdBQUdGLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztJQUM1Q2hDLE1BQU0sQ0FBQ2tDLE9BQU8sQ0FBQyxDQUFDNUIsV0FBVyxDQUFDO01BQUVtQyxRQUFRLEVBQUU7SUFBVyxDQUFDLENBQUM7RUFDdkQsQ0FBQyxDQUFDO0VBRUYvQyxFQUFFLENBQUMsd0JBQXdCLEVBQUUsWUFBTTtJQUNqQyxJQUFBZ0QsU0FBQSxHQUFzQixJQUFBOUMsY0FBTSxlQUFDUixNQUFBLFlBQUFTLGFBQUEsQ0FBQ0wsU0FBQSxDQUFBc0MsV0FBVyxNQUFFLENBQUMsQ0FBQztNQUFyQ0UsU0FBUyxHQUFBVSxTQUFBLENBQVRWLFNBQVM7SUFDakIsSUFBTUUsT0FBTyxHQUFHRixTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFDNUNoQyxNQUFNLENBQUNrQyxPQUFPLENBQUMsQ0FBQzVCLFdBQVcsQ0FBQztNQUFFcUMsVUFBVSxFQUFFO0lBQVMsQ0FBQyxDQUFDO0VBQ3ZELENBQUMsQ0FBQztFQUVGakQsRUFBRSxDQUFDLGdCQUFnQixFQUFFLFlBQU07SUFDekIsSUFBQWtELFNBQUEsR0FBc0IsSUFBQWhELGNBQU0sZUFBQ1IsTUFBQSxZQUFBUyxhQUFBLENBQUNMLFNBQUEsQ0FBQXNDLFdBQVcsTUFBRSxDQUFDLENBQUM7TUFBckNFLFNBQVMsR0FBQVksU0FBQSxDQUFUWixTQUFTO0lBQ2pCLElBQU1FLE9BQU8sR0FBR0YsU0FBUyxDQUFDLGlCQUFpQixDQUFDO0lBQzVDaEMsTUFBTSxDQUFDa0MsT0FBTyxDQUFDLENBQUM1QixXQUFXLENBQUM7TUFBRXVDLEdBQUcsRUFBRTtJQUFNLENBQUMsQ0FBQztFQUM3QyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _react = _interopRequireDefault(require("react"));
|
|
5
|
-
var _react2 = require("@testing-library/react");
|
|
6
|
-
var _TableIcons = require("../icons/TableIcons");
|
|
7
|
-
describe('AddRow', function () {
|
|
8
|
-
it('renders without crashing', function () {
|
|
9
|
-
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.AddRow, null)),
|
|
10
|
-
container = _render.container;
|
|
11
|
-
expect(container).toBeInTheDocument();
|
|
12
|
-
});
|
|
13
|
-
it('renders SVG', function () {
|
|
14
|
-
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.AddRow, null)),
|
|
15
|
-
container = _render2.container;
|
|
16
|
-
var svg = container.querySelector('svg');
|
|
17
|
-
expect(svg).toBeInTheDocument();
|
|
18
|
-
});
|
|
19
|
-
it('has correct viewBox', function () {
|
|
20
|
-
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.AddRow, null)),
|
|
21
|
-
container = _render3.container;
|
|
22
|
-
var svg = container.querySelector('svg');
|
|
23
|
-
expect(svg).toHaveAttribute('viewBox', '0 0 24 24');
|
|
24
|
-
});
|
|
25
|
-
it('has correct dimensions', function () {
|
|
26
|
-
var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.AddRow, null)),
|
|
27
|
-
container = _render4.container;
|
|
28
|
-
var svg = container.querySelector('svg');
|
|
29
|
-
expect(svg).toHaveAttribute('width', '24');
|
|
30
|
-
expect(svg).toHaveAttribute('height', '24');
|
|
31
|
-
});
|
|
32
|
-
it('contains path element', function () {
|
|
33
|
-
var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.AddRow, null)),
|
|
34
|
-
container = _render5.container;
|
|
35
|
-
var path = container.querySelector('path');
|
|
36
|
-
expect(path).toBeInTheDocument();
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
describe('RemoveRow', function () {
|
|
40
|
-
it('renders without crashing', function () {
|
|
41
|
-
var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.RemoveRow, null)),
|
|
42
|
-
container = _render6.container;
|
|
43
|
-
expect(container).toBeInTheDocument();
|
|
44
|
-
});
|
|
45
|
-
it('renders SVG', function () {
|
|
46
|
-
var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.RemoveRow, null)),
|
|
47
|
-
container = _render7.container;
|
|
48
|
-
var svg = container.querySelector('svg');
|
|
49
|
-
expect(svg).toBeInTheDocument();
|
|
50
|
-
});
|
|
51
|
-
it('has correct viewBox', function () {
|
|
52
|
-
var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.RemoveRow, null)),
|
|
53
|
-
container = _render8.container;
|
|
54
|
-
var svg = container.querySelector('svg');
|
|
55
|
-
expect(svg).toHaveAttribute('viewBox', '0 0 24 24');
|
|
56
|
-
});
|
|
57
|
-
it('contains path element', function () {
|
|
58
|
-
var _render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.RemoveRow, null)),
|
|
59
|
-
container = _render9.container;
|
|
60
|
-
var path = container.querySelector('path');
|
|
61
|
-
expect(path).toBeInTheDocument();
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
describe('AddColumn', function () {
|
|
65
|
-
it('renders without crashing', function () {
|
|
66
|
-
var _render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.AddColumn, null)),
|
|
67
|
-
container = _render0.container;
|
|
68
|
-
expect(container).toBeInTheDocument();
|
|
69
|
-
});
|
|
70
|
-
it('renders SVG', function () {
|
|
71
|
-
var _render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.AddColumn, null)),
|
|
72
|
-
container = _render1.container;
|
|
73
|
-
var svg = container.querySelector('svg');
|
|
74
|
-
expect(svg).toBeInTheDocument();
|
|
75
|
-
});
|
|
76
|
-
it('has correct viewBox', function () {
|
|
77
|
-
var _render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.AddColumn, null)),
|
|
78
|
-
container = _render10.container;
|
|
79
|
-
var svg = container.querySelector('svg');
|
|
80
|
-
expect(svg).toHaveAttribute('viewBox', '0 0 24 24');
|
|
81
|
-
});
|
|
82
|
-
it('has correct dimensions', function () {
|
|
83
|
-
var _render11 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.AddColumn, null)),
|
|
84
|
-
container = _render11.container;
|
|
85
|
-
var svg = container.querySelector('svg');
|
|
86
|
-
expect(svg).toHaveAttribute('width', '24');
|
|
87
|
-
expect(svg).toHaveAttribute('height', '24');
|
|
88
|
-
});
|
|
89
|
-
it('contains path element', function () {
|
|
90
|
-
var _render12 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.AddColumn, null)),
|
|
91
|
-
container = _render12.container;
|
|
92
|
-
var path = container.querySelector('path');
|
|
93
|
-
expect(path).toBeInTheDocument();
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
describe('RemoveColumn', function () {
|
|
97
|
-
it('renders without crashing', function () {
|
|
98
|
-
var _render13 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.RemoveColumn, null)),
|
|
99
|
-
container = _render13.container;
|
|
100
|
-
expect(container).toBeInTheDocument();
|
|
101
|
-
});
|
|
102
|
-
it('renders SVG', function () {
|
|
103
|
-
var _render14 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.RemoveColumn, null)),
|
|
104
|
-
container = _render14.container;
|
|
105
|
-
var svg = container.querySelector('svg');
|
|
106
|
-
expect(svg).toBeInTheDocument();
|
|
107
|
-
});
|
|
108
|
-
it('has correct viewBox', function () {
|
|
109
|
-
var _render15 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.RemoveColumn, null)),
|
|
110
|
-
container = _render15.container;
|
|
111
|
-
var svg = container.querySelector('svg');
|
|
112
|
-
expect(svg).toHaveAttribute('viewBox', '0 0 24 24');
|
|
113
|
-
});
|
|
114
|
-
it('contains path element', function () {
|
|
115
|
-
var _render16 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.RemoveColumn, null)),
|
|
116
|
-
container = _render16.container;
|
|
117
|
-
var path = container.querySelector('path');
|
|
118
|
-
expect(path).toBeInTheDocument();
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
describe('RemoveTable', function () {
|
|
122
|
-
it('renders without crashing', function () {
|
|
123
|
-
var _render17 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.RemoveTable, null)),
|
|
124
|
-
container = _render17.container;
|
|
125
|
-
expect(container).toBeInTheDocument();
|
|
126
|
-
});
|
|
127
|
-
it('renders SVG', function () {
|
|
128
|
-
var _render18 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.RemoveTable, null)),
|
|
129
|
-
container = _render18.container;
|
|
130
|
-
var svg = container.querySelector('svg');
|
|
131
|
-
expect(svg).toBeInTheDocument();
|
|
132
|
-
});
|
|
133
|
-
it('has correct viewBox', function () {
|
|
134
|
-
var _render19 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.RemoveTable, null)),
|
|
135
|
-
container = _render19.container;
|
|
136
|
-
var svg = container.querySelector('svg');
|
|
137
|
-
expect(svg).toHaveAttribute('viewBox', '0 0 24 24');
|
|
138
|
-
});
|
|
139
|
-
it('has correct dimensions', function () {
|
|
140
|
-
var _render20 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.RemoveTable, null)),
|
|
141
|
-
container = _render20.container;
|
|
142
|
-
var svg = container.querySelector('svg');
|
|
143
|
-
expect(svg).toHaveAttribute('width', '24');
|
|
144
|
-
expect(svg).toHaveAttribute('height', '24');
|
|
145
|
-
});
|
|
146
|
-
it('contains path element', function () {
|
|
147
|
-
var _render21 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TableIcons.RemoveTable, null)),
|
|
148
|
-
container = _render21.container;
|
|
149
|
-
var path = container.querySelector('path');
|
|
150
|
-
expect(path).toBeInTheDocument();
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfVGFibGVJY29ucyIsImRlc2NyaWJlIiwiaXQiLCJfcmVuZGVyIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsIkFkZFJvdyIsImNvbnRhaW5lciIsImV4cGVjdCIsInRvQmVJblRoZURvY3VtZW50IiwiX3JlbmRlcjIiLCJzdmciLCJxdWVyeVNlbGVjdG9yIiwiX3JlbmRlcjMiLCJ0b0hhdmVBdHRyaWJ1dGUiLCJfcmVuZGVyNCIsIl9yZW5kZXI1IiwicGF0aCIsIl9yZW5kZXI2IiwiUmVtb3ZlUm93IiwiX3JlbmRlcjciLCJfcmVuZGVyOCIsIl9yZW5kZXI5IiwiX3JlbmRlcjAiLCJBZGRDb2x1bW4iLCJfcmVuZGVyMSIsIl9yZW5kZXIxMCIsIl9yZW5kZXIxMSIsIl9yZW5kZXIxMiIsIl9yZW5kZXIxMyIsIlJlbW92ZUNvbHVtbiIsIl9yZW5kZXIxNCIsIl9yZW5kZXIxNSIsIl9yZW5kZXIxNiIsIl9yZW5kZXIxNyIsIlJlbW92ZVRhYmxlIiwiX3JlbmRlcjE4IiwiX3JlbmRlcjE5IiwiX3JlbmRlcjIwIiwiX3JlbmRlcjIxIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvX190ZXN0c19fL1RhYmxlSWNvbnMudGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciB9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1xuaW1wb3J0IHsgQWRkUm93LCBSZW1vdmVSb3csIEFkZENvbHVtbiwgUmVtb3ZlQ29sdW1uLCBSZW1vdmVUYWJsZSB9IGZyb20gJy4uL2ljb25zL1RhYmxlSWNvbnMnO1xuXG5kZXNjcmliZSgnQWRkUm93JywgKCkgPT4ge1xuICBpdCgncmVuZGVycyB3aXRob3V0IGNyYXNoaW5nJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEFkZFJvdyAvPik7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgU1ZHJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEFkZFJvdyAvPik7XG4gICAgY29uc3Qgc3ZnID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuICAgIGV4cGVjdChzdmcpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdoYXMgY29ycmVjdCB2aWV3Qm94JywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEFkZFJvdyAvPik7XG4gICAgY29uc3Qgc3ZnID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuICAgIGV4cGVjdChzdmcpLnRvSGF2ZUF0dHJpYnV0ZSgndmlld0JveCcsICcwIDAgMjQgMjQnKTtcbiAgfSk7XG5cbiAgaXQoJ2hhcyBjb3JyZWN0IGRpbWVuc2lvbnMnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8QWRkUm93IC8+KTtcbiAgICBjb25zdCBzdmcgPSBjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG4gICAgZXhwZWN0KHN2ZykudG9IYXZlQXR0cmlidXRlKCd3aWR0aCcsICcyNCcpO1xuICAgIGV4cGVjdChzdmcpLnRvSGF2ZUF0dHJpYnV0ZSgnaGVpZ2h0JywgJzI0Jyk7XG4gIH0pO1xuXG4gIGl0KCdjb250YWlucyBwYXRoIGVsZW1lbnQnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8QWRkUm93IC8+KTtcbiAgICBjb25zdCBwYXRoID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3BhdGgnKTtcbiAgICBleHBlY3QocGF0aCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ1JlbW92ZVJvdycsICgpID0+IHtcbiAgaXQoJ3JlbmRlcnMgd2l0aG91dCBjcmFzaGluZycsICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxSZW1vdmVSb3cgLz4pO1xuICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIFNWRycsICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxSZW1vdmVSb3cgLz4pO1xuICAgIGNvbnN0IHN2ZyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICBleHBlY3Qoc3ZnKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnaGFzIGNvcnJlY3Qgdmlld0JveCcsICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxSZW1vdmVSb3cgLz4pO1xuICAgIGNvbnN0IHN2ZyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICBleHBlY3Qoc3ZnKS50b0hhdmVBdHRyaWJ1dGUoJ3ZpZXdCb3gnLCAnMCAwIDI0IDI0Jyk7XG4gIH0pO1xuXG4gIGl0KCdjb250YWlucyBwYXRoIGVsZW1lbnQnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8UmVtb3ZlUm93IC8+KTtcbiAgICBjb25zdCBwYXRoID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3BhdGgnKTtcbiAgICBleHBlY3QocGF0aCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0FkZENvbHVtbicsICgpID0+IHtcbiAgaXQoJ3JlbmRlcnMgd2l0aG91dCBjcmFzaGluZycsICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxBZGRDb2x1bW4gLz4pO1xuICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIFNWRycsICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxBZGRDb2x1bW4gLz4pO1xuICAgIGNvbnN0IHN2ZyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICBleHBlY3Qoc3ZnKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnaGFzIGNvcnJlY3Qgdmlld0JveCcsICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxBZGRDb2x1bW4gLz4pO1xuICAgIGNvbnN0IHN2ZyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICBleHBlY3Qoc3ZnKS50b0hhdmVBdHRyaWJ1dGUoJ3ZpZXdCb3gnLCAnMCAwIDI0IDI0Jyk7XG4gIH0pO1xuXG4gIGl0KCdoYXMgY29ycmVjdCBkaW1lbnNpb25zJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEFkZENvbHVtbiAvPik7XG4gICAgY29uc3Qgc3ZnID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuICAgIGV4cGVjdChzdmcpLnRvSGF2ZUF0dHJpYnV0ZSgnd2lkdGgnLCAnMjQnKTtcbiAgICBleHBlY3Qoc3ZnKS50b0hhdmVBdHRyaWJ1dGUoJ2hlaWdodCcsICcyNCcpO1xuICB9KTtcblxuICBpdCgnY29udGFpbnMgcGF0aCBlbGVtZW50JywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEFkZENvbHVtbiAvPik7XG4gICAgY29uc3QgcGF0aCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdwYXRoJyk7XG4gICAgZXhwZWN0KHBhdGgpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdSZW1vdmVDb2x1bW4nLCAoKSA9PiB7XG4gIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8UmVtb3ZlQ29sdW1uIC8+KTtcbiAgICBleHBlY3QoY29udGFpbmVyKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyBTVkcnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8UmVtb3ZlQ29sdW1uIC8+KTtcbiAgICBjb25zdCBzdmcgPSBjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG4gICAgZXhwZWN0KHN2ZykudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2hhcyBjb3JyZWN0IHZpZXdCb3gnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8UmVtb3ZlQ29sdW1uIC8+KTtcbiAgICBjb25zdCBzdmcgPSBjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG4gICAgZXhwZWN0KHN2ZykudG9IYXZlQXR0cmlidXRlKCd2aWV3Qm94JywgJzAgMCAyNCAyNCcpO1xuICB9KTtcblxuICBpdCgnY29udGFpbnMgcGF0aCBlbGVtZW50JywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFJlbW92ZUNvbHVtbiAvPik7XG4gICAgY29uc3QgcGF0aCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdwYXRoJyk7XG4gICAgZXhwZWN0KHBhdGgpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdSZW1vdmVUYWJsZScsICgpID0+IHtcbiAgaXQoJ3JlbmRlcnMgd2l0aG91dCBjcmFzaGluZycsICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxSZW1vdmVUYWJsZSAvPik7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgU1ZHJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFJlbW92ZVRhYmxlIC8+KTtcbiAgICBjb25zdCBzdmcgPSBjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG4gICAgZXhwZWN0KHN2ZykudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2hhcyBjb3JyZWN0IHZpZXdCb3gnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8UmVtb3ZlVGFibGUgLz4pO1xuICAgIGNvbnN0IHN2ZyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICBleHBlY3Qoc3ZnKS50b0hhdmVBdHRyaWJ1dGUoJ3ZpZXdCb3gnLCAnMCAwIDI0IDI0Jyk7XG4gIH0pO1xuXG4gIGl0KCdoYXMgY29ycmVjdCBkaW1lbnNpb25zJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFJlbW92ZVRhYmxlIC8+KTtcbiAgICBjb25zdCBzdmcgPSBjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG4gICAgZXhwZWN0KHN2ZykudG9IYXZlQXR0cmlidXRlKCd3aWR0aCcsICcyNCcpO1xuICAgIGV4cGVjdChzdmcpLnRvSGF2ZUF0dHJpYnV0ZSgnaGVpZ2h0JywgJzI0Jyk7XG4gIH0pO1xuXG4gIGl0KCdjb250YWlucyBwYXRoIGVsZW1lbnQnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8UmVtb3ZlVGFibGUgLz4pO1xuICAgIGNvbnN0IHBhdGggPSBjb250YWluZXIucXVlcnlTZWxlY3RvcigncGF0aCcpO1xuICAgIGV4cGVjdChwYXRoKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFGLE9B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
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("core-js/modules/es.array.iterator.js");
|
|
4
|
-
require("core-js/modules/es.object.define-property.js");
|
|
5
|
-
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
6
|
-
require("core-js/modules/es.object.to-string.js");
|
|
7
|
-
require("core-js/modules/es.string.iterator.js");
|
|
8
|
-
require("core-js/modules/es.weak-map.js");
|
|
9
|
-
require("core-js/modules/web.dom-collections.iterator.js");
|
|
10
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
11
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
12
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
14
|
-
var _react = _interopRequireDefault(require("react"));
|
|
15
|
-
var _react2 = require("@testing-library/react");
|
|
16
|
-
var _TextAlign = _interopRequireWildcard(require("../icons/TextAlign"));
|
|
17
|
-
var _excluded = ["children", "onClick", "value"];
|
|
18
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
19
|
-
jest.mock('@mui/material/ListItem', function () {
|
|
20
|
-
return {
|
|
21
|
-
__esModule: true,
|
|
22
|
-
"default": function _default(_ref) {
|
|
23
|
-
var children = _ref.children,
|
|
24
|
-
onClick = _ref.onClick,
|
|
25
|
-
value = _ref.value,
|
|
26
|
-
props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
|
|
27
|
-
return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, props, {
|
|
28
|
-
value: value,
|
|
29
|
-
onClick: onClick,
|
|
30
|
-
role: "listitem"
|
|
31
|
-
}), children);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
});
|
|
35
|
-
describe('AlignLeft', function () {
|
|
36
|
-
it('renders SVG', function () {
|
|
37
|
-
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign.AlignLeft, null)),
|
|
38
|
-
container = _render.container;
|
|
39
|
-
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
40
|
-
});
|
|
41
|
-
it('has correct viewBox', function () {
|
|
42
|
-
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign.AlignLeft, null)),
|
|
43
|
-
container = _render2.container;
|
|
44
|
-
var svg = container.querySelector('svg');
|
|
45
|
-
expect(svg).toHaveAttribute('viewBox', '0 0 66 66');
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
describe('AlignRight', function () {
|
|
49
|
-
it('renders SVG', function () {
|
|
50
|
-
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign.AlignRight, null)),
|
|
51
|
-
container = _render3.container;
|
|
52
|
-
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
53
|
-
});
|
|
54
|
-
it('has correct viewBox', function () {
|
|
55
|
-
var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign.AlignRight, null)),
|
|
56
|
-
container = _render4.container;
|
|
57
|
-
var svg = container.querySelector('svg');
|
|
58
|
-
expect(svg).toHaveAttribute('viewBox', '0 0 66 66');
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
describe('AlignCenter', function () {
|
|
62
|
-
it('renders SVG', function () {
|
|
63
|
-
var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign.AlignCenter, null)),
|
|
64
|
-
container = _render5.container;
|
|
65
|
-
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
66
|
-
});
|
|
67
|
-
it('has correct viewBox', function () {
|
|
68
|
-
var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign.AlignCenter, null)),
|
|
69
|
-
container = _render6.container;
|
|
70
|
-
var svg = container.querySelector('svg');
|
|
71
|
-
expect(svg).toHaveAttribute('viewBox', '0 0 66 66');
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
describe('AlignJustify', function () {
|
|
75
|
-
it('renders SVG', function () {
|
|
76
|
-
var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign.AlignJustify, null)),
|
|
77
|
-
container = _render7.container;
|
|
78
|
-
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
79
|
-
});
|
|
80
|
-
it('has correct viewBox', function () {
|
|
81
|
-
var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign.AlignJustify, null)),
|
|
82
|
-
container = _render8.container;
|
|
83
|
-
var svg = container.querySelector('svg');
|
|
84
|
-
expect(svg).toHaveAttribute('viewBox', '0 0 66 66');
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
describe('TextAlignIcon', function () {
|
|
88
|
-
var mockEditor = {
|
|
89
|
-
isActive: jest.fn(),
|
|
90
|
-
commands: {
|
|
91
|
-
setTextAlign: jest.fn()
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
beforeEach(function () {
|
|
95
|
-
jest.clearAllMocks();
|
|
96
|
-
});
|
|
97
|
-
it('renders without crashing', function () {
|
|
98
|
-
var _render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign["default"], {
|
|
99
|
-
editor: mockEditor
|
|
100
|
-
})),
|
|
101
|
-
container = _render9.container;
|
|
102
|
-
expect(container).toBeInTheDocument();
|
|
103
|
-
});
|
|
104
|
-
it('shows AlignLeft icon by default', function () {
|
|
105
|
-
mockEditor.isActive.mockReturnValue(false);
|
|
106
|
-
var _render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign["default"], {
|
|
107
|
-
editor: mockEditor
|
|
108
|
-
})),
|
|
109
|
-
container = _render0.container;
|
|
110
|
-
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
111
|
-
});
|
|
112
|
-
it('shows AlignRight icon when right alignment is active', function () {
|
|
113
|
-
mockEditor.isActive.mockImplementation(function (options) {
|
|
114
|
-
return (options === null || options === void 0 ? void 0 : options.textAlign) === 'right';
|
|
115
|
-
});
|
|
116
|
-
var _render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign["default"], {
|
|
117
|
-
editor: mockEditor
|
|
118
|
-
})),
|
|
119
|
-
container = _render1.container;
|
|
120
|
-
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
121
|
-
});
|
|
122
|
-
it('shows AlignCenter icon when center alignment is active', function () {
|
|
123
|
-
mockEditor.isActive.mockImplementation(function (options) {
|
|
124
|
-
return (options === null || options === void 0 ? void 0 : options.textAlign) === 'center';
|
|
125
|
-
});
|
|
126
|
-
var _render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign["default"], {
|
|
127
|
-
editor: mockEditor
|
|
128
|
-
})),
|
|
129
|
-
container = _render10.container;
|
|
130
|
-
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
131
|
-
});
|
|
132
|
-
it('shows AlignJustify icon when justify alignment is active', function () {
|
|
133
|
-
mockEditor.isActive.mockImplementation(function (options) {
|
|
134
|
-
return (options === null || options === void 0 ? void 0 : options.textAlign) === 'justify';
|
|
135
|
-
});
|
|
136
|
-
var _render11 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign["default"], {
|
|
137
|
-
editor: mockEditor
|
|
138
|
-
})),
|
|
139
|
-
container = _render11.container;
|
|
140
|
-
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
141
|
-
});
|
|
142
|
-
it('toggles dropdown on click', function () {
|
|
143
|
-
var _render12 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign["default"], {
|
|
144
|
-
editor: mockEditor
|
|
145
|
-
})),
|
|
146
|
-
container = _render12.container;
|
|
147
|
-
var button = container.querySelector('div[style*="display: flex"]');
|
|
148
|
-
_react2.fireEvent.click(button);
|
|
149
|
-
expect(container).toBeInTheDocument();
|
|
150
|
-
});
|
|
151
|
-
it('applies alignment when list item is clicked', function () {
|
|
152
|
-
var _render13 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign["default"], {
|
|
153
|
-
editor: mockEditor
|
|
154
|
-
})),
|
|
155
|
-
container = _render13.container,
|
|
156
|
-
getByLabelText = _render13.getByLabelText;
|
|
157
|
-
var button = container.querySelector('div[style*="display: flex"]');
|
|
158
|
-
_react2.fireEvent.click(button);
|
|
159
|
-
var leftButton = getByLabelText('Align text left');
|
|
160
|
-
_react2.fireEvent.click(leftButton);
|
|
161
|
-
expect(mockEditor.commands.setTextAlign).toHaveBeenCalledWith('left');
|
|
162
|
-
});
|
|
163
|
-
it('prevents default and stops propagation on mouse down', function () {
|
|
164
|
-
var _render14 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign["default"], {
|
|
165
|
-
editor: mockEditor
|
|
166
|
-
})),
|
|
167
|
-
container = _render14.container;
|
|
168
|
-
var button = container.querySelector('div[style*="display"]');
|
|
169
|
-
if (button) {
|
|
170
|
-
_react2.fireEvent.mouseDown(button);
|
|
171
|
-
// Just verify the event handler didn't throw
|
|
172
|
-
expect(container).toBeInTheDocument();
|
|
173
|
-
} else {
|
|
174
|
-
expect(container).toBeInTheDocument();
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
it('shows dropdown arrow', function () {
|
|
178
|
-
var _render15 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign["default"], {
|
|
179
|
-
editor: mockEditor
|
|
180
|
-
})),
|
|
181
|
-
container = _render15.container;
|
|
182
|
-
var span = container.querySelector('span[style*="marginLeft"]');
|
|
183
|
-
if (span) {
|
|
184
|
-
expect(span).toBeInTheDocument();
|
|
185
|
-
} else {
|
|
186
|
-
// Arrow might be rendered differently in test environment
|
|
187
|
-
expect(container).toBeInTheDocument();
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
it('closes dropdown after selecting alignment', function () {
|
|
191
|
-
var _render16 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign["default"], {
|
|
192
|
-
editor: mockEditor
|
|
193
|
-
})),
|
|
194
|
-
container = _render16.container,
|
|
195
|
-
getByLabelText = _render16.getByLabelText;
|
|
196
|
-
var button = container.querySelector('div[style*="display: flex"]');
|
|
197
|
-
_react2.fireEvent.click(button);
|
|
198
|
-
var centerButton = getByLabelText('Align text center');
|
|
199
|
-
_react2.fireEvent.click(centerButton);
|
|
200
|
-
expect(mockEditor.commands.setTextAlign).toHaveBeenCalledWith('center');
|
|
201
|
-
});
|
|
202
|
-
it('renders all alignment options in dropdown', function () {
|
|
203
|
-
var _render17 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_TextAlign["default"], {
|
|
204
|
-
editor: mockEditor
|
|
205
|
-
})),
|
|
206
|
-
container = _render17.container,
|
|
207
|
-
getByLabelText = _render17.getByLabelText;
|
|
208
|
-
var button = container.querySelector('div[style*="display: flex"]');
|
|
209
|
-
_react2.fireEvent.click(button);
|
|
210
|
-
expect(getByLabelText('Align text left')).toBeInTheDocument();
|
|
211
|
-
expect(getByLabelText('Align text center')).toBeInTheDocument();
|
|
212
|
-
expect(getByLabelText('Align text right')).toBeInTheDocument();
|
|
213
|
-
expect(getByLabelText('Justify text')).toBeInTheDocument();
|
|
214
|
-
});
|
|
215
|
-
});
|
|
216
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfVGV4dEFsaWduIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZXhjbHVkZWQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImplc3QiLCJtb2NrIiwiZGVmYXVsdCIsIl9yZWYiLCJjaGlsZHJlbiIsIm9uQ2xpY2siLCJ2YWx1ZSIsInByb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kczIiLCJyb2xlIiwiZGVzY3JpYmUiLCJpdCIsIl9yZW5kZXIiLCJyZW5kZXIiLCJBbGlnbkxlZnQiLCJjb250YWluZXIiLCJleHBlY3QiLCJxdWVyeVNlbGVjdG9yIiwidG9CZUluVGhlRG9jdW1lbnQiLCJfcmVuZGVyMiIsInN2ZyIsInRvSGF2ZUF0dHJpYnV0ZSIsIl9yZW5kZXIzIiwiQWxpZ25SaWdodCIsIl9yZW5kZXI0IiwiX3JlbmRlcjUiLCJBbGlnbkNlbnRlciIsIl9yZW5kZXI2IiwiX3JlbmRlcjciLCJBbGlnbkp1c3RpZnkiLCJfcmVuZGVyOCIsIm1vY2tFZGl0b3IiLCJpc0FjdGl2ZSIsImZuIiwiY29tbWFuZHMiLCJzZXRUZXh0QWxpZ24iLCJiZWZvcmVFYWNoIiwiY2xlYXJBbGxNb2NrcyIsIl9yZW5kZXI5IiwiZWRpdG9yIiwibW9ja1JldHVyblZhbHVlIiwiX3JlbmRlcjAiLCJtb2NrSW1wbGVtZW50YXRpb24iLCJvcHRpb25zIiwidGV4dEFsaWduIiwiX3JlbmRlcjEiLCJfcmVuZGVyMTAiLCJfcmVuZGVyMTEiLCJfcmVuZGVyMTIiLCJidXR0b24iLCJmaXJlRXZlbnQiLCJjbGljayIsIl9yZW5kZXIxMyIsImdldEJ5TGFiZWxUZXh0IiwibGVmdEJ1dHRvbiIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiX3JlbmRlcjE0IiwibW91c2VEb3duIiwiX3JlbmRlcjE1Iiwic3BhbiIsIl9yZW5kZXIxNiIsImNlbnRlckJ1dHRvbiIsIl9yZW5kZXIxNyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL19fdGVzdHNfXy9UZXh0QWxpZ24udGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgZmlyZUV2ZW50IH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgVGV4dEFsaWduSWNvbiwgeyBBbGlnbkxlZnQsIEFsaWduUmlnaHQsIEFsaWduQ2VudGVyLCBBbGlnbkp1c3RpZnkgfSBmcm9tICcuLi9pY29ucy9UZXh0QWxpZ24nO1xuXG5qZXN0Lm1vY2soJ0BtdWkvbWF0ZXJpYWwvTGlzdEl0ZW0nLCAoKSA9PiAoe1xuICBfX2VzTW9kdWxlOiB0cnVlLFxuICBkZWZhdWx0OiAoeyBjaGlsZHJlbiwgb25DbGljaywgdmFsdWUsIC4uLnByb3BzIH0pID0+IChcbiAgICA8ZGl2IHsuLi5wcm9wc30gdmFsdWU9e3ZhbHVlfSBvbkNsaWNrPXtvbkNsaWNrfSByb2xlPVwibGlzdGl0ZW1cIj5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKSxcbn0pKTtcblxuZGVzY3JpYmUoJ0FsaWduTGVmdCcsICgpID0+IHtcbiAgaXQoJ3JlbmRlcnMgU1ZHJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEFsaWduTGVmdCAvPik7XG4gICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2hhcyBjb3JyZWN0IHZpZXdCb3gnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8QWxpZ25MZWZ0IC8+KTtcbiAgICBjb25zdCBzdmcgPSBjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG4gICAgZXhwZWN0KHN2ZykudG9IYXZlQXR0cmlidXRlKCd2aWV3Qm94JywgJzAgMCA2NiA2NicpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnQWxpZ25SaWdodCcsICgpID0+IHtcbiAgaXQoJ3JlbmRlcnMgU1ZHJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEFsaWduUmlnaHQgLz4pO1xuICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdoYXMgY29ycmVjdCB2aWV3Qm94JywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEFsaWduUmlnaHQgLz4pO1xuICAgIGNvbnN0IHN2ZyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICBleHBlY3Qoc3ZnKS50b0hhdmVBdHRyaWJ1dGUoJ3ZpZXdCb3gnLCAnMCAwIDY2IDY2Jyk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdBbGlnbkNlbnRlcicsICgpID0+IHtcbiAgaXQoJ3JlbmRlcnMgU1ZHJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEFsaWduQ2VudGVyIC8+KTtcbiAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnaGFzIGNvcnJlY3Qgdmlld0JveCcsICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxBbGlnbkNlbnRlciAvPik7XG4gICAgY29uc3Qgc3ZnID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuICAgIGV4cGVjdChzdmcpLnRvSGF2ZUF0dHJpYnV0ZSgndmlld0JveCcsICcwIDAgNjYgNjYnKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0FsaWduSnVzdGlmeScsICgpID0+IHtcbiAgaXQoJ3JlbmRlcnMgU1ZHJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEFsaWduSnVzdGlmeSAvPik7XG4gICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2hhcyBjb3JyZWN0IHZpZXdCb3gnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8QWxpZ25KdXN0aWZ5IC8+KTtcbiAgICBjb25zdCBzdmcgPSBjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG4gICAgZXhwZWN0KHN2ZykudG9IYXZlQXR0cmlidXRlKCd2aWV3Qm94JywgJzAgMCA2NiA2NicpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnVGV4dEFsaWduSWNvbicsICgpID0+IHtcbiAgY29uc3QgbW9ja0VkaXRvciA9IHtcbiAgICBpc0FjdGl2ZTogamVzdC5mbigpLFxuICAgIGNvbW1hbmRzOiB7XG4gICAgICBzZXRUZXh0QWxpZ246IGplc3QuZm4oKSxcbiAgICB9LFxuICB9O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGplc3QuY2xlYXJBbGxNb2NrcygpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyB3aXRob3V0IGNyYXNoaW5nJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFRleHRBbGlnbkljb24gZWRpdG9yPXttb2NrRWRpdG9yfSAvPik7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3dzIEFsaWduTGVmdCBpY29uIGJ5IGRlZmF1bHQnLCAoKSA9PiB7XG4gICAgbW9ja0VkaXRvci5pc0FjdGl2ZS5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFRleHRBbGlnbkljb24gZWRpdG9yPXttb2NrRWRpdG9yfSAvPik7XG4gICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3dzIEFsaWduUmlnaHQgaWNvbiB3aGVuIHJpZ2h0IGFsaWdubWVudCBpcyBhY3RpdmUnLCAoKSA9PiB7XG4gICAgbW9ja0VkaXRvci5pc0FjdGl2ZS5tb2NrSW1wbGVtZW50YXRpb24oKG9wdGlvbnMpID0+IG9wdGlvbnM/LnRleHRBbGlnbiA9PT0gJ3JpZ2h0Jyk7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8VGV4dEFsaWduSWNvbiBlZGl0b3I9e21vY2tFZGl0b3J9IC8+KTtcbiAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnc2hvd3MgQWxpZ25DZW50ZXIgaWNvbiB3aGVuIGNlbnRlciBhbGlnbm1lbnQgaXMgYWN0aXZlJywgKCkgPT4ge1xuICAgIG1vY2tFZGl0b3IuaXNBY3RpdmUubW9ja0ltcGxlbWVudGF0aW9uKChvcHRpb25zKSA9PiBvcHRpb25zPy50ZXh0QWxpZ24gPT09ICdjZW50ZXInKTtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxUZXh0QWxpZ25JY29uIGVkaXRvcj17bW9ja0VkaXRvcn0gLz4pO1xuICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdzaG93cyBBbGlnbkp1c3RpZnkgaWNvbiB3aGVuIGp1c3RpZnkgYWxpZ25tZW50IGlzIGFjdGl2ZScsICgpID0+IHtcbiAgICBtb2NrRWRpdG9yLmlzQWN0aXZlLm1vY2tJbXBsZW1lbnRhdGlvbigob3B0aW9ucykgPT4gb3B0aW9ucz8udGV4dEFsaWduID09PSAnanVzdGlmeScpO1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFRleHRBbGlnbkljb24gZWRpdG9yPXttb2NrRWRpdG9yfSAvPik7XG4gICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3RvZ2dsZXMgZHJvcGRvd24gb24gY2xpY2snLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8VGV4dEFsaWduSWNvbiBlZGl0b3I9e21vY2tFZGl0b3J9IC8+KTtcbiAgICBjb25zdCBidXR0b24gPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignZGl2W3N0eWxlKj1cImRpc3BsYXk6IGZsZXhcIl0nKTtcbiAgICBmaXJlRXZlbnQuY2xpY2soYnV0dG9uKTtcbiAgICBleHBlY3QoY29udGFpbmVyKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnYXBwbGllcyBhbGlnbm1lbnQgd2hlbiBsaXN0IGl0ZW0gaXMgY2xpY2tlZCcsICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciwgZ2V0QnlMYWJlbFRleHQgfSA9IHJlbmRlcig8VGV4dEFsaWduSWNvbiBlZGl0b3I9e21vY2tFZGl0b3J9IC8+KTtcbiAgICBjb25zdCBidXR0b24gPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignZGl2W3N0eWxlKj1cImRpc3BsYXk6IGZsZXhcIl0nKTtcbiAgICBmaXJlRXZlbnQuY2xpY2soYnV0dG9uKTtcblxuICAgIGNvbnN0IGxlZnRCdXR0b24gPSBnZXRCeUxhYmVsVGV4dCgnQWxpZ24gdGV4dCBsZWZ0Jyk7XG4gICAgZmlyZUV2ZW50LmNsaWNrKGxlZnRCdXR0b24pO1xuICAgIGV4cGVjdChtb2NrRWRpdG9yLmNvbW1hbmRzLnNldFRleHRBbGlnbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2xlZnQnKTtcbiAgfSk7XG5cbiAgaXQoJ3ByZXZlbnRzIGRlZmF1bHQgYW5kIHN0b3BzIHByb3BhZ2F0aW9uIG9uIG1vdXNlIGRvd24nLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8VGV4dEFsaWduSWNvbiBlZGl0b3I9e21vY2tFZGl0b3J9IC8+KTtcbiAgICBjb25zdCBidXR0b24gPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignZGl2W3N0eWxlKj1cImRpc3BsYXlcIl0nKTtcbiAgICBpZiAoYnV0dG9uKSB7XG4gICAgICBmaXJlRXZlbnQubW91c2VEb3duKGJ1dHRvbik7XG4gICAgICAvLyBKdXN0IHZlcmlmeSB0aGUgZXZlbnQgaGFuZGxlciBkaWRuJ3QgdGhyb3dcbiAgICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvd3MgZHJvcGRvd24gYXJyb3cnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8VGV4dEFsaWduSWNvbiBlZGl0b3I9e21vY2tFZGl0b3J9IC8+KTtcbiAgICBjb25zdCBzcGFuID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3NwYW5bc3R5bGUqPVwibWFyZ2luTGVmdFwiXScpO1xuICAgIGlmIChzcGFuKSB7XG4gICAgICBleHBlY3Qoc3BhbikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXJyb3cgbWlnaHQgYmUgcmVuZGVyZWQgZGlmZmVyZW50bHkgaW4gdGVzdCBlbnZpcm9ubWVudFxuICAgICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdjbG9zZXMgZHJvcGRvd24gYWZ0ZXIgc2VsZWN0aW5nIGFsaWdubWVudCcsICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciwgZ2V0QnlMYWJlbFRleHQgfSA9IHJlbmRlcig8VGV4dEFsaWduSWNvbiBlZGl0b3I9e21vY2tFZGl0b3J9IC8+KTtcbiAgICBjb25zdCBidXR0b24gPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignZGl2W3N0eWxlKj1cImRpc3BsYXk6IGZsZXhcIl0nKTtcbiAgICBmaXJlRXZlbnQuY2xpY2soYnV0dG9uKTtcblxuICAgIGNvbnN0IGNlbnRlckJ1dHRvbiA9IGdldEJ5TGFiZWxUZXh0KCdBbGlnbiB0ZXh0IGNlbnRlcicpO1xuICAgIGZpcmVFdmVudC5jbGljayhjZW50ZXJCdXR0b24pO1xuICAgIGV4cGVjdChtb2NrRWRpdG9yLmNvbW1hbmRzLnNldFRleHRBbGlnbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2NlbnRlcicpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyBhbGwgYWxpZ25tZW50IG9wdGlvbnMgaW4gZHJvcGRvd24nLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIsIGdldEJ5TGFiZWxUZXh0IH0gPSByZW5kZXIoPFRleHRBbGlnbkljb24gZWRpdG9yPXttb2NrRWRpdG9yfSAvPik7XG4gICAgY29uc3QgYnV0dG9uID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2RpdltzdHlsZSo9XCJkaXNwbGF5OiBmbGV4XCJdJyk7XG4gICAgZmlyZUV2ZW50LmNsaWNrKGJ1dHRvbik7XG5cbiAgICBleHBlY3QoZ2V0QnlMYWJlbFRleHQoJ0FsaWduIHRleHQgbGVmdCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIGV4cGVjdChnZXRCeUxhYmVsVGV4dCgnQWxpZ24gdGV4dCBjZW50ZXInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3QoZ2V0QnlMYWJlbFRleHQoJ0FsaWduIHRleHQgcmlnaHQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3QoZ2V0QnlMYWJlbFRleHQoJ0p1c3RpZnkgdGV4dCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBQyx1QkFBQSxDQUFBSCxPQUFBO0FBQXFHLElBQUFJLFNBQUE7QUFBQSxTQUFBRCx3QkFBQUUsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUosdUJBQUEsWUFBQUEsd0JBQUFFLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxtQkFBQVQsQ0FBQSxpQkFBQUEsQ0FBQSxnQkFBQVUsT0FBQSxDQUFBVixDQUFBLDBCQUFBQSxDQUFBLFNBQUFRLENBQUEsTUFBQUYsQ0FBQSxHQUFBTCxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRyxDQUFBLENBQUFLLEdBQUEsQ0FBQVgsQ0FBQSxVQUFBTSxDQUFBLENBQUFNLEdBQUEsQ0FBQVosQ0FBQSxHQUFBTSxDQUFBLENBQUFPLEdBQUEsQ0FBQWIsQ0FBQSxFQUFBUSxDQUFBLGNBQUFNLEVBQUEsSUFBQWQsQ0FBQSxnQkFBQWMsRUFBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsRUFBQSxPQUFBUCxDQUFBLElBQUFELENBQUEsR0FBQVcsTUFBQSxDQUFBQyxjQUFBLEtBQUFELE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQW5CLENBQUEsRUFBQWMsRUFBQSxPQUFBUCxDQUFBLENBQUFLLEdBQUEsSUFBQUwsQ0FBQSxDQUFBTSxHQUFBLElBQUFQ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
|