@pie-lib/editable-html-tip-tap 2.1.11 → 2.2.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -84
- package/lib/__tests__/EditableHtml.test.js +831 -0
- package/lib/__tests__/EditableHtml.test.js.map +1 -0
- package/lib/__tests__/constants.test.js +21 -0
- package/lib/__tests__/constants.test.js.map +1 -0
- package/lib/__tests__/div-to-paragraph-conversion.test.js +213 -0
- package/lib/__tests__/div-to-paragraph-conversion.test.js.map +1 -0
- package/lib/__tests__/extensions.test.js +209 -0
- package/lib/__tests__/extensions.test.js.map +1 -0
- package/lib/__tests__/index.test.js +250 -0
- package/lib/__tests__/index.test.js.map +1 -0
- package/lib/__tests__/size-utils.test.js +57 -0
- package/lib/__tests__/size-utils.test.js.map +1 -0
- package/lib/__tests__/theme.test.js +17 -0
- package/lib/__tests__/theme.test.js.map +1 -0
- package/lib/components/__tests__/AltDialog.test.js +201 -0
- package/lib/components/__tests__/AltDialog.test.js.map +1 -0
- package/lib/components/__tests__/CharacterPicker.test.js +455 -0
- package/lib/components/__tests__/CharacterPicker.test.js.map +1 -0
- package/lib/components/__tests__/CssIcon.test.js +58 -0
- package/lib/components/__tests__/CssIcon.test.js.map +1 -0
- package/lib/components/__tests__/DragInTheBlank.test.js +295 -0
- package/lib/components/__tests__/DragInTheBlank.test.js.map +1 -0
- package/lib/components/__tests__/ExplicitConstructedResponse.test.js +345 -0
- package/lib/components/__tests__/ExplicitConstructedResponse.test.js.map +1 -0
- package/lib/components/__tests__/ImageToolbar.test.js +185 -0
- package/lib/components/__tests__/ImageToolbar.test.js.map +1 -0
- package/lib/components/__tests__/InlineDropdown.test.js +839 -0
- package/lib/components/__tests__/InlineDropdown.test.js.map +1 -0
- package/lib/components/__tests__/InsertImageHandler.test.js +171 -0
- package/lib/components/__tests__/InsertImageHandler.test.js.map +1 -0
- package/lib/components/__tests__/MediaDialog.test.js +433 -0
- package/lib/components/__tests__/MediaDialog.test.js.map +1 -0
- package/lib/components/__tests__/MediaToolbar.test.js +126 -0
- package/lib/components/__tests__/MediaToolbar.test.js.map +1 -0
- package/lib/components/__tests__/MediaWrapper.test.js +96 -0
- package/lib/components/__tests__/MediaWrapper.test.js.map +1 -0
- package/lib/components/__tests__/MenuBar.test.js +502 -0
- package/lib/components/__tests__/MenuBar.test.js.map +1 -0
- package/lib/components/__tests__/RespArea.test.js +171 -0
- package/lib/components/__tests__/RespArea.test.js.map +1 -0
- package/lib/components/__tests__/TableIcons.test.js +153 -0
- package/lib/components/__tests__/TableIcons.test.js.map +1 -0
- package/lib/components/__tests__/TextAlign.test.js +209 -0
- package/lib/components/__tests__/TextAlign.test.js.map +1 -0
- package/lib/components/__tests__/TiptapContainer.test.js +196 -0
- package/lib/components/__tests__/TiptapContainer.test.js.map +1 -0
- package/lib/components/__tests__/characterUtils.test.js +178 -0
- package/lib/components/__tests__/characterUtils.test.js.map +1 -0
- package/lib/components/__tests__/choice.test.js +213 -0
- package/lib/components/__tests__/choice.test.js.map +1 -0
- package/lib/components/__tests__/custom-popper.test.js +108 -0
- package/lib/components/__tests__/custom-popper.test.js.map +1 -0
- package/lib/components/__tests__/done-button.test.js +72 -0
- package/lib/components/__tests__/done-button.test.js.map +1 -0
- package/lib/components/__tests__/toolbar-buttons.test.js +277 -0
- package/lib/components/__tests__/toolbar-buttons.test.js.map +1 -0
- package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js +90 -0
- package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js.map +1 -0
- package/lib/components/respArea/MathTemplated.js +2 -2
- package/lib/components/respArea/MathTemplated.js.map +1 -1
- package/lib/components/respArea/__tests__/MathTemplated.test.js +217 -0
- package/lib/components/respArea/__tests__/MathTemplated.test.js.map +1 -0
- package/lib/extensions/__tests__/css.test.js +214 -0
- package/lib/extensions/__tests__/css.test.js.map +1 -0
- package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +175 -0
- package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js.map +1 -0
- package/lib/extensions/__tests__/divNode.test.js +108 -0
- package/lib/extensions/__tests__/divNode.test.js.map +1 -0
- package/lib/extensions/__tests__/ensure-empty-root-div.test.js +50 -0
- package/lib/extensions/__tests__/ensure-empty-root-div.test.js.map +1 -0
- package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js +60 -0
- package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js.map +1 -0
- package/lib/extensions/__tests__/extended-list-item.test.js +13 -0
- package/lib/extensions/__tests__/extended-list-item.test.js.map +1 -0
- package/lib/extensions/__tests__/extended-table-cell.test.js +15 -0
- package/lib/extensions/__tests__/extended-table-cell.test.js.map +1 -0
- package/lib/extensions/__tests__/extended-table.test.js +200 -0
- package/lib/extensions/__tests__/extended-table.test.js.map +1 -0
- package/lib/extensions/__tests__/image-component.test.js +432 -0
- package/lib/extensions/__tests__/image-component.test.js.map +1 -0
- package/lib/extensions/__tests__/image.test.js +313 -0
- package/lib/extensions/__tests__/image.test.js.map +1 -0
- package/lib/extensions/__tests__/math.test.js +1399 -0
- package/lib/extensions/__tests__/math.test.js.map +1 -0
- package/lib/extensions/__tests__/media-node-view.test.js +307 -0
- package/lib/extensions/__tests__/media-node-view.test.js.map +1 -0
- package/lib/extensions/__tests__/media.test.js +292 -0
- package/lib/extensions/__tests__/media.test.js.map +1 -0
- package/lib/extensions/__tests__/responseArea.test.js +736 -0
- package/lib/extensions/__tests__/responseArea.test.js.map +1 -0
- package/lib/utils/__tests__/helper.test.js +107 -0
- package/lib/utils/__tests__/helper.test.js.map +1 -0
- package/lib/utils/__tests__/toolbar.test.js +38 -0
- package/lib/utils/__tests__/toolbar.test.js.map +1 -0
- package/package.json +7 -7
- package/src/components/respArea/MathTemplated.jsx +1 -1
- package/src/components/respArea/__tests__/MathTemplated.test.jsx +1 -1
- package/LICENSE.md +0 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.test.js","names":["_css","require","jest","mock","Mark","create","fn","config","mergeAttributes","_len","arguments","length","args","Array","_key","Object","assign","apply","concat","render","describe","it","expect","CSSMark","name","toBe","options","addOptions","toHaveProperty","isArray","classes","toHaveLength","attributes","addAttributes","_typeof2","parseHTML","renderHTML","mockEl","getAttribute","attr","result","toHaveBeenCalledWith","toEqual","beforeEach","rules","getAttrs","HTMLAttributes","commands","addCommands","setCSSClass","unsetCSSClass","openCSSClassDialog","context","call","mockCommands","setMark","unsetMark","mockElements","remove","document","querySelectorAll","removeDialogs","toHaveBeenCalled","not","toThrow"],"sources":["../../../src/extensions/__tests__/css.test.js"],"sourcesContent":["import { CSSMark, removeDialogs } from '../css';\n\njest.mock('@tiptap/core', () => ({\n Mark: { create: jest.fn((config) => config) },\n mergeAttributes: jest.fn((...args) => Object.assign({}, ...args)),\n}));\n\njest.mock('react-dom', () => ({\n render: jest.fn(),\n}));\n\ndescribe('CSSMark', () => {\n describe('configuration', () => {\n it('has correct name', () => {\n expect(CSSMark.name).toBe('cssmark');\n });\n });\n\n describe('addOptions', () => {\n it('returns default options with empty classes array', () => {\n const options = CSSMark.addOptions();\n\n expect(options).toHaveProperty('classes');\n expect(Array.isArray(options.classes)).toBe(true);\n expect(options.classes).toHaveLength(0);\n });\n });\n\n describe('addAttributes', () => {\n it('returns class attribute configuration', () => {\n const attributes = CSSMark.addAttributes();\n\n expect(attributes).toHaveProperty('class');\n expect(attributes.class).toHaveProperty('default', null);\n expect(attributes.class).toHaveProperty('parseHTML');\n expect(attributes.class).toHaveProperty('renderHTML');\n expect(typeof attributes.class.parseHTML).toBe('function');\n expect(typeof attributes.class.renderHTML).toBe('function');\n });\n\n it('parseHTML extracts class attribute', () => {\n const attributes = CSSMark.addAttributes();\n const mockEl = {\n getAttribute: jest.fn((attr) => (attr === 'class' ? 'my-class' : null)),\n };\n\n const result = attributes.class.parseHTML(mockEl);\n\n expect(result).toBe('my-class');\n expect(mockEl.getAttribute).toHaveBeenCalledWith('class');\n });\n\n it('renderHTML returns empty object when no class', () => {\n const attributes = CSSMark.addAttributes();\n const result = attributes.class.renderHTML({ class: null });\n\n expect(result).toEqual({});\n });\n\n it('renderHTML returns class when present', () => {\n const attributes = CSSMark.addAttributes();\n const result = attributes.class.renderHTML({ class: 'my-class' });\n\n expect(result).toEqual({ class: 'my-class' });\n });\n });\n\n describe('parseHTML', () => {\n beforeEach(() => {\n CSSMark.options = { classes: ['allowed-class', 'another-class'] };\n });\n\n it('returns array with span[class] selector', () => {\n const rules = CSSMark.parseHTML();\n\n expect(Array.isArray(rules)).toBe(true);\n expect(rules).toHaveLength(1);\n expect(rules[0]).toHaveProperty('tag', 'span[class]');\n expect(rules[0]).toHaveProperty('getAttrs');\n });\n\n it('matches allowed classes', () => {\n const rules = CSSMark.parseHTML();\n const mockEl = {\n getAttribute: jest.fn(() => 'allowed-class some-other'),\n };\n\n const result = rules[0].getAttrs(mockEl);\n\n expect(result).toEqual({ class: 'allowed-class' });\n });\n\n it('returns false for non-allowed classes', () => {\n const rules = CSSMark.parseHTML();\n const mockEl = {\n getAttribute: jest.fn(() => 'not-allowed'),\n };\n\n const result = rules[0].getAttrs(mockEl);\n\n expect(result).toBe(false);\n });\n\n it('handles empty class attribute', () => {\n const rules = CSSMark.parseHTML();\n const mockEl = {\n getAttribute: jest.fn(() => ''),\n };\n\n const result = rules[0].getAttrs(mockEl);\n\n expect(result).toBe(false);\n });\n });\n\n describe('renderHTML', () => {\n it('returns span with merged attributes', () => {\n const result = CSSMark.renderHTML({\n HTMLAttributes: { class: 'my-class' },\n });\n\n expect(result[0]).toBe('span');\n expect(result[1]).toEqual({ class: 'my-class' });\n expect(result[2]).toBe(0);\n });\n });\n\n describe('addCommands', () => {\n it('returns setCSSClass command', () => {\n const commands = CSSMark.addCommands();\n\n expect(commands).toHaveProperty('setCSSClass');\n expect(typeof commands.setCSSClass).toBe('function');\n });\n\n it('returns unsetCSSClass command', () => {\n const commands = CSSMark.addCommands();\n\n expect(commands).toHaveProperty('unsetCSSClass');\n expect(typeof commands.unsetCSSClass).toBe('function');\n });\n\n it('returns openCSSClassDialog command', () => {\n const commands = CSSMark.addCommands();\n\n expect(commands).toHaveProperty('openCSSClassDialog');\n expect(typeof commands.openCSSClassDialog).toBe('function');\n });\n\n it('setCSSClass sets mark with class name', () => {\n const context = { name: 'cssmark' };\n const commands = CSSMark.addCommands.call(context);\n const mockCommands = {\n setMark: jest.fn(() => true),\n };\n\n const result = commands.setCSSClass('my-class')({ commands: mockCommands });\n\n expect(mockCommands.setMark).toHaveBeenCalledWith('cssmark', { class: 'my-class' });\n expect(result).toBe(true);\n });\n\n it('unsetCSSClass unsets mark', () => {\n const context = { name: 'cssmark' };\n const commands = CSSMark.addCommands.call(context);\n const mockCommands = {\n unsetMark: jest.fn(() => true),\n };\n\n const result = commands.unsetCSSClass()({ commands: mockCommands });\n\n expect(mockCommands.unsetMark).toHaveBeenCalledWith('cssmark');\n expect(result).toBe(true);\n });\n });\n});\n\ndescribe('removeDialogs', () => {\n it('removes all elements with insert-css-dialog class', () => {\n const mockElements = [{ remove: jest.fn() }, { remove: jest.fn() }];\n\n document.querySelectorAll = jest.fn(() => mockElements);\n\n removeDialogs();\n\n expect(document.querySelectorAll).toHaveBeenCalledWith('.insert-css-dialog');\n expect(mockElements[0].remove).toHaveBeenCalled();\n expect(mockElements[1].remove).toHaveBeenCalled();\n });\n\n it('handles no dialogs gracefully', () => {\n document.querySelectorAll = jest.fn(() => []);\n\n expect(() => removeDialogs()).not.toThrow();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
var _react2 = require("@testing-library/react");
|
|
7
|
+
var _customToolbarWrapper = _interopRequireDefault(require("../custom-toolbar-wrapper"));
|
|
8
|
+
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; }
|
|
9
|
+
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; }
|
|
10
|
+
jest.mock('../../components/common/done-button', function () {
|
|
11
|
+
return {
|
|
12
|
+
DoneButton: function DoneButton(_ref) {
|
|
13
|
+
var onClick = _ref.onClick;
|
|
14
|
+
return /*#__PURE__*/_react["default"].createElement("button", {
|
|
15
|
+
"data-testid": "done-button",
|
|
16
|
+
onClick: onClick
|
|
17
|
+
}, "Done");
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
jest.mock('@mui/icons-material/Delete', function () {
|
|
22
|
+
return {
|
|
23
|
+
__esModule: true,
|
|
24
|
+
"default": function _default() {
|
|
25
|
+
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
26
|
+
"data-testid": "delete-icon"
|
|
27
|
+
}, "Delete");
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
describe('CustomToolbarWrapper', function () {
|
|
32
|
+
var mockOnDone = jest.fn();
|
|
33
|
+
var mockOnDelete = jest.fn();
|
|
34
|
+
var defaultToolbarOpts = {
|
|
35
|
+
position: 'bottom',
|
|
36
|
+
alignment: 'left',
|
|
37
|
+
alwaysVisible: false
|
|
38
|
+
};
|
|
39
|
+
beforeEach(function () {
|
|
40
|
+
jest.clearAllMocks();
|
|
41
|
+
});
|
|
42
|
+
it('renders without crashing', function () {
|
|
43
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_customToolbarWrapper["default"], {
|
|
44
|
+
showDone: false,
|
|
45
|
+
toolbarOpts: defaultToolbarOpts
|
|
46
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Test content"))),
|
|
47
|
+
container = _render.container;
|
|
48
|
+
expect(container).toBeInTheDocument();
|
|
49
|
+
});
|
|
50
|
+
it('renders children', function () {
|
|
51
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_customToolbarWrapper["default"], {
|
|
52
|
+
showDone: false,
|
|
53
|
+
toolbarOpts: defaultToolbarOpts
|
|
54
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Test content"))),
|
|
55
|
+
getByText = _render2.getByText;
|
|
56
|
+
expect(getByText('Test content')).toBeInTheDocument();
|
|
57
|
+
});
|
|
58
|
+
it('does not show done button when showDone is false', function () {
|
|
59
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_customToolbarWrapper["default"], {
|
|
60
|
+
showDone: false,
|
|
61
|
+
onDone: mockOnDone,
|
|
62
|
+
toolbarOpts: defaultToolbarOpts
|
|
63
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Test content"))),
|
|
64
|
+
queryByTestId = _render3.queryByTestId;
|
|
65
|
+
expect(queryByTestId('done-button')).not.toBeInTheDocument();
|
|
66
|
+
});
|
|
67
|
+
it('shows done button when showDone is true', function () {
|
|
68
|
+
var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_customToolbarWrapper["default"], {
|
|
69
|
+
showDone: true,
|
|
70
|
+
onDone: mockOnDone,
|
|
71
|
+
toolbarOpts: defaultToolbarOpts
|
|
72
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Test content"))),
|
|
73
|
+
getByTestId = _render4.getByTestId;
|
|
74
|
+
expect(getByTestId('done-button')).toBeInTheDocument();
|
|
75
|
+
});
|
|
76
|
+
it('calls onDone when done button is clicked', function () {
|
|
77
|
+
var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_customToolbarWrapper["default"], {
|
|
78
|
+
showDone: true,
|
|
79
|
+
onDone: mockOnDone,
|
|
80
|
+
toolbarOpts: defaultToolbarOpts
|
|
81
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Test content"))),
|
|
82
|
+
getByTestId = _render5.getByTestId;
|
|
83
|
+
var doneButton = getByTestId('done-button');
|
|
84
|
+
_react2.fireEvent.click(doneButton);
|
|
85
|
+
expect(mockOnDone).toHaveBeenCalledTimes(1);
|
|
86
|
+
});
|
|
87
|
+
it('does not show delete button when deletable is false', function () {
|
|
88
|
+
var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_customToolbarWrapper["default"], {
|
|
89
|
+
deletable: false,
|
|
90
|
+
toolbarOpts: defaultToolbarOpts
|
|
91
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Test content"))),
|
|
92
|
+
queryByTestId = _render6.queryByTestId;
|
|
93
|
+
expect(queryByTestId('delete-icon')).not.toBeInTheDocument();
|
|
94
|
+
});
|
|
95
|
+
it('shows delete button when deletable is true', function () {
|
|
96
|
+
var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_customToolbarWrapper["default"], {
|
|
97
|
+
deletable: true,
|
|
98
|
+
onDelete: mockOnDelete,
|
|
99
|
+
toolbarOpts: defaultToolbarOpts
|
|
100
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Test content"))),
|
|
101
|
+
getByTestId = _render7.getByTestId;
|
|
102
|
+
expect(getByTestId('delete-icon')).toBeInTheDocument();
|
|
103
|
+
});
|
|
104
|
+
it('calls onDelete when delete button is clicked', function () {
|
|
105
|
+
var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_customToolbarWrapper["default"], {
|
|
106
|
+
deletable: true,
|
|
107
|
+
onDelete: mockOnDelete,
|
|
108
|
+
toolbarOpts: defaultToolbarOpts
|
|
109
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Test content"))),
|
|
110
|
+
getByLabelText = _render8.getByLabelText;
|
|
111
|
+
var deleteButton = getByLabelText('Delete');
|
|
112
|
+
_react2.fireEvent.mouseDown(deleteButton);
|
|
113
|
+
expect(mockOnDelete).toHaveBeenCalledTimes(1);
|
|
114
|
+
});
|
|
115
|
+
it('applies right alignment from toolbarOpts', function () {
|
|
116
|
+
var toolbarOpts = _objectSpread(_objectSpread({}, defaultToolbarOpts), {}, {
|
|
117
|
+
alignment: 'right'
|
|
118
|
+
});
|
|
119
|
+
var _render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_customToolbarWrapper["default"], {
|
|
120
|
+
toolbarOpts: toolbarOpts
|
|
121
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Test content"))),
|
|
122
|
+
container = _render9.container;
|
|
123
|
+
var toolbar = container.querySelector('.pie-toolbar');
|
|
124
|
+
expect(toolbar).toHaveStyle({
|
|
125
|
+
right: '0'
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
it('applies autoWidth when specified', function () {
|
|
129
|
+
var _render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_customToolbarWrapper["default"], {
|
|
130
|
+
autoWidth: true,
|
|
131
|
+
toolbarOpts: defaultToolbarOpts
|
|
132
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Test content"))),
|
|
133
|
+
container = _render0.container;
|
|
134
|
+
var toolbar = container.querySelector('.pie-toolbar');
|
|
135
|
+
expect(toolbar).toHaveStyle({
|
|
136
|
+
width: 'auto'
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
it('applies minWidth from toolbarOpts', function () {
|
|
140
|
+
var toolbarOpts = _objectSpread(_objectSpread({}, defaultToolbarOpts), {}, {
|
|
141
|
+
minWidth: '300px'
|
|
142
|
+
});
|
|
143
|
+
var _render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_customToolbarWrapper["default"], {
|
|
144
|
+
toolbarOpts: toolbarOpts
|
|
145
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Test content"))),
|
|
146
|
+
container = _render1.container;
|
|
147
|
+
var toolbar = container.querySelector('.pie-toolbar');
|
|
148
|
+
expect(toolbar).toHaveStyle({
|
|
149
|
+
minWidth: '300px'
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
it('hides toolbar when isHidden is true', function () {
|
|
153
|
+
var toolbarOpts = _objectSpread(_objectSpread({}, defaultToolbarOpts), {}, {
|
|
154
|
+
isHidden: true
|
|
155
|
+
});
|
|
156
|
+
var _render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_customToolbarWrapper["default"], {
|
|
157
|
+
toolbarOpts: toolbarOpts
|
|
158
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Test content"))),
|
|
159
|
+
container = _render10.container;
|
|
160
|
+
var toolbar = container.querySelector('.pie-toolbar');
|
|
161
|
+
expect(toolbar).toHaveStyle({
|
|
162
|
+
visibility: 'hidden'
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
it('renders multiple children', function () {
|
|
166
|
+
var _render11 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_customToolbarWrapper["default"], {
|
|
167
|
+
showDone: false,
|
|
168
|
+
toolbarOpts: defaultToolbarOpts
|
|
169
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "First child"), /*#__PURE__*/_react["default"].createElement("div", null, "Second child"))),
|
|
170
|
+
getByText = _render11.getByText;
|
|
171
|
+
expect(getByText('First child')).toBeInTheDocument();
|
|
172
|
+
expect(getByText('Second child')).toBeInTheDocument();
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
//# sourceMappingURL=custom-toolbar-wrapper.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-toolbar-wrapper.test.js","names":["_react","_interopRequireDefault","require","_react2","_customToolbarWrapper","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","jest","mock","DoneButton","_ref","onClick","createElement","__esModule","default","describe","mockOnDone","fn","mockOnDelete","defaultToolbarOpts","position","alignment","alwaysVisible","beforeEach","clearAllMocks","it","_render","render","showDone","toolbarOpts","container","expect","toBeInTheDocument","_render2","getByText","_render3","onDone","queryByTestId","not","_render4","getByTestId","_render5","doneButton","fireEvent","click","toHaveBeenCalledTimes","_render6","deletable","_render7","onDelete","_render8","getByLabelText","deleteButton","mouseDown","_render9","toolbar","querySelector","toHaveStyle","right","_render0","autoWidth","width","minWidth","_render1","isHidden","_render10","visibility","_render11"],"sources":["../../../src/extensions/__tests__/custom-toolbar-wrapper.test.jsx"],"sourcesContent":["import React from 'react';\nimport { fireEvent, render } from '@testing-library/react';\nimport CustomToolbarWrapper from '../custom-toolbar-wrapper';\n\njest.mock('../../components/common/done-button', () => ({\n DoneButton: ({ onClick }) => (\n <button data-testid=\"done-button\" onClick={onClick}>\n Done\n </button>\n ),\n}));\n\njest.mock('@mui/icons-material/Delete', () => ({\n __esModule: true,\n default: () => <span data-testid=\"delete-icon\">Delete</span>,\n}));\n\ndescribe('CustomToolbarWrapper', () => {\n const mockOnDone = jest.fn();\n const mockOnDelete = jest.fn();\n const defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('renders without crashing', () => {\n const { container } = render(\n <CustomToolbarWrapper showDone={false} toolbarOpts={defaultToolbarOpts}>\n <div>Test content</div>\n </CustomToolbarWrapper>,\n );\n expect(container).toBeInTheDocument();\n });\n\n it('renders children', () => {\n const { getByText } = render(\n <CustomToolbarWrapper showDone={false} toolbarOpts={defaultToolbarOpts}>\n <div>Test content</div>\n </CustomToolbarWrapper>,\n );\n expect(getByText('Test content')).toBeInTheDocument();\n });\n\n it('does not show done button when showDone is false', () => {\n const { queryByTestId } = render(\n <CustomToolbarWrapper showDone={false} onDone={mockOnDone} toolbarOpts={defaultToolbarOpts}>\n <div>Test content</div>\n </CustomToolbarWrapper>,\n );\n expect(queryByTestId('done-button')).not.toBeInTheDocument();\n });\n\n it('shows done button when showDone is true', () => {\n const { getByTestId } = render(\n <CustomToolbarWrapper showDone={true} onDone={mockOnDone} toolbarOpts={defaultToolbarOpts}>\n <div>Test content</div>\n </CustomToolbarWrapper>,\n );\n expect(getByTestId('done-button')).toBeInTheDocument();\n });\n\n it('calls onDone when done button is clicked', () => {\n const { getByTestId } = render(\n <CustomToolbarWrapper showDone={true} onDone={mockOnDone} toolbarOpts={defaultToolbarOpts}>\n <div>Test content</div>\n </CustomToolbarWrapper>,\n );\n\n const doneButton = getByTestId('done-button');\n fireEvent.click(doneButton);\n\n expect(mockOnDone).toHaveBeenCalledTimes(1);\n });\n\n it('does not show delete button when deletable is false', () => {\n const { queryByTestId } = render(\n <CustomToolbarWrapper deletable={false} toolbarOpts={defaultToolbarOpts}>\n <div>Test content</div>\n </CustomToolbarWrapper>,\n );\n expect(queryByTestId('delete-icon')).not.toBeInTheDocument();\n });\n\n it('shows delete button when deletable is true', () => {\n const { getByTestId } = render(\n <CustomToolbarWrapper deletable={true} onDelete={mockOnDelete} toolbarOpts={defaultToolbarOpts}>\n <div>Test content</div>\n </CustomToolbarWrapper>,\n );\n expect(getByTestId('delete-icon')).toBeInTheDocument();\n });\n\n it('calls onDelete when delete button is clicked', () => {\n const { getByLabelText } = render(\n <CustomToolbarWrapper deletable={true} onDelete={mockOnDelete} toolbarOpts={defaultToolbarOpts}>\n <div>Test content</div>\n </CustomToolbarWrapper>,\n );\n\n const deleteButton = getByLabelText('Delete');\n fireEvent.mouseDown(deleteButton);\n\n expect(mockOnDelete).toHaveBeenCalledTimes(1);\n });\n\n it('applies right alignment from toolbarOpts', () => {\n const toolbarOpts = {\n ...defaultToolbarOpts,\n alignment: 'right',\n };\n\n const { container } = render(\n <CustomToolbarWrapper toolbarOpts={toolbarOpts}>\n <div>Test content</div>\n </CustomToolbarWrapper>,\n );\n\n const toolbar = container.querySelector('.pie-toolbar');\n expect(toolbar).toHaveStyle({ right: '0' });\n });\n\n it('applies autoWidth when specified', () => {\n const { container } = render(\n <CustomToolbarWrapper autoWidth={true} toolbarOpts={defaultToolbarOpts}>\n <div>Test content</div>\n </CustomToolbarWrapper>,\n );\n\n const toolbar = container.querySelector('.pie-toolbar');\n expect(toolbar).toHaveStyle({ width: 'auto' });\n });\n\n it('applies minWidth from toolbarOpts', () => {\n const toolbarOpts = {\n ...defaultToolbarOpts,\n minWidth: '300px',\n };\n\n const { container } = render(\n <CustomToolbarWrapper toolbarOpts={toolbarOpts}>\n <div>Test content</div>\n </CustomToolbarWrapper>,\n );\n\n const toolbar = container.querySelector('.pie-toolbar');\n expect(toolbar).toHaveStyle({ minWidth: '300px' });\n });\n\n it('hides toolbar when isHidden is true', () => {\n const toolbarOpts = {\n ...defaultToolbarOpts,\n isHidden: true,\n };\n\n const { container } = render(\n <CustomToolbarWrapper toolbarOpts={toolbarOpts}>\n <div>Test content</div>\n </CustomToolbarWrapper>,\n );\n\n const toolbar = container.querySelector('.pie-toolbar');\n expect(toolbar).toHaveStyle({ visibility: 'hidden' });\n });\n\n it('renders multiple children', () => {\n const { getByText } = render(\n <CustomToolbarWrapper showDone={false} toolbarOpts={defaultToolbarOpts}>\n <div>First child</div>\n <div>Second child</div>\n </CustomToolbarWrapper>,\n );\n expect(getByText('First child')).toBeInTheDocument();\n expect(getByText('Second child')).toBeInTheDocument();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _divNode = require("../div-node");
|
|
4
|
+
jest.mock('@tiptap/core', function () {
|
|
5
|
+
return {
|
|
6
|
+
Node: {
|
|
7
|
+
create: jest.fn(function (config) {
|
|
8
|
+
return config;
|
|
9
|
+
})
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
});
|
|
13
|
+
describe('DivNode', function () {
|
|
14
|
+
describe('configuration', function () {
|
|
15
|
+
it('has correct name', function () {
|
|
16
|
+
expect(_divNode.DivNode.name).toBe('div');
|
|
17
|
+
});
|
|
18
|
+
it('is block level', function () {
|
|
19
|
+
expect(_divNode.DivNode.group).toBe('block');
|
|
20
|
+
expect(_divNode.DivNode.content).toBe('inline*');
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe('parseHTML', function () {
|
|
24
|
+
it('parses <div> tags', function () {
|
|
25
|
+
var rules = _divNode.DivNode.parseHTML();
|
|
26
|
+
expect(Array.isArray(rules)).toBe(true);
|
|
27
|
+
expect(rules).toHaveLength(1);
|
|
28
|
+
expect(rules[0]).toHaveProperty('tag', 'div');
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
describe('renderHTML', function () {
|
|
32
|
+
it('renders a <div> tag', function () {
|
|
33
|
+
var result = _divNode.DivNode.renderHTML({
|
|
34
|
+
HTMLAttributes: {
|
|
35
|
+
"class": 'foo'
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
expect(result[0]).toBe('div');
|
|
39
|
+
expect(result[1]).toEqual({
|
|
40
|
+
"class": 'foo'
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
describe('addKeyboardShortcuts', function () {
|
|
45
|
+
it('does nothing when current block is not div', function () {
|
|
46
|
+
var mockEditor = {
|
|
47
|
+
state: {
|
|
48
|
+
selection: {
|
|
49
|
+
$from: {
|
|
50
|
+
parent: {
|
|
51
|
+
type: {
|
|
52
|
+
name: 'paragraph'
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
var shortcuts = _divNode.DivNode.addKeyboardShortcuts.call({
|
|
60
|
+
editor: mockEditor
|
|
61
|
+
});
|
|
62
|
+
var handled = shortcuts.Enter();
|
|
63
|
+
expect(handled).toBe(false);
|
|
64
|
+
});
|
|
65
|
+
it('turns div into paragraph and splits when Enter is pressed in a div', function () {
|
|
66
|
+
var _chain = {
|
|
67
|
+
focus: jest.fn(function () {
|
|
68
|
+
return _chain;
|
|
69
|
+
}),
|
|
70
|
+
setNode: jest.fn(function () {
|
|
71
|
+
return _chain;
|
|
72
|
+
}),
|
|
73
|
+
splitBlock: jest.fn(function () {
|
|
74
|
+
return _chain;
|
|
75
|
+
}),
|
|
76
|
+
run: jest.fn(function () {
|
|
77
|
+
return true;
|
|
78
|
+
})
|
|
79
|
+
};
|
|
80
|
+
var mockEditor = {
|
|
81
|
+
state: {
|
|
82
|
+
selection: {
|
|
83
|
+
$from: {
|
|
84
|
+
parent: {
|
|
85
|
+
type: {
|
|
86
|
+
name: 'div'
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
chain: function chain() {
|
|
93
|
+
return _chain;
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
var shortcuts = _divNode.DivNode.addKeyboardShortcuts.call({
|
|
97
|
+
editor: mockEditor
|
|
98
|
+
});
|
|
99
|
+
var handled = shortcuts.Enter();
|
|
100
|
+
expect(_chain.focus).toHaveBeenCalled();
|
|
101
|
+
expect(_chain.setNode).toHaveBeenCalledWith('paragraph');
|
|
102
|
+
expect(_chain.splitBlock).toHaveBeenCalled();
|
|
103
|
+
expect(_chain.run).toHaveBeenCalled();
|
|
104
|
+
expect(handled).toBe(true);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
//# sourceMappingURL=divNode.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"divNode.test.js","names":["_divNode","require","jest","mock","Node","create","fn","config","describe","it","expect","DivNode","name","toBe","group","content","rules","parseHTML","Array","isArray","toHaveLength","toHaveProperty","result","renderHTML","HTMLAttributes","toEqual","mockEditor","state","selection","$from","parent","type","shortcuts","addKeyboardShortcuts","call","editor","handled","Enter","chain","focus","setNode","splitBlock","run","toHaveBeenCalled","toHaveBeenCalledWith"],"sources":["../../../src/extensions/__tests__/divNode.test.js"],"sourcesContent":["import { DivNode } from '../div-node';\n\njest.mock('@tiptap/core', () => ({\n Node: {\n create: jest.fn((config) => config),\n },\n}));\n\ndescribe('DivNode', () => {\n describe('configuration', () => {\n it('has correct name', () => {\n expect(DivNode.name).toBe('div');\n });\n\n it('is block level', () => {\n expect(DivNode.group).toBe('block');\n expect(DivNode.content).toBe('inline*');\n });\n });\n\n describe('parseHTML', () => {\n it('parses <div> tags', () => {\n const rules = DivNode.parseHTML();\n\n expect(Array.isArray(rules)).toBe(true);\n expect(rules).toHaveLength(1);\n expect(rules[0]).toHaveProperty('tag', 'div');\n });\n });\n\n describe('renderHTML', () => {\n it('renders a <div> tag', () => {\n const result = DivNode.renderHTML({ HTMLAttributes: { class: 'foo' } });\n\n expect(result[0]).toBe('div');\n expect(result[1]).toEqual({ class: 'foo' });\n });\n });\n\n describe('addKeyboardShortcuts', () => {\n it('does nothing when current block is not div', () => {\n const mockEditor = {\n state: {\n selection: {\n $from: {\n parent: { type: { name: 'paragraph' } },\n },\n },\n },\n };\n\n const shortcuts = DivNode.addKeyboardShortcuts.call({ editor: mockEditor });\n const handled = shortcuts.Enter();\n\n expect(handled).toBe(false);\n });\n\n it('turns div into paragraph and splits when Enter is pressed in a div', () => {\n const chain = {\n focus: jest.fn(() => chain),\n setNode: jest.fn(() => chain),\n splitBlock: jest.fn(() => chain),\n run: jest.fn(() => true),\n };\n\n const mockEditor = {\n state: {\n selection: {\n $from: {\n parent: { type: { name: 'div' } },\n },\n },\n },\n chain: () => chain,\n };\n\n const shortcuts = DivNode.addKeyboardShortcuts.call({ editor: mockEditor });\n const handled = shortcuts.Enter();\n\n expect(chain.focus).toHaveBeenCalled();\n expect(chain.setNode).toHaveBeenCalledWith('paragraph');\n expect(chain.splitBlock).toHaveBeenCalled();\n expect(chain.run).toHaveBeenCalled();\n expect(handled).toBe(true);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _core = require("@tiptap/core");
|
|
5
|
+
var _starterKit = _interopRequireDefault(require("@tiptap/starter-kit"));
|
|
6
|
+
var _divNode = require("../div-node");
|
|
7
|
+
var _ensureEmptyRootDiv = require("../ensure-empty-root-div");
|
|
8
|
+
/** Match EditableHtml so TrailingNode does not add a second empty block next to an empty paragraph. */
|
|
9
|
+
var starterKitConfigured = _starterKit["default"].configure({
|
|
10
|
+
trailingNode: {
|
|
11
|
+
node: 'paragraph',
|
|
12
|
+
notAfter: ['paragraph', 'div']
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
describe('EnsureEmptyRootIsDiv', function () {
|
|
16
|
+
var extensions = [starterKitConfigured, _divNode.DivNode, _ensureEmptyRootDiv.EnsureEmptyRootIsDiv];
|
|
17
|
+
var editor;
|
|
18
|
+
afterEach(function () {
|
|
19
|
+
if (editor) {
|
|
20
|
+
editor.destroy();
|
|
21
|
+
editor = null;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
it('replaces a lone root paragraph with an empty div after select-all and delete (full delete flow)', function () {
|
|
25
|
+
editor = new _core.Editor({
|
|
26
|
+
extensions: extensions,
|
|
27
|
+
content: '<p>hello</p>'
|
|
28
|
+
});
|
|
29
|
+
editor.chain().focus().selectAll().deleteSelection().run();
|
|
30
|
+
expect(editor.state.doc.childCount).toBe(1);
|
|
31
|
+
expect(editor.state.doc.firstChild.type.name).toBe('div');
|
|
32
|
+
expect(editor.state.doc.firstChild.textContent).toBe('');
|
|
33
|
+
});
|
|
34
|
+
it('does not replace a root paragraph that still has text', function () {
|
|
35
|
+
editor = new _core.Editor({
|
|
36
|
+
extensions: extensions,
|
|
37
|
+
content: '<p>x</p>'
|
|
38
|
+
});
|
|
39
|
+
expect(editor.state.doc.firstChild.type.name).toBe('paragraph');
|
|
40
|
+
});
|
|
41
|
+
it('does not run when there is more than one top-level block', function () {
|
|
42
|
+
editor = new _core.Editor({
|
|
43
|
+
extensions: extensions,
|
|
44
|
+
content: '<p>a</p><p>b</p>'
|
|
45
|
+
});
|
|
46
|
+
expect(editor.state.doc.childCount).toBe(2);
|
|
47
|
+
expect(editor.state.doc.firstChild.type.name).toBe('paragraph');
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=ensure-empty-root-div.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-empty-root-div.test.js","names":["_core","require","_starterKit","_interopRequireDefault","_divNode","_ensureEmptyRootDiv","starterKitConfigured","StarterKit","configure","trailingNode","node","notAfter","describe","extensions","DivNode","EnsureEmptyRootIsDiv","editor","afterEach","destroy","it","Editor","content","chain","focus","selectAll","deleteSelection","run","expect","state","doc","childCount","toBe","firstChild","type","name","textContent"],"sources":["../../../src/extensions/__tests__/ensure-empty-root-div.test.js"],"sourcesContent":["import { Editor } from '@tiptap/core';\nimport StarterKit from '@tiptap/starter-kit';\nimport { DivNode } from '../div-node';\nimport { EnsureEmptyRootIsDiv } from '../ensure-empty-root-div';\n\n/** Match EditableHtml so TrailingNode does not add a second empty block next to an empty paragraph. */\nconst starterKitConfigured = StarterKit.configure({\n trailingNode: {\n node: 'paragraph',\n notAfter: ['paragraph', 'div'],\n },\n});\n\ndescribe('EnsureEmptyRootIsDiv', () => {\n const extensions = [starterKitConfigured, DivNode, EnsureEmptyRootIsDiv];\n\n let editor;\n\n afterEach(() => {\n if (editor) {\n editor.destroy();\n editor = null;\n }\n });\n\n it('replaces a lone root paragraph with an empty div after select-all and delete (full delete flow)', () => {\n editor = new Editor({\n extensions,\n content: '<p>hello</p>',\n });\n\n editor.chain().focus().selectAll().deleteSelection().run();\n\n expect(editor.state.doc.childCount).toBe(1);\n expect(editor.state.doc.firstChild.type.name).toBe('div');\n expect(editor.state.doc.firstChild.textContent).toBe('');\n });\n\n it('does not replace a root paragraph that still has text', () => {\n editor = new Editor({\n extensions,\n content: '<p>x</p>',\n });\n\n expect(editor.state.doc.firstChild.type.name).toBe('paragraph');\n });\n\n it('does not run when there is more than one top-level block', () => {\n editor = new Editor({\n extensions,\n content: '<p>a</p><p>b</p>',\n });\n\n expect(editor.state.doc.childCount).toBe(2);\n expect(editor.state.doc.firstChild.type.name).toBe('paragraph');\n });\n});\n"],"mappings":";;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AAEA;AACA,IAAMK,oBAAoB,GAAGC,sBAAU,CAACC,SAAS,CAAC;EAChDC,YAAY,EAAE;IACZC,IAAI,EAAE,WAAW;IACjBC,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK;EAC/B;AACF,CAAC,CAAC;AAEFC,QAAQ,CAAC,sBAAsB,EAAE,YAAM;EACrC,IAAMC,UAAU,GAAG,CAACP,oBAAoB,EAAEQ,gBAAO,EAAEC,wCAAoB,CAAC;EAExE,IAAIC,MAAM;EAEVC,SAAS,CAAC,YAAM;IACd,IAAID,MAAM,EAAE;MACVA,MAAM,CAACE,OAAO,CAAC,CAAC;MAChBF,MAAM,GAAG,IAAI;IACf;EACF,CAAC,CAAC;EAEFG,EAAE,CAAC,iGAAiG,EAAE,YAAM;IAC1GH,MAAM,GAAG,IAAII,YAAM,CAAC;MAClBP,UAAU,EAAVA,UAAU;MACVQ,OAAO,EAAE;IACX,CAAC,CAAC;IAEFL,MAAM,CAACM,KAAK,CAAC,CAAC,CAACC,KAAK,CAAC,CAAC,CAACC,SAAS,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC;IAE1DC,MAAM,CAACX,MAAM,CAACY,KAAK,CAACC,GAAG,CAACC,UAAU,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;IAC3CJ,MAAM,CAACX,MAAM,CAACY,KAAK,CAACC,GAAG,CAACG,UAAU,CAACC,IAAI,CAACC,IAAI,CAAC,CAACH,IAAI,CAAC,KAAK,CAAC;IACzDJ,MAAM,CAACX,MAAM,CAACY,KAAK,CAACC,GAAG,CAACG,UAAU,CAACG,WAAW,CAAC,CAACJ,IAAI,CAAC,EAAE,CAAC;EAC1D,CAAC,CAAC;EAEFZ,EAAE,CAAC,uDAAuD,EAAE,YAAM;IAChEH,MAAM,GAAG,IAAII,YAAM,CAAC;MAClBP,UAAU,EAAVA,UAAU;MACVQ,OAAO,EAAE;IACX,CAAC,CAAC;IAEFM,MAAM,CAACX,MAAM,CAACY,KAAK,CAACC,GAAG,CAACG,UAAU,CAACC,IAAI,CAACC,IAAI,CAAC,CAACH,IAAI,CAAC,WAAW,CAAC;EACjE,CAAC,CAAC;EAEFZ,EAAE,CAAC,0DAA0D,EAAE,YAAM;IACnEH,MAAM,GAAG,IAAII,YAAM,CAAC;MAClBP,UAAU,EAAVA,UAAU;MACVQ,OAAO,EAAE;IACX,CAAC,CAAC;IAEFM,MAAM,CAACX,MAAM,CAACY,KAAK,CAACC,GAAG,CAACC,UAAU,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;IAC3CJ,MAAM,CAACX,MAAM,CAACY,KAAK,CAACC,GAAG,CAACG,UAAU,CAACC,IAAI,CAACC,IAAI,CAAC,CAACH,IAAI,CAAC,WAAW,CAAC;EACjE,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _ensureListItemContentIsDiv = require("../ensure-list-item-content-is-div");
|
|
4
|
+
describe('EnsureListItemContentIsDiv', function () {
|
|
5
|
+
it('registers a ProseMirror plugin that rewrites listItem paragraph children to div', function () {
|
|
6
|
+
var plugins = _ensureListItemContentIsDiv.EnsureListItemContentIsDiv.config.addProseMirrorPlugins();
|
|
7
|
+
expect(Array.isArray(plugins)).toBe(true);
|
|
8
|
+
expect(plugins).toHaveLength(1);
|
|
9
|
+
var plugin = plugins[0];
|
|
10
|
+
var divType = {
|
|
11
|
+
name: 'div'
|
|
12
|
+
};
|
|
13
|
+
var tr = {
|
|
14
|
+
setNodeMarkup: jest.fn()
|
|
15
|
+
};
|
|
16
|
+
var paragraphChild = {
|
|
17
|
+
type: {
|
|
18
|
+
name: 'paragraph'
|
|
19
|
+
},
|
|
20
|
+
attrs: {
|
|
21
|
+
"class": 'x'
|
|
22
|
+
},
|
|
23
|
+
nodeSize: 6
|
|
24
|
+
};
|
|
25
|
+
var listItemNode = {
|
|
26
|
+
type: {
|
|
27
|
+
name: 'listItem'
|
|
28
|
+
},
|
|
29
|
+
forEach: function forEach(cb) {
|
|
30
|
+
return cb(paragraphChild);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
var newState = {
|
|
34
|
+
schema: {
|
|
35
|
+
nodes: {
|
|
36
|
+
div: divType
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
tr: tr,
|
|
40
|
+
doc: {
|
|
41
|
+
descendants: function descendants(cb) {
|
|
42
|
+
return cb(listItemNode, 10);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
var result = plugin.spec.appendTransaction([{
|
|
47
|
+
docChanged: true
|
|
48
|
+
}], {}, newState);
|
|
49
|
+
expect(tr.setNodeMarkup).toHaveBeenCalledWith(11, divType, paragraphChild.attrs);
|
|
50
|
+
expect(result).toBe(tr);
|
|
51
|
+
});
|
|
52
|
+
it('returns null when there is no document change', function () {
|
|
53
|
+
var plugin = _ensureListItemContentIsDiv.EnsureListItemContentIsDiv.config.addProseMirrorPlugins()[0];
|
|
54
|
+
var result = plugin.spec.appendTransaction([{
|
|
55
|
+
docChanged: false
|
|
56
|
+
}], {}, {});
|
|
57
|
+
expect(result).toBeNull();
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
//# sourceMappingURL=ensure-list-item-content-is-div.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-list-item-content-is-div.test.js","names":["_ensureListItemContentIsDiv","require","describe","it","plugins","EnsureListItemContentIsDiv","config","addProseMirrorPlugins","expect","Array","isArray","toBe","toHaveLength","plugin","divType","name","tr","setNodeMarkup","jest","fn","paragraphChild","type","attrs","nodeSize","listItemNode","forEach","cb","newState","schema","nodes","div","doc","descendants","result","spec","appendTransaction","docChanged","toHaveBeenCalledWith","toBeNull"],"sources":["../../../src/extensions/__tests__/ensure-list-item-content-is-div.test.js"],"sourcesContent":["import { EnsureListItemContentIsDiv } from '../ensure-list-item-content-is-div';\n\ndescribe('EnsureListItemContentIsDiv', () => {\n it('registers a ProseMirror plugin that rewrites listItem paragraph children to div', () => {\n const plugins = EnsureListItemContentIsDiv.config.addProseMirrorPlugins();\n expect(Array.isArray(plugins)).toBe(true);\n expect(plugins).toHaveLength(1);\n\n const plugin = plugins[0];\n const divType = { name: 'div' };\n const tr = { setNodeMarkup: jest.fn() };\n\n const paragraphChild = {\n type: { name: 'paragraph' },\n attrs: { class: 'x' },\n nodeSize: 6,\n };\n\n const listItemNode = {\n type: { name: 'listItem' },\n forEach: (cb) => cb(paragraphChild),\n };\n\n const newState = {\n schema: { nodes: { div: divType } },\n tr,\n doc: {\n descendants: (cb) => cb(listItemNode, 10),\n },\n };\n\n const result = plugin.spec.appendTransaction([{ docChanged: true }], {}, newState);\n\n expect(tr.setNodeMarkup).toHaveBeenCalledWith(11, divType, paragraphChild.attrs);\n expect(result).toBe(tr);\n });\n\n it('returns null when there is no document change', () => {\n const plugin = EnsureListItemContentIsDiv.config.addProseMirrorPlugins()[0];\n\n const result = plugin.spec.appendTransaction([{ docChanged: false }], {}, {});\n expect(result).toBeNull();\n });\n});\n"],"mappings":";;AAAA,IAAAA,2BAAA,GAAAC,OAAA;AAEAC,QAAQ,CAAC,4BAA4B,EAAE,YAAM;EAC3CC,EAAE,CAAC,iFAAiF,EAAE,YAAM;IAC1F,IAAMC,OAAO,GAAGC,sDAA0B,CAACC,MAAM,CAACC,qBAAqB,CAAC,CAAC;IACzEC,MAAM,CAACC,KAAK,CAACC,OAAO,CAACN,OAAO,CAAC,CAAC,CAACO,IAAI,CAAC,IAAI,CAAC;IACzCH,MAAM,CAACJ,OAAO,CAAC,CAACQ,YAAY,CAAC,CAAC,CAAC;IAE/B,IAAMC,MAAM,GAAGT,OAAO,CAAC,CAAC,CAAC;IACzB,IAAMU,OAAO,GAAG;MAAEC,IAAI,EAAE;IAAM,CAAC;IAC/B,IAAMC,EAAE,GAAG;MAAEC,aAAa,EAAEC,IAAI,CAACC,EAAE,CAAC;IAAE,CAAC;IAEvC,IAAMC,cAAc,GAAG;MACrBC,IAAI,EAAE;QAAEN,IAAI,EAAE;MAAY,CAAC;MAC3BO,KAAK,EAAE;QAAE,SAAO;MAAI,CAAC;MACrBC,QAAQ,EAAE;IACZ,CAAC;IAED,IAAMC,YAAY,GAAG;MACnBH,IAAI,EAAE;QAAEN,IAAI,EAAE;MAAW,CAAC;MAC1BU,OAAO,EAAE,SAATA,OAAOA,CAAGC,EAAE;QAAA,OAAKA,EAAE,CAACN,cAAc,CAAC;MAAA;IACrC,CAAC;IAED,IAAMO,QAAQ,GAAG;MACfC,MAAM,EAAE;QAAEC,KAAK,EAAE;UAAEC,GAAG,EAAEhB;QAAQ;MAAE,CAAC;MACnCE,EAAE,EAAFA,EAAE;MACFe,GAAG,EAAE;QACHC,WAAW,EAAE,SAAbA,WAAWA,CAAGN,EAAE;UAAA,OAAKA,EAAE,CAACF,YAAY,EAAE,EAAE,CAAC;QAAA;MAC3C;IACF,CAAC;IAED,IAAMS,MAAM,GAAGpB,MAAM,CAACqB,IAAI,CAACC,iBAAiB,CAAC,CAAC;MAAEC,UAAU,EAAE;IAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAET,QAAQ,CAAC;IAElFnB,MAAM,CAACQ,EAAE,CAACC,aAAa,CAAC,CAACoB,oBAAoB,CAAC,EAAE,EAAEvB,OAAO,EAAEM,cAAc,CAACE,KAAK,CAAC;IAChFd,MAAM,CAACyB,MAAM,CAAC,CAACtB,IAAI,CAACK,EAAE,CAAC;EACzB,CAAC,CAAC;EAEFb,EAAE,CAAC,+CAA+C,EAAE,YAAM;IACxD,IAAMU,MAAM,GAAGR,sDAA0B,CAACC,MAAM,CAACC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3E,IAAM0B,MAAM,GAAGpB,MAAM,CAACqB,IAAI,CAACC,iBAAiB,CAAC,CAAC;MAAEC,UAAU,EAAE;IAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E5B,MAAM,CAACyB,MAAM,CAAC,CAACK,QAAQ,CAAC,CAAC;EAC3B,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _extendedListItem = require("../extended-list-item");
|
|
4
|
+
describe('ExtendedListItem', function () {
|
|
5
|
+
it('extends listItem and prefers div over paragraph in content spec', function () {
|
|
6
|
+
var _ref, _ExtendedListItem$opt, _ExtendedListItem$opt2, _ExtendedListItem$con, _ExtendedListItem$ext;
|
|
7
|
+
expect(_extendedListItem.ExtendedListItem.name).toBe('listItem');
|
|
8
|
+
var content = (_ref = (_ExtendedListItem$opt = (_ExtendedListItem$opt2 = _extendedListItem.ExtendedListItem.options) === null || _ExtendedListItem$opt2 === void 0 ? void 0 : _ExtendedListItem$opt2.content) !== null && _ExtendedListItem$opt !== void 0 ? _ExtendedListItem$opt : (_ExtendedListItem$con = _extendedListItem.ExtendedListItem.config) === null || _ExtendedListItem$con === void 0 ? void 0 : _ExtendedListItem$con.content) !== null && _ref !== void 0 ? _ref : (_ExtendedListItem$ext = _extendedListItem.ExtendedListItem.extendOptions) === null || _ExtendedListItem$ext === void 0 ? void 0 : _ExtendedListItem$ext.content;
|
|
9
|
+
expect(String(content)).toMatch(/^\(div \| paragraph/);
|
|
10
|
+
expect(String(content)).toContain('imageUploadNode');
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=extended-list-item.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extended-list-item.test.js","names":["_extendedListItem","require","describe","it","_ref","_ExtendedListItem$opt","_ExtendedListItem$opt2","_ExtendedListItem$con","_ExtendedListItem$ext","expect","ExtendedListItem","name","toBe","content","options","config","extendOptions","String","toMatch","toContain"],"sources":["../../../src/extensions/__tests__/extended-list-item.test.js"],"sourcesContent":["import { ExtendedListItem } from '../extended-list-item';\n\ndescribe('ExtendedListItem', () => {\n it('extends listItem and prefers div over paragraph in content spec', () => {\n expect(ExtendedListItem.name).toBe('listItem');\n\n const content =\n ExtendedListItem.options?.content ?? ExtendedListItem.config?.content ?? ExtendedListItem.extendOptions?.content;\n\n expect(String(content)).toMatch(/^\\(div \\| paragraph/);\n expect(String(content)).toContain('imageUploadNode');\n });\n});\n"],"mappings":";;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AAEAC,QAAQ,CAAC,kBAAkB,EAAE,YAAM;EACjCC,EAAE,CAAC,iEAAiE,EAAE,YAAM;IAAA,IAAAC,IAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,qBAAA,EAAAC,qBAAA;IAC1EC,MAAM,CAACC,kCAAgB,CAACC,IAAI,CAAC,CAACC,IAAI,CAAC,UAAU,CAAC;IAE9C,IAAMC,OAAO,IAAAT,IAAA,IAAAC,qBAAA,IAAAC,sBAAA,GACXI,kCAAgB,CAACI,OAAO,cAAAR,sBAAA,uBAAxBA,sBAAA,CAA0BO,OAAO,cAAAR,qBAAA,cAAAA,qBAAA,IAAAE,qBAAA,GAAIG,kCAAgB,CAACK,MAAM,cAAAR,qBAAA,uBAAvBA,qBAAA,CAAyBM,OAAO,cAAAT,IAAA,cAAAA,IAAA,IAAAI,qBAAA,GAAIE,kCAAgB,CAACM,aAAa,cAAAR,qBAAA,uBAA9BA,qBAAA,CAAgCK,OAAO;IAElHJ,MAAM,CAACQ,MAAM,CAACJ,OAAO,CAAC,CAAC,CAACK,OAAO,CAAC,qBAAqB,CAAC;IACtDT,MAAM,CAACQ,MAAM,CAACJ,OAAO,CAAC,CAAC,CAACM,SAAS,CAAC,iBAAiB,CAAC;EACtD,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _extendedTableCell = require("../extended-table-cell");
|
|
4
|
+
describe('ExtendedTableCell / ExtendedTableHeader', function () {
|
|
5
|
+
it('exports cell and header extensions with div preferred over paragraph in content spec', function () {
|
|
6
|
+
var _ref, _ExtendedTableCell$op, _ExtendedTableCell$op2, _ExtendedTableCell$co, _ExtendedTableCell$ex, _ref2, _ExtendedTableHeader$, _ExtendedTableHeader$2, _ExtendedTableHeader$3, _ExtendedTableHeader$4;
|
|
7
|
+
expect(_extendedTableCell.ExtendedTableCell.name).toBe('tableCell');
|
|
8
|
+
expect(_extendedTableCell.ExtendedTableHeader.name).toBe('tableHeader');
|
|
9
|
+
var cellContent = (_ref = (_ExtendedTableCell$op = (_ExtendedTableCell$op2 = _extendedTableCell.ExtendedTableCell.options) === null || _ExtendedTableCell$op2 === void 0 ? void 0 : _ExtendedTableCell$op2.content) !== null && _ExtendedTableCell$op !== void 0 ? _ExtendedTableCell$op : (_ExtendedTableCell$co = _extendedTableCell.ExtendedTableCell.config) === null || _ExtendedTableCell$co === void 0 ? void 0 : _ExtendedTableCell$co.content) !== null && _ref !== void 0 ? _ref : (_ExtendedTableCell$ex = _extendedTableCell.ExtendedTableCell.extendOptions) === null || _ExtendedTableCell$ex === void 0 ? void 0 : _ExtendedTableCell$ex.content;
|
|
10
|
+
expect(String(cellContent)).toMatch(/^\(div \| paragraph/);
|
|
11
|
+
var headerContent = (_ref2 = (_ExtendedTableHeader$ = (_ExtendedTableHeader$2 = _extendedTableCell.ExtendedTableHeader.options) === null || _ExtendedTableHeader$2 === void 0 ? void 0 : _ExtendedTableHeader$2.content) !== null && _ExtendedTableHeader$ !== void 0 ? _ExtendedTableHeader$ : (_ExtendedTableHeader$3 = _extendedTableCell.ExtendedTableHeader.config) === null || _ExtendedTableHeader$3 === void 0 ? void 0 : _ExtendedTableHeader$3.content) !== null && _ref2 !== void 0 ? _ref2 : (_ExtendedTableHeader$4 = _extendedTableCell.ExtendedTableHeader.extendOptions) === null || _ExtendedTableHeader$4 === void 0 ? void 0 : _ExtendedTableHeader$4.content;
|
|
12
|
+
expect(headerContent).toBe(cellContent);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=extended-table-cell.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extended-table-cell.test.js","names":["_extendedTableCell","require","describe","it","_ref","_ExtendedTableCell$op","_ExtendedTableCell$op2","_ExtendedTableCell$co","_ExtendedTableCell$ex","_ref2","_ExtendedTableHeader$","_ExtendedTableHeader$2","_ExtendedTableHeader$3","_ExtendedTableHeader$4","expect","ExtendedTableCell","name","toBe","ExtendedTableHeader","cellContent","options","content","config","extendOptions","String","toMatch","headerContent"],"sources":["../../../src/extensions/__tests__/extended-table-cell.test.js"],"sourcesContent":["import { ExtendedTableCell, ExtendedTableHeader } from '../extended-table-cell';\n\ndescribe('ExtendedTableCell / ExtendedTableHeader', () => {\n it('exports cell and header extensions with div preferred over paragraph in content spec', () => {\n expect(ExtendedTableCell.name).toBe('tableCell');\n expect(ExtendedTableHeader.name).toBe('tableHeader');\n\n const cellContent =\n ExtendedTableCell.options?.content ??\n ExtendedTableCell.config?.content ??\n ExtendedTableCell.extendOptions?.content;\n\n expect(String(cellContent)).toMatch(/^\\(div \\| paragraph/);\n\n const headerContent =\n ExtendedTableHeader.options?.content ??\n ExtendedTableHeader.config?.content ??\n ExtendedTableHeader.extendOptions?.content;\n\n expect(headerContent).toBe(cellContent);\n });\n});\n"],"mappings":";;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAEAC,QAAQ,CAAC,yCAAyC,EAAE,YAAM;EACxDC,EAAE,CAAC,sFAAsF,EAAE,YAAM;IAAA,IAAAC,IAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,KAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAC/FC,MAAM,CAACC,oCAAiB,CAACC,IAAI,CAAC,CAACC,IAAI,CAAC,WAAW,CAAC;IAChDH,MAAM,CAACI,sCAAmB,CAACF,IAAI,CAAC,CAACC,IAAI,CAAC,aAAa,CAAC;IAEpD,IAAME,WAAW,IAAAf,IAAA,IAAAC,qBAAA,IAAAC,sBAAA,GACfS,oCAAiB,CAACK,OAAO,cAAAd,sBAAA,uBAAzBA,sBAAA,CAA2Be,OAAO,cAAAhB,qBAAA,cAAAA,qBAAA,IAAAE,qBAAA,GAClCQ,oCAAiB,CAACO,MAAM,cAAAf,qBAAA,uBAAxBA,qBAAA,CAA0Bc,OAAO,cAAAjB,IAAA,cAAAA,IAAA,IAAAI,qBAAA,GACjCO,oCAAiB,CAACQ,aAAa,cAAAf,qBAAA,uBAA/BA,qBAAA,CAAiCa,OAAO;IAE1CP,MAAM,CAACU,MAAM,CAACL,WAAW,CAAC,CAAC,CAACM,OAAO,CAAC,qBAAqB,CAAC;IAE1D,IAAMC,aAAa,IAAAjB,KAAA,IAAAC,qBAAA,IAAAC,sBAAA,GACjBO,sCAAmB,CAACE,OAAO,cAAAT,sBAAA,uBAA3BA,sBAAA,CAA6BU,OAAO,cAAAX,qBAAA,cAAAA,qBAAA,IAAAE,sBAAA,GACpCM,sCAAmB,CAACI,MAAM,cAAAV,sBAAA,uBAA1BA,sBAAA,CAA4BS,OAAO,cAAAZ,KAAA,cAAAA,KAAA,IAAAI,sBAAA,GACnCK,sCAAmB,CAACK,aAAa,cAAAV,sBAAA,uBAAjCA,sBAAA,CAAmCQ,OAAO;IAE5CP,MAAM,CAACY,aAAa,CAAC,CAACT,IAAI,CAACE,WAAW,CAAC;EACzC,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|