@pie-lib/editable-html-tip-tap 2.1.10 → 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 (114) hide show
  1. package/CHANGELOG.md +0 -75
  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/EditableHtml.js +4 -2
  17. package/lib/components/EditableHtml.js.map +1 -1
  18. package/lib/components/__tests__/AltDialog.test.js +201 -0
  19. package/lib/components/__tests__/AltDialog.test.js.map +1 -0
  20. package/lib/components/__tests__/CharacterPicker.test.js +455 -0
  21. package/lib/components/__tests__/CharacterPicker.test.js.map +1 -0
  22. package/lib/components/__tests__/CssIcon.test.js +58 -0
  23. package/lib/components/__tests__/CssIcon.test.js.map +1 -0
  24. package/lib/components/__tests__/DragInTheBlank.test.js +295 -0
  25. package/lib/components/__tests__/DragInTheBlank.test.js.map +1 -0
  26. package/lib/components/__tests__/ExplicitConstructedResponse.test.js +345 -0
  27. package/lib/components/__tests__/ExplicitConstructedResponse.test.js.map +1 -0
  28. package/lib/components/__tests__/ImageToolbar.test.js +185 -0
  29. package/lib/components/__tests__/ImageToolbar.test.js.map +1 -0
  30. package/lib/components/__tests__/InlineDropdown.test.js +839 -0
  31. package/lib/components/__tests__/InlineDropdown.test.js.map +1 -0
  32. package/lib/components/__tests__/InsertImageHandler.test.js +171 -0
  33. package/lib/components/__tests__/InsertImageHandler.test.js.map +1 -0
  34. package/lib/components/__tests__/MediaDialog.test.js +433 -0
  35. package/lib/components/__tests__/MediaDialog.test.js.map +1 -0
  36. package/lib/components/__tests__/MediaToolbar.test.js +126 -0
  37. package/lib/components/__tests__/MediaToolbar.test.js.map +1 -0
  38. package/lib/components/__tests__/MediaWrapper.test.js +96 -0
  39. package/lib/components/__tests__/MediaWrapper.test.js.map +1 -0
  40. package/lib/components/__tests__/MenuBar.test.js +502 -0
  41. package/lib/components/__tests__/MenuBar.test.js.map +1 -0
  42. package/lib/components/__tests__/RespArea.test.js +171 -0
  43. package/lib/components/__tests__/RespArea.test.js.map +1 -0
  44. package/lib/components/__tests__/TableIcons.test.js +153 -0
  45. package/lib/components/__tests__/TableIcons.test.js.map +1 -0
  46. package/lib/components/__tests__/TextAlign.test.js +209 -0
  47. package/lib/components/__tests__/TextAlign.test.js.map +1 -0
  48. package/lib/components/__tests__/TiptapContainer.test.js +196 -0
  49. package/lib/components/__tests__/TiptapContainer.test.js.map +1 -0
  50. package/lib/components/__tests__/characterUtils.test.js +178 -0
  51. package/lib/components/__tests__/characterUtils.test.js.map +1 -0
  52. package/lib/components/__tests__/choice.test.js +213 -0
  53. package/lib/components/__tests__/choice.test.js.map +1 -0
  54. package/lib/components/__tests__/custom-popper.test.js +108 -0
  55. package/lib/components/__tests__/custom-popper.test.js.map +1 -0
  56. package/lib/components/__tests__/done-button.test.js +72 -0
  57. package/lib/components/__tests__/done-button.test.js.map +1 -0
  58. package/lib/components/__tests__/toolbar-buttons.test.js +277 -0
  59. package/lib/components/__tests__/toolbar-buttons.test.js.map +1 -0
  60. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js +90 -0
  61. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js.map +1 -0
  62. package/lib/components/respArea/DragInTheBlank/choice.js +3 -0
  63. package/lib/components/respArea/DragInTheBlank/choice.js.map +1 -1
  64. package/lib/components/respArea/MathTemplated.js +2 -2
  65. package/lib/components/respArea/MathTemplated.js.map +1 -1
  66. package/lib/components/respArea/__tests__/MathTemplated.test.js +217 -0
  67. package/lib/components/respArea/__tests__/MathTemplated.test.js.map +1 -0
  68. package/lib/extensions/__tests__/css.test.js +214 -0
  69. package/lib/extensions/__tests__/css.test.js.map +1 -0
  70. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +175 -0
  71. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js.map +1 -0
  72. package/lib/extensions/__tests__/divNode.test.js +108 -0
  73. package/lib/extensions/__tests__/divNode.test.js.map +1 -0
  74. package/lib/extensions/__tests__/ensure-empty-root-div.test.js +50 -0
  75. package/lib/extensions/__tests__/ensure-empty-root-div.test.js.map +1 -0
  76. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js +60 -0
  77. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js.map +1 -0
  78. package/lib/extensions/__tests__/extended-list-item.test.js +13 -0
  79. package/lib/extensions/__tests__/extended-list-item.test.js.map +1 -0
  80. package/lib/extensions/__tests__/extended-table-cell.test.js +15 -0
  81. package/lib/extensions/__tests__/extended-table-cell.test.js.map +1 -0
  82. package/lib/extensions/__tests__/extended-table.test.js +200 -0
  83. package/lib/extensions/__tests__/extended-table.test.js.map +1 -0
  84. package/lib/extensions/__tests__/image-component.test.js +432 -0
  85. package/lib/extensions/__tests__/image-component.test.js.map +1 -0
  86. package/lib/extensions/__tests__/image.test.js +313 -0
  87. package/lib/extensions/__tests__/image.test.js.map +1 -0
  88. package/lib/extensions/__tests__/math.test.js +1399 -0
  89. package/lib/extensions/__tests__/math.test.js.map +1 -0
  90. package/lib/extensions/__tests__/media-node-view.test.js +307 -0
  91. package/lib/extensions/__tests__/media-node-view.test.js.map +1 -0
  92. package/lib/extensions/__tests__/media.test.js +292 -0
  93. package/lib/extensions/__tests__/media.test.js.map +1 -0
  94. package/lib/extensions/__tests__/responseArea.test.js +736 -0
  95. package/lib/extensions/__tests__/responseArea.test.js.map +1 -0
  96. package/lib/extensions/image-component.js +9 -6
  97. package/lib/extensions/image-component.js.map +1 -1
  98. package/lib/extensions/responseArea.js +7 -1
  99. package/lib/extensions/responseArea.js.map +1 -1
  100. package/lib/utils/__tests__/helper.test.js +107 -0
  101. package/lib/utils/__tests__/helper.test.js.map +1 -0
  102. package/lib/utils/__tests__/toolbar.test.js +38 -0
  103. package/lib/utils/__tests__/toolbar.test.js.map +1 -0
  104. package/package.json +7 -7
  105. package/src/components/EditableHtml.jsx +5 -3
  106. package/src/components/respArea/DragInTheBlank/__tests__/choice.test.jsx +72 -0
  107. package/src/components/respArea/DragInTheBlank/choice.jsx +3 -0
  108. package/src/components/respArea/MathTemplated.jsx +1 -1
  109. package/src/components/respArea/__tests__/MathTemplated.test.jsx +1 -1
  110. package/src/extensions/__tests__/image-component.test.jsx +1 -0
  111. package/src/extensions/__tests__/responseArea.test.js +57 -3
  112. package/src/extensions/image-component.jsx +8 -6
  113. package/src/extensions/responseArea.js +7 -1
  114. package/LICENSE.md +0 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditableHtml.test.js","names":["_react","_interopRequireDefault","require","_react2","_react3","_EditableHtml","_responseArea","_excluded","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","jest","mock","EditorContent","_ref","editor","props","_objectWithoutProperties2","createElement","_extends2","useEditor","fn","config","mockEditor","getHTML","setEditable","commands","setContent","isActive","isFocused","useEditorState","__esModule","configure","TextStyleKit","CharacterCount","TableRow","ExtendedTableCell","ExtendedTableHeader","EnsureEmptyRootIsDiv","ExtendedListItem","EnsureListItemContentIsDiv","ExplicitConstructedResponseNode","DragInTheBlankNode","InlineDropdownNode","MathTemplatedNode","ResponseAreaExtension","MathNode","ImageUploadNode","Media","CSSMark","default","_ref2","children","requireActual","buildExtensions","describe","defaultProps","markup","onChange","onDone","disabled","beforeEach","clearAllMocks","it","_render","render","EditableHtml","container","expect","toBeInTheDocument","_render2","getByTestId","_asyncToGenerator2","_regenerator","mark","_callee","_render3","wrap","_context","prev","next","waitFor","stop","toolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","_render4","activePlugins","_render5","pluginProps","showParagraphs","separateParagraphs","_render6","responseAreaProps","type","options","_render7","_callee2","html","configureCall","inlineDropdownOptions","_context2","toHaveBeenCalled","calls","onInlineDropdownToolbarClose","toHaveBeenCalledTimes","toHaveBeenCalledWith","sizeProps","width","height","minHeight","maxHeight","minWidth","maxWidth","_render8","_render9","charactersLimit","imageSupport","add","_render0","_render1","maxImageWidth","maxImageHeight","languageCharactersProps","label","value","_render10","extraCSSRules","color","_render11","uploadSoundSupport","_render12","onKeyDown","_render13","_render14","disableImageAlignmentButtons","_callee3","editorRef","_context3","_callee4","_context4","callArg","toHaveProperty","_render15","undefined","_callee5","_render16","_context5","editorContent","_callee6","editorConfig","blurEditor","_context6","useFakeTimers","schema","_insertingImage","_toolbarOpened","onBlur","advanceTimersByTime","not","useRealTimers","_callee7","_context7","_callee8","_context8","_callee9","mockTransaction","_context9","isDone","onUpdate","transaction","_callee0","_context0","_callee1","_context1","_callee10","_context10","_callee11","_context11","toThrow"],"sources":["../../src/__tests__/EditableHtml.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render, waitFor } from '@testing-library/react';\nimport { useEditor } from '@tiptap/react';\nimport { EditableHtml } from '../components/EditableHtml';\nimport { InlineDropdownNode } from '../extensions/responseArea';\n\n// Mock TipTap dependencies\njest.mock('@tiptap/react', () => ({\n EditorContent: ({ editor, ...props }) => <div data-testid=\"editor-content\" {...props} />,\n useEditor: jest.fn((config) => {\n const mockEditor = {\n getHTML: jest.fn(() => '<p>test content</p>'),\n setEditable: jest.fn(),\n commands: {\n setContent: jest.fn(),\n },\n isActive: jest.fn(() => false),\n isFocused: false,\n };\n return mockEditor;\n }),\n useEditorState: jest.fn(() => ({\n isFocused: false,\n })),\n}));\n\njest.mock('@tiptap/starter-kit', () => ({\n __esModule: true,\n default: {\n configure: jest.fn(() => ({})),\n },\n}));\n\njest.mock('@tiptap/extension-text-style', () => ({\n TextStyleKit: {},\n}));\n\njest.mock('@tiptap/extension-character-count', () => ({\n CharacterCount: {\n configure: jest.fn(() => ({})),\n },\n}));\n\njest.mock('@tiptap/extension-superscript', () => ({\n __esModule: true,\n default: {},\n}));\n\njest.mock('@tiptap/extension-subscript', () => ({\n __esModule: true,\n default: {},\n}));\n\njest.mock('@tiptap/extension-text-align', () => ({\n __esModule: true,\n default: {\n configure: jest.fn(() => ({})),\n },\n}));\n\njest.mock('@tiptap/extension-image', () => ({\n __esModule: true,\n default: {},\n}));\n\njest.mock('@tiptap/extension-table', () => ({\n __esModule: true,\n default: {},\n}));\n\njest.mock('@tiptap/extension-table-row', () => ({\n TableRow: {},\n}));\n\njest.mock('../extensions/extended-table-cell', () => ({\n ExtendedTableCell: {},\n ExtendedTableHeader: {},\n}));\n\njest.mock('../extensions/extended-table', () => ({\n __esModule: true,\n default: {},\n}));\n\njest.mock('../extensions/ensure-empty-root-div', () => ({\n EnsureEmptyRootIsDiv: {},\n}));\n\njest.mock('../extensions/extended-list-item', () => ({\n ExtendedListItem: {},\n}));\n\njest.mock('../extensions/ensure-list-item-content-is-div', () => ({\n EnsureListItemContentIsDiv: {},\n}));\n\njest.mock('../extensions/responseArea', () => ({\n ExplicitConstructedResponseNode: {\n configure: jest.fn(() => ({})),\n },\n DragInTheBlankNode: {\n configure: jest.fn(() => ({})),\n },\n InlineDropdownNode: {\n configure: jest.fn(() => ({})),\n },\n MathTemplatedNode: {\n configure: jest.fn(() => ({})),\n },\n ResponseAreaExtension: {\n configure: jest.fn(() => ({})),\n },\n}));\n\njest.mock('../extensions/math', () => ({\n MathNode: {\n configure: jest.fn(() => ({})),\n },\n}));\n\njest.mock('../extensions/image', () => ({\n ImageUploadNode: {\n configure: jest.fn(() => ({})),\n },\n}));\n\njest.mock('../extensions/media', () => ({\n Media: {\n configure: jest.fn(() => ({})),\n },\n}));\n\njest.mock('../extensions/css', () => ({\n CSSMark: {\n configure: jest.fn(() => ({})),\n },\n}));\n\njest.mock('../components/TiptapContainer', () => ({\n __esModule: true,\n default: ({ children }) => <div data-testid=\"editor-container\">{children}</div>,\n}));\n\njest.mock('../extensions', () => ({\n ...jest.requireActual('../extensions'),\n buildExtensions: jest.fn(() => []),\n}));\n\ndescribe('EditableHtml', () => {\n const defaultProps = {\n markup: '<p>Hello World</p>',\n onChange: jest.fn(),\n onDone: jest.fn(),\n disabled: false,\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('renders without crashing', () => {\n const { container } = render(<EditableHtml {...defaultProps} />);\n expect(container).toBeInTheDocument();\n });\n\n it('renders editor container', () => {\n const { getByTestId } = render(<EditableHtml {...defaultProps} />);\n expect(getByTestId('editor-container')).toBeInTheDocument();\n });\n\n it('renders editor content when editor is initialized', async () => {\n const { getByTestId } = render(<EditableHtml {...defaultProps} />);\n await waitFor(() => {\n expect(getByTestId('editor-content')).toBeInTheDocument();\n });\n });\n\n it('accepts custom toolbar options', () => {\n const toolbarOpts = {\n position: 'top',\n alignment: 'center',\n alwaysVisible: true,\n showDone: false,\n doneOn: 'change',\n };\n const { container } = render(<EditableHtml {...defaultProps} toolbarOpts={toolbarOpts} />);\n expect(container).toBeInTheDocument();\n });\n\n it('accepts custom active plugins', () => {\n const activePlugins = ['bold', 'italic', 'underline'];\n const { container } = render(<EditableHtml {...defaultProps} activePlugins={activePlugins} />);\n expect(container).toBeInTheDocument();\n });\n\n it('accepts plugin props', () => {\n const pluginProps = {\n showParagraphs: { disabled: false },\n separateParagraphs: { disabled: false },\n };\n const { container } = render(<EditableHtml {...defaultProps} pluginProps={pluginProps} />);\n expect(container).toBeInTheDocument();\n });\n\n it('accepts response area props', () => {\n const responseAreaProps = {\n type: 'explicit-constructed-response',\n options: {},\n };\n const { container } = render(<EditableHtml {...defaultProps} responseAreaProps={responseAreaProps} />);\n expect(container).toBeInTheDocument();\n });\n\n it('passes blur done behavior to inline dropdown toolbar close', async () => {\n const onChange = jest.fn();\n const onDone = jest.fn();\n const html = '<p>from inline dropdown close</p>';\n\n render(\n <EditableHtml\n {...defaultProps}\n markup=\"<p>Hello World</p>\"\n onChange={onChange}\n onDone={onDone}\n toolbarOpts={{ doneOn: 'blur' }}\n responseAreaProps={{ type: 'inline-dropdown' }}\n />,\n );\n\n await waitFor(() => {\n expect(InlineDropdownNode.configure).toHaveBeenCalled();\n });\n\n const configureCall = InlineDropdownNode.configure.mock.calls[InlineDropdownNode.configure.mock.calls.length - 1];\n const inlineDropdownOptions = configureCall[0];\n const editor = {\n getHTML: jest.fn(() => html),\n };\n\n inlineDropdownOptions.onInlineDropdownToolbarClose(editor);\n\n expect(editor.getHTML).toHaveBeenCalledTimes(1);\n expect(onChange).toHaveBeenCalledWith(html);\n expect(onDone).toHaveBeenCalledWith(html);\n });\n\n it('accepts size props', () => {\n const sizeProps = {\n width: 500,\n height: 300,\n minHeight: 200,\n maxHeight: 400,\n minWidth: 300,\n maxWidth: 600,\n };\n const { container } = render(<EditableHtml {...defaultProps} {...sizeProps} />);\n expect(container).toBeInTheDocument();\n });\n\n it('accepts character limit', () => {\n const { container } = render(<EditableHtml {...defaultProps} charactersLimit={500} />);\n expect(container).toBeInTheDocument();\n });\n\n it('accepts image support props', () => {\n const imageSupport = {\n add: jest.fn(),\n delete: jest.fn(),\n };\n const { container } = render(<EditableHtml {...defaultProps} imageSupport={imageSupport} />);\n expect(container).toBeInTheDocument();\n });\n\n it('accepts max image dimensions', () => {\n const { container } = render(<EditableHtml {...defaultProps} maxImageWidth={800} maxImageHeight={600} />);\n expect(container).toBeInTheDocument();\n });\n\n it('accepts language characters props', () => {\n const languageCharactersProps = [\n { label: 'Greek', value: 'greek' },\n { label: 'Cyrillic', value: 'cyrillic' },\n ];\n const { container } = render(<EditableHtml {...defaultProps} languageCharactersProps={languageCharactersProps} />);\n expect(container).toBeInTheDocument();\n });\n\n it('accepts extra CSS rules', () => {\n const extraCSSRules = {\n '.custom-class': { color: 'red' },\n };\n const { container } = render(<EditableHtml {...defaultProps} extraCSSRules={extraCSSRules} />);\n expect(container).toBeInTheDocument();\n });\n\n it('accepts upload sound support', () => {\n const uploadSoundSupport = {\n add: jest.fn(),\n delete: jest.fn(),\n };\n const { container } = render(<EditableHtml {...defaultProps} uploadSoundSupport={uploadSoundSupport} />);\n expect(container).toBeInTheDocument();\n });\n\n it('accepts onKeyDown handler', () => {\n const onKeyDown = jest.fn();\n const { container } = render(<EditableHtml {...defaultProps} onKeyDown={onKeyDown} />);\n expect(container).toBeInTheDocument();\n });\n\n it('accepts disableImageAlignmentButtons prop', () => {\n const { container } = render(<EditableHtml {...defaultProps} disableImageAlignmentButtons={true} />);\n expect(container).toBeInTheDocument();\n });\n\n it('calls editorRef callback when editor is initialized', async () => {\n const editorRef = jest.fn();\n render(<EditableHtml {...defaultProps} editorRef={editorRef} />);\n\n await waitFor(() => {\n expect(editorRef).toHaveBeenCalled();\n });\n });\n\n it('calls editorRef with the editor instance', async () => {\n const editorRef = jest.fn();\n render(<EditableHtml {...defaultProps} editorRef={editorRef} />);\n\n await waitFor(() => {\n expect(editorRef).toHaveBeenCalled();\n // Verify it was called with an object that has editor-like properties\n const callArg = editorRef.mock.calls[0][0];\n expect(callArg).toHaveProperty('getHTML');\n expect(callArg).toHaveProperty('commands');\n });\n });\n\n it('handles editorRef being undefined', () => {\n const { container } = render(<EditableHtml {...defaultProps} editorRef={undefined} />);\n expect(container).toBeInTheDocument();\n });\n\n it('applies flex display to StyledEditorContent', async () => {\n const { getByTestId } = render(<EditableHtml {...defaultProps} />);\n await waitFor(() => {\n const editorContent = getByTestId('editor-content');\n expect(editorContent).toBeInTheDocument();\n });\n });\n\n it('does not run blur onChange/onDone while an image insert flow is active', async () => {\n jest.useFakeTimers();\n const onChange = jest.fn();\n const onDone = jest.fn();\n\n render(\n <EditableHtml\n {...defaultProps}\n markup=\"<p>Hello World</p>\"\n onChange={onChange}\n onDone={onDone}\n toolbarOpts={{ ...defaultProps.toolbarOpts, doneOn: 'blur' }}\n />,\n );\n\n await waitFor(() => {\n expect(useEditor).toHaveBeenCalled();\n });\n\n const editorConfig = useEditor.mock.calls[useEditor.mock.calls.length - 1][0];\n const blurEditor = {\n getHTML: jest.fn(() => '<p>changed</p>'),\n schema: {},\n _insertingImage: true,\n _toolbarOpened: false,\n isActive: jest.fn(() => false),\n };\n\n editorConfig.onBlur({ editor: blurEditor });\n jest.advanceTimersByTime(200);\n\n expect(onChange).not.toHaveBeenCalled();\n expect(onDone).not.toHaveBeenCalled();\n\n jest.useRealTimers();\n });\n\n it('does not run blur onChange/onDone when editor has no schema', async () => {\n jest.useFakeTimers();\n const onChange = jest.fn();\n const onDone = jest.fn();\n\n render(\n <EditableHtml\n {...defaultProps}\n markup=\"<p>Hello World</p>\"\n onChange={onChange}\n onDone={onDone}\n toolbarOpts={{ doneOn: 'blur' }}\n />,\n );\n\n await waitFor(() => {\n expect(useEditor).toHaveBeenCalled();\n });\n\n const editorConfig = useEditor.mock.calls[useEditor.mock.calls.length - 1][0];\n const getHTML = jest.fn(() => '<p>changed</p>');\n const blurEditor = {\n getHTML,\n schema: undefined,\n _insertingImage: false,\n _toolbarOpened: false,\n isActive: jest.fn(() => false),\n };\n\n editorConfig.onBlur({ editor: blurEditor });\n jest.advanceTimersByTime(200);\n\n expect(getHTML).not.toHaveBeenCalled();\n expect(onChange).not.toHaveBeenCalled();\n expect(onDone).not.toHaveBeenCalled();\n\n jest.useRealTimers();\n });\n\n it('calls getHTML once on blur and passes the same html to onChange and onDone', async () => {\n jest.useFakeTimers();\n const onChange = jest.fn();\n const onDone = jest.fn();\n const html = '<p>from editor</p>';\n\n render(\n <EditableHtml\n {...defaultProps}\n markup=\"<p>Hello World</p>\"\n onChange={onChange}\n onDone={onDone}\n toolbarOpts={{ doneOn: 'blur' }}\n />,\n );\n\n await waitFor(() => {\n expect(useEditor).toHaveBeenCalled();\n });\n\n const editorConfig = useEditor.mock.calls[useEditor.mock.calls.length - 1][0];\n const getHTML = jest.fn(() => html);\n const blurEditor = {\n getHTML,\n schema: {},\n _insertingImage: false,\n _toolbarOpened: false,\n isActive: jest.fn(() => false),\n };\n\n editorConfig.onBlur({ editor: blurEditor });\n jest.advanceTimersByTime(200);\n\n expect(getHTML).toHaveBeenCalledTimes(1);\n expect(onChange).toHaveBeenCalledWith(html);\n expect(onDone).toHaveBeenCalledWith(html);\n\n jest.useRealTimers();\n });\n\n describe('onUpdate callback', () => {\n it('calls onChange when transaction.isDone is true', async () => {\n const onChange = jest.fn();\n const markup = '<p>Initial content</p>';\n\n render(<EditableHtml {...defaultProps} markup={markup} onChange={onChange} />);\n\n await waitFor(() => {\n expect(useEditor).toHaveBeenCalled();\n });\n\n const editorConfig = useEditor.mock.calls[useEditor.mock.calls.length - 1][0];\n const mockEditor = {\n getHTML: jest.fn(() => '<p>Updated content</p>'),\n };\n\n const mockTransaction = {\n isDone: true,\n };\n\n editorConfig.onUpdate({ editor: mockEditor, transaction: mockTransaction });\n\n expect(onChange).toHaveBeenCalledWith('<p>Updated content</p>');\n });\n\n it('does not call onChange when transaction.isDone is false even if markup differs from editor HTML', async () => {\n const onChange = jest.fn();\n const markup = '<p>Initial content</p>';\n\n render(<EditableHtml {...defaultProps} markup={markup} onChange={onChange} />);\n\n await waitFor(() => {\n expect(useEditor).toHaveBeenCalled();\n });\n\n const editorConfig = useEditor.mock.calls[useEditor.mock.calls.length - 1][0];\n const mockEditor = {\n getHTML: jest.fn(() => '<p>Different content</p>'),\n };\n\n const mockTransaction = {\n isDone: false,\n };\n\n editorConfig.onUpdate({ editor: mockEditor, transaction: mockTransaction });\n\n expect(onChange).not.toHaveBeenCalled();\n });\n\n it('does not call onChange when transaction.isDone is false and markup matches editor HTML', async () => {\n const onChange = jest.fn();\n const markup = '<p>Same content</p>';\n\n render(<EditableHtml {...defaultProps} markup={markup} onChange={onChange} />);\n\n await waitFor(() => {\n expect(useEditor).toHaveBeenCalled();\n });\n\n const editorConfig = useEditor.mock.calls[useEditor.mock.calls.length - 1][0];\n const mockEditor = {\n getHTML: jest.fn(() => '<p>Same content</p>'),\n };\n\n const mockTransaction = {\n isDone: false,\n };\n\n editorConfig.onUpdate({ editor: mockEditor, transaction: mockTransaction });\n\n expect(onChange).not.toHaveBeenCalled();\n });\n\n it('calls onChange when transaction.isDone is true even if markup matches', async () => {\n const onChange = jest.fn();\n const markup = '<p>Same content</p>';\n\n render(<EditableHtml {...defaultProps} markup={markup} onChange={onChange} />);\n\n await waitFor(() => {\n expect(useEditor).toHaveBeenCalled();\n });\n\n const editorConfig = useEditor.mock.calls[useEditor.mock.calls.length - 1][0];\n const mockEditor = {\n getHTML: jest.fn(() => '<p>Same content</p>'),\n };\n\n const mockTransaction = {\n isDone: true,\n };\n\n editorConfig.onUpdate({ editor: mockEditor, transaction: mockTransaction });\n\n expect(onChange).toHaveBeenCalledWith('<p>Same content</p>');\n });\n\n it('does not call onChange when onChange is not provided', async () => {\n const markup = '<p>Content</p>';\n\n render(<EditableHtml {...defaultProps} markup={markup} onChange={undefined} />);\n\n await waitFor(() => {\n expect(useEditor).toHaveBeenCalled();\n });\n\n const editorConfig = useEditor.mock.calls[useEditor.mock.calls.length - 1][0];\n const mockEditor = {\n getHTML: jest.fn(() => '<p>Updated content</p>'),\n };\n\n const mockTransaction = {\n isDone: true,\n };\n\n // Should not throw error when onChange is undefined\n expect(() => {\n editorConfig.onUpdate({ editor: mockEditor, transaction: mockTransaction });\n }).not.toThrow();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ var _constants = _interopRequireWildcard(require("../constants"));
5
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
6
+ describe('Constants', function () {
7
+ describe('PIE_TOOLBAR__CLASS', function () {
8
+ it('is defined', function () {
9
+ expect(_constants.PIE_TOOLBAR__CLASS).toBeDefined();
10
+ });
11
+ it('has the correct value', function () {
12
+ expect(_constants.PIE_TOOLBAR__CLASS).toBe('pie-toolbar');
13
+ });
14
+ });
15
+ describe('default export', function () {
16
+ it('contains PIE_TOOLBAR__CLASS', function () {
17
+ expect(_constants["default"].PIE_TOOLBAR__CLASS).toBe('pie-toolbar');
18
+ });
19
+ });
20
+ });
21
+ //# sourceMappingURL=constants.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.test.js","names":["_constants","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","describe","it","expect","PIE_TOOLBAR__CLASS","toBeDefined","toBe","constants"],"sources":["../../src/__tests__/constants.test.js"],"sourcesContent":["import constants, { PIE_TOOLBAR__CLASS } from '../constants';\n\ndescribe('Constants', () => {\n describe('PIE_TOOLBAR__CLASS', () => {\n it('is defined', () => {\n expect(PIE_TOOLBAR__CLASS).toBeDefined();\n });\n\n it('has the correct value', () => {\n expect(PIE_TOOLBAR__CLASS).toBe('pie-toolbar');\n });\n });\n\n describe('default export', () => {\n it('contains PIE_TOOLBAR__CLASS', () => {\n expect(constants.PIE_TOOLBAR__CLASS).toBe('pie-toolbar');\n });\n });\n});\n"],"mappings":";;;AAAA,IAAAA,UAAA,GAAAC,uBAAA,CAAAC,OAAA;AAA6D,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,wBAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,mBAAAT,CAAA,iBAAAA,CAAA,gBAAAU,OAAA,CAAAV,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,cAAAM,EAAA,IAAAd,CAAA,gBAAAc,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,EAAA,OAAAP,CAAA,IAAAD,CAAA,GAAAW,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAc,EAAA,OAAAP,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAM,EAAA,EAAAP,CAAA,IAAAC,CAAA,CAAAM,EAAA,IAAAd,CAAA,CAAAc,EAAA,WAAAN,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAE7DmB,QAAQ,CAAC,WAAW,EAAE,YAAM;EAC1BA,QAAQ,CAAC,oBAAoB,EAAE,YAAM;IACnCC,EAAE,CAAC,YAAY,EAAE,YAAM;MACrBC,MAAM,CAACC,6BAAkB,CAAC,CAACC,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEFH,EAAE,CAAC,uBAAuB,EAAE,YAAM;MAChCC,MAAM,CAACC,6BAAkB,CAAC,CAACE,IAAI,CAAC,aAAa,CAAC;IAChD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFL,QAAQ,CAAC,gBAAgB,EAAE,YAAM;IAC/BC,EAAE,CAAC,6BAA6B,EAAE,YAAM;MACtCC,MAAM,CAACI,qBAAS,CAACH,kBAAkB,CAAC,CAACE,IAAI,CAAC,aAAa,CAAC;IAC1D,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,213 @@
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 _react = _interopRequireDefault(require("react"));
7
+ var _react2 = require("@testing-library/react");
8
+ var _EditableHtml = require("../components/EditableHtml");
9
+ describe('Div to Paragraph Conversion', function () {
10
+ it('converts consecutive divs to paragraph with br tags', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
11
+ var markup, _render, container, paragraph, br;
12
+ return _regenerator["default"].wrap(function (_context) {
13
+ while (1) switch (_context.prev = _context.next) {
14
+ case 0:
15
+ markup = '<div>A</div><div>B</div>';
16
+ _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, {
17
+ markup: markup,
18
+ onChange: function onChange() {},
19
+ pluginProps: {}
20
+ })), container = _render.container; // Wait for the editor to initialize
21
+ _context.next = 1;
22
+ return (0, _react2.waitFor)(function () {
23
+ var prosemirror = container.querySelector('.ProseMirror');
24
+ expect(prosemirror).toBeInTheDocument();
25
+ });
26
+ case 1:
27
+ // Check that the content was converted to a paragraph
28
+ paragraph = container.querySelector('.ProseMirror p');
29
+ expect(paragraph).toBeInTheDocument();
30
+
31
+ // Check that br tag is present
32
+ br = container.querySelector('.ProseMirror p br');
33
+ expect(br).toBeInTheDocument();
34
+
35
+ // Verify the text content
36
+ expect(paragraph.textContent).toBe('AB');
37
+ case 2:
38
+ case "end":
39
+ return _context.stop();
40
+ }
41
+ }, _callee);
42
+ })));
43
+ it('converts three consecutive divs correctly', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
44
+ var markup, _render2, container, paragraph, brTags;
45
+ return _regenerator["default"].wrap(function (_context2) {
46
+ while (1) switch (_context2.prev = _context2.next) {
47
+ case 0:
48
+ markup = '<div>First</div><div>Second</div><div>Third</div>';
49
+ _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, {
50
+ markup: markup,
51
+ onChange: function onChange() {},
52
+ pluginProps: {}
53
+ })), container = _render2.container;
54
+ _context2.next = 1;
55
+ return (0, _react2.waitFor)(function () {
56
+ var prosemirror = container.querySelector('.ProseMirror');
57
+ expect(prosemirror).toBeInTheDocument();
58
+ });
59
+ case 1:
60
+ paragraph = container.querySelector('.ProseMirror p');
61
+ expect(paragraph).toBeInTheDocument();
62
+
63
+ // Should have 2 br tags (between 3 items)
64
+ brTags = container.querySelectorAll('.ProseMirror p br');
65
+ expect(brTags.length).toBe(2);
66
+ expect(paragraph.textContent).toBe('FirstSecondThird');
67
+ case 2:
68
+ case "end":
69
+ return _context2.stop();
70
+ }
71
+ }, _callee2);
72
+ })));
73
+ it('does not convert single div', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
74
+ var markup, _render3, container, div;
75
+ return _regenerator["default"].wrap(function (_context3) {
76
+ while (1) switch (_context3.prev = _context3.next) {
77
+ case 0:
78
+ markup = '<div>Single</div>';
79
+ _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, {
80
+ markup: markup,
81
+ onChange: function onChange() {},
82
+ pluginProps: {}
83
+ })), container = _render3.container;
84
+ _context3.next = 1;
85
+ return (0, _react2.waitFor)(function () {
86
+ var prosemirror = container.querySelector('.ProseMirror');
87
+ expect(prosemirror).toBeInTheDocument();
88
+ });
89
+ case 1:
90
+ // Should remain as a div
91
+ div = container.querySelector('.ProseMirror div');
92
+ expect(div).toBeInTheDocument();
93
+ expect(div.textContent).toBe('Single');
94
+ case 2:
95
+ case "end":
96
+ return _context3.stop();
97
+ }
98
+ }, _callee3);
99
+ })));
100
+ it('does not convert divs with attributes', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
101
+ var markup, _render4, container, divs;
102
+ return _regenerator["default"].wrap(function (_context4) {
103
+ while (1) switch (_context4.prev = _context4.next) {
104
+ case 0:
105
+ markup = '<div class="test">A</div><div>B</div>';
106
+ _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, {
107
+ markup: markup,
108
+ onChange: function onChange() {},
109
+ pluginProps: {}
110
+ })), container = _render4.container;
111
+ _context4.next = 1;
112
+ return (0, _react2.waitFor)(function () {
113
+ var prosemirror = container.querySelector('.ProseMirror');
114
+ expect(prosemirror).toBeInTheDocument();
115
+ });
116
+ case 1:
117
+ // Should remain as divs since one has an attribute
118
+ divs = container.querySelectorAll('.ProseMirror div');
119
+ expect(divs.length).toBeGreaterThanOrEqual(2);
120
+ case 2:
121
+ case "end":
122
+ return _context4.stop();
123
+ }
124
+ }, _callee4);
125
+ })));
126
+ it('handles divs with inline formatting', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
127
+ var markup, _render5, container, paragraph, strong, em;
128
+ return _regenerator["default"].wrap(function (_context5) {
129
+ while (1) switch (_context5.prev = _context5.next) {
130
+ case 0:
131
+ markup = '<div><strong>Bold</strong></div><div><em>Italic</em></div>';
132
+ _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, {
133
+ markup: markup,
134
+ onChange: function onChange() {},
135
+ pluginProps: {}
136
+ })), container = _render5.container;
137
+ _context5.next = 1;
138
+ return (0, _react2.waitFor)(function () {
139
+ var prosemirror = container.querySelector('.ProseMirror');
140
+ expect(prosemirror).toBeInTheDocument();
141
+ });
142
+ case 1:
143
+ // Should be converted to paragraph
144
+ paragraph = container.querySelector('.ProseMirror p');
145
+ expect(paragraph).toBeInTheDocument();
146
+
147
+ // Check that formatting is preserved
148
+ strong = container.querySelector('.ProseMirror p strong');
149
+ em = container.querySelector('.ProseMirror p em');
150
+ expect(strong).toBeInTheDocument();
151
+ expect(em).toBeInTheDocument();
152
+ case 2:
153
+ case "end":
154
+ return _context5.stop();
155
+ }
156
+ }, _callee5);
157
+ })));
158
+ it('does not convert mixed element types', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6() {
159
+ var markup, _render6, container, div, p;
160
+ return _regenerator["default"].wrap(function (_context6) {
161
+ while (1) switch (_context6.prev = _context6.next) {
162
+ case 0:
163
+ markup = '<div>A</div><p>B</p>';
164
+ _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, {
165
+ markup: markup,
166
+ onChange: function onChange() {},
167
+ pluginProps: {}
168
+ })), container = _render6.container;
169
+ _context6.next = 1;
170
+ return (0, _react2.waitFor)(function () {
171
+ var prosemirror = container.querySelector('.ProseMirror');
172
+ expect(prosemirror).toBeInTheDocument();
173
+ });
174
+ case 1:
175
+ // Should have both div and paragraph
176
+ div = container.querySelector('.ProseMirror div');
177
+ p = container.querySelector('.ProseMirror p');
178
+ expect(div).toBeInTheDocument();
179
+ expect(p).toBeInTheDocument();
180
+ case 2:
181
+ case "end":
182
+ return _context6.stop();
183
+ }
184
+ }, _callee6);
185
+ })));
186
+ it('does not convert divs with nested block elements', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7() {
187
+ var markup, _render7, container, divs;
188
+ return _regenerator["default"].wrap(function (_context7) {
189
+ while (1) switch (_context7.prev = _context7.next) {
190
+ case 0:
191
+ markup = '<div><div>Nested</div></div><div>B</div>';
192
+ _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, {
193
+ markup: markup,
194
+ onChange: function onChange() {},
195
+ pluginProps: {}
196
+ })), container = _render7.container;
197
+ _context7.next = 1;
198
+ return (0, _react2.waitFor)(function () {
199
+ var prosemirror = container.querySelector('.ProseMirror');
200
+ expect(prosemirror).toBeInTheDocument();
201
+ });
202
+ case 1:
203
+ // Should remain as divs
204
+ divs = container.querySelectorAll('.ProseMirror > div');
205
+ expect(divs.length).toBeGreaterThanOrEqual(1);
206
+ case 2:
207
+ case "end":
208
+ return _context7.stop();
209
+ }
210
+ }, _callee7);
211
+ })));
212
+ });
213
+ //# sourceMappingURL=div-to-paragraph-conversion.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"div-to-paragraph-conversion.test.js","names":["_react","_interopRequireDefault","require","_react2","_EditableHtml","describe","it","_asyncToGenerator2","_regenerator","mark","_callee","markup","_render","container","paragraph","br","wrap","_context","prev","next","render","createElement","EditableHtml","onChange","pluginProps","waitFor","prosemirror","querySelector","expect","toBeInTheDocument","textContent","toBe","stop","_callee2","_render2","brTags","_context2","querySelectorAll","length","_callee3","_render3","div","_context3","_callee4","_render4","divs","_context4","toBeGreaterThanOrEqual","_callee5","_render5","strong","em","_context5","_callee6","_render6","p","_context6","_callee7","_render7","_context7"],"sources":["../../src/__tests__/div-to-paragraph-conversion.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render, waitFor } from '@testing-library/react';\nimport { EditableHtml } from '../components/EditableHtml';\n\ndescribe('Div to Paragraph Conversion', () => {\n it('converts consecutive divs to paragraph with br tags', async () => {\n const markup = '<div>A</div><div>B</div>';\n const { container } = render(<EditableHtml markup={markup} onChange={() => {}} pluginProps={{}} />);\n\n // Wait for the editor to initialize\n await waitFor(() => {\n const prosemirror = container.querySelector('.ProseMirror');\n expect(prosemirror).toBeInTheDocument();\n });\n\n // Check that the content was converted to a paragraph\n const paragraph = container.querySelector('.ProseMirror p');\n expect(paragraph).toBeInTheDocument();\n\n // Check that br tag is present\n const br = container.querySelector('.ProseMirror p br');\n expect(br).toBeInTheDocument();\n\n // Verify the text content\n expect(paragraph.textContent).toBe('AB');\n });\n\n it('converts three consecutive divs correctly', async () => {\n const markup = '<div>First</div><div>Second</div><div>Third</div>';\n const { container } = render(<EditableHtml markup={markup} onChange={() => {}} pluginProps={{}} />);\n\n await waitFor(() => {\n const prosemirror = container.querySelector('.ProseMirror');\n expect(prosemirror).toBeInTheDocument();\n });\n\n const paragraph = container.querySelector('.ProseMirror p');\n expect(paragraph).toBeInTheDocument();\n\n // Should have 2 br tags (between 3 items)\n const brTags = container.querySelectorAll('.ProseMirror p br');\n expect(brTags.length).toBe(2);\n\n expect(paragraph.textContent).toBe('FirstSecondThird');\n });\n\n it('does not convert single div', async () => {\n const markup = '<div>Single</div>';\n const { container } = render(<EditableHtml markup={markup} onChange={() => {}} pluginProps={{}} />);\n\n await waitFor(() => {\n const prosemirror = container.querySelector('.ProseMirror');\n expect(prosemirror).toBeInTheDocument();\n });\n\n // Should remain as a div\n const div = container.querySelector('.ProseMirror div');\n expect(div).toBeInTheDocument();\n expect(div.textContent).toBe('Single');\n });\n\n it('does not convert divs with attributes', async () => {\n const markup = '<div class=\"test\">A</div><div>B</div>';\n const { container } = render(<EditableHtml markup={markup} onChange={() => {}} pluginProps={{}} />);\n\n await waitFor(() => {\n const prosemirror = container.querySelector('.ProseMirror');\n expect(prosemirror).toBeInTheDocument();\n });\n\n // Should remain as divs since one has an attribute\n const divs = container.querySelectorAll('.ProseMirror div');\n expect(divs.length).toBeGreaterThanOrEqual(2);\n });\n\n it('handles divs with inline formatting', async () => {\n const markup = '<div><strong>Bold</strong></div><div><em>Italic</em></div>';\n const { container } = render(<EditableHtml markup={markup} onChange={() => {}} pluginProps={{}} />);\n\n await waitFor(() => {\n const prosemirror = container.querySelector('.ProseMirror');\n expect(prosemirror).toBeInTheDocument();\n });\n\n // Should be converted to paragraph\n const paragraph = container.querySelector('.ProseMirror p');\n expect(paragraph).toBeInTheDocument();\n\n // Check that formatting is preserved\n const strong = container.querySelector('.ProseMirror p strong');\n const em = container.querySelector('.ProseMirror p em');\n expect(strong).toBeInTheDocument();\n expect(em).toBeInTheDocument();\n });\n\n it('does not convert mixed element types', async () => {\n const markup = '<div>A</div><p>B</p>';\n const { container } = render(<EditableHtml markup={markup} onChange={() => {}} pluginProps={{}} />);\n\n await waitFor(() => {\n const prosemirror = container.querySelector('.ProseMirror');\n expect(prosemirror).toBeInTheDocument();\n });\n\n // Should have both div and paragraph\n const div = container.querySelector('.ProseMirror div');\n const p = container.querySelector('.ProseMirror p');\n expect(div).toBeInTheDocument();\n expect(p).toBeInTheDocument();\n });\n\n it('does not convert divs with nested block elements', async () => {\n const markup = '<div><div>Nested</div></div><div>B</div>';\n const { container } = render(<EditableHtml markup={markup} onChange={() => {}} pluginProps={{}} />);\n\n await waitFor(() => {\n const prosemirror = container.querySelector('.ProseMirror');\n expect(prosemirror).toBeInTheDocument();\n });\n\n // Should remain as divs\n const divs = container.querySelectorAll('.ProseMirror > div');\n expect(divs.length).toBeGreaterThanOrEqual(1);\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+
3
+ var _extensions = require("../extensions");
4
+ describe('Extensions', function () {
5
+ describe('ALL_PLUGINS', function () {
6
+ it('contains all expected plugins', function () {
7
+ expect(_extensions.ALL_PLUGINS).toContain('bold');
8
+ expect(_extensions.ALL_PLUGINS).toContain('italic');
9
+ expect(_extensions.ALL_PLUGINS).toContain('underline');
10
+ expect(_extensions.ALL_PLUGINS).toContain('strikethrough');
11
+ expect(_extensions.ALL_PLUGINS).toContain('bulleted-list');
12
+ expect(_extensions.ALL_PLUGINS).toContain('numbered-list');
13
+ expect(_extensions.ALL_PLUGINS).toContain('image');
14
+ expect(_extensions.ALL_PLUGINS).toContain('math');
15
+ expect(_extensions.ALL_PLUGINS).toContain('languageCharacters');
16
+ expect(_extensions.ALL_PLUGINS).toContain('text-align');
17
+ expect(_extensions.ALL_PLUGINS).toContain('table');
18
+ expect(_extensions.ALL_PLUGINS).toContain('video');
19
+ expect(_extensions.ALL_PLUGINS).toContain('audio');
20
+ expect(_extensions.ALL_PLUGINS).toContain('responseArea');
21
+ expect(_extensions.ALL_PLUGINS).toContain('superscript');
22
+ expect(_extensions.ALL_PLUGINS).toContain('subscript');
23
+ expect(_extensions.ALL_PLUGINS).toContain('h3');
24
+ expect(_extensions.ALL_PLUGINS).toContain('blockquote');
25
+ expect(_extensions.ALL_PLUGINS).toContain('undo');
26
+ expect(_extensions.ALL_PLUGINS).toContain('redo');
27
+ });
28
+ });
29
+ describe('DEFAULT_PLUGINS', function () {
30
+ it('excludes responseArea, h3, and blockquote', function () {
31
+ expect(_extensions.DEFAULT_PLUGINS).not.toContain('responseArea');
32
+ expect(_extensions.DEFAULT_PLUGINS).not.toContain('h3');
33
+ expect(_extensions.DEFAULT_PLUGINS).not.toContain('blockquote');
34
+ });
35
+ it('contains basic formatting plugins', function () {
36
+ expect(_extensions.DEFAULT_PLUGINS).toContain('bold');
37
+ expect(_extensions.DEFAULT_PLUGINS).toContain('italic');
38
+ expect(_extensions.DEFAULT_PLUGINS).toContain('underline');
39
+ });
40
+ });
41
+ describe('buildExtensions', function () {
42
+ it('returns an array when called with default parameters', function () {
43
+ var result = (0, _extensions.buildExtensions)(_extensions.DEFAULT_PLUGINS, [], {});
44
+ expect(Array.isArray(result)).toBe(true);
45
+ });
46
+ it('includes only active extensions', function () {
47
+ var activeExtensions = ['bold', 'italic'];
48
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], {});
49
+ expect(result).toEqual(['bold', 'italic']);
50
+ });
51
+ it('filters out undefined values', function () {
52
+ var result = (0, _extensions.buildExtensions)(['bold', 'italic'], [], {});
53
+ expect(result.every(function (item) {
54
+ return item !== undefined;
55
+ })).toBe(true);
56
+ });
57
+ it('excludes image plugin when opts.image.onDelete is not provided', function () {
58
+ var activeExtensions = ['image'];
59
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], {});
60
+ expect(result).not.toContain('image');
61
+ });
62
+ it('includes image plugin when opts.image.delete is provided', function () {
63
+ var activeExtensions = ['image'];
64
+ var opts = {
65
+ image: {
66
+ "delete": jest.fn()
67
+ }
68
+ };
69
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], opts);
70
+ expect(result).toContain('image');
71
+ });
72
+ it('excludes math plugin when opts.math is not provided', function () {
73
+ var activeExtensions = ['math'];
74
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], {});
75
+ expect(result).not.toContain('math');
76
+ });
77
+ it('includes math plugin when opts.math is provided', function () {
78
+ var activeExtensions = ['math'];
79
+ var opts = {
80
+ math: {}
81
+ };
82
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], opts);
83
+ expect(result).toContain('math');
84
+ });
85
+ it('excludes responseArea plugin when opts.responseArea.type is not provided', function () {
86
+ var activeExtensions = ['responseArea'];
87
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], {});
88
+ expect(result).not.toContain('responseArea');
89
+ });
90
+ it('includes responseArea plugin when opts.responseArea.type is provided', function () {
91
+ var activeExtensions = ['responseArea'];
92
+ var opts = {
93
+ responseArea: {
94
+ type: 'explicit-constructed-response'
95
+ }
96
+ };
97
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], opts);
98
+ expect(result).toContain('responseArea');
99
+ });
100
+ it('excludes css plugin when opts.extraCSSRules is empty', function () {
101
+ var activeExtensions = ['css'];
102
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], {
103
+ extraCSSRules: {}
104
+ });
105
+ expect(result).not.toContain('css');
106
+ });
107
+ it('includes css plugin when opts.extraCSSRules has values', function () {
108
+ var activeExtensions = ['css'];
109
+ var opts = {
110
+ extraCSSRules: {
111
+ color: 'red'
112
+ }
113
+ };
114
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], opts);
115
+ expect(result).toContain('css');
116
+ });
117
+ it('excludes html plugin when opts.html is not provided', function () {
118
+ var activeExtensions = ['html'];
119
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], {});
120
+ expect(result).not.toContain('html');
121
+ });
122
+ it('includes html plugin when opts.html is provided', function () {
123
+ var activeExtensions = ['html'];
124
+ var opts = {
125
+ html: true
126
+ };
127
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], opts);
128
+ expect(result).toContain('html');
129
+ });
130
+ it('handles languageCharacters plugins array', function () {
131
+ var activeExtensions = ['languageCharacters'];
132
+ var opts = {
133
+ languageCharacters: [{
134
+ label: 'Greek',
135
+ value: 'greek'
136
+ }, {
137
+ label: 'Cyrillic',
138
+ value: 'cyrillic'
139
+ }]
140
+ };
141
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], opts);
142
+ // Should include languageCharacters for each item in the array
143
+ var languageCharsCount = result.filter(function (item) {
144
+ return item === 'languageCharacters';
145
+ }).length;
146
+ expect(languageCharsCount).toBe(2);
147
+ });
148
+ it('uses DEFAULT_PLUGINS when activeExtensions is not provided', function () {
149
+ var result = (0, _extensions.buildExtensions)(null, [], {});
150
+ expect(Array.isArray(result)).toBe(true);
151
+ expect(result.length).toBeGreaterThan(0);
152
+ });
153
+ it('includes list plugins', function () {
154
+ var activeExtensions = ['bulleted-list', 'numbered-list'];
155
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], {});
156
+ expect(result).toContain('bulleted-list');
157
+ expect(result).toContain('numbered-list');
158
+ });
159
+ it('includes undo and redo plugins', function () {
160
+ var activeExtensions = ['undo', 'redo'];
161
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], {});
162
+ expect(result).toContain('undo');
163
+ expect(result).toContain('redo');
164
+ });
165
+ it('includes text formatting plugins', function () {
166
+ var activeExtensions = ['superscript', 'subscript', 'strikethrough', 'underline'];
167
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], {});
168
+ expect(result).toContain('superscript');
169
+ expect(result).toContain('subscript');
170
+ expect(result).toContain('strikethrough');
171
+ expect(result).toContain('underline');
172
+ });
173
+ it('includes media plugins', function () {
174
+ var activeExtensions = ['video', 'audio'];
175
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], {});
176
+ expect(result).toContain('video');
177
+ expect(result).toContain('audio');
178
+ });
179
+ it('includes table plugin', function () {
180
+ var activeExtensions = ['table'];
181
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], {});
182
+ expect(result).toContain('table');
183
+ });
184
+ it('includes text-align plugin', function () {
185
+ var activeExtensions = ['text-align'];
186
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], {});
187
+ expect(result).toContain('text-align');
188
+ });
189
+ it('includes blockquote and h3 plugins when in active list', function () {
190
+ var activeExtensions = ['blockquote', 'h3'];
191
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], {});
192
+ expect(result).toContain('blockquote');
193
+ expect(result).toContain('h3');
194
+ });
195
+ it('filters out inactive extensions', function () {
196
+ var activeExtensions = ['bold'];
197
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], {});
198
+ expect(result).not.toContain('italic');
199
+ expect(result).not.toContain('underline');
200
+ });
201
+ it('maintains order of extensions', function () {
202
+ var activeExtensions = ['table', 'bold', 'italic'];
203
+ var result = (0, _extensions.buildExtensions)(activeExtensions, [], {});
204
+ expect(result.indexOf('table')).toBeLessThan(result.indexOf('bold'));
205
+ expect(result.indexOf('bold')).toBeLessThan(result.indexOf('italic'));
206
+ });
207
+ });
208
+ });
209
+ //# sourceMappingURL=extensions.test.js.map