@digabi/exam-engine-core 22.1.6-alpha.0 → 22.1.6-alpha.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. package/dist/__tests__/EditableGradingInstructionLocalization.test.d.ts +2 -0
  2. package/dist/__tests__/EditableGradingInstructionLocalization.test.d.ts.map +1 -0
  3. package/dist/__tests__/EditableGradingInstructionLocalization.test.js +75 -0
  4. package/dist/__tests__/EditableGradingInstructionLocalization.test.js.map +1 -0
  5. package/dist/__tests__/editor/Table.test.d.ts +2 -0
  6. package/dist/__tests__/editor/Table.test.d.ts.map +1 -0
  7. package/dist/__tests__/editor/Table.test.js +172 -0
  8. package/dist/__tests__/editor/Table.test.js.map +1 -0
  9. package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
  10. package/dist/components/Localization.d.ts +5 -0
  11. package/dist/components/Localization.d.ts.map +1 -0
  12. package/dist/components/Localization.js +9 -0
  13. package/dist/components/Localization.js.map +1 -0
  14. package/dist/components/context/AttachmentContext.d.ts.map +1 -1
  15. package/dist/components/context/ExamContext.d.ts.map +1 -1
  16. package/dist/components/context/QuestionContext.d.ts.map +1 -1
  17. package/dist/components/context/ResultsContext.d.ts.map +1 -1
  18. package/dist/components/context/SectionContext.d.ts.map +1 -1
  19. package/dist/components/grading-instructions/EditableGradingInstruction.d.ts.map +1 -1
  20. package/dist/components/grading-instructions/EditableGradingInstruction.js +9 -6
  21. package/dist/components/grading-instructions/EditableGradingInstruction.js.map +1 -1
  22. package/dist/components/grading-instructions/GradingInstruction.d.ts +7 -0
  23. package/dist/components/grading-instructions/GradingInstruction.d.ts.map +1 -0
  24. package/dist/components/grading-instructions/GradingInstruction.js +9 -0
  25. package/dist/components/grading-instructions/GradingInstruction.js.map +1 -0
  26. package/dist/components/grading-instructions/GradingInstructions.d.ts +1 -1
  27. package/dist/components/grading-instructions/editor/AttributeToggleButton.d.ts +9 -0
  28. package/dist/components/grading-instructions/editor/AttributeToggleButton.d.ts.map +1 -0
  29. package/dist/components/grading-instructions/editor/AttributeToggleButton.js +53 -0
  30. package/dist/components/grading-instructions/editor/AttributeToggleButton.js.map +1 -0
  31. package/dist/components/grading-instructions/editor/CurrentElement.d.ts +2 -0
  32. package/dist/components/grading-instructions/editor/CurrentElement.d.ts.map +1 -0
  33. package/dist/components/grading-instructions/editor/CurrentElement.js +8 -0
  34. package/dist/components/grading-instructions/editor/CurrentElement.js.map +1 -0
  35. package/dist/components/grading-instructions/editor/CurrentLocalization.d.ts +7 -0
  36. package/dist/components/grading-instructions/editor/CurrentLocalization.d.ts.map +1 -0
  37. package/dist/components/grading-instructions/editor/CurrentLocalization.js +13 -0
  38. package/dist/components/grading-instructions/editor/CurrentLocalization.js.map +1 -0
  39. package/dist/components/grading-instructions/editor/Formula.d.ts +0 -3
  40. package/dist/components/grading-instructions/editor/Formula.d.ts.map +1 -1
  41. package/dist/components/grading-instructions/editor/Formula.js +0 -54
  42. package/dist/components/grading-instructions/editor/Formula.js.map +1 -1
  43. package/dist/components/grading-instructions/editor/Localization.d.ts +3 -0
  44. package/dist/components/grading-instructions/editor/Localization.d.ts.map +1 -0
  45. package/dist/components/grading-instructions/editor/Localization.js +36 -0
  46. package/dist/components/grading-instructions/editor/Localization.js.map +1 -0
  47. package/dist/components/grading-instructions/editor/LocalizationButtons.d.ts +6 -0
  48. package/dist/components/grading-instructions/editor/LocalizationButtons.d.ts.map +1 -0
  49. package/dist/components/grading-instructions/editor/LocalizationButtons.js +14 -0
  50. package/dist/components/grading-instructions/editor/LocalizationButtons.js.map +1 -0
  51. package/dist/components/grading-instructions/editor/Table.d.ts +0 -2
  52. package/dist/components/grading-instructions/editor/Table.d.ts.map +1 -1
  53. package/dist/components/grading-instructions/editor/Table.js +1 -42
  54. package/dist/components/grading-instructions/editor/Table.js.map +1 -1
  55. package/dist/components/grading-instructions/editor/localizatio.d.ts +3 -0
  56. package/dist/components/grading-instructions/editor/localizatio.d.ts.map +1 -0
  57. package/dist/components/grading-instructions/editor/localizatio.js +36 -0
  58. package/dist/components/grading-instructions/editor/localizatio.js.map +1 -0
  59. package/dist/components/grading-instructions/editor/localizationSpan.d.ts +3 -0
  60. package/dist/components/grading-instructions/editor/localizationSpan.d.ts.map +1 -0
  61. package/dist/components/grading-instructions/editor/localizationSpan.js +36 -0
  62. package/dist/components/grading-instructions/editor/localizationSpan.js.map +1 -0
  63. package/dist/components/grading-instructions/editor/schemas/formulaSchema.d.ts +4 -0
  64. package/dist/components/grading-instructions/editor/schemas/formulaSchema.d.ts.map +1 -0
  65. package/dist/components/grading-instructions/editor/schemas/formulaSchema.js +55 -0
  66. package/dist/components/grading-instructions/editor/schemas/formulaSchema.js.map +1 -0
  67. package/dist/components/grading-instructions/editor/schemas/imageSchema.d.ts +4 -0
  68. package/dist/components/grading-instructions/editor/schemas/imageSchema.d.ts.map +1 -0
  69. package/dist/components/grading-instructions/editor/schemas/imageSchema.js +47 -0
  70. package/dist/components/grading-instructions/editor/schemas/imageSchema.js.map +1 -0
  71. package/dist/components/grading-instructions/editor/schemas/spanWithNowrapSchema.d.ts +3 -0
  72. package/dist/components/grading-instructions/editor/schemas/spanWithNowrapSchema.d.ts.map +1 -0
  73. package/dist/components/grading-instructions/editor/schemas/spanWithNowrapSchema.js +19 -0
  74. package/dist/components/grading-instructions/editor/schemas/spanWithNowrapSchema.js.map +1 -0
  75. package/dist/components/grading-instructions/editor/schemas/tableSchema.d.ts +3 -0
  76. package/dist/components/grading-instructions/editor/schemas/tableSchema.d.ts.map +1 -0
  77. package/dist/components/grading-instructions/editor/schemas/tableSchema.js +43 -0
  78. package/dist/components/grading-instructions/editor/schemas/tableSchema.js.map +1 -0
  79. package/dist/components/grading-instructions/editor/spanWithPath.d.ts +3 -0
  80. package/dist/components/grading-instructions/editor/spanWithPath.d.ts.map +1 -0
  81. package/dist/components/grading-instructions/editor/spanWithPath.js +24 -0
  82. package/dist/components/grading-instructions/editor/spanWithPath.js.map +1 -0
  83. package/dist/components/grading-instructions/editor/util.d.ts +6 -0
  84. package/dist/components/grading-instructions/editor/util.d.ts.map +1 -0
  85. package/dist/components/grading-instructions/editor/util.js +10 -0
  86. package/dist/components/grading-instructions/editor/util.js.map +1 -0
  87. package/dist/main-bundle.js +1 -1
  88. package/dist/main-bundle.js.LICENSE.txt +1 -1
  89. package/dist/main.css +1 -1
  90. package/package.json +2 -2
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=EditableGradingInstructionLocalization.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditableGradingInstructionLocalization.test.d.ts","sourceRoot":"","sources":["../../__tests__/EditableGradingInstructionLocalization.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const react_1 = require("@testing-library/react");
4
+ const renderEditableGradingInstruction_1 = require("./utils/renderEditableGradingInstruction");
5
+ const util_1 = require("./utils/util");
6
+ const prosemirror_1 = require("./utils/prosemirror");
7
+ const act = react_1.act;
8
+ describe('EditableGradingInstructionLocalization', () => {
9
+ let cleanup;
10
+ let onContentChangeMock;
11
+ beforeEach(() => {
12
+ onContentChangeMock = jest.fn();
13
+ cleanup = (0, prosemirror_1.mockCreateRange)();
14
+ });
15
+ afterEach(() => {
16
+ if (cleanup) {
17
+ cleanup();
18
+ }
19
+ cleanup = null;
20
+ });
21
+ it('preserves localization tags with e-localization attribute on save', async () => {
22
+ // e-localization attribute is added on mastering exam
23
+ const inputData = '<p><e:localization lang="sv-FI" exam-type="hearing-impaired" e-localization="1">placeholder</e:localization></p>';
24
+ const expectedOutput = '<p><e:localization lang="sv-FI" exam-type="hearing-impaired">lokalisaatio</e:localization></p>';
25
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
26
+ await act(async () => {
27
+ (0, util_1.insertText)(await result.findByText('placeholder'), 'lokalisaatio');
28
+ });
29
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
30
+ });
31
+ it('localization tags without e-localization attribute are ignored', async () => {
32
+ const inputData = '<p><e:localization lang="sv-FI" exam-type="hearing-impaired">placeholder</e:localization></p>';
33
+ const expectedOutput = '<p>lokalisaatio</p>';
34
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
35
+ await act(async () => {
36
+ (0, util_1.insertText)(await result.findByText('placeholder'), 'lokalisaatio');
37
+ });
38
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
39
+ });
40
+ it("removes localization's e-localization and hidden attributes on save", async () => {
41
+ const inputData = '<p>Tämä <e:localization exam-type="visually-impaired" e-localization="1" hidden="hidden">on</e:localization> piilossa</p>';
42
+ const expectedOutput = '<p>Tämä <e:localization exam-type="visually-impaired">ei ole</e:localization> piilossa</p>';
43
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
44
+ await act(async () => {
45
+ (0, util_1.insertText)(await result.findByText('on'), 'ei ole');
46
+ });
47
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
48
+ });
49
+ it('saves all grading instructions as a whole regardless which localization is edited', async () => {
50
+ const inputData = `
51
+ <p>Not localized</p>
52
+ <p>
53
+ <e:localization e-localization="1">Localized without attributes</e:localization>
54
+ <e:localization e-localization="1" lang="fi-FI">Localized with language</e:localization>
55
+ <e:localization e-localization="1" exam-type="visually-impaired">Localized with exam-type</e:localization>
56
+ <e:localization e-localization="1" lang="sv-FI" exam-type="visually-impaired">Localized with language and exam-type</e:localization>
57
+ </p>
58
+ `.replace(/\n/g, '');
59
+ const expectedOutput = `
60
+ <p>Not localized</p>
61
+ <p>
62
+ <e:localization>Localized without attributes</e:localization>
63
+ <e:localization lang="fi-FI">Localized with language</e:localization>
64
+ <e:localization exam-type="visually-impaired">Localized with examType</e:localization>
65
+ <e:localization lang="sv-FI" exam-type="visually-impaired">Localized with language and exam-type</e:localization>
66
+ </p>
67
+ `.replace(/\n/g, '');
68
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
69
+ await act(async () => {
70
+ (0, util_1.insertText)(await result.findByText('Localized with exam-type'), 'Localized with examType');
71
+ });
72
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
73
+ });
74
+ });
75
+ //# sourceMappingURL=EditableGradingInstructionLocalization.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditableGradingInstructionLocalization.test.js","sourceRoot":"","sources":["../../__tests__/EditableGradingInstructionLocalization.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import '@testing-library/jest-dom';
2
+ //# sourceMappingURL=Table.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.test.d.ts","sourceRoot":"","sources":["../../../__tests__/editor/Table.test.tsx"],"names":[],"mappings":"AAIA,OAAO,2BAA2B,CAAA"}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = require("@testing-library/react");
7
+ const user_event_1 = __importDefault(require("@testing-library/user-event"));
8
+ const renderEditableGradingInstruction_1 = require("../utils/renderEditableGradingInstruction");
9
+ const util_1 = require("../utils/util");
10
+ require("@testing-library/jest-dom");
11
+ const act = react_1.act;
12
+ describe('Table', () => {
13
+ let cleanup;
14
+ let onContentChangeMock;
15
+ beforeEach(() => {
16
+ onContentChangeMock = jest.fn();
17
+ });
18
+ afterEach(() => {
19
+ if (cleanup) {
20
+ cleanup();
21
+ }
22
+ cleanup = null;
23
+ });
24
+ it('Table is rendered as expected', () => {
25
+ const inputData = '<table class="e-table"><tbody><tr><td>foo</td></tr></tbody></table>';
26
+ const expectedOutput = '<table class="e-table"><tbody><tr><td>foo</td></tr></tbody></table>';
27
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData);
28
+ const table = result.container.querySelector('.ProseMirror');
29
+ expect(table.innerHTML).toBe(expectedOutput);
30
+ });
31
+ it('Change in table is returned as expected', async () => {
32
+ cleanup = mockCreateRange();
33
+ const inputData = '<table class="e-table"><tbody><tr><td>foo</td></tr></tbody></table>';
34
+ const expectedOutput = '<table class="e-table"><tbody><tr><td>bar</td></tr></tbody></table>';
35
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
36
+ await act(async () => {
37
+ (0, util_1.insertText)(await result.findByText('foo'), 'bar');
38
+ });
39
+ expect(onContentChangeMock).toHaveBeenCalledTimes(1);
40
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
41
+ });
42
+ it('Insert table adds expected table', async () => {
43
+ const inputData = '';
44
+ const expectedOutput = '<table class="e-table e-width-half"><tbody><tr><td></td><td></td></tr><tr><td></td><td></td></tr></tbody></table>';
45
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
46
+ await act(async () => {
47
+ await user_event_1.default.click(await result.findByTestId('editor-menu-add-table'));
48
+ });
49
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
50
+ });
51
+ it('Remove table removes table', async () => {
52
+ const inputData = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
53
+ const expectedOutput = '<p></p>';
54
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
55
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Poista taulukko');
56
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
57
+ });
58
+ it('Insert column adds column', async () => {
59
+ const inputData = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
60
+ const expectedOutput = '<table><tbody><tr><td>foo</td><td></td></tr></tbody></table>';
61
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
62
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Lisää sarake');
63
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
64
+ });
65
+ it('Remove column removes column', async () => {
66
+ const inputData = '<table><tbody><tr><td>foo</td><td>bar</td></tr></tbody></table>';
67
+ const expectedOutput = '<table><tbody><tr><td>bar</td></tr></tbody></table>';
68
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
69
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Poista sarake');
70
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
71
+ });
72
+ it('Insert row adds row', async () => {
73
+ const inputData = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
74
+ const expectedOutput = '<table><tbody><tr><td>foo</td></tr><tr><td></td></tr></tbody></table>';
75
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
76
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Lisää rivi');
77
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
78
+ });
79
+ it('Remove row removes row', async () => {
80
+ const inputData = '<table><tbody><tr><td>foo</td></tr><tr><td>bar</td></tr></tbody></table>';
81
+ const expectedOutput = '<table><tbody><tr><td>bar</td></tr></tbody></table>';
82
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
83
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Poista rivi');
84
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
85
+ });
86
+ it('Full width changes full width class to table', async () => {
87
+ const inputData = '<table class="e-width-half"><tbody><tr><td>foo</td></tr></tbody></table>';
88
+ const expectedOutput = '<table class="e-width-full"><tbody><tr><td>foo</td></tr></tbody></table>';
89
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
90
+ expect(result.queryByText('Puolikas leveys')).not.toBeInTheDocument();
91
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Täysi leveys');
92
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
93
+ });
94
+ it('Half width changes half width class to table', async () => {
95
+ const inputData = '<table class="e-width-full"><tbody><tr><td>foo</td></tr></tbody></table>';
96
+ const expectedOutput = '<table class="e-width-half"><tbody><tr><td>foo</td></tr></tbody></table>';
97
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
98
+ expect(result.queryByText('Täysi leveys')).not.toBeInTheDocument();
99
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Puolikas leveys');
100
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
101
+ });
102
+ it('Remove borders adds e-table--borderless class to table', async () => {
103
+ const inputData = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
104
+ const expectedOutput = '<table class="e-table--borderless"><tbody><tr><td>foo</td></tr></tbody></table>';
105
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
106
+ expect(result.queryByText('Lisää reunat')).not.toBeInTheDocument();
107
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Poista reunat');
108
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
109
+ });
110
+ it('Add borders removes e-table--borderless class from table', async () => {
111
+ const inputData = '<table class="e-table--borderless"><tbody><tr><td>foo</td></tr></tbody></table>';
112
+ const expectedOutput = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
113
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
114
+ expect(result.queryByText('Poista reunat')).not.toBeInTheDocument();
115
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Lisää reunat');
116
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
117
+ });
118
+ it('Remove zebra removes class from table', async () => {
119
+ const inputData = '<table class="e-table--zebra"><tbody><tr><td>foo</td></tr></tbody></table>';
120
+ const expectedOutput = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
121
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
122
+ expect(result.queryByText('Lisää raidat')).not.toBeInTheDocument();
123
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Poista raidat');
124
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
125
+ });
126
+ it('Add zebra adds e-table--zebra class to table', async () => {
127
+ const inputData = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
128
+ const expectedOutput = '<table class="e-table--zebra"><tbody><tr><td>foo</td></tr></tbody></table>';
129
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
130
+ expect(result.queryByText('Poista raidat')).not.toBeInTheDocument();
131
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Lisää raidat');
132
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
133
+ });
134
+ });
135
+ async function clickTableMenuButtonWithFocusOnCell(result, cellText, buttonText) {
136
+ await act(async () => {
137
+ await focusOnTablesCell(result, cellText);
138
+ await user_event_1.default.click(await result.findByText(buttonText));
139
+ });
140
+ }
141
+ async function focusOnTablesCell(result, text) {
142
+ // Replace cell's text with same text
143
+ // Hack to get focus on cell without need to mock createRange
144
+ (0, util_1.insertText)(await result.findByText(text), text);
145
+ }
146
+ function mockCreateRange() {
147
+ const originalCreateRange = global.window.document.createRange;
148
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
149
+ // @ts-expect-error
150
+ global.Range = function Range() { };
151
+ const createContextualFragment = (html) => {
152
+ const div = document.createElement('div');
153
+ div.innerHTML = html;
154
+ return div.children[0];
155
+ };
156
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
157
+ // @ts-expect-error
158
+ Range.prototype.createContextualFragment = (html) => createContextualFragment(html);
159
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
160
+ // @ts-expect-error
161
+ global.window.document.createRange = function createRange() {
162
+ return {
163
+ setEnd: () => { },
164
+ setStart: () => { },
165
+ getBoundingClientRect: () => ({ right: 0 }),
166
+ getClientRects: () => [],
167
+ createContextualFragment
168
+ };
169
+ };
170
+ return () => (global.window.document.createRange = originalCreateRange);
171
+ }
172
+ //# sourceMappingURL=Table.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.test.js","sourceRoot":"","sources":["../../../__tests__/editor/Table.test.tsx"],"names":[],"mappings":"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"}