@pie-lib/editable-html-tip-tap 2.1.11 → 2.2.0-beta

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 (99) hide show
  1. package/CHANGELOG.md +0 -84
  2. package/lib/__tests__/EditableHtml.test.js +831 -0
  3. package/lib/__tests__/EditableHtml.test.js.map +1 -0
  4. package/lib/__tests__/constants.test.js +21 -0
  5. package/lib/__tests__/constants.test.js.map +1 -0
  6. package/lib/__tests__/div-to-paragraph-conversion.test.js +213 -0
  7. package/lib/__tests__/div-to-paragraph-conversion.test.js.map +1 -0
  8. package/lib/__tests__/extensions.test.js +209 -0
  9. package/lib/__tests__/extensions.test.js.map +1 -0
  10. package/lib/__tests__/index.test.js +250 -0
  11. package/lib/__tests__/index.test.js.map +1 -0
  12. package/lib/__tests__/size-utils.test.js +57 -0
  13. package/lib/__tests__/size-utils.test.js.map +1 -0
  14. package/lib/__tests__/theme.test.js +17 -0
  15. package/lib/__tests__/theme.test.js.map +1 -0
  16. package/lib/components/__tests__/AltDialog.test.js +201 -0
  17. package/lib/components/__tests__/AltDialog.test.js.map +1 -0
  18. package/lib/components/__tests__/CharacterPicker.test.js +455 -0
  19. package/lib/components/__tests__/CharacterPicker.test.js.map +1 -0
  20. package/lib/components/__tests__/CssIcon.test.js +58 -0
  21. package/lib/components/__tests__/CssIcon.test.js.map +1 -0
  22. package/lib/components/__tests__/DragInTheBlank.test.js +295 -0
  23. package/lib/components/__tests__/DragInTheBlank.test.js.map +1 -0
  24. package/lib/components/__tests__/ExplicitConstructedResponse.test.js +345 -0
  25. package/lib/components/__tests__/ExplicitConstructedResponse.test.js.map +1 -0
  26. package/lib/components/__tests__/ImageToolbar.test.js +185 -0
  27. package/lib/components/__tests__/ImageToolbar.test.js.map +1 -0
  28. package/lib/components/__tests__/InlineDropdown.test.js +839 -0
  29. package/lib/components/__tests__/InlineDropdown.test.js.map +1 -0
  30. package/lib/components/__tests__/InsertImageHandler.test.js +171 -0
  31. package/lib/components/__tests__/InsertImageHandler.test.js.map +1 -0
  32. package/lib/components/__tests__/MediaDialog.test.js +433 -0
  33. package/lib/components/__tests__/MediaDialog.test.js.map +1 -0
  34. package/lib/components/__tests__/MediaToolbar.test.js +126 -0
  35. package/lib/components/__tests__/MediaToolbar.test.js.map +1 -0
  36. package/lib/components/__tests__/MediaWrapper.test.js +96 -0
  37. package/lib/components/__tests__/MediaWrapper.test.js.map +1 -0
  38. package/lib/components/__tests__/MenuBar.test.js +502 -0
  39. package/lib/components/__tests__/MenuBar.test.js.map +1 -0
  40. package/lib/components/__tests__/RespArea.test.js +171 -0
  41. package/lib/components/__tests__/RespArea.test.js.map +1 -0
  42. package/lib/components/__tests__/TableIcons.test.js +153 -0
  43. package/lib/components/__tests__/TableIcons.test.js.map +1 -0
  44. package/lib/components/__tests__/TextAlign.test.js +209 -0
  45. package/lib/components/__tests__/TextAlign.test.js.map +1 -0
  46. package/lib/components/__tests__/TiptapContainer.test.js +196 -0
  47. package/lib/components/__tests__/TiptapContainer.test.js.map +1 -0
  48. package/lib/components/__tests__/characterUtils.test.js +178 -0
  49. package/lib/components/__tests__/characterUtils.test.js.map +1 -0
  50. package/lib/components/__tests__/choice.test.js +213 -0
  51. package/lib/components/__tests__/choice.test.js.map +1 -0
  52. package/lib/components/__tests__/custom-popper.test.js +108 -0
  53. package/lib/components/__tests__/custom-popper.test.js.map +1 -0
  54. package/lib/components/__tests__/done-button.test.js +72 -0
  55. package/lib/components/__tests__/done-button.test.js.map +1 -0
  56. package/lib/components/__tests__/toolbar-buttons.test.js +277 -0
  57. package/lib/components/__tests__/toolbar-buttons.test.js.map +1 -0
  58. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js +90 -0
  59. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js.map +1 -0
  60. package/lib/components/respArea/MathTemplated.js +2 -2
  61. package/lib/components/respArea/MathTemplated.js.map +1 -1
  62. package/lib/components/respArea/__tests__/MathTemplated.test.js +217 -0
  63. package/lib/components/respArea/__tests__/MathTemplated.test.js.map +1 -0
  64. package/lib/extensions/__tests__/css.test.js +214 -0
  65. package/lib/extensions/__tests__/css.test.js.map +1 -0
  66. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +175 -0
  67. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js.map +1 -0
  68. package/lib/extensions/__tests__/divNode.test.js +108 -0
  69. package/lib/extensions/__tests__/divNode.test.js.map +1 -0
  70. package/lib/extensions/__tests__/ensure-empty-root-div.test.js +50 -0
  71. package/lib/extensions/__tests__/ensure-empty-root-div.test.js.map +1 -0
  72. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js +60 -0
  73. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js.map +1 -0
  74. package/lib/extensions/__tests__/extended-list-item.test.js +13 -0
  75. package/lib/extensions/__tests__/extended-list-item.test.js.map +1 -0
  76. package/lib/extensions/__tests__/extended-table-cell.test.js +15 -0
  77. package/lib/extensions/__tests__/extended-table-cell.test.js.map +1 -0
  78. package/lib/extensions/__tests__/extended-table.test.js +200 -0
  79. package/lib/extensions/__tests__/extended-table.test.js.map +1 -0
  80. package/lib/extensions/__tests__/image-component.test.js +432 -0
  81. package/lib/extensions/__tests__/image-component.test.js.map +1 -0
  82. package/lib/extensions/__tests__/image.test.js +313 -0
  83. package/lib/extensions/__tests__/image.test.js.map +1 -0
  84. package/lib/extensions/__tests__/math.test.js +1399 -0
  85. package/lib/extensions/__tests__/math.test.js.map +1 -0
  86. package/lib/extensions/__tests__/media-node-view.test.js +307 -0
  87. package/lib/extensions/__tests__/media-node-view.test.js.map +1 -0
  88. package/lib/extensions/__tests__/media.test.js +292 -0
  89. package/lib/extensions/__tests__/media.test.js.map +1 -0
  90. package/lib/extensions/__tests__/responseArea.test.js +736 -0
  91. package/lib/extensions/__tests__/responseArea.test.js.map +1 -0
  92. package/lib/utils/__tests__/helper.test.js +107 -0
  93. package/lib/utils/__tests__/helper.test.js.map +1 -0
  94. package/lib/utils/__tests__/toolbar.test.js +38 -0
  95. package/lib/utils/__tests__/toolbar.test.js.map +1 -0
  96. package/package.json +7 -7
  97. package/src/components/respArea/MathTemplated.jsx +1 -1
  98. package/src/components/respArea/__tests__/MathTemplated.test.jsx +1 -1
  99. package/LICENSE.md +0 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AltDialog.test.js","names":["_react","_interopRequireDefault","require","_react2","_AltDialog","jest","mock","__esModule","default","_ref","children","open","id","createElement","_ref2","_ref3","_ref4","onClick","_ref5","value","onChange","placeholder","helperText","FormHelperTextProps","multiline","className","style","describe","defaultProps","onDone","fn","alt","beforeEach","clearAllMocks","document","body","innerHTML","it","_render","render","AltDialog","container","expect","toBeInTheDocument","_render2","textarea","querySelector","toBe","_render3","_extends2","getByPlaceholderText","_render4","getByText","_render5","_render6","getByTestId","_render7","fireEvent","change","target","mockQuerySelectorAll","spyOn","mockReturnValue","_render8","click","toHaveBeenCalledWith","mockRestore","_render9","dialog","_render0","_render1","_render10","getAttribute","_render11","undefined","_render12"],"sources":["../../../src/components/__tests__/AltDialog.test.jsx"],"sourcesContent":["import React from 'react';\nimport { fireEvent, render } from '@testing-library/react';\nimport { AltDialog } from '../image/AltDialog';\n\njest.mock('@mui/material/Dialog', () => ({\n __esModule: true,\n default: ({ children, open, id }) => open && <div id={id}>{children}</div>,\n}));\n\njest.mock('@mui/material/DialogContent', () => ({\n __esModule: true,\n default: ({ children }) => <div>{children}</div>,\n}));\n\njest.mock('@mui/material/DialogActions', () => ({\n __esModule: true,\n default: ({ children }) => <div>{children}</div>,\n}));\n\njest.mock('@mui/material/Button', () => ({\n __esModule: true,\n default: ({ children, onClick }) => <button onClick={onClick}>{children}</button>,\n}));\n\njest.mock('@mui/material/TextField', () => ({\n __esModule: true,\n default: ({ value, onChange, placeholder, helperText, FormHelperTextProps, multiline }) => (\n <div className=\"MuiTextField-root\">\n <textarea value={value || ''} onChange={onChange} placeholder={placeholder} data-multiline={multiline} />\n {helperText && <div style={FormHelperTextProps?.style}>{helperText}</div>}\n </div>\n ),\n}));\n\njest.mock('@mui/icons-material/ArrowBackIos', () => ({\n __esModule: true,\n default: () => <svg data-testid=\"arrow-back-icon\" />,\n}));\n\ndescribe('AltDialog', () => {\n const defaultProps = {\n onDone: jest.fn(),\n alt: 'Initial alt text',\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n document.body.innerHTML = '';\n });\n\n it('renders without crashing', () => {\n const { container } = render(<AltDialog {...defaultProps} />);\n expect(container).toBeInTheDocument();\n });\n\n it('renders with initial alt text', () => {\n const { container } = render(<AltDialog {...defaultProps} />);\n const textarea = container.querySelector('textarea');\n expect(textarea.value).toBe('Initial alt text');\n });\n\n it('renders placeholder text', () => {\n const { getByPlaceholderText } = render(<AltDialog {...defaultProps} alt=\"\" />);\n expect(getByPlaceholderText('Enter an Alt Text description of this image')).toBeInTheDocument();\n });\n\n it('renders helper text', () => {\n const { getByText } = render(<AltDialog {...defaultProps} />);\n expect(\n getByText(\n 'Users with visual limitations rely on Alt Text, since screen readers cannot otherwise describe the contents of an image.',\n ),\n ).toBeInTheDocument();\n });\n\n it('renders Done button', () => {\n const { getByText } = render(<AltDialog {...defaultProps} />);\n expect(getByText('Done')).toBeInTheDocument();\n });\n\n it('renders ArrowBackIos icon', () => {\n const { getByTestId } = render(<AltDialog {...defaultProps} />);\n expect(getByTestId('arrow-back-icon')).toBeInTheDocument();\n });\n\n it('updates value on text field change', () => {\n const { container } = render(<AltDialog {...defaultProps} />);\n const textarea = container.querySelector('textarea');\n fireEvent.change(textarea, { target: { value: 'New alt text' } });\n expect(textarea.value).toBe('New alt text');\n });\n\n it('calls onDone with value when Done button is clicked', () => {\n const onDone = jest.fn();\n // Mock document.querySelectorAll to avoid DOM manipulation issues\n const mockQuerySelectorAll = jest.spyOn(document, 'querySelectorAll').mockReturnValue([]);\n\n const { getByText, container } = render(<AltDialog {...defaultProps} onDone={onDone} />);\n const textarea = container.querySelector('textarea');\n fireEvent.change(textarea, { target: { value: 'Updated alt text' } });\n fireEvent.click(getByText('Done'));\n expect(onDone).toHaveBeenCalledWith('Updated alt text');\n\n mockQuerySelectorAll.mockRestore();\n });\n\n it('closes dialog when Done button is clicked', () => {\n // Mock document.querySelectorAll to avoid DOM manipulation issues\n const mockQuerySelectorAll = jest.spyOn(document, 'querySelectorAll').mockReturnValue([]);\n\n const { getByText, container } = render(<AltDialog {...defaultProps} />);\n const dialog = container.querySelector('#text-dialog');\n expect(dialog).toBeInTheDocument();\n fireEvent.click(getByText('Done'));\n\n mockQuerySelectorAll.mockRestore();\n });\n\n it('dialog is open', () => {\n const { container } = render(<AltDialog {...defaultProps} />);\n const dialog = container.querySelector('[id=\"text-dialog\"]');\n expect(dialog).toBeInTheDocument();\n });\n\n it('has correct dialog props', () => {\n const { container } = render(<AltDialog {...defaultProps} />);\n const dialog = container.querySelector('[id=\"text-dialog\"]');\n expect(dialog).toBeInTheDocument();\n });\n\n it('text field is multiline', () => {\n const { container } = render(<AltDialog {...defaultProps} />);\n const textarea = container.querySelector('textarea');\n expect(textarea.getAttribute('data-multiline')).toBe('true');\n });\n\n it('renders without alt text', () => {\n const { getByPlaceholderText } = render(<AltDialog {...defaultProps} alt={undefined} />);\n expect(getByPlaceholderText('Enter an Alt Text description of this image')).toBeInTheDocument();\n });\n\n it('handles empty alt text', () => {\n const { container } = render(<AltDialog {...defaultProps} alt=\"\" />);\n const textarea = container.querySelector('textarea');\n expect(textarea.value).toBe('');\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,455 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _react2 = require("@testing-library/react");
9
+ var _CharacterPicker = require("../CharacterPicker");
10
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
+ jest.mock('react-dom', function () {
13
+ return _objectSpread(_objectSpread({}, jest.requireActual('react-dom')), {}, {
14
+ createPortal: function createPortal(node) {
15
+ return node;
16
+ }
17
+ });
18
+ });
19
+ jest.mock('@pie-lib/math-toolbar', function () {
20
+ return {
21
+ PureToolbar: function PureToolbar(_ref) {
22
+ var onChange = _ref.onChange,
23
+ onDone = _ref.onDone,
24
+ additionalKeys = _ref.additionalKeys;
25
+ return /*#__PURE__*/_react["default"].createElement("div", {
26
+ "data-testid": "pure-toolbar"
27
+ }, /*#__PURE__*/_react["default"].createElement("button", {
28
+ onClick: function onClick() {
29
+ return onChange('á');
30
+ },
31
+ "data-testid": "char-button"
32
+ }, "\xE1"), /*#__PURE__*/_react["default"].createElement("button", {
33
+ onClick: onDone,
34
+ "data-testid": "done-button"
35
+ }, "Done"));
36
+ }
37
+ };
38
+ });
39
+ jest.mock('../characters/custom-popper', function () {
40
+ return {
41
+ __esModule: true,
42
+ "default": function _default(_ref2) {
43
+ var children = _ref2.children,
44
+ onClose = _ref2.onClose;
45
+ return /*#__PURE__*/_react["default"].createElement("div", {
46
+ "data-testid": "custom-popper"
47
+ }, children, /*#__PURE__*/_react["default"].createElement("button", {
48
+ onClick: onClose,
49
+ "data-testid": "close-popper"
50
+ }, "Close"));
51
+ }
52
+ };
53
+ });
54
+ describe('CharacterIcon', function () {
55
+ it('renders with letter', function () {
56
+ var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterIcon, {
57
+ letter: "\xF1"
58
+ })),
59
+ getByText = _render.getByText;
60
+ expect(getByText('ñ')).toBeInTheDocument();
61
+ });
62
+ it('renders with correct styling', function () {
63
+ var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterIcon, {
64
+ letter: "\u20AC"
65
+ })),
66
+ container = _render2.container;
67
+ var div = container.firstChild;
68
+ expect(div).toHaveStyle({
69
+ fontSize: '24px',
70
+ lineHeight: '24px'
71
+ });
72
+ });
73
+ });
74
+ describe('CharacterPicker', function () {
75
+ var mockEditor = {
76
+ chain: jest.fn(function () {
77
+ return {
78
+ focus: jest.fn(function () {
79
+ return {
80
+ insertContent: jest.fn(function () {
81
+ return {
82
+ run: jest.fn()
83
+ };
84
+ })
85
+ };
86
+ })
87
+ };
88
+ }),
89
+ options: {
90
+ element: document.createElement('div')
91
+ },
92
+ view: {
93
+ coordsAtPos: jest.fn(function () {
94
+ return {
95
+ top: 100,
96
+ left: 50
97
+ };
98
+ }),
99
+ dom: document.createElement('div')
100
+ },
101
+ state: {
102
+ selection: {
103
+ from: 0
104
+ }
105
+ }
106
+ };
107
+ beforeEach(function () {
108
+ jest.clearAllMocks();
109
+ // Reset the element to avoid "Cannot redefine property" error
110
+ mockEditor.options.element = document.createElement('div');
111
+ Object.defineProperty(mockEditor.options.element, 'getBoundingClientRect', {
112
+ value: jest.fn(function () {
113
+ return {
114
+ top: 0,
115
+ left: 0,
116
+ height: 100
117
+ };
118
+ }),
119
+ configurable: true
120
+ });
121
+ });
122
+ it('returns null when opts has no characters', function () {
123
+ var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
124
+ editor: mockEditor,
125
+ opts: {},
126
+ onClose: jest.fn()
127
+ })),
128
+ container = _render3.container;
129
+ expect(container.firstChild).toBeNull();
130
+ });
131
+ it('returns null when opts is not provided', function () {
132
+ var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
133
+ editor: mockEditor,
134
+ opts: null,
135
+ onClose: jest.fn()
136
+ })),
137
+ container = _render4.container;
138
+ expect(container.firstChild).toBeNull();
139
+ });
140
+ it('renders character picker with spanish config', function () {
141
+ var opts = {
142
+ language: 'spanish',
143
+ characters: [['á', 'é', 'í']]
144
+ };
145
+ var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
146
+ editor: mockEditor,
147
+ opts: opts,
148
+ onClose: jest.fn()
149
+ })),
150
+ getByTestId = _render5.getByTestId;
151
+ expect(getByTestId('pure-toolbar')).toBeInTheDocument();
152
+ });
153
+ it('renders character picker with special config', function () {
154
+ var opts = {
155
+ language: 'special',
156
+ characters: [['€', '£']]
157
+ };
158
+ var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
159
+ editor: mockEditor,
160
+ opts: opts,
161
+ onClose: jest.fn()
162
+ })),
163
+ getByTestId = _render6.getByTestId;
164
+ expect(getByTestId('pure-toolbar')).toBeInTheDocument();
165
+ });
166
+ it('handles character insertion', function () {
167
+ var opts = {
168
+ characters: [['á', 'é']]
169
+ };
170
+ var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
171
+ editor: mockEditor,
172
+ opts: opts,
173
+ onClose: jest.fn()
174
+ })),
175
+ getByTestId = _render7.getByTestId;
176
+ _react2.fireEvent.click(getByTestId('char-button'));
177
+ expect(mockEditor.chain).toHaveBeenCalled();
178
+ });
179
+ it('calls onClose when done button is clicked', function () {
180
+ var onClose = jest.fn();
181
+ var opts = {
182
+ characters: [['á', 'é']]
183
+ };
184
+ var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
185
+ editor: mockEditor,
186
+ opts: opts,
187
+ onClose: onClose
188
+ })),
189
+ getByTestId = _render8.getByTestId;
190
+ _react2.fireEvent.click(getByTestId('done-button'));
191
+ expect(onClose).toHaveBeenCalled();
192
+ });
193
+ it('closes on outside click', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
194
+ var onClose, opts;
195
+ return _regenerator["default"].wrap(function (_context2) {
196
+ while (1) switch (_context2.prev = _context2.next) {
197
+ case 0:
198
+ onClose = jest.fn();
199
+ opts = {
200
+ characters: [['á', 'é']]
201
+ };
202
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
203
+ editor: mockEditor,
204
+ opts: opts,
205
+ onClose: onClose
206
+ }));
207
+ _context2.next = 1;
208
+ return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
209
+ return _regenerator["default"].wrap(function (_context) {
210
+ while (1) switch (_context.prev = _context.next) {
211
+ case 0:
212
+ _context.next = 1;
213
+ return new Promise(function (r) {
214
+ return setTimeout(r, 0);
215
+ });
216
+ case 1:
217
+ case "end":
218
+ return _context.stop();
219
+ }
220
+ }, _callee);
221
+ })));
222
+ case 1:
223
+ _react2.fireEvent.click(document.body);
224
+ _context2.next = 2;
225
+ return (0, _react2.waitFor)(function () {
226
+ expect(onClose).toHaveBeenCalled();
227
+ });
228
+ case 2:
229
+ case "end":
230
+ return _context2.stop();
231
+ }
232
+ }, _callee2);
233
+ })));
234
+ it('does not re-run positioning when only onClose reference changes', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
235
+ var opts, getRect, _render9, rerender, callsAfterMount;
236
+ return _regenerator["default"].wrap(function (_context4) {
237
+ while (1) switch (_context4.prev = _context4.next) {
238
+ case 0:
239
+ opts = {
240
+ characters: [['á', 'é']]
241
+ };
242
+ getRect = mockEditor.options.element.getBoundingClientRect;
243
+ _render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
244
+ editor: mockEditor,
245
+ opts: opts,
246
+ onClose: jest.fn()
247
+ })), rerender = _render9.rerender;
248
+ _context4.next = 1;
249
+ return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
250
+ return _regenerator["default"].wrap(function (_context3) {
251
+ while (1) switch (_context3.prev = _context3.next) {
252
+ case 0:
253
+ _context3.next = 1;
254
+ return new Promise(function (r) {
255
+ return setTimeout(r, 0);
256
+ });
257
+ case 1:
258
+ case "end":
259
+ return _context3.stop();
260
+ }
261
+ }, _callee3);
262
+ })));
263
+ case 1:
264
+ callsAfterMount = getRect.mock.calls.length;
265
+ expect(callsAfterMount).toBeGreaterThan(0);
266
+ rerender(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
267
+ editor: mockEditor,
268
+ opts: opts,
269
+ onClose: jest.fn()
270
+ }));
271
+ expect(getRect.mock.calls.length).toBe(callsAfterMount);
272
+ case 2:
273
+ case "end":
274
+ return _context4.stop();
275
+ }
276
+ }, _callee4);
277
+ })));
278
+ it('outside click invokes the latest onClose after rerender', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6() {
279
+ var opts, onCloseFirst, _render0, rerender, onCloseSecond;
280
+ return _regenerator["default"].wrap(function (_context6) {
281
+ while (1) switch (_context6.prev = _context6.next) {
282
+ case 0:
283
+ opts = {
284
+ characters: [['á', 'é']]
285
+ };
286
+ onCloseFirst = jest.fn();
287
+ _render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
288
+ editor: mockEditor,
289
+ opts: opts,
290
+ onClose: onCloseFirst
291
+ })), rerender = _render0.rerender;
292
+ _context6.next = 1;
293
+ return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
294
+ return _regenerator["default"].wrap(function (_context5) {
295
+ while (1) switch (_context5.prev = _context5.next) {
296
+ case 0:
297
+ _context5.next = 1;
298
+ return new Promise(function (r) {
299
+ return setTimeout(r, 0);
300
+ });
301
+ case 1:
302
+ case "end":
303
+ return _context5.stop();
304
+ }
305
+ }, _callee5);
306
+ })));
307
+ case 1:
308
+ onCloseSecond = jest.fn();
309
+ rerender(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
310
+ editor: mockEditor,
311
+ opts: opts,
312
+ onClose: onCloseSecond
313
+ }));
314
+ _react2.fireEvent.click(document.body);
315
+ _context6.next = 2;
316
+ return (0, _react2.waitFor)(function () {
317
+ expect(onCloseSecond).toHaveBeenCalled();
318
+ });
319
+ case 2:
320
+ expect(onCloseFirst).not.toHaveBeenCalled();
321
+ case 3:
322
+ case "end":
323
+ return _context6.stop();
324
+ }
325
+ }, _callee6);
326
+ })));
327
+ it('does not close when clicking inside picker', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7() {
328
+ var onClose, opts, _render1, container;
329
+ return _regenerator["default"].wrap(function (_context7) {
330
+ while (1) switch (_context7.prev = _context7.next) {
331
+ case 0:
332
+ onClose = jest.fn();
333
+ opts = {
334
+ characters: [['á', 'é']]
335
+ };
336
+ _render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
337
+ editor: mockEditor,
338
+ opts: opts,
339
+ onClose: onClose
340
+ })), container = _render1.container;
341
+ _context7.next = 1;
342
+ return (0, _react2.waitFor)(function () {
343
+ var picker = container.querySelector('.insert-character-dialog');
344
+ if (picker) {
345
+ _react2.fireEvent.mouseDown(picker);
346
+ }
347
+ });
348
+ case 1:
349
+ expect(onClose).not.toHaveBeenCalled();
350
+ case 2:
351
+ case "end":
352
+ return _context7.stop();
353
+ }
354
+ }, _callee7);
355
+ })));
356
+ it('renders with custom opts structure', function () {
357
+ var opts = {
358
+ characters: [[{
359
+ name: 'a',
360
+ write: 'á',
361
+ label: 'á'
362
+ }, {
363
+ name: 'e',
364
+ write: 'é',
365
+ label: 'é'
366
+ }]]
367
+ };
368
+ var _render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
369
+ editor: mockEditor,
370
+ opts: opts,
371
+ onClose: jest.fn()
372
+ })),
373
+ getByTestId = _render10.getByTestId;
374
+ expect(getByTestId('pure-toolbar')).toBeInTheDocument();
375
+ });
376
+ it('renders with hasPreview option', function () {
377
+ var opts = {
378
+ hasPreview: true,
379
+ characters: [[{
380
+ name: 'euro',
381
+ write: '€',
382
+ label: '€',
383
+ description: 'Euro sign',
384
+ unicode: 'U+20AC'
385
+ }]]
386
+ };
387
+ var _render11 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
388
+ editor: mockEditor,
389
+ opts: opts,
390
+ onClose: jest.fn()
391
+ })),
392
+ getByTestId = _render11.getByTestId;
393
+ expect(getByTestId('pure-toolbar')).toBeInTheDocument();
394
+ });
395
+ it('calculates position correctly', function () {
396
+ var opts = {
397
+ characters: [['á']]
398
+ };
399
+ var _render12 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
400
+ editor: mockEditor,
401
+ opts: opts,
402
+ onClose: jest.fn()
403
+ })),
404
+ container = _render12.container;
405
+ var dialog = container.querySelector('.insert-character-dialog');
406
+ expect(dialog).toHaveStyle({
407
+ position: 'fixed'
408
+ });
409
+ });
410
+ it('renders above other editor overlays with a high z-index', function () {
411
+ var opts = {
412
+ characters: [['á']]
413
+ };
414
+ var _render13 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
415
+ editor: mockEditor,
416
+ opts: opts,
417
+ onClose: jest.fn()
418
+ })),
419
+ container = _render13.container;
420
+ var dialog = container.querySelector('.insert-character-dialog');
421
+ expect(dialog).toHaveStyle({
422
+ zIndex: '1000'
423
+ });
424
+ });
425
+ it('adds data-toolbar-for attribute with editor instanceId', function () {
426
+ var editorWithInstanceId = _objectSpread(_objectSpread({}, mockEditor), {}, {
427
+ instanceId: 'editor-123'
428
+ });
429
+ var opts = {
430
+ characters: [['á', 'é']]
431
+ };
432
+ var _render14 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
433
+ editor: editorWithInstanceId,
434
+ opts: opts,
435
+ onClose: jest.fn()
436
+ })),
437
+ container = _render14.container;
438
+ var dialog = container.querySelector('.insert-character-dialog');
439
+ expect(dialog).toHaveAttribute('data-toolbar-for', 'editor-123');
440
+ });
441
+ it('renders without instanceId gracefully', function () {
442
+ var opts = {
443
+ characters: [['á', 'é']]
444
+ };
445
+ var _render15 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
446
+ editor: mockEditor,
447
+ opts: opts,
448
+ onClose: jest.fn()
449
+ })),
450
+ container = _render15.container;
451
+ var dialog = container.querySelector('.insert-character-dialog');
452
+ expect(dialog).toBeInTheDocument();
453
+ });
454
+ });
455
+ //# sourceMappingURL=CharacterPicker.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CharacterPicker.test.js","names":["_react","_interopRequireDefault","require","_react2","_CharacterPicker","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","jest","mock","requireActual","createPortal","node","PureToolbar","_ref","onChange","onDone","additionalKeys","createElement","onClick","__esModule","default","_ref2","children","onClose","describe","it","_render","render","CharacterIcon","letter","getByText","expect","toBeInTheDocument","_render2","container","div","firstChild","toHaveStyle","fontSize","lineHeight","mockEditor","chain","fn","focus","insertContent","run","options","element","document","view","coordsAtPos","top","left","dom","state","selection","from","beforeEach","clearAllMocks","value","height","configurable","_render3","CharacterPicker","editor","opts","toBeNull","_render4","language","characters","_render5","getByTestId","_render6","_render7","fireEvent","click","toHaveBeenCalled","_render8","_asyncToGenerator2","_regenerator","mark","_callee2","wrap","_context2","prev","next","act","_callee","_context","Promise","setTimeout","stop","body","waitFor","_callee4","getRect","_render9","rerender","callsAfterMount","_context4","getBoundingClientRect","_callee3","_context3","calls","toBeGreaterThan","toBe","_callee6","onCloseFirst","_render0","onCloseSecond","_context6","_callee5","_context5","not","_callee7","_render1","_context7","picker","querySelector","mouseDown","name","write","label","_render10","hasPreview","description","unicode","_render11","_render12","dialog","position","_render13","zIndex","editorWithInstanceId","instanceId","_render14","toHaveAttribute","_render15"],"sources":["../../../src/components/__tests__/CharacterPicker.test.jsx"],"sourcesContent":["import React from 'react';\nimport { act, fireEvent, render, waitFor } from '@testing-library/react';\nimport { CharacterIcon, CharacterPicker } from '../CharacterPicker';\n\njest.mock('react-dom', () => ({\n ...jest.requireActual('react-dom'),\n createPortal: (node) => node,\n}));\n\njest.mock('@pie-lib/math-toolbar', () => ({\n PureToolbar: ({ onChange, onDone, additionalKeys }) => (\n <div data-testid=\"pure-toolbar\">\n <button onClick={() => onChange('á')} data-testid=\"char-button\">\n á\n </button>\n <button onClick={onDone} data-testid=\"done-button\">\n Done\n </button>\n </div>\n ),\n}));\n\njest.mock('../characters/custom-popper', () => ({\n __esModule: true,\n default: ({ children, onClose }) => (\n <div data-testid=\"custom-popper\">\n {children}\n <button onClick={onClose} data-testid=\"close-popper\">\n Close\n </button>\n </div>\n ),\n}));\n\ndescribe('CharacterIcon', () => {\n it('renders with letter', () => {\n const { getByText } = render(<CharacterIcon letter=\"ñ\" />);\n expect(getByText('ñ')).toBeInTheDocument();\n });\n\n it('renders with correct styling', () => {\n const { container } = render(<CharacterIcon letter=\"€\" />);\n const div = container.firstChild;\n expect(div).toHaveStyle({ fontSize: '24px', lineHeight: '24px' });\n });\n});\n\ndescribe('CharacterPicker', () => {\n const mockEditor = {\n chain: jest.fn(() => ({\n focus: jest.fn(() => ({\n insertContent: jest.fn(() => ({ run: jest.fn() })),\n })),\n })),\n options: {\n element: document.createElement('div'),\n },\n view: {\n coordsAtPos: jest.fn(() => ({ top: 100, left: 50 })),\n dom: document.createElement('div'),\n },\n state: {\n selection: { from: 0 },\n },\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n // Reset the element to avoid \"Cannot redefine property\" error\n mockEditor.options.element = document.createElement('div');\n Object.defineProperty(mockEditor.options.element, 'getBoundingClientRect', {\n value: jest.fn(() => ({ top: 0, left: 0, height: 100 })),\n configurable: true,\n });\n });\n\n it('returns null when opts has no characters', () => {\n const { container } = render(<CharacterPicker editor={mockEditor} opts={{}} onClose={jest.fn()} />);\n expect(container.firstChild).toBeNull();\n });\n\n it('returns null when opts is not provided', () => {\n const { container } = render(<CharacterPicker editor={mockEditor} opts={null} onClose={jest.fn()} />);\n expect(container.firstChild).toBeNull();\n });\n\n it('renders character picker with spanish config', () => {\n const opts = {\n language: 'spanish',\n characters: [['á', 'é', 'í']],\n };\n const { getByTestId } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n expect(getByTestId('pure-toolbar')).toBeInTheDocument();\n });\n\n it('renders character picker with special config', () => {\n const opts = {\n language: 'special',\n characters: [['€', '£']],\n };\n const { getByTestId } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n expect(getByTestId('pure-toolbar')).toBeInTheDocument();\n });\n\n it('handles character insertion', () => {\n const opts = {\n characters: [['á', 'é']],\n };\n const { getByTestId } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n fireEvent.click(getByTestId('char-button'));\n expect(mockEditor.chain).toHaveBeenCalled();\n });\n\n it('calls onClose when done button is clicked', () => {\n const onClose = jest.fn();\n const opts = {\n characters: [['á', 'é']],\n };\n const { getByTestId } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={onClose} />);\n fireEvent.click(getByTestId('done-button'));\n expect(onClose).toHaveBeenCalled();\n });\n\n it('closes on outside click', async () => {\n const onClose = jest.fn();\n const opts = {\n characters: [['á', 'é']],\n };\n render(<CharacterPicker editor={mockEditor} opts={opts} onClose={onClose} />);\n\n await act(async () => {\n await new Promise((r) => setTimeout(r, 0));\n });\n fireEvent.click(document.body);\n\n await waitFor(() => {\n expect(onClose).toHaveBeenCalled();\n });\n });\n\n it('does not re-run positioning when only onClose reference changes', async () => {\n const opts = {\n characters: [['á', 'é']],\n };\n const getRect = mockEditor.options.element.getBoundingClientRect;\n const { rerender } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n\n await act(async () => {\n await new Promise((r) => setTimeout(r, 0));\n });\n\n const callsAfterMount = getRect.mock.calls.length;\n expect(callsAfterMount).toBeGreaterThan(0);\n\n rerender(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n\n expect(getRect.mock.calls.length).toBe(callsAfterMount);\n });\n\n it('outside click invokes the latest onClose after rerender', async () => {\n const opts = {\n characters: [['á', 'é']],\n };\n const onCloseFirst = jest.fn();\n const { rerender } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={onCloseFirst} />);\n\n await act(async () => {\n await new Promise((r) => setTimeout(r, 0));\n });\n\n const onCloseSecond = jest.fn();\n rerender(<CharacterPicker editor={mockEditor} opts={opts} onClose={onCloseSecond} />);\n\n fireEvent.click(document.body);\n\n await waitFor(() => {\n expect(onCloseSecond).toHaveBeenCalled();\n });\n expect(onCloseFirst).not.toHaveBeenCalled();\n });\n\n it('does not close when clicking inside picker', async () => {\n const onClose = jest.fn();\n const opts = {\n characters: [['á', 'é']],\n };\n const { container } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={onClose} />);\n\n await waitFor(() => {\n const picker = container.querySelector('.insert-character-dialog');\n if (picker) {\n fireEvent.mouseDown(picker);\n }\n });\n\n expect(onClose).not.toHaveBeenCalled();\n });\n\n it('renders with custom opts structure', () => {\n const opts = {\n characters: [\n [\n { name: 'a', write: 'á', label: 'á' },\n { name: 'e', write: 'é', label: 'é' },\n ],\n ],\n };\n const { getByTestId } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n expect(getByTestId('pure-toolbar')).toBeInTheDocument();\n });\n\n it('renders with hasPreview option', () => {\n const opts = {\n hasPreview: true,\n characters: [\n [\n {\n name: 'euro',\n write: '€',\n label: '€',\n description: 'Euro sign',\n unicode: 'U+20AC',\n },\n ],\n ],\n };\n const { getByTestId } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n expect(getByTestId('pure-toolbar')).toBeInTheDocument();\n });\n\n it('calculates position correctly', () => {\n const opts = {\n characters: [['á']],\n };\n const { container } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n const dialog = container.querySelector('.insert-character-dialog');\n expect(dialog).toHaveStyle({ position: 'fixed' });\n });\n\n it('renders above other editor overlays with a high z-index', () => {\n const opts = {\n characters: [['á']],\n };\n const { container } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n const dialog = container.querySelector('.insert-character-dialog');\n expect(dialog).toHaveStyle({ zIndex: '1000' });\n });\n\n it('adds data-toolbar-for attribute with editor instanceId', () => {\n const editorWithInstanceId = {\n ...mockEditor,\n instanceId: 'editor-123',\n };\n const opts = {\n characters: [['á', 'é']],\n };\n const { container } = render(<CharacterPicker editor={editorWithInstanceId} opts={opts} onClose={jest.fn()} />);\n const dialog = container.querySelector('.insert-character-dialog');\n expect(dialog).toHaveAttribute('data-toolbar-for', 'editor-123');\n });\n\n it('renders without instanceId gracefully', () => {\n const opts = {\n characters: [['á', 'é']],\n };\n const { container } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n const dialog = container.querySelector('.insert-character-dialog');\n expect(dialog).toBeInTheDocument();\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,58 @@
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 _CssIcon = _interopRequireDefault(require("../icons/CssIcon"));
7
+ describe('CssIcon', function () {
8
+ it('renders without crashing', function () {
9
+ var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
10
+ container = _render.container;
11
+ expect(container).toBeInTheDocument();
12
+ });
13
+ it('renders CSS text', function () {
14
+ var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
15
+ getByText = _render2.getByText;
16
+ expect(getByText('CSS')).toBeInTheDocument();
17
+ });
18
+ it('applies correct font family', function () {
19
+ var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
20
+ getByText = _render3.getByText;
21
+ var element = getByText('CSS');
22
+ // Font family is applied via styled component, just verify text renders
23
+ expect(element).toBeInTheDocument();
24
+ });
25
+ it('applies bold font weight', function () {
26
+ var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
27
+ getByText = _render4.getByText;
28
+ var element = getByText('CSS');
29
+ expect(element).toHaveStyle({
30
+ fontWeight: 'bold'
31
+ });
32
+ });
33
+ it('has correct line height', function () {
34
+ var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
35
+ getByText = _render5.getByText;
36
+ var element = getByText('CSS');
37
+ expect(element).toHaveStyle({
38
+ lineHeight: '14px'
39
+ });
40
+ });
41
+ it('has relative positioning', function () {
42
+ var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
43
+ getByText = _render6.getByText;
44
+ var element = getByText('CSS');
45
+ expect(element).toHaveStyle({
46
+ position: 'relative'
47
+ });
48
+ });
49
+ it('has nowrap white space', function () {
50
+ var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
51
+ getByText = _render7.getByText;
52
+ var element = getByText('CSS');
53
+ expect(element).toHaveStyle({
54
+ whiteSpace: 'nowrap'
55
+ });
56
+ });
57
+ });
58
+ //# sourceMappingURL=CssIcon.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CssIcon.test.js","names":["_react","_interopRequireDefault","require","_react2","_CssIcon","describe","it","_render","render","createElement","container","expect","toBeInTheDocument","_render2","getByText","_render3","element","_render4","toHaveStyle","fontWeight","_render5","lineHeight","_render6","position","_render7","whiteSpace"],"sources":["../../../src/components/__tests__/CssIcon.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render } from '@testing-library/react';\nimport CssIcon from '../icons/CssIcon';\n\ndescribe('CssIcon', () => {\n it('renders without crashing', () => {\n const { container } = render(<CssIcon />);\n expect(container).toBeInTheDocument();\n });\n\n it('renders CSS text', () => {\n const { getByText } = render(<CssIcon />);\n expect(getByText('CSS')).toBeInTheDocument();\n });\n\n it('applies correct font family', () => {\n const { getByText } = render(<CssIcon />);\n const element = getByText('CSS');\n // Font family is applied via styled component, just verify text renders\n expect(element).toBeInTheDocument();\n });\n\n it('applies bold font weight', () => {\n const { getByText } = render(<CssIcon />);\n const element = getByText('CSS');\n expect(element).toHaveStyle({ fontWeight: 'bold' });\n });\n\n it('has correct line height', () => {\n const { getByText } = render(<CssIcon />);\n const element = getByText('CSS');\n expect(element).toHaveStyle({ lineHeight: '14px' });\n });\n\n it('has relative positioning', () => {\n const { getByText } = render(<CssIcon />);\n const element = getByText('CSS');\n expect(element).toHaveStyle({ position: 'relative' });\n });\n\n it('has nowrap white space', () => {\n const { getByText } = render(<CssIcon />);\n const element = getByText('CSS');\n expect(element).toHaveStyle({ whiteSpace: 'nowrap' });\n });\n});\n"],"mappings":"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","ignoreList":[]}