@pie-lib/editable-html-tip-tap 2.2.0-beta.7 → 2.2.0-beta.8

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 (93) hide show
  1. package/package.json +3 -3
  2. package/lib/__tests__/EditableHtml.test.js +0 -831
  3. package/lib/__tests__/EditableHtml.test.js.map +0 -1
  4. package/lib/__tests__/constants.test.js +0 -21
  5. package/lib/__tests__/constants.test.js.map +0 -1
  6. package/lib/__tests__/div-to-paragraph-conversion.test.js +0 -213
  7. package/lib/__tests__/div-to-paragraph-conversion.test.js.map +0 -1
  8. package/lib/__tests__/extensions.test.js +0 -209
  9. package/lib/__tests__/extensions.test.js.map +0 -1
  10. package/lib/__tests__/index.test.js +0 -250
  11. package/lib/__tests__/index.test.js.map +0 -1
  12. package/lib/__tests__/size-utils.test.js +0 -57
  13. package/lib/__tests__/size-utils.test.js.map +0 -1
  14. package/lib/__tests__/theme.test.js +0 -17
  15. package/lib/__tests__/theme.test.js.map +0 -1
  16. package/lib/components/__tests__/AltDialog.test.js +0 -201
  17. package/lib/components/__tests__/AltDialog.test.js.map +0 -1
  18. package/lib/components/__tests__/CharacterPicker.test.js +0 -455
  19. package/lib/components/__tests__/CharacterPicker.test.js.map +0 -1
  20. package/lib/components/__tests__/CssIcon.test.js +0 -58
  21. package/lib/components/__tests__/CssIcon.test.js.map +0 -1
  22. package/lib/components/__tests__/DragInTheBlank.test.js +0 -295
  23. package/lib/components/__tests__/DragInTheBlank.test.js.map +0 -1
  24. package/lib/components/__tests__/ExplicitConstructedResponse.test.js +0 -345
  25. package/lib/components/__tests__/ExplicitConstructedResponse.test.js.map +0 -1
  26. package/lib/components/__tests__/ImageToolbar.test.js +0 -185
  27. package/lib/components/__tests__/ImageToolbar.test.js.map +0 -1
  28. package/lib/components/__tests__/InlineDropdown.test.js +0 -839
  29. package/lib/components/__tests__/InlineDropdown.test.js.map +0 -1
  30. package/lib/components/__tests__/InsertImageHandler.test.js +0 -171
  31. package/lib/components/__tests__/InsertImageHandler.test.js.map +0 -1
  32. package/lib/components/__tests__/MediaDialog.test.js +0 -433
  33. package/lib/components/__tests__/MediaDialog.test.js.map +0 -1
  34. package/lib/components/__tests__/MediaToolbar.test.js +0 -126
  35. package/lib/components/__tests__/MediaToolbar.test.js.map +0 -1
  36. package/lib/components/__tests__/MediaWrapper.test.js +0 -96
  37. package/lib/components/__tests__/MediaWrapper.test.js.map +0 -1
  38. package/lib/components/__tests__/MenuBar.test.js +0 -502
  39. package/lib/components/__tests__/MenuBar.test.js.map +0 -1
  40. package/lib/components/__tests__/RespArea.test.js +0 -171
  41. package/lib/components/__tests__/RespArea.test.js.map +0 -1
  42. package/lib/components/__tests__/TableIcons.test.js +0 -153
  43. package/lib/components/__tests__/TableIcons.test.js.map +0 -1
  44. package/lib/components/__tests__/TextAlign.test.js +0 -209
  45. package/lib/components/__tests__/TextAlign.test.js.map +0 -1
  46. package/lib/components/__tests__/TiptapContainer.test.js +0 -196
  47. package/lib/components/__tests__/TiptapContainer.test.js.map +0 -1
  48. package/lib/components/__tests__/characterUtils.test.js +0 -178
  49. package/lib/components/__tests__/characterUtils.test.js.map +0 -1
  50. package/lib/components/__tests__/choice.test.js +0 -213
  51. package/lib/components/__tests__/choice.test.js.map +0 -1
  52. package/lib/components/__tests__/custom-popper.test.js +0 -108
  53. package/lib/components/__tests__/custom-popper.test.js.map +0 -1
  54. package/lib/components/__tests__/done-button.test.js +0 -72
  55. package/lib/components/__tests__/done-button.test.js.map +0 -1
  56. package/lib/components/__tests__/toolbar-buttons.test.js +0 -277
  57. package/lib/components/__tests__/toolbar-buttons.test.js.map +0 -1
  58. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js +0 -90
  59. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js.map +0 -1
  60. package/lib/components/respArea/__tests__/MathTemplated.test.js +0 -217
  61. package/lib/components/respArea/__tests__/MathTemplated.test.js.map +0 -1
  62. package/lib/extensions/__tests__/css.test.js +0 -214
  63. package/lib/extensions/__tests__/css.test.js.map +0 -1
  64. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +0 -175
  65. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js.map +0 -1
  66. package/lib/extensions/__tests__/divNode.test.js +0 -108
  67. package/lib/extensions/__tests__/divNode.test.js.map +0 -1
  68. package/lib/extensions/__tests__/ensure-empty-root-div.test.js +0 -50
  69. package/lib/extensions/__tests__/ensure-empty-root-div.test.js.map +0 -1
  70. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js +0 -60
  71. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js.map +0 -1
  72. package/lib/extensions/__tests__/extended-list-item.test.js +0 -13
  73. package/lib/extensions/__tests__/extended-list-item.test.js.map +0 -1
  74. package/lib/extensions/__tests__/extended-table-cell.test.js +0 -15
  75. package/lib/extensions/__tests__/extended-table-cell.test.js.map +0 -1
  76. package/lib/extensions/__tests__/extended-table.test.js +0 -200
  77. package/lib/extensions/__tests__/extended-table.test.js.map +0 -1
  78. package/lib/extensions/__tests__/image-component.test.js +0 -432
  79. package/lib/extensions/__tests__/image-component.test.js.map +0 -1
  80. package/lib/extensions/__tests__/image.test.js +0 -313
  81. package/lib/extensions/__tests__/image.test.js.map +0 -1
  82. package/lib/extensions/__tests__/math.test.js +0 -1411
  83. package/lib/extensions/__tests__/math.test.js.map +0 -1
  84. package/lib/extensions/__tests__/media-node-view.test.js +0 -307
  85. package/lib/extensions/__tests__/media-node-view.test.js.map +0 -1
  86. package/lib/extensions/__tests__/media.test.js +0 -292
  87. package/lib/extensions/__tests__/media.test.js.map +0 -1
  88. package/lib/extensions/__tests__/responseArea.test.js +0 -736
  89. package/lib/extensions/__tests__/responseArea.test.js.map +0 -1
  90. package/lib/utils/__tests__/helper.test.js +0 -107
  91. package/lib/utils/__tests__/helper.test.js.map +0 -1
  92. package/lib/utils/__tests__/toolbar.test.js +0 -38
  93. package/lib/utils/__tests__/toolbar.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-component.test.js","names":["_react","_interopRequireDefault","require","_react2","_imageComponent","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","jest","mock","NodeViewWrapper","_ref","children","createElement","__esModule","fn","default","_ref2","onChange","alignment","alt","onClick","_ref3","onDone","describe","MOCK_NODE_POS","createMockEditor","selection","undefined","from","to","_tiptapContainerEl","document","body","isEditable","commands","updateAttributes","focus","state","doc","descendants","nodeAt","tr","setNodeMarkup","mockReturnThis","view","dispatch","mockEditor","mockNode","type","name","attrs","nodeKey","src","width","height","loaded","percent","deleteStatus","nodeSize","mockOptions","imageHandling","insertImageRequested","onDelete","disableImageAlignmentButtons","defaultProps","node","editor","selected","options","attributes","onFocus","getPos","beforeEach","clearAllMocks","mockImplementation","cb","mockReturnValue","it","_render","render","getByTestId","expect","toBeInTheDocument","_render2","container","img","querySelector","toContain","_render3","style","toBe","_render4","_render5","_extends2","queryByTestId","not","_asyncToGenerator2","_regenerator","mark","_callee","_render6","wrap","_context","prev","next","waitFor","stop","notLoadedNode","_render7","root","toHaveStyle","opacity","pendingDeleteNode","_render8","_render9","justifyContent","centerNode","_render0","rightNode","_render1","toHaveBeenCalled","placeholderNode","_callee2","_context2","toHaveBeenCalledWith","any","Function","_callee3","_render10","_context3","centerButton","fireEvent","click","objectContaining","_callee4","_render11","_context4","toolbar","props","maxImageWidth","_render12","maxImageHeight","_render13","noAltNode","_render14","_callee5","_render15","_context5"],"sources":["../../../src/extensions/__tests__/image-component.test.jsx"],"sourcesContent":["import React from 'react';\nimport { fireEvent, render, waitFor } from '@testing-library/react';\nimport ImageComponent from '../image-component';\n\njest.mock('@tiptap/react', () => ({\n NodeViewWrapper: ({ children }) => <div data-testid=\"node-view-wrapper\">{children}</div>,\n}));\n\njest.mock('../../components/image/InsertImageHandler', () => ({\n __esModule: true,\n default: jest.fn(),\n}));\n\njest.mock('../../components/image/ImageToolbar', () => ({\n __esModule: true,\n default: ({ onChange, alignment, alt }) => (\n <div data-testid=\"image-toolbar\">\n <button onClick={() => onChange({ alignment: 'center' })}>Center</button>\n <span>{alignment}</span>\n <span>{alt}</span>\n </div>\n ),\n}));\n\njest.mock('../custom-toolbar-wrapper', () => ({\n __esModule: true,\n default: ({ children, onDone }) => (\n <div data-testid=\"custom-toolbar-wrapper\">\n {children}\n <button onClick={onDone} data-testid=\"done-button\">\n Done\n </button>\n </div>\n ),\n}));\n\ndescribe('ImageComponent', () => {\n const MOCK_NODE_POS = 7;\n\n const createMockEditor = (selection = { from: 0, to: 1 }) => ({\n _tiptapContainerEl: document.body,\n isEditable: true,\n commands: {\n updateAttributes: jest.fn(),\n focus: jest.fn(),\n },\n state: {\n selection,\n doc: {\n descendants: jest.fn(),\n nodeAt: jest.fn(),\n },\n tr: {\n setNodeMarkup: jest.fn().mockReturnThis(),\n delete: jest.fn().mockReturnThis(),\n },\n },\n view: {\n dispatch: jest.fn(),\n },\n });\n\n let mockEditor = createMockEditor();\n\n const mockNode = {\n type: { name: 'imageUploadNode' },\n attrs: {\n nodeKey: 'test-key-123',\n src: 'test.jpg',\n width: 100,\n height: 100,\n loaded: true,\n percent: 100,\n alt: 'Test image',\n alignment: 'left',\n deleteStatus: null,\n },\n nodeSize: 1,\n };\n\n const mockOptions = {\n imageHandling: {\n insertImageRequested: jest.fn(),\n onDone: jest.fn(),\n onDelete: jest.fn(),\n },\n disableImageAlignmentButtons: false,\n };\n\n const defaultProps = {\n node: mockNode,\n editor: mockEditor,\n selected: false,\n options: mockOptions,\n attributes: {},\n onFocus: jest.fn(),\n getPos: jest.fn(() => MOCK_NODE_POS),\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n mockEditor = createMockEditor();\n defaultProps.editor = mockEditor;\n defaultProps.getPos = jest.fn(() => MOCK_NODE_POS);\n mockEditor.state.doc.descendants.mockImplementation((cb) => cb(mockNode, 0));\n mockEditor.state.doc.nodeAt.mockReturnValue(mockNode);\n });\n\n it('renders without crashing', () => {\n const { getByTestId } = render(<ImageComponent {...defaultProps} />);\n expect(getByTestId('node-view-wrapper')).toBeInTheDocument();\n });\n\n it('renders image with correct src', () => {\n const { container } = render(<ImageComponent {...defaultProps} />);\n const img = container.querySelector('img');\n expect(img).toBeInTheDocument();\n expect(img.src).toContain('test.jpg');\n });\n\n it('renders image with correct dimensions', () => {\n const { container } = render(<ImageComponent {...defaultProps} />);\n const img = container.querySelector('img');\n expect(img.style.width).toBe('100px');\n expect(img.style.height).toBe('100px');\n });\n\n it('renders image with alt text', () => {\n const { container } = render(<ImageComponent {...defaultProps} />);\n const img = container.querySelector('img');\n expect(img.alt).toBe('Test image');\n });\n\n it('does not show toolbar when not selected', () => {\n const { queryByTestId } = render(<ImageComponent {...defaultProps} selected={false} />);\n expect(queryByTestId('image-toolbar')).not.toBeInTheDocument();\n });\n\n it('shows toolbar when selected', async () => {\n const { getByTestId } = render(<ImageComponent {...defaultProps} selected={true} />);\n\n await waitFor(() => {\n expect(getByTestId('image-toolbar')).toBeInTheDocument();\n });\n });\n\n it('applies loading opacity when image not loaded', () => {\n const notLoadedNode = {\n ...mockNode,\n attrs: {\n ...mockNode.attrs,\n loaded: false,\n },\n };\n\n const { container } = render(<ImageComponent {...defaultProps} node={notLoadedNode} />);\n const root = container.querySelector('[data-testid=\"node-view-wrapper\"] > div');\n expect(root).toHaveStyle({ opacity: 0.3 });\n });\n\n it('applies pending delete opacity', () => {\n const pendingDeleteNode = {\n ...mockNode,\n attrs: {\n ...mockNode.attrs,\n deleteStatus: 'pending',\n },\n };\n\n const { container } = render(<ImageComponent {...defaultProps} node={pendingDeleteNode} />);\n const root = container.querySelector('[data-testid=\"node-view-wrapper\"] > div');\n expect(root).toHaveStyle({ opacity: 0.3 });\n });\n\n it('aligns image to left by default', () => {\n const { container } = render(<ImageComponent {...defaultProps} />);\n const root = container.querySelector('[data-testid=\"node-view-wrapper\"] > div');\n expect(root).toHaveStyle({ justifyContent: 'flex-start' });\n });\n\n it('aligns image to center', () => {\n const centerNode = {\n ...mockNode,\n attrs: {\n ...mockNode.attrs,\n alignment: 'center',\n },\n };\n\n const { container } = render(<ImageComponent {...defaultProps} node={centerNode} />);\n const root = container.querySelector('[data-testid=\"node-view-wrapper\"] > div');\n expect(root).toHaveStyle({ justifyContent: 'center' });\n });\n\n it('aligns image to right', () => {\n const rightNode = {\n ...mockNode,\n attrs: {\n ...mockNode.attrs,\n alignment: 'right',\n },\n };\n\n const { container } = render(<ImageComponent {...defaultProps} node={rightNode} />);\n const root = container.querySelector('[data-testid=\"node-view-wrapper\"] > div');\n expect(root).toHaveStyle({ justifyContent: 'flex-end' });\n });\n\n it('does not call insertImageRequested when image already has src', () => {\n render(<ImageComponent {...defaultProps} selected={true} />);\n expect(mockOptions.imageHandling.insertImageRequested).not.toHaveBeenCalled();\n });\n\n it('does not call insertImageRequested for empty placeholder on mount when not selected', () => {\n const placeholderNode = {\n ...mockNode,\n attrs: {\n ...mockNode.attrs,\n src: null,\n loaded: false,\n percent: null,\n },\n };\n render(<ImageComponent {...defaultProps} node={placeholderNode} selected={false} />);\n expect(mockOptions.imageHandling.insertImageRequested).not.toHaveBeenCalled();\n });\n\n it('calls insertImageRequested with editor and [node, pos] when empty placeholder is solely selected', async () => {\n const placeholderNode = {\n ...mockNode,\n nodeSize: 1,\n attrs: {\n ...mockNode.attrs,\n src: null,\n loaded: false,\n percent: null,\n },\n };\n mockEditor = createMockEditor({ from: 0, to: 1 });\n\n render(<ImageComponent {...defaultProps} editor={mockEditor} node={placeholderNode} selected={true} />);\n\n await waitFor(() => {\n expect(mockOptions.imageHandling.insertImageRequested).toHaveBeenCalled();\n });\n\n expect(mockOptions.imageHandling.insertImageRequested).toHaveBeenCalledWith(\n mockEditor,\n [placeholderNode, MOCK_NODE_POS],\n expect.any(Function),\n );\n expect(defaultProps.getPos).toHaveBeenCalled();\n });\n\n it('does not call insertImageRequested when selection spans beyond the image node', () => {\n const placeholderNode = {\n ...mockNode,\n nodeSize: 1,\n attrs: {\n ...mockNode.attrs,\n src: null,\n loaded: false,\n percent: null,\n },\n };\n mockEditor = createMockEditor({ from: 0, to: 5 });\n\n render(<ImageComponent {...defaultProps} editor={mockEditor} node={placeholderNode} selected={true} />);\n expect(mockOptions.imageHandling.insertImageRequested).not.toHaveBeenCalled();\n });\n\n it('updates attributes through toolbar onChange', async () => {\n const { getByTestId } = render(<ImageComponent {...defaultProps} selected={true} />);\n\n await waitFor(() => {\n const centerButton = getByTestId('image-toolbar').querySelector('button');\n fireEvent.click(centerButton);\n });\n\n expect(mockEditor.state.tr.setNodeMarkup).toHaveBeenCalledWith(\n 0,\n undefined,\n expect.objectContaining({ alignment: 'center' }),\n );\n expect(mockEditor.view.dispatch).toHaveBeenCalled();\n });\n\n it('toolbar is shown when selected', async () => {\n const { container, queryByTestId } = render(<ImageComponent {...defaultProps} selected={true} />);\n\n // Wait for toolbar to potentially appear\n await waitFor(() => {\n // The toolbar might not be visible due to mocking but check if custom-toolbar-wrapper shows up\n const toolbar = container.querySelector('[data-testid=\"custom-toolbar-wrapper\"]');\n // In a real test environment, the toolbar would be visible\n // For now, just verify the component renders without errors when selected\n expect(container).toBeInTheDocument();\n });\n });\n\n it('respects maxImageWidth prop', () => {\n const props = {\n ...defaultProps,\n maxImageWidth: 500,\n };\n\n const { container } = render(<ImageComponent {...props} />);\n expect(container).toBeInTheDocument();\n });\n\n it('respects maxImageHeight prop', () => {\n const props = {\n ...defaultProps,\n maxImageHeight: 800,\n };\n\n const { container } = render(<ImageComponent {...props} />);\n expect(container).toBeInTheDocument();\n });\n\n it('handles missing alt attribute', () => {\n const noAltNode = {\n ...mockNode,\n attrs: {\n ...mockNode.attrs,\n alt: undefined,\n },\n };\n\n const { container } = render(<ImageComponent {...defaultProps} node={noAltNode} />);\n const img = container.querySelector('img');\n expect(img).toBeInTheDocument();\n });\n\n it('passes editor to imageHandling onDone when Done is clicked', async () => {\n const { getByTestId } = render(<ImageComponent {...defaultProps} selected={true} />);\n\n await waitFor(() => {\n expect(getByTestId('done-button')).toBeInTheDocument();\n });\n\n fireEvent.click(getByTestId('done-button'));\n\n expect(mockOptions.imageHandling.onDone).toHaveBeenCalledWith(mockEditor);\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,313 +0,0 @@
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 _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
7
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
- var _state = require("@tiptap/pm/state");
9
- var _image = require("../image");
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('@tiptap/core', function () {
13
- return {
14
- Node: {
15
- create: jest.fn(function (config) {
16
- return config;
17
- })
18
- },
19
- mergeAttributes: jest.fn(function () {
20
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
21
- args[_key] = arguments[_key];
22
- }
23
- return Object.assign.apply(Object, [{}].concat(args));
24
- })
25
- };
26
- });
27
- jest.mock('@tiptap/pm/state', function () {
28
- return {
29
- Plugin: jest.fn(function MockPlugin(spec) {
30
- this.spec = spec;
31
- return {
32
- spec: spec
33
- };
34
- })
35
- };
36
- });
37
- jest.mock('@tiptap/react', function () {
38
- return {
39
- ReactNodeViewRenderer: jest.fn(function (component) {
40
- return component;
41
- })
42
- };
43
- });
44
- jest.mock('../image-component', function () {
45
- return {
46
- __esModule: true,
47
- "default": jest.fn(function () {
48
- return /*#__PURE__*/React.createElement("div", {
49
- "data-testid": "image-component"
50
- });
51
- })
52
- };
53
- });
54
- function setupPastePlugin() {
55
- var insertContent = jest.fn();
56
- var editor = {
57
- commands: {
58
- insertContent: insertContent
59
- }
60
- };
61
- _state.Plugin.mockClear();
62
- _image.ImageUploadNode.addProseMirrorPlugins.call({
63
- editor: editor
64
- });
65
- expect(_state.Plugin).toHaveBeenCalledTimes(1);
66
- var handlePaste = _state.Plugin.mock.calls[0][0].props.handlePaste;
67
- return {
68
- handlePaste: handlePaste,
69
- insertContent: insertContent,
70
- editor: editor
71
- };
72
- }
73
- describe('ImageUploadNode', function () {
74
- describe('configuration', function () {
75
- it('has correct name', function () {
76
- expect(_image.ImageUploadNode.name).toBe('imageUploadNode');
77
- });
78
- it('is in block group', function () {
79
- expect(_image.ImageUploadNode.group).toBe('block');
80
- });
81
- it('is atomic', function () {
82
- expect(_image.ImageUploadNode.atom).toBe(true);
83
- });
84
- it('is selectable', function () {
85
- expect(_image.ImageUploadNode.selectable).toBe(true);
86
- });
87
- it('is draggable', function () {
88
- expect(_image.ImageUploadNode.draggable).toBe(true);
89
- });
90
- });
91
- describe('addAttributes', function () {
92
- it('returns all required attributes with defaults', function () {
93
- var attributes = _image.ImageUploadNode.addAttributes();
94
- expect(attributes).toHaveProperty('loaded');
95
- expect(attributes).toHaveProperty('deleteStatus');
96
- expect(attributes).toHaveProperty('alignment');
97
- expect(attributes).toHaveProperty('percent');
98
- expect(attributes).toHaveProperty('width');
99
- expect(attributes).toHaveProperty('height');
100
- expect(attributes).toHaveProperty('src');
101
- expect(attributes).toHaveProperty('alt');
102
- expect(attributes.loaded).toEqual({
103
- "default": false
104
- });
105
- expect(attributes.deleteStatus).toEqual({
106
- "default": null
107
- });
108
- expect(attributes.alignment).toEqual({
109
- "default": null
110
- });
111
- expect(attributes.percent).toEqual({
112
- "default": null
113
- });
114
- expect(attributes.width).toEqual({
115
- "default": null
116
- });
117
- expect(attributes.height).toEqual({
118
- "default": null
119
- });
120
- expect(attributes.src).toEqual({
121
- "default": null
122
- });
123
- expect(attributes.alt).toEqual({
124
- "default": null
125
- });
126
- });
127
- });
128
- describe('parseHTML', function () {
129
- it('returns array with div selector', function () {
130
- var rules = _image.ImageUploadNode.parseHTML();
131
- expect(Array.isArray(rules)).toBe(true);
132
- expect(rules).toHaveLength(1);
133
- expect(rules[0]).toHaveProperty('tag', 'img[data-type="image-upload-node"]');
134
- });
135
- });
136
- describe('renderHTML', function () {
137
- it('renders img tag with data-type attribute', function () {
138
- var HTMLAttributes = {
139
- src: 'test.jpg',
140
- width: 100,
141
- height: 100
142
- };
143
- var result = _image.ImageUploadNode.renderHTML({
144
- HTMLAttributes: HTMLAttributes
145
- });
146
- expect(result[0]).toBe('img');
147
- expect(result[1]).toEqual(_objectSpread(_objectSpread({}, HTMLAttributes), {}, {
148
- 'data-type': 'image-upload-node'
149
- }));
150
- });
151
- it('merges attributes correctly', function () {
152
- var HTMLAttributes = {
153
- src: 'test.jpg',
154
- alt: 'Test image'
155
- };
156
- var result = _image.ImageUploadNode.renderHTML({
157
- HTMLAttributes: HTMLAttributes
158
- });
159
- expect(result[1].src).toBe('test.jpg');
160
- expect(result[1].alt).toBe('Test image');
161
- expect(result[1]['data-type']).toBe('image-upload-node');
162
- });
163
- });
164
- describe('addNodeView', function () {
165
- it('returns ReactNodeViewRenderer result', function () {
166
- var result = _image.ImageUploadNode.addNodeView();
167
- expect(result).toBeDefined();
168
- });
169
- });
170
- describe('addCommands', function () {
171
- it('returns setImageUploadNode command', function () {
172
- var context = {
173
- name: 'imageUploadNode'
174
- };
175
- var commands = _image.ImageUploadNode.addCommands.call(context);
176
- expect(commands).toHaveProperty('setImageUploadNode');
177
- expect((0, _typeof2["default"])(commands.setImageUploadNode)).toBe('function');
178
- });
179
- it('setImageUploadNode inserts content', function () {
180
- var context = {
181
- name: 'imageUploadNode'
182
- };
183
- var commands = _image.ImageUploadNode.addCommands.call(context);
184
- var mockCommands = {
185
- insertContent: jest.fn(function () {
186
- return true;
187
- })
188
- };
189
- var result = commands.setImageUploadNode()({
190
- commands: mockCommands
191
- });
192
- expect(mockCommands.insertContent).toHaveBeenCalledWith(expect.objectContaining({
193
- type: 'imageUploadNode',
194
- attrs: expect.objectContaining({
195
- nodeKey: expect.any(String)
196
- })
197
- }));
198
- expect(result).toBe(true);
199
- });
200
- });
201
- describe('addProseMirrorPlugins', function () {
202
- var mockView = {};
203
- beforeEach(function () {
204
- jest.spyOn(global, 'FileReader').mockImplementation(function MockFileReader() {
205
- this.readAsDataURL = function readAsDataURL() {
206
- var _this = this;
207
- this.result = 'data:image/png;base64,Zm9v';
208
- queueMicrotask(function () {
209
- if (_this.onload) {
210
- _this.onload();
211
- }
212
- });
213
- };
214
- });
215
- });
216
- afterEach(function () {
217
- global.FileReader.mockRestore();
218
- });
219
- it('registers one paste plugin', function () {
220
- var insertContent = jest.fn();
221
- var editor = {
222
- commands: {
223
- insertContent: insertContent
224
- }
225
- };
226
- _state.Plugin.mockClear();
227
- var plugins = _image.ImageUploadNode.addProseMirrorPlugins.call({
228
- editor: editor
229
- });
230
- expect(plugins).toHaveLength(1);
231
- expect(_state.Plugin).toHaveBeenCalledTimes(1);
232
- });
233
- it('handlePaste returns false when clipboard has no image file', function () {
234
- var _setupPastePlugin = setupPastePlugin(),
235
- handlePaste = _setupPastePlugin.handlePaste;
236
- var event = {
237
- clipboardData: {
238
- items: [{
239
- kind: 'string',
240
- type: 'text/plain',
241
- getAsFile: function getAsFile() {
242
- return null;
243
- }
244
- }]
245
- }
246
- };
247
- expect(handlePaste(mockView, event)).toBe(false);
248
- });
249
- it('handlePaste returns false when clipboardData is missing', function () {
250
- var _setupPastePlugin2 = setupPastePlugin(),
251
- handlePaste = _setupPastePlugin2.handlePaste;
252
- var event = {};
253
- expect(handlePaste(mockView, event)).toBe(false);
254
- });
255
- it('handlePaste returns false when the file item has no file', function () {
256
- var _setupPastePlugin3 = setupPastePlugin(),
257
- handlePaste = _setupPastePlugin3.handlePaste;
258
- var event = {
259
- clipboardData: {
260
- items: [{
261
- kind: 'file',
262
- type: 'image/png',
263
- getAsFile: function getAsFile() {
264
- return null;
265
- }
266
- }]
267
- }
268
- };
269
- expect(handlePaste(mockView, event)).toBe(false);
270
- });
271
- it('handlePaste returns true and inserts imageUploadNode with data URL after read', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
272
- var _setupPastePlugin4, handlePaste, insertContent, file, event;
273
- return _regenerator["default"].wrap(function (_context) {
274
- while (1) switch (_context.prev = _context.next) {
275
- case 0:
276
- _setupPastePlugin4 = setupPastePlugin(), handlePaste = _setupPastePlugin4.handlePaste, insertContent = _setupPastePlugin4.insertContent;
277
- file = new File([new Uint8Array([1, 2, 3])], 'p.png', {
278
- type: 'image/png'
279
- });
280
- event = {
281
- clipboardData: {
282
- items: [{
283
- kind: 'file',
284
- type: 'image/png',
285
- getAsFile: function getAsFile() {
286
- return file;
287
- }
288
- }]
289
- }
290
- };
291
- expect(handlePaste(mockView, event)).toBe(true);
292
- expect(insertContent).not.toHaveBeenCalled();
293
- _context.next = 1;
294
- return new Promise(function (resolve) {
295
- return queueMicrotask(resolve);
296
- });
297
- case 1:
298
- expect(insertContent).toHaveBeenCalledWith(expect.objectContaining({
299
- type: 'imageUploadNode',
300
- attrs: expect.objectContaining({
301
- src: 'data:image/png;base64,Zm9v',
302
- loaded: true
303
- })
304
- }));
305
- case 2:
306
- case "end":
307
- return _context.stop();
308
- }
309
- }, _callee);
310
- })));
311
- });
312
- });
313
- //# sourceMappingURL=image.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image.test.js","names":["_state","require","_image","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","jest","mock","Node","create","fn","config","mergeAttributes","_len","args","Array","_key","assign","concat","Plugin","MockPlugin","spec","ReactNodeViewRenderer","component","__esModule","React","createElement","setupPastePlugin","insertContent","editor","commands","mockClear","ImageUploadNode","addProseMirrorPlugins","call","expect","toHaveBeenCalledTimes","handlePaste","calls","props","describe","it","name","toBe","group","atom","selectable","draggable","attributes","addAttributes","toHaveProperty","loaded","toEqual","deleteStatus","alignment","percent","width","height","src","alt","rules","parseHTML","isArray","toHaveLength","HTMLAttributes","result","renderHTML","addNodeView","toBeDefined","context","addCommands","_typeof2","setImageUploadNode","mockCommands","toHaveBeenCalledWith","objectContaining","type","attrs","nodeKey","any","String","mockView","beforeEach","spyOn","global","mockImplementation","MockFileReader","readAsDataURL","_this","queueMicrotask","onload","afterEach","FileReader","mockRestore","plugins","_setupPastePlugin","event","clipboardData","items","kind","getAsFile","_setupPastePlugin2","_setupPastePlugin3","_asyncToGenerator2","_regenerator","mark","_callee","_setupPastePlugin4","file","wrap","_context","prev","next","File","Uint8Array","not","toHaveBeenCalled","Promise","resolve","stop"],"sources":["../../../src/extensions/__tests__/image.test.js"],"sourcesContent":["jest.mock('@tiptap/core', () => ({\n Node: { create: jest.fn((config) => config) },\n mergeAttributes: jest.fn((...args) => Object.assign({}, ...args)),\n}));\n\njest.mock('@tiptap/pm/state', () => ({\n Plugin: jest.fn(function MockPlugin(spec) {\n this.spec = spec;\n return { spec };\n }),\n}));\n\njest.mock('@tiptap/react', () => ({\n ReactNodeViewRenderer: jest.fn((component) => component),\n}));\n\njest.mock('../image-component', () => ({\n __esModule: true,\n default: jest.fn(() => <div data-testid=\"image-component\" />),\n}));\n\nimport { Plugin } from '@tiptap/pm/state';\nimport { ImageUploadNode } from '../image';\n\nfunction setupPastePlugin() {\n const insertContent = jest.fn();\n const editor = { commands: { insertContent } };\n Plugin.mockClear();\n ImageUploadNode.addProseMirrorPlugins.call({ editor });\n expect(Plugin).toHaveBeenCalledTimes(1);\n const handlePaste = Plugin.mock.calls[0][0].props.handlePaste;\n return { handlePaste, insertContent, editor };\n}\n\ndescribe('ImageUploadNode', () => {\n describe('configuration', () => {\n it('has correct name', () => {\n expect(ImageUploadNode.name).toBe('imageUploadNode');\n });\n\n it('is in block group', () => {\n expect(ImageUploadNode.group).toBe('block');\n });\n\n it('is atomic', () => {\n expect(ImageUploadNode.atom).toBe(true);\n });\n\n it('is selectable', () => {\n expect(ImageUploadNode.selectable).toBe(true);\n });\n\n it('is draggable', () => {\n expect(ImageUploadNode.draggable).toBe(true);\n });\n });\n\n describe('addAttributes', () => {\n it('returns all required attributes with defaults', () => {\n const attributes = ImageUploadNode.addAttributes();\n\n expect(attributes).toHaveProperty('loaded');\n expect(attributes).toHaveProperty('deleteStatus');\n expect(attributes).toHaveProperty('alignment');\n expect(attributes).toHaveProperty('percent');\n expect(attributes).toHaveProperty('width');\n expect(attributes).toHaveProperty('height');\n expect(attributes).toHaveProperty('src');\n expect(attributes).toHaveProperty('alt');\n\n expect(attributes.loaded).toEqual({ default: false });\n expect(attributes.deleteStatus).toEqual({ default: null });\n expect(attributes.alignment).toEqual({ default: null });\n expect(attributes.percent).toEqual({ default: null });\n expect(attributes.width).toEqual({ default: null });\n expect(attributes.height).toEqual({ default: null });\n expect(attributes.src).toEqual({ default: null });\n expect(attributes.alt).toEqual({ default: null });\n });\n });\n\n describe('parseHTML', () => {\n it('returns array with div selector', () => {\n const rules = ImageUploadNode.parseHTML();\n\n expect(Array.isArray(rules)).toBe(true);\n expect(rules).toHaveLength(1);\n expect(rules[0]).toHaveProperty('tag', 'img[data-type=\"image-upload-node\"]');\n });\n });\n\n describe('renderHTML', () => {\n it('renders img tag with data-type attribute', () => {\n const HTMLAttributes = {\n src: 'test.jpg',\n width: 100,\n height: 100,\n };\n\n const result = ImageUploadNode.renderHTML({ HTMLAttributes });\n\n expect(result[0]).toBe('img');\n expect(result[1]).toEqual({\n ...HTMLAttributes,\n 'data-type': 'image-upload-node',\n });\n });\n\n it('merges attributes correctly', () => {\n const HTMLAttributes = {\n src: 'test.jpg',\n alt: 'Test image',\n };\n\n const result = ImageUploadNode.renderHTML({ HTMLAttributes });\n\n expect(result[1].src).toBe('test.jpg');\n expect(result[1].alt).toBe('Test image');\n expect(result[1]['data-type']).toBe('image-upload-node');\n });\n });\n\n describe('addNodeView', () => {\n it('returns ReactNodeViewRenderer result', () => {\n const result = ImageUploadNode.addNodeView();\n\n expect(result).toBeDefined();\n });\n });\n\n describe('addCommands', () => {\n it('returns setImageUploadNode command', () => {\n const context = { name: 'imageUploadNode' };\n const commands = ImageUploadNode.addCommands.call(context);\n\n expect(commands).toHaveProperty('setImageUploadNode');\n expect(typeof commands.setImageUploadNode).toBe('function');\n });\n\n it('setImageUploadNode inserts content', () => {\n const context = { name: 'imageUploadNode' };\n const commands = ImageUploadNode.addCommands.call(context);\n const mockCommands = {\n insertContent: jest.fn(() => true),\n };\n const result = commands.setImageUploadNode()({ commands: mockCommands });\n expect(mockCommands.insertContent).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'imageUploadNode',\n attrs: expect.objectContaining({ nodeKey: expect.any(String) }),\n }),\n );\n expect(result).toBe(true);\n });\n });\n\n describe('addProseMirrorPlugins', () => {\n const mockView = {};\n\n beforeEach(() => {\n jest.spyOn(global, 'FileReader').mockImplementation(function MockFileReader() {\n this.readAsDataURL = function readAsDataURL() {\n this.result = 'data:image/png;base64,Zm9v';\n queueMicrotask(() => {\n if (this.onload) {\n this.onload();\n }\n });\n };\n });\n });\n\n afterEach(() => {\n global.FileReader.mockRestore();\n });\n\n it('registers one paste plugin', () => {\n const insertContent = jest.fn();\n const editor = { commands: { insertContent } };\n Plugin.mockClear();\n const plugins = ImageUploadNode.addProseMirrorPlugins.call({ editor });\n expect(plugins).toHaveLength(1);\n expect(Plugin).toHaveBeenCalledTimes(1);\n });\n\n it('handlePaste returns false when clipboard has no image file', () => {\n const { handlePaste } = setupPastePlugin();\n const event = {\n clipboardData: {\n items: [{ kind: 'string', type: 'text/plain', getAsFile: () => null }],\n },\n };\n expect(handlePaste(mockView, event)).toBe(false);\n });\n\n it('handlePaste returns false when clipboardData is missing', () => {\n const { handlePaste } = setupPastePlugin();\n const event = {};\n expect(handlePaste(mockView, event)).toBe(false);\n });\n\n it('handlePaste returns false when the file item has no file', () => {\n const { handlePaste } = setupPastePlugin();\n const event = {\n clipboardData: {\n items: [{ kind: 'file', type: 'image/png', getAsFile: () => null }],\n },\n };\n expect(handlePaste(mockView, event)).toBe(false);\n });\n\n it('handlePaste returns true and inserts imageUploadNode with data URL after read', async () => {\n const { handlePaste, insertContent } = setupPastePlugin();\n const file = new File([new Uint8Array([1, 2, 3])], 'p.png', { type: 'image/png' });\n const event = {\n clipboardData: {\n items: [{ kind: 'file', type: 'image/png', getAsFile: () => file }],\n },\n };\n\n expect(handlePaste(mockView, event)).toBe(true);\n expect(insertContent).not.toHaveBeenCalled();\n\n await new Promise((resolve) => queueMicrotask(resolve));\n\n expect(insertContent).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'imageUploadNode',\n attrs: expect.objectContaining({\n src: 'data:image/png;base64,Zm9v',\n loaded: true,\n }),\n }),\n );\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}