@pie-lib/editable-html-tip-tap 1.1.0-next.6059 → 1.1.1-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.
Files changed (152) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/lib/__tests__/EditableHtml.test.js +374 -0
  3. package/lib/__tests__/constants.test.js +28 -0
  4. package/lib/__tests__/extensions.test.js +214 -0
  5. package/lib/__tests__/index.test.js +246 -0
  6. package/lib/__tests__/size-utils.test.js +57 -0
  7. package/lib/__tests__/theme.test.js +17 -0
  8. package/lib/components/CharacterPicker.js +18 -0
  9. package/lib/components/CharacterPicker.js.map +1 -1
  10. package/lib/components/EditableHtml.js +22 -5
  11. package/lib/components/EditableHtml.js.map +1 -1
  12. package/lib/components/MenuBar.js +17 -0
  13. package/lib/components/MenuBar.js.map +1 -1
  14. package/lib/components/TiptapContainer.js +16 -0
  15. package/lib/components/TiptapContainer.js.map +1 -1
  16. package/lib/components/__tests__/AltDialog.test.js +201 -0
  17. package/lib/components/__tests__/CharacterPicker.test.js +313 -0
  18. package/lib/components/__tests__/CssIcon.test.js +58 -0
  19. package/lib/components/__tests__/DragInTheBlank.test.js +309 -0
  20. package/lib/components/__tests__/ExplicitConstructedResponse.test.js +263 -0
  21. package/lib/components/__tests__/ImageToolbar.test.js +195 -0
  22. package/lib/components/__tests__/InlineDropdown.test.js +297 -0
  23. package/lib/components/__tests__/InsertImageHandler.test.js +162 -0
  24. package/lib/components/__tests__/MediaDialog.test.js +435 -0
  25. package/lib/components/__tests__/MediaToolbar.test.js +126 -0
  26. package/lib/components/__tests__/MediaWrapper.test.js +96 -0
  27. package/lib/components/__tests__/MenuBar.test.js +459 -0
  28. package/lib/components/__tests__/RespArea.test.js +171 -0
  29. package/lib/components/__tests__/TableIcons.test.js +153 -0
  30. package/lib/components/__tests__/TextAlign.test.js +216 -0
  31. package/lib/components/__tests__/TiptapContainer.test.js +196 -0
  32. package/lib/components/__tests__/characterUtils.test.js +189 -0
  33. package/lib/components/__tests__/choice.test.js +213 -0
  34. package/lib/components/__tests__/custom-popper.test.js +108 -0
  35. package/lib/components/__tests__/done-button.test.js +72 -0
  36. package/lib/components/__tests__/toolbar-buttons.test.js +277 -0
  37. package/lib/components/characters/characterUtils.js +2 -0
  38. package/lib/components/characters/characterUtils.js.map +1 -1
  39. package/lib/components/characters/custom-popper.js +1 -0
  40. package/lib/components/characters/custom-popper.js.map +1 -1
  41. package/lib/components/common/done-button.js +1 -0
  42. package/lib/components/common/done-button.js.map +1 -1
  43. package/lib/components/common/toolbar-buttons.js +12 -0
  44. package/lib/components/common/toolbar-buttons.js.map +1 -1
  45. package/lib/components/icons/CssIcon.js +1 -0
  46. package/lib/components/icons/CssIcon.js.map +1 -1
  47. package/lib/components/icons/RespArea.js +10 -0
  48. package/lib/components/icons/RespArea.js.map +1 -1
  49. package/lib/components/icons/TableIcons.js +1 -0
  50. package/lib/components/icons/TableIcons.js.map +1 -1
  51. package/lib/components/icons/TextAlign.js +7 -0
  52. package/lib/components/icons/TextAlign.js.map +1 -1
  53. package/lib/components/image/AltDialog.js +5 -0
  54. package/lib/components/image/AltDialog.js.map +1 -1
  55. package/lib/components/image/ImageToolbar.js +13 -0
  56. package/lib/components/image/ImageToolbar.js.map +1 -1
  57. package/lib/components/image/InsertImageHandler.js +10 -0
  58. package/lib/components/image/InsertImageHandler.js.map +1 -1
  59. package/lib/components/media/MediaDialog.js +18 -0
  60. package/lib/components/media/MediaDialog.js.map +1 -1
  61. package/lib/components/media/MediaToolbar.js +2 -0
  62. package/lib/components/media/MediaToolbar.js.map +1 -1
  63. package/lib/components/media/MediaWrapper.js +11 -0
  64. package/lib/components/media/MediaWrapper.js.map +1 -1
  65. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js +10 -0
  66. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js.map +1 -1
  67. package/lib/components/respArea/DragInTheBlank/choice.js +8 -0
  68. package/lib/components/respArea/DragInTheBlank/choice.js.map +1 -1
  69. package/lib/components/respArea/ExplicitConstructedResponse.js +8 -0
  70. package/lib/components/respArea/ExplicitConstructedResponse.js.map +1 -1
  71. package/lib/components/respArea/InlineDropdown.js +7 -0
  72. package/lib/components/respArea/InlineDropdown.js.map +1 -1
  73. package/lib/components/respArea/ToolbarIcon.js +10 -0
  74. package/lib/components/respArea/ToolbarIcon.js.map +1 -1
  75. package/lib/constants.js +1 -0
  76. package/lib/constants.js.map +1 -1
  77. package/lib/extensions/__tests__/component.test.js +314 -0
  78. package/lib/extensions/__tests__/css.test.js +218 -0
  79. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +185 -0
  80. package/lib/extensions/__tests__/extended-table.test.js +114 -0
  81. package/lib/extensions/__tests__/image.test.js +178 -0
  82. package/lib/extensions/__tests__/media.test.js +296 -0
  83. package/lib/extensions/__tests__/responseArea.test.js +332 -0
  84. package/lib/extensions/component.js +22 -2
  85. package/lib/extensions/css.js +11 -0
  86. package/lib/extensions/css.js.map +1 -1
  87. package/lib/extensions/custom-toolbar-wrapper.js +15 -0
  88. package/lib/extensions/custom-toolbar-wrapper.js.map +1 -1
  89. package/lib/extensions/extended-table.js +4 -0
  90. package/lib/extensions/extended-table.js.map +1 -1
  91. package/lib/extensions/image-component.js +314 -0
  92. package/lib/extensions/image-component.js.map +1 -0
  93. package/lib/extensions/image.js +13 -2
  94. package/lib/extensions/image.js.map +1 -1
  95. package/lib/extensions/index.js +12 -2
  96. package/lib/extensions/index.js.map +1 -1
  97. package/lib/extensions/math.js +16 -0
  98. package/lib/extensions/math.js.map +1 -1
  99. package/lib/extensions/media.js +15 -0
  100. package/lib/extensions/media.js.map +1 -1
  101. package/lib/extensions/responseArea.js +22 -0
  102. package/lib/extensions/responseArea.js.map +1 -1
  103. package/lib/index.js +7 -0
  104. package/lib/index.js.map +1 -1
  105. package/lib/styles/editorContainerStyles.js +1 -0
  106. package/lib/styles/editorContainerStyles.js.map +1 -1
  107. package/lib/theme.js +1 -0
  108. package/lib/theme.js.map +1 -1
  109. package/lib/utils/size.js +6 -0
  110. package/lib/utils/size.js.map +1 -1
  111. package/package.json +8 -8
  112. package/src/__tests__/EditableHtml.test.jsx +266 -0
  113. package/src/__tests__/constants.test.js +20 -0
  114. package/src/__tests__/extensions.test.js +208 -0
  115. package/src/__tests__/index.test.jsx +146 -0
  116. package/src/__tests__/size-utils.test.js +64 -0
  117. package/src/__tests__/theme.test.js +17 -0
  118. package/src/components/EditableHtml.jsx +8 -6
  119. package/src/components/__tests__/AltDialog.test.jsx +147 -0
  120. package/src/components/__tests__/CharacterPicker.test.jsx +195 -0
  121. package/src/components/__tests__/CssIcon.test.jsx +46 -0
  122. package/src/components/__tests__/DragInTheBlank.test.jsx +255 -0
  123. package/src/components/__tests__/ExplicitConstructedResponse.test.jsx +161 -0
  124. package/src/components/__tests__/ImageToolbar.test.jsx +128 -0
  125. package/src/components/__tests__/InlineDropdown.test.jsx +187 -0
  126. package/src/components/__tests__/InsertImageHandler.test.js +154 -0
  127. package/src/components/__tests__/MediaDialog.test.jsx +293 -0
  128. package/src/components/__tests__/MediaToolbar.test.jsx +74 -0
  129. package/src/components/__tests__/MediaWrapper.test.jsx +81 -0
  130. package/src/components/__tests__/MenuBar.test.jsx +217 -0
  131. package/src/components/__tests__/RespArea.test.jsx +122 -0
  132. package/src/components/__tests__/TableIcons.test.jsx +149 -0
  133. package/src/components/__tests__/TextAlign.test.jsx +167 -0
  134. package/src/components/__tests__/TiptapContainer.test.jsx +138 -0
  135. package/src/components/__tests__/characterUtils.test.js +166 -0
  136. package/src/components/__tests__/choice.test.jsx +171 -0
  137. package/src/components/__tests__/custom-popper.test.jsx +82 -0
  138. package/src/components/__tests__/done-button.test.jsx +54 -0
  139. package/src/components/__tests__/toolbar-buttons.test.jsx +234 -0
  140. package/src/extensions/__tests__/css.test.js +196 -0
  141. package/src/extensions/__tests__/custom-toolbar-wrapper.test.jsx +180 -0
  142. package/src/extensions/__tests__/extended-table.test.js +107 -0
  143. package/src/extensions/__tests__/image-component.test.jsx +249 -0
  144. package/src/extensions/__tests__/image.test.js +136 -0
  145. package/src/extensions/__tests__/media.test.js +270 -0
  146. package/src/extensions/__tests__/responseArea.test.js +310 -0
  147. package/src/extensions/{component.jsx → image-component.jsx} +11 -1
  148. package/src/extensions/image.js +1 -1
  149. package/src/extensions/index.js +5 -1
  150. package/LICENSE.md +0 -5
  151. package/NEXT.CHANGELOG.json +0 -1
  152. package/lib/extensions/component.js.map +0 -1
@@ -0,0 +1,171 @@
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+KTtcbiAgICBjb25zdCBlbGVtZW50ID0gZ2V0QnlUZXh0KCcrIFJlc3BvbnNlIEFyZWEnKTtcbiAgICBleHBlY3QoZWxlbWVudCkudG9IYXZlU3R5bGUoeyBwb3NpdGlvbjogJ3JlbGF0aXZlJyB9KTtcbiAgfSk7XG5cbiAgaXQoJ2hhcyBub3dyYXAgd2hpdGUgc3BhY2UnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBnZXRCeVRleHQgfSA9IHJlbmRlcig8VG9vbGJhckljb24gLz4pO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBnZXRCeVRleHQoJysgUmVzcG9uc2UgQXJlYScpO1xuICAgIGV4cGVjdChlbGVtZW50KS50b0hhdmVTdHlsZSh7IHdoaXRlU3BhY2U6ICdub3dyYXAnIH0pO1xuICB9KTtcblxuICBpdCgnaGFzIHRvcCBvZmZzZXQnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBnZXRCeVRleHQgfSA9IHJlbmRlcig8VG9vbGJhckljb24gLz4pO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBnZXRCeVRleHQoJysgUmVzcG9uc2UgQXJlYScpO1xuICAgIGV4cGVjdChlbGVtZW50KS50b0hhdmVTdHlsZSh7IHRvcDogJzdweCcgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFNBQUEsR0FBQUYsT0FBQTtBQUVBRyxRQUFRLENBQUMsU0FBUyxFQUFFLFlBQU07RUFDeEJDLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxZQUFNO0lBQ25DLElBQUFDLE9BQUEsR0FBc0IsSUFBQUMsY0FBTSxlQUFDUixNQUFBLFlBQUFTLGFB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
@@ -0,0 +1,153 @@
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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
@@ -0,0 +1,216 @@
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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