@pie-lib/editable-html-tip-tap 2.1.11 → 2.2.0-beta.1
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":"AltDialog.test.js","names":["_react","_interopRequireDefault","require","_react2","_AltDialog","jest","mock","__esModule","default","_ref","children","open","id","createElement","_ref2","_ref3","_ref4","onClick","_ref5","value","onChange","placeholder","helperText","FormHelperTextProps","multiline","className","style","describe","defaultProps","onDone","fn","alt","beforeEach","clearAllMocks","document","body","innerHTML","it","_render","render","AltDialog","container","expect","toBeInTheDocument","_render2","textarea","querySelector","toBe","_render3","_extends2","getByPlaceholderText","_render4","getByText","_render5","_render6","getByTestId","_render7","fireEvent","change","target","mockQuerySelectorAll","spyOn","mockReturnValue","_render8","click","toHaveBeenCalledWith","mockRestore","_render9","dialog","_render0","_render1","_render10","getAttribute","_render11","undefined","_render12"],"sources":["../../../src/components/__tests__/AltDialog.test.jsx"],"sourcesContent":["import React from 'react';\nimport { fireEvent, render } from '@testing-library/react';\nimport { AltDialog } from '../image/AltDialog';\n\njest.mock('@mui/material/Dialog', () => ({\n __esModule: true,\n default: ({ children, open, id }) => open && <div id={id}>{children}</div>,\n}));\n\njest.mock('@mui/material/DialogContent', () => ({\n __esModule: true,\n default: ({ children }) => <div>{children}</div>,\n}));\n\njest.mock('@mui/material/DialogActions', () => ({\n __esModule: true,\n default: ({ children }) => <div>{children}</div>,\n}));\n\njest.mock('@mui/material/Button', () => ({\n __esModule: true,\n default: ({ children, onClick }) => <button onClick={onClick}>{children}</button>,\n}));\n\njest.mock('@mui/material/TextField', () => ({\n __esModule: true,\n default: ({ value, onChange, placeholder, helperText, FormHelperTextProps, multiline }) => (\n <div className=\"MuiTextField-root\">\n <textarea value={value || ''} onChange={onChange} placeholder={placeholder} data-multiline={multiline} />\n {helperText && <div style={FormHelperTextProps?.style}>{helperText}</div>}\n </div>\n ),\n}));\n\njest.mock('@mui/icons-material/ArrowBackIos', () => ({\n __esModule: true,\n default: () => <svg data-testid=\"arrow-back-icon\" />,\n}));\n\ndescribe('AltDialog', () => {\n const defaultProps = {\n onDone: jest.fn(),\n alt: 'Initial alt text',\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n document.body.innerHTML = '';\n });\n\n it('renders without crashing', () => {\n const { container } = render(<AltDialog {...defaultProps} />);\n expect(container).toBeInTheDocument();\n });\n\n it('renders with initial alt text', () => {\n const { container } = render(<AltDialog {...defaultProps} />);\n const textarea = container.querySelector('textarea');\n expect(textarea.value).toBe('Initial alt text');\n });\n\n it('renders placeholder text', () => {\n const { getByPlaceholderText } = render(<AltDialog {...defaultProps} alt=\"\" />);\n expect(getByPlaceholderText('Enter an Alt Text description of this image')).toBeInTheDocument();\n });\n\n it('renders helper text', () => {\n const { getByText } = render(<AltDialog {...defaultProps} />);\n expect(\n getByText(\n 'Users with visual limitations rely on Alt Text, since screen readers cannot otherwise describe the contents of an image.',\n ),\n ).toBeInTheDocument();\n });\n\n it('renders Done button', () => {\n const { getByText } = render(<AltDialog {...defaultProps} />);\n expect(getByText('Done')).toBeInTheDocument();\n });\n\n it('renders ArrowBackIos icon', () => {\n const { getByTestId } = render(<AltDialog {...defaultProps} />);\n expect(getByTestId('arrow-back-icon')).toBeInTheDocument();\n });\n\n it('updates value on text field change', () => {\n const { container } = render(<AltDialog {...defaultProps} />);\n const textarea = container.querySelector('textarea');\n fireEvent.change(textarea, { target: { value: 'New alt text' } });\n expect(textarea.value).toBe('New alt text');\n });\n\n it('calls onDone with value when Done button is clicked', () => {\n const onDone = jest.fn();\n // Mock document.querySelectorAll to avoid DOM manipulation issues\n const mockQuerySelectorAll = jest.spyOn(document, 'querySelectorAll').mockReturnValue([]);\n\n const { getByText, container } = render(<AltDialog {...defaultProps} onDone={onDone} />);\n const textarea = container.querySelector('textarea');\n fireEvent.change(textarea, { target: { value: 'Updated alt text' } });\n fireEvent.click(getByText('Done'));\n expect(onDone).toHaveBeenCalledWith('Updated alt text');\n\n mockQuerySelectorAll.mockRestore();\n });\n\n it('closes dialog when Done button is clicked', () => {\n // Mock document.querySelectorAll to avoid DOM manipulation issues\n const mockQuerySelectorAll = jest.spyOn(document, 'querySelectorAll').mockReturnValue([]);\n\n const { getByText, container } = render(<AltDialog {...defaultProps} />);\n const dialog = container.querySelector('#text-dialog');\n expect(dialog).toBeInTheDocument();\n fireEvent.click(getByText('Done'));\n\n mockQuerySelectorAll.mockRestore();\n });\n\n it('dialog is open', () => {\n const { container } = render(<AltDialog {...defaultProps} />);\n const dialog = container.querySelector('[id=\"text-dialog\"]');\n expect(dialog).toBeInTheDocument();\n });\n\n it('has correct dialog props', () => {\n const { container } = render(<AltDialog {...defaultProps} />);\n const dialog = container.querySelector('[id=\"text-dialog\"]');\n expect(dialog).toBeInTheDocument();\n });\n\n it('text field is multiline', () => {\n const { container } = render(<AltDialog {...defaultProps} />);\n const textarea = container.querySelector('textarea');\n expect(textarea.getAttribute('data-multiline')).toBe('true');\n });\n\n it('renders without alt text', () => {\n const { getByPlaceholderText } = render(<AltDialog {...defaultProps} alt={undefined} />);\n expect(getByPlaceholderText('Enter an Alt Text description of this image')).toBeInTheDocument();\n });\n\n it('handles empty alt text', () => {\n const { container } = render(<AltDialog {...defaultProps} alt=\"\" />);\n const textarea = container.querySelector('textarea');\n expect(textarea.value).toBe('');\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
5
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
6
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _react2 = require("@testing-library/react");
|
|
9
|
+
var _CharacterPicker = require("../CharacterPicker");
|
|
10
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
11
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
12
|
+
jest.mock('react-dom', function () {
|
|
13
|
+
return _objectSpread(_objectSpread({}, jest.requireActual('react-dom')), {}, {
|
|
14
|
+
createPortal: function createPortal(node) {
|
|
15
|
+
return node;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
jest.mock('@pie-lib/math-toolbar', function () {
|
|
20
|
+
return {
|
|
21
|
+
PureToolbar: function PureToolbar(_ref) {
|
|
22
|
+
var onChange = _ref.onChange,
|
|
23
|
+
onDone = _ref.onDone,
|
|
24
|
+
additionalKeys = _ref.additionalKeys;
|
|
25
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
26
|
+
"data-testid": "pure-toolbar"
|
|
27
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
28
|
+
onClick: function onClick() {
|
|
29
|
+
return onChange('á');
|
|
30
|
+
},
|
|
31
|
+
"data-testid": "char-button"
|
|
32
|
+
}, "\xE1"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
33
|
+
onClick: onDone,
|
|
34
|
+
"data-testid": "done-button"
|
|
35
|
+
}, "Done"));
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
jest.mock('../characters/custom-popper', function () {
|
|
40
|
+
return {
|
|
41
|
+
__esModule: true,
|
|
42
|
+
"default": function _default(_ref2) {
|
|
43
|
+
var children = _ref2.children,
|
|
44
|
+
onClose = _ref2.onClose;
|
|
45
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
46
|
+
"data-testid": "custom-popper"
|
|
47
|
+
}, children, /*#__PURE__*/_react["default"].createElement("button", {
|
|
48
|
+
onClick: onClose,
|
|
49
|
+
"data-testid": "close-popper"
|
|
50
|
+
}, "Close"));
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
describe('CharacterIcon', function () {
|
|
55
|
+
it('renders with letter', function () {
|
|
56
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterIcon, {
|
|
57
|
+
letter: "\xF1"
|
|
58
|
+
})),
|
|
59
|
+
getByText = _render.getByText;
|
|
60
|
+
expect(getByText('ñ')).toBeInTheDocument();
|
|
61
|
+
});
|
|
62
|
+
it('renders with correct styling', function () {
|
|
63
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterIcon, {
|
|
64
|
+
letter: "\u20AC"
|
|
65
|
+
})),
|
|
66
|
+
container = _render2.container;
|
|
67
|
+
var div = container.firstChild;
|
|
68
|
+
expect(div).toHaveStyle({
|
|
69
|
+
fontSize: '24px',
|
|
70
|
+
lineHeight: '24px'
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
describe('CharacterPicker', function () {
|
|
75
|
+
var mockEditor = {
|
|
76
|
+
chain: jest.fn(function () {
|
|
77
|
+
return {
|
|
78
|
+
focus: jest.fn(function () {
|
|
79
|
+
return {
|
|
80
|
+
insertContent: jest.fn(function () {
|
|
81
|
+
return {
|
|
82
|
+
run: jest.fn()
|
|
83
|
+
};
|
|
84
|
+
})
|
|
85
|
+
};
|
|
86
|
+
})
|
|
87
|
+
};
|
|
88
|
+
}),
|
|
89
|
+
options: {
|
|
90
|
+
element: document.createElement('div')
|
|
91
|
+
},
|
|
92
|
+
view: {
|
|
93
|
+
coordsAtPos: jest.fn(function () {
|
|
94
|
+
return {
|
|
95
|
+
top: 100,
|
|
96
|
+
left: 50
|
|
97
|
+
};
|
|
98
|
+
}),
|
|
99
|
+
dom: document.createElement('div')
|
|
100
|
+
},
|
|
101
|
+
state: {
|
|
102
|
+
selection: {
|
|
103
|
+
from: 0
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
beforeEach(function () {
|
|
108
|
+
jest.clearAllMocks();
|
|
109
|
+
// Reset the element to avoid "Cannot redefine property" error
|
|
110
|
+
mockEditor.options.element = document.createElement('div');
|
|
111
|
+
Object.defineProperty(mockEditor.options.element, 'getBoundingClientRect', {
|
|
112
|
+
value: jest.fn(function () {
|
|
113
|
+
return {
|
|
114
|
+
top: 0,
|
|
115
|
+
left: 0,
|
|
116
|
+
height: 100
|
|
117
|
+
};
|
|
118
|
+
}),
|
|
119
|
+
configurable: true
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
it('returns null when opts has no characters', function () {
|
|
123
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
124
|
+
editor: mockEditor,
|
|
125
|
+
opts: {},
|
|
126
|
+
onClose: jest.fn()
|
|
127
|
+
})),
|
|
128
|
+
container = _render3.container;
|
|
129
|
+
expect(container.firstChild).toBeNull();
|
|
130
|
+
});
|
|
131
|
+
it('returns null when opts is not provided', function () {
|
|
132
|
+
var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
133
|
+
editor: mockEditor,
|
|
134
|
+
opts: null,
|
|
135
|
+
onClose: jest.fn()
|
|
136
|
+
})),
|
|
137
|
+
container = _render4.container;
|
|
138
|
+
expect(container.firstChild).toBeNull();
|
|
139
|
+
});
|
|
140
|
+
it('renders character picker with spanish config', function () {
|
|
141
|
+
var opts = {
|
|
142
|
+
language: 'spanish',
|
|
143
|
+
characters: [['á', 'é', 'í']]
|
|
144
|
+
};
|
|
145
|
+
var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
146
|
+
editor: mockEditor,
|
|
147
|
+
opts: opts,
|
|
148
|
+
onClose: jest.fn()
|
|
149
|
+
})),
|
|
150
|
+
getByTestId = _render5.getByTestId;
|
|
151
|
+
expect(getByTestId('pure-toolbar')).toBeInTheDocument();
|
|
152
|
+
});
|
|
153
|
+
it('renders character picker with special config', function () {
|
|
154
|
+
var opts = {
|
|
155
|
+
language: 'special',
|
|
156
|
+
characters: [['€', '£']]
|
|
157
|
+
};
|
|
158
|
+
var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
159
|
+
editor: mockEditor,
|
|
160
|
+
opts: opts,
|
|
161
|
+
onClose: jest.fn()
|
|
162
|
+
})),
|
|
163
|
+
getByTestId = _render6.getByTestId;
|
|
164
|
+
expect(getByTestId('pure-toolbar')).toBeInTheDocument();
|
|
165
|
+
});
|
|
166
|
+
it('handles character insertion', function () {
|
|
167
|
+
var opts = {
|
|
168
|
+
characters: [['á', 'é']]
|
|
169
|
+
};
|
|
170
|
+
var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
171
|
+
editor: mockEditor,
|
|
172
|
+
opts: opts,
|
|
173
|
+
onClose: jest.fn()
|
|
174
|
+
})),
|
|
175
|
+
getByTestId = _render7.getByTestId;
|
|
176
|
+
_react2.fireEvent.click(getByTestId('char-button'));
|
|
177
|
+
expect(mockEditor.chain).toHaveBeenCalled();
|
|
178
|
+
});
|
|
179
|
+
it('calls onClose when done button is clicked', function () {
|
|
180
|
+
var onClose = jest.fn();
|
|
181
|
+
var opts = {
|
|
182
|
+
characters: [['á', 'é']]
|
|
183
|
+
};
|
|
184
|
+
var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
185
|
+
editor: mockEditor,
|
|
186
|
+
opts: opts,
|
|
187
|
+
onClose: onClose
|
|
188
|
+
})),
|
|
189
|
+
getByTestId = _render8.getByTestId;
|
|
190
|
+
_react2.fireEvent.click(getByTestId('done-button'));
|
|
191
|
+
expect(onClose).toHaveBeenCalled();
|
|
192
|
+
});
|
|
193
|
+
it('closes on outside click', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
194
|
+
var onClose, opts;
|
|
195
|
+
return _regenerator["default"].wrap(function (_context2) {
|
|
196
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
197
|
+
case 0:
|
|
198
|
+
onClose = jest.fn();
|
|
199
|
+
opts = {
|
|
200
|
+
characters: [['á', 'é']]
|
|
201
|
+
};
|
|
202
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
203
|
+
editor: mockEditor,
|
|
204
|
+
opts: opts,
|
|
205
|
+
onClose: onClose
|
|
206
|
+
}));
|
|
207
|
+
_context2.next = 1;
|
|
208
|
+
return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
209
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
210
|
+
while (1) switch (_context.prev = _context.next) {
|
|
211
|
+
case 0:
|
|
212
|
+
_context.next = 1;
|
|
213
|
+
return new Promise(function (r) {
|
|
214
|
+
return setTimeout(r, 0);
|
|
215
|
+
});
|
|
216
|
+
case 1:
|
|
217
|
+
case "end":
|
|
218
|
+
return _context.stop();
|
|
219
|
+
}
|
|
220
|
+
}, _callee);
|
|
221
|
+
})));
|
|
222
|
+
case 1:
|
|
223
|
+
_react2.fireEvent.click(document.body);
|
|
224
|
+
_context2.next = 2;
|
|
225
|
+
return (0, _react2.waitFor)(function () {
|
|
226
|
+
expect(onClose).toHaveBeenCalled();
|
|
227
|
+
});
|
|
228
|
+
case 2:
|
|
229
|
+
case "end":
|
|
230
|
+
return _context2.stop();
|
|
231
|
+
}
|
|
232
|
+
}, _callee2);
|
|
233
|
+
})));
|
|
234
|
+
it('does not re-run positioning when only onClose reference changes', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
235
|
+
var opts, getRect, _render9, rerender, callsAfterMount;
|
|
236
|
+
return _regenerator["default"].wrap(function (_context4) {
|
|
237
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
238
|
+
case 0:
|
|
239
|
+
opts = {
|
|
240
|
+
characters: [['á', 'é']]
|
|
241
|
+
};
|
|
242
|
+
getRect = mockEditor.options.element.getBoundingClientRect;
|
|
243
|
+
_render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
244
|
+
editor: mockEditor,
|
|
245
|
+
opts: opts,
|
|
246
|
+
onClose: jest.fn()
|
|
247
|
+
})), rerender = _render9.rerender;
|
|
248
|
+
_context4.next = 1;
|
|
249
|
+
return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
250
|
+
return _regenerator["default"].wrap(function (_context3) {
|
|
251
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
252
|
+
case 0:
|
|
253
|
+
_context3.next = 1;
|
|
254
|
+
return new Promise(function (r) {
|
|
255
|
+
return setTimeout(r, 0);
|
|
256
|
+
});
|
|
257
|
+
case 1:
|
|
258
|
+
case "end":
|
|
259
|
+
return _context3.stop();
|
|
260
|
+
}
|
|
261
|
+
}, _callee3);
|
|
262
|
+
})));
|
|
263
|
+
case 1:
|
|
264
|
+
callsAfterMount = getRect.mock.calls.length;
|
|
265
|
+
expect(callsAfterMount).toBeGreaterThan(0);
|
|
266
|
+
rerender(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
267
|
+
editor: mockEditor,
|
|
268
|
+
opts: opts,
|
|
269
|
+
onClose: jest.fn()
|
|
270
|
+
}));
|
|
271
|
+
expect(getRect.mock.calls.length).toBe(callsAfterMount);
|
|
272
|
+
case 2:
|
|
273
|
+
case "end":
|
|
274
|
+
return _context4.stop();
|
|
275
|
+
}
|
|
276
|
+
}, _callee4);
|
|
277
|
+
})));
|
|
278
|
+
it('outside click invokes the latest onClose after rerender', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6() {
|
|
279
|
+
var opts, onCloseFirst, _render0, rerender, onCloseSecond;
|
|
280
|
+
return _regenerator["default"].wrap(function (_context6) {
|
|
281
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
282
|
+
case 0:
|
|
283
|
+
opts = {
|
|
284
|
+
characters: [['á', 'é']]
|
|
285
|
+
};
|
|
286
|
+
onCloseFirst = jest.fn();
|
|
287
|
+
_render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
288
|
+
editor: mockEditor,
|
|
289
|
+
opts: opts,
|
|
290
|
+
onClose: onCloseFirst
|
|
291
|
+
})), rerender = _render0.rerender;
|
|
292
|
+
_context6.next = 1;
|
|
293
|
+
return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
294
|
+
return _regenerator["default"].wrap(function (_context5) {
|
|
295
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
296
|
+
case 0:
|
|
297
|
+
_context5.next = 1;
|
|
298
|
+
return new Promise(function (r) {
|
|
299
|
+
return setTimeout(r, 0);
|
|
300
|
+
});
|
|
301
|
+
case 1:
|
|
302
|
+
case "end":
|
|
303
|
+
return _context5.stop();
|
|
304
|
+
}
|
|
305
|
+
}, _callee5);
|
|
306
|
+
})));
|
|
307
|
+
case 1:
|
|
308
|
+
onCloseSecond = jest.fn();
|
|
309
|
+
rerender(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
310
|
+
editor: mockEditor,
|
|
311
|
+
opts: opts,
|
|
312
|
+
onClose: onCloseSecond
|
|
313
|
+
}));
|
|
314
|
+
_react2.fireEvent.click(document.body);
|
|
315
|
+
_context6.next = 2;
|
|
316
|
+
return (0, _react2.waitFor)(function () {
|
|
317
|
+
expect(onCloseSecond).toHaveBeenCalled();
|
|
318
|
+
});
|
|
319
|
+
case 2:
|
|
320
|
+
expect(onCloseFirst).not.toHaveBeenCalled();
|
|
321
|
+
case 3:
|
|
322
|
+
case "end":
|
|
323
|
+
return _context6.stop();
|
|
324
|
+
}
|
|
325
|
+
}, _callee6);
|
|
326
|
+
})));
|
|
327
|
+
it('does not close when clicking inside picker', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7() {
|
|
328
|
+
var onClose, opts, _render1, container;
|
|
329
|
+
return _regenerator["default"].wrap(function (_context7) {
|
|
330
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
331
|
+
case 0:
|
|
332
|
+
onClose = jest.fn();
|
|
333
|
+
opts = {
|
|
334
|
+
characters: [['á', 'é']]
|
|
335
|
+
};
|
|
336
|
+
_render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
337
|
+
editor: mockEditor,
|
|
338
|
+
opts: opts,
|
|
339
|
+
onClose: onClose
|
|
340
|
+
})), container = _render1.container;
|
|
341
|
+
_context7.next = 1;
|
|
342
|
+
return (0, _react2.waitFor)(function () {
|
|
343
|
+
var picker = container.querySelector('.insert-character-dialog');
|
|
344
|
+
if (picker) {
|
|
345
|
+
_react2.fireEvent.mouseDown(picker);
|
|
346
|
+
}
|
|
347
|
+
});
|
|
348
|
+
case 1:
|
|
349
|
+
expect(onClose).not.toHaveBeenCalled();
|
|
350
|
+
case 2:
|
|
351
|
+
case "end":
|
|
352
|
+
return _context7.stop();
|
|
353
|
+
}
|
|
354
|
+
}, _callee7);
|
|
355
|
+
})));
|
|
356
|
+
it('renders with custom opts structure', function () {
|
|
357
|
+
var opts = {
|
|
358
|
+
characters: [[{
|
|
359
|
+
name: 'a',
|
|
360
|
+
write: 'á',
|
|
361
|
+
label: 'á'
|
|
362
|
+
}, {
|
|
363
|
+
name: 'e',
|
|
364
|
+
write: 'é',
|
|
365
|
+
label: 'é'
|
|
366
|
+
}]]
|
|
367
|
+
};
|
|
368
|
+
var _render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
369
|
+
editor: mockEditor,
|
|
370
|
+
opts: opts,
|
|
371
|
+
onClose: jest.fn()
|
|
372
|
+
})),
|
|
373
|
+
getByTestId = _render10.getByTestId;
|
|
374
|
+
expect(getByTestId('pure-toolbar')).toBeInTheDocument();
|
|
375
|
+
});
|
|
376
|
+
it('renders with hasPreview option', function () {
|
|
377
|
+
var opts = {
|
|
378
|
+
hasPreview: true,
|
|
379
|
+
characters: [[{
|
|
380
|
+
name: 'euro',
|
|
381
|
+
write: '€',
|
|
382
|
+
label: '€',
|
|
383
|
+
description: 'Euro sign',
|
|
384
|
+
unicode: 'U+20AC'
|
|
385
|
+
}]]
|
|
386
|
+
};
|
|
387
|
+
var _render11 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
388
|
+
editor: mockEditor,
|
|
389
|
+
opts: opts,
|
|
390
|
+
onClose: jest.fn()
|
|
391
|
+
})),
|
|
392
|
+
getByTestId = _render11.getByTestId;
|
|
393
|
+
expect(getByTestId('pure-toolbar')).toBeInTheDocument();
|
|
394
|
+
});
|
|
395
|
+
it('calculates position correctly', function () {
|
|
396
|
+
var opts = {
|
|
397
|
+
characters: [['á']]
|
|
398
|
+
};
|
|
399
|
+
var _render12 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
400
|
+
editor: mockEditor,
|
|
401
|
+
opts: opts,
|
|
402
|
+
onClose: jest.fn()
|
|
403
|
+
})),
|
|
404
|
+
container = _render12.container;
|
|
405
|
+
var dialog = container.querySelector('.insert-character-dialog');
|
|
406
|
+
expect(dialog).toHaveStyle({
|
|
407
|
+
position: 'fixed'
|
|
408
|
+
});
|
|
409
|
+
});
|
|
410
|
+
it('renders above other editor overlays with a high z-index', function () {
|
|
411
|
+
var opts = {
|
|
412
|
+
characters: [['á']]
|
|
413
|
+
};
|
|
414
|
+
var _render13 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
415
|
+
editor: mockEditor,
|
|
416
|
+
opts: opts,
|
|
417
|
+
onClose: jest.fn()
|
|
418
|
+
})),
|
|
419
|
+
container = _render13.container;
|
|
420
|
+
var dialog = container.querySelector('.insert-character-dialog');
|
|
421
|
+
expect(dialog).toHaveStyle({
|
|
422
|
+
zIndex: '1000'
|
|
423
|
+
});
|
|
424
|
+
});
|
|
425
|
+
it('adds data-toolbar-for attribute with editor instanceId', function () {
|
|
426
|
+
var editorWithInstanceId = _objectSpread(_objectSpread({}, mockEditor), {}, {
|
|
427
|
+
instanceId: 'editor-123'
|
|
428
|
+
});
|
|
429
|
+
var opts = {
|
|
430
|
+
characters: [['á', 'é']]
|
|
431
|
+
};
|
|
432
|
+
var _render14 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
433
|
+
editor: editorWithInstanceId,
|
|
434
|
+
opts: opts,
|
|
435
|
+
onClose: jest.fn()
|
|
436
|
+
})),
|
|
437
|
+
container = _render14.container;
|
|
438
|
+
var dialog = container.querySelector('.insert-character-dialog');
|
|
439
|
+
expect(dialog).toHaveAttribute('data-toolbar-for', 'editor-123');
|
|
440
|
+
});
|
|
441
|
+
it('renders without instanceId gracefully', function () {
|
|
442
|
+
var opts = {
|
|
443
|
+
characters: [['á', 'é']]
|
|
444
|
+
};
|
|
445
|
+
var _render15 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
446
|
+
editor: mockEditor,
|
|
447
|
+
opts: opts,
|
|
448
|
+
onClose: jest.fn()
|
|
449
|
+
})),
|
|
450
|
+
container = _render15.container;
|
|
451
|
+
var dialog = container.querySelector('.insert-character-dialog');
|
|
452
|
+
expect(dialog).toBeInTheDocument();
|
|
453
|
+
});
|
|
454
|
+
});
|
|
455
|
+
//# sourceMappingURL=CharacterPicker.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CharacterPicker.test.js","names":["_react","_interopRequireDefault","require","_react2","_CharacterPicker","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","jest","mock","requireActual","createPortal","node","PureToolbar","_ref","onChange","onDone","additionalKeys","createElement","onClick","__esModule","default","_ref2","children","onClose","describe","it","_render","render","CharacterIcon","letter","getByText","expect","toBeInTheDocument","_render2","container","div","firstChild","toHaveStyle","fontSize","lineHeight","mockEditor","chain","fn","focus","insertContent","run","options","element","document","view","coordsAtPos","top","left","dom","state","selection","from","beforeEach","clearAllMocks","value","height","configurable","_render3","CharacterPicker","editor","opts","toBeNull","_render4","language","characters","_render5","getByTestId","_render6","_render7","fireEvent","click","toHaveBeenCalled","_render8","_asyncToGenerator2","_regenerator","mark","_callee2","wrap","_context2","prev","next","act","_callee","_context","Promise","setTimeout","stop","body","waitFor","_callee4","getRect","_render9","rerender","callsAfterMount","_context4","getBoundingClientRect","_callee3","_context3","calls","toBeGreaterThan","toBe","_callee6","onCloseFirst","_render0","onCloseSecond","_context6","_callee5","_context5","not","_callee7","_render1","_context7","picker","querySelector","mouseDown","name","write","label","_render10","hasPreview","description","unicode","_render11","_render12","dialog","position","_render13","zIndex","editorWithInstanceId","instanceId","_render14","toHaveAttribute","_render15"],"sources":["../../../src/components/__tests__/CharacterPicker.test.jsx"],"sourcesContent":["import React from 'react';\nimport { act, fireEvent, render, waitFor } from '@testing-library/react';\nimport { CharacterIcon, CharacterPicker } from '../CharacterPicker';\n\njest.mock('react-dom', () => ({\n ...jest.requireActual('react-dom'),\n createPortal: (node) => node,\n}));\n\njest.mock('@pie-lib/math-toolbar', () => ({\n PureToolbar: ({ onChange, onDone, additionalKeys }) => (\n <div data-testid=\"pure-toolbar\">\n <button onClick={() => onChange('á')} data-testid=\"char-button\">\n á\n </button>\n <button onClick={onDone} data-testid=\"done-button\">\n Done\n </button>\n </div>\n ),\n}));\n\njest.mock('../characters/custom-popper', () => ({\n __esModule: true,\n default: ({ children, onClose }) => (\n <div data-testid=\"custom-popper\">\n {children}\n <button onClick={onClose} data-testid=\"close-popper\">\n Close\n </button>\n </div>\n ),\n}));\n\ndescribe('CharacterIcon', () => {\n it('renders with letter', () => {\n const { getByText } = render(<CharacterIcon letter=\"ñ\" />);\n expect(getByText('ñ')).toBeInTheDocument();\n });\n\n it('renders with correct styling', () => {\n const { container } = render(<CharacterIcon letter=\"€\" />);\n const div = container.firstChild;\n expect(div).toHaveStyle({ fontSize: '24px', lineHeight: '24px' });\n });\n});\n\ndescribe('CharacterPicker', () => {\n const mockEditor = {\n chain: jest.fn(() => ({\n focus: jest.fn(() => ({\n insertContent: jest.fn(() => ({ run: jest.fn() })),\n })),\n })),\n options: {\n element: document.createElement('div'),\n },\n view: {\n coordsAtPos: jest.fn(() => ({ top: 100, left: 50 })),\n dom: document.createElement('div'),\n },\n state: {\n selection: { from: 0 },\n },\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n // Reset the element to avoid \"Cannot redefine property\" error\n mockEditor.options.element = document.createElement('div');\n Object.defineProperty(mockEditor.options.element, 'getBoundingClientRect', {\n value: jest.fn(() => ({ top: 0, left: 0, height: 100 })),\n configurable: true,\n });\n });\n\n it('returns null when opts has no characters', () => {\n const { container } = render(<CharacterPicker editor={mockEditor} opts={{}} onClose={jest.fn()} />);\n expect(container.firstChild).toBeNull();\n });\n\n it('returns null when opts is not provided', () => {\n const { container } = render(<CharacterPicker editor={mockEditor} opts={null} onClose={jest.fn()} />);\n expect(container.firstChild).toBeNull();\n });\n\n it('renders character picker with spanish config', () => {\n const opts = {\n language: 'spanish',\n characters: [['á', 'é', 'í']],\n };\n const { getByTestId } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n expect(getByTestId('pure-toolbar')).toBeInTheDocument();\n });\n\n it('renders character picker with special config', () => {\n const opts = {\n language: 'special',\n characters: [['€', '£']],\n };\n const { getByTestId } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n expect(getByTestId('pure-toolbar')).toBeInTheDocument();\n });\n\n it('handles character insertion', () => {\n const opts = {\n characters: [['á', 'é']],\n };\n const { getByTestId } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n fireEvent.click(getByTestId('char-button'));\n expect(mockEditor.chain).toHaveBeenCalled();\n });\n\n it('calls onClose when done button is clicked', () => {\n const onClose = jest.fn();\n const opts = {\n characters: [['á', 'é']],\n };\n const { getByTestId } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={onClose} />);\n fireEvent.click(getByTestId('done-button'));\n expect(onClose).toHaveBeenCalled();\n });\n\n it('closes on outside click', async () => {\n const onClose = jest.fn();\n const opts = {\n characters: [['á', 'é']],\n };\n render(<CharacterPicker editor={mockEditor} opts={opts} onClose={onClose} />);\n\n await act(async () => {\n await new Promise((r) => setTimeout(r, 0));\n });\n fireEvent.click(document.body);\n\n await waitFor(() => {\n expect(onClose).toHaveBeenCalled();\n });\n });\n\n it('does not re-run positioning when only onClose reference changes', async () => {\n const opts = {\n characters: [['á', 'é']],\n };\n const getRect = mockEditor.options.element.getBoundingClientRect;\n const { rerender } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n\n await act(async () => {\n await new Promise((r) => setTimeout(r, 0));\n });\n\n const callsAfterMount = getRect.mock.calls.length;\n expect(callsAfterMount).toBeGreaterThan(0);\n\n rerender(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n\n expect(getRect.mock.calls.length).toBe(callsAfterMount);\n });\n\n it('outside click invokes the latest onClose after rerender', async () => {\n const opts = {\n characters: [['á', 'é']],\n };\n const onCloseFirst = jest.fn();\n const { rerender } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={onCloseFirst} />);\n\n await act(async () => {\n await new Promise((r) => setTimeout(r, 0));\n });\n\n const onCloseSecond = jest.fn();\n rerender(<CharacterPicker editor={mockEditor} opts={opts} onClose={onCloseSecond} />);\n\n fireEvent.click(document.body);\n\n await waitFor(() => {\n expect(onCloseSecond).toHaveBeenCalled();\n });\n expect(onCloseFirst).not.toHaveBeenCalled();\n });\n\n it('does not close when clicking inside picker', async () => {\n const onClose = jest.fn();\n const opts = {\n characters: [['á', 'é']],\n };\n const { container } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={onClose} />);\n\n await waitFor(() => {\n const picker = container.querySelector('.insert-character-dialog');\n if (picker) {\n fireEvent.mouseDown(picker);\n }\n });\n\n expect(onClose).not.toHaveBeenCalled();\n });\n\n it('renders with custom opts structure', () => {\n const opts = {\n characters: [\n [\n { name: 'a', write: 'á', label: 'á' },\n { name: 'e', write: 'é', label: 'é' },\n ],\n ],\n };\n const { getByTestId } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n expect(getByTestId('pure-toolbar')).toBeInTheDocument();\n });\n\n it('renders with hasPreview option', () => {\n const opts = {\n hasPreview: true,\n characters: [\n [\n {\n name: 'euro',\n write: '€',\n label: '€',\n description: 'Euro sign',\n unicode: 'U+20AC',\n },\n ],\n ],\n };\n const { getByTestId } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n expect(getByTestId('pure-toolbar')).toBeInTheDocument();\n });\n\n it('calculates position correctly', () => {\n const opts = {\n characters: [['á']],\n };\n const { container } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n const dialog = container.querySelector('.insert-character-dialog');\n expect(dialog).toHaveStyle({ position: 'fixed' });\n });\n\n it('renders above other editor overlays with a high z-index', () => {\n const opts = {\n characters: [['á']],\n };\n const { container } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n const dialog = container.querySelector('.insert-character-dialog');\n expect(dialog).toHaveStyle({ zIndex: '1000' });\n });\n\n it('adds data-toolbar-for attribute with editor instanceId', () => {\n const editorWithInstanceId = {\n ...mockEditor,\n instanceId: 'editor-123',\n };\n const opts = {\n characters: [['á', 'é']],\n };\n const { container } = render(<CharacterPicker editor={editorWithInstanceId} opts={opts} onClose={jest.fn()} />);\n const dialog = container.querySelector('.insert-character-dialog');\n expect(dialog).toHaveAttribute('data-toolbar-for', 'editor-123');\n });\n\n it('renders without instanceId gracefully', () => {\n const opts = {\n characters: [['á', 'é']],\n };\n const { container } = render(<CharacterPicker editor={mockEditor} opts={opts} onClose={jest.fn()} />);\n const dialog = container.querySelector('.insert-character-dialog');\n expect(dialog).toBeInTheDocument();\n });\n});\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AAAoE,SAAAG,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,aAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAEpEoB,IAAI,CAACC,IAAI,CAAC,WAAW,EAAE;EAAA,OAAAT,aAAA,CAAAA,aAAA,KAClBQ,IAAI,CAACE,aAAa,CAAC,WAAW,CAAC;IAClCC,YAAY,EAAE,SAAdA,YAAYA,CAAGC,IAAI;MAAA,OAAKA,IAAI;IAAA;EAAA;AAAA,CAC5B,CAAC;AAEHJ,IAAI,CAACC,IAAI,CAAC,uBAAuB,EAAE;EAAA,OAAO;IACxCI,WAAW,EAAE,SAAbA,WAAWA,CAAAC,IAAA;MAAA,IAAKC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;QAAEC,MAAM,GAAAF,IAAA,CAANE,MAAM;QAAEC,cAAc,GAAAH,IAAA,CAAdG,cAAc;MAAA,oBAC9CnC,MAAA,YAAAoC,aAAA;QAAK,eAAY;MAAc,gBAC7BpC,MAAA,YAAAoC,aAAA;QAAQC,OAAO,EAAE,SAATA,OAAOA,CAAA;UAAA,OAAQJ,QAAQ,CAAC,GAAG,CAAC;QAAA,CAAC;QAAC,eAAY;MAAa,GAAC,MAExD,CAAC,eACTjC,MAAA,YAAAoC,aAAA;QAAQC,OAAO,EAAEH,MAAO;QAAC,eAAY;MAAa,GAAC,MAE3C,CACL,CAAC;IAAA;EAEV,CAAC;AAAA,CAAC,CAAC;AAEHR,IAAI,CAACC,IAAI,CAAC,6BAA6B,EAAE;EAAA,OAAO;IAC9CW,UAAU,EAAE,IAAI;IAChB,WAAS,SAATC,QAAOA,CAAAC,KAAA;MAAA,IAAKC,QAAQ,GAAAD,KAAA,CAARC,QAAQ;QAAEC,OAAO,GAAAF,KAAA,CAAPE,OAAO;MAAA,oBAC3B1C,MAAA,YAAAoC,aAAA;QAAK,eAAY;MAAe,GAC7BK,QAAQ,eACTzC,MAAA,YAAAoC,aAAA;QAAQC,OAAO,EAAEK,OAAQ;QAAC,eAAY;MAAc,GAAC,OAE7C,CACL,CAAC;IAAA;EAEV,CAAC;AAAA,CAAC,CAAC;AAEHC,QAAQ,CAAC,eAAe,EAAE,YAAM;EAC9BC,EAAE,CAAC,qBAAqB,EAAE,YAAM;IAC9B,IAAAC,OAAA,GAAsB,IAAAC,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA2C,aAAa;QAACC,MAAM,EAAC;MAAG,CAAE,CAAC,CAAC;MAAlDC,SAAS,GAAAJ,OAAA,CAATI,SAAS;IACjBC,MAAM,CAACD,SAAS,CAAC,GAAG,CAAC,CAAC,CAACE,iBAAiB,CAAC,CAAC;EAC5C,CAAC,CAAC;EAEFP,EAAE,CAAC,8BAA8B,EAAE,YAAM;IACvC,IAAAQ,QAAA,GAAsB,IAAAN,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA2C,aAAa;QAACC,MAAM,EAAC;MAAG,CAAE,CAAC,CAAC;MAAlDK,SAAS,GAAAD,QAAA,CAATC,SAAS;IACjB,IAAMC,GAAG,GAAGD,SAAS,CAACE,UAAU;IAChCL,MAAM,CAACI,GAAG,CAAC,CAACE,WAAW,CAAC;MAAEC,QAAQ,EAAE,MAAM;MAAEC,UAAU,EAAE;IAAO,CAAC,CAAC;EACnE,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFf,QAAQ,CAAC,iBAAiB,EAAE,YAAM;EAChC,IAAMgB,UAAU,GAAG;IACjBC,KAAK,EAAElC,IAAI,CAACmC,EAAE,CAAC;MAAA,OAAO;QACpBC,KAAK,EAAEpC,IAAI,CAACmC,EAAE,CAAC;UAAA,OAAO;YACpBE,aAAa,EAAErC,IAAI,CAACmC,EAAE,CAAC;cAAA,OAAO;gBAAEG,GAAG,EAAEtC,IAAI,CAACmC,EAAE,CAAC;cAAE,CAAC;YAAA,CAAC;UACnD,CAAC;QAAA,CAAC;MACJ,CAAC;IAAA,CAAC,CAAC;IACHI,OAAO,EAAE;MACPC,OAAO,EAAEC,QAAQ,CAAC/B,aAAa,CAAC,KAAK;IACvC,CAAC;IACDgC,IAAI,EAAE;MACJC,WAAW,EAAE3C,IAAI,CAACmC,EAAE,CAAC;QAAA,OAAO;UAAES,GAAG,EAAE,GAAG;UAAEC,IAAI,EAAE;QAAG,CAAC;MAAA,CAAC,CAAC;MACpDC,GAAG,EAAEL,QAAQ,CAAC/B,aAAa,CAAC,KAAK;IACnC,CAAC;IACDqC,KAAK,EAAE;MACLC,SAAS,EAAE;QAAEC,IAAI,EAAE;MAAE;IACvB;EACF,CAAC;EAEDC,UAAU,CAAC,YAAM;IACflD,IAAI,CAACmD,aAAa,CAAC,CAAC;IACpB;IACAlB,UAAU,CAACM,OAAO,CAACC,OAAO,GAAGC,QAAQ,CAAC/B,aAAa,CAAC,KAAK,CAAC;IAC1D3B,MAAM,CAACgB,cAAc,CAACkC,UAAU,CAACM,OAAO,CAACC,OAAO,EAAE,uBAAuB,EAAE;MACzEY,KAAK,EAAEpD,IAAI,CAACmC,EAAE,CAAC;QAAA,OAAO;UAAES,GAAG,EAAE,CAAC;UAAEC,IAAI,EAAE,CAAC;UAAEQ,MAAM,EAAE;QAAI,CAAC;MAAA,CAAC,CAAC;MACxDC,YAAY,EAAE;IAChB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFpC,EAAE,CAAC,0CAA0C,EAAE,YAAM;IACnD,IAAAqC,QAAA,GAAsB,IAAAnC,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;QAACC,MAAM,EAAExB,UAAW;QAACyB,IAAI,EAAE,CAAC,CAAE;QAAC1C,OAAO,EAAEhB,IAAI,CAACmC,EAAE,CAAC;MAAE,CAAE,CAAC,CAAC;MAA3FR,SAAS,GAAA4B,QAAA,CAAT5B,SAAS;IACjBH,MAAM,CAACG,SAAS,CAACE,UAAU,CAAC,CAAC8B,QAAQ,CAAC,CAAC;EACzC,CAAC,CAAC;EAEFzC,EAAE,CAAC,wCAAwC,EAAE,YAAM;IACjD,IAAA0C,QAAA,GAAsB,IAAAxC,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;QAACC,MAAM,EAAExB,UAAW;QAACyB,IAAI,EAAE,IAAK;QAAC1C,OAAO,EAAEhB,IAAI,CAACmC,EAAE,CAAC;MAAE,CAAE,CAAC,CAAC;MAA7FR,SAAS,GAAAiC,QAAA,CAATjC,SAAS;IACjBH,MAAM,CAACG,SAAS,CAACE,UAAU,CAAC,CAAC8B,QAAQ,CAAC,CAAC;EACzC,CAAC,CAAC;EAEFzC,EAAE,CAAC,8CAA8C,EAAE,YAAM;IACvD,IAAMwC,IAAI,GAAG;MACXG,QAAQ,EAAE,SAAS;MACnBC,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC9B,CAAC;IACD,IAAAC,QAAA,GAAwB,IAAA3C,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;QAACC,MAAM,EAAExB,UAAW;QAACyB,IAAI,EAAEA,IAAK;QAAC1C,OAAO,EAAEhB,IAAI,CAACmC,EAAE,CAAC;MAAE,CAAE,CAAC,CAAC;MAA/F6B,WAAW,GAAAD,QAAA,CAAXC,WAAW;IACnBxC,MAAM,CAACwC,WAAW,CAAC,cAAc,CAAC,CAAC,CAACvC,iBAAiB,CAAC,CAAC;EACzD,CAAC,CAAC;EAEFP,EAAE,CAAC,8CAA8C,EAAE,YAAM;IACvD,IAAMwC,IAAI,GAAG;MACXG,QAAQ,EAAE,SAAS;MACnBC,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;IACzB,CAAC;IACD,IAAAG,QAAA,GAAwB,IAAA7C,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;QAACC,MAAM,EAAExB,UAAW;QAACyB,IAAI,EAAEA,IAAK;QAAC1C,OAAO,EAAEhB,IAAI,CAACmC,EAAE,CAAC;MAAE,CAAE,CAAC,CAAC;MAA/F6B,WAAW,GAAAC,QAAA,CAAXD,WAAW;IACnBxC,MAAM,CAACwC,WAAW,CAAC,cAAc,CAAC,CAAC,CAACvC,iBAAiB,CAAC,CAAC;EACzD,CAAC,CAAC;EAEFP,EAAE,CAAC,6BAA6B,EAAE,YAAM;IACtC,IAAMwC,IAAI,GAAG;MACXI,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;IACzB,CAAC;IACD,IAAAI,QAAA,GAAwB,IAAA9C,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;QAACC,MAAM,EAAExB,UAAW;QAACyB,IAAI,EAAEA,IAAK;QAAC1C,OAAO,EAAEhB,IAAI,CAACmC,EAAE,CAAC;MAAE,CAAE,CAAC,CAAC;MAA/F6B,WAAW,GAAAE,QAAA,CAAXF,WAAW;IACnBG,iBAAS,CAACC,KAAK,CAACJ,WAAW,CAAC,aAAa,CAAC,CAAC;IAC3CxC,MAAM,CAACS,UAAU,CAACC,KAAK,CAAC,CAACmC,gBAAgB,CAAC,CAAC;EAC7C,CAAC,CAAC;EAEFnD,EAAE,CAAC,2CAA2C,EAAE,YAAM;IACpD,IAAMF,OAAO,GAAGhB,IAAI,CAACmC,EAAE,CAAC,CAAC;IACzB,IAAMuB,IAAI,GAAG;MACXI,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;IACzB,CAAC;IACD,IAAAQ,QAAA,GAAwB,IAAAlD,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;QAACC,MAAM,EAAExB,UAAW;QAACyB,IAAI,EAAEA,IAAK;QAAC1C,OAAO,EAAEA;MAAQ,CAAE,CAAC,CAAC;MAA7FgD,WAAW,GAAAM,QAAA,CAAXN,WAAW;IACnBG,iBAAS,CAACC,KAAK,CAACJ,WAAW,CAAC,aAAa,CAAC,CAAC;IAC3CxC,MAAM,CAACR,OAAO,CAAC,CAACqD,gBAAgB,CAAC,CAAC;EACpC,CAAC,CAAC;EAEFnD,EAAE,CAAC,yBAAyB,mBAAAqD,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAC,SAAA;IAAA,IAAA1D,OAAA,EAAA0C,IAAA;IAAA,OAAAc,YAAA,YAAAG,IAAA,WAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;QAAA;UACtB9D,OAAO,GAAGhB,IAAI,CAACmC,EAAE,CAAC,CAAC;UACnBuB,IAAI,GAAG;YACXI,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;UACzB,CAAC;UACD,IAAA1C,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;YAACC,MAAM,EAAExB,UAAW;YAACyB,IAAI,EAAEA,IAAK;YAAC1C,OAAO,EAAEA;UAAQ,CAAE,CAAC,CAAC;UAAC4D,SAAA,CAAAE,IAAA;UAAA,OAExE,IAAAC,WAAG,mBAAAR,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAC,SAAAO,QAAA;YAAA,OAAAR,YAAA,YAAAG,IAAA,WAAAM,QAAA;cAAA,kBAAAA,QAAA,CAAAJ,IAAA,GAAAI,QAAA,CAAAH,IAAA;gBAAA;kBAAAG,QAAA,CAAAH,IAAA;kBAAA,OACF,IAAII,OAAO,CAAC,UAACrG,CAAC;oBAAA,OAAKsG,UAAU,CAACtG,CAAC,EAAE,CAAC,CAAC;kBAAA,EAAC;gBAAA;gBAAA;kBAAA,OAAAoG,QAAA,CAAAG,IAAA;cAAA;YAAA,GAAAJ,OAAA;UAAA,CAC3C,GAAC;QAAA;UACFb,iBAAS,CAACC,KAAK,CAAC3B,QAAQ,CAAC4C,IAAI,CAAC;UAACT,SAAA,CAAAE,IAAA;UAAA,OAEzB,IAAAQ,eAAO,EAAC,YAAM;YAClB9D,MAAM,CAACR,OAAO,CAAC,CAACqD,gBAAgB,CAAC,CAAC;UACpC,CAAC,CAAC;QAAA;QAAA;UAAA,OAAAO,SAAA,CAAAQ,IAAA;MAAA;IAAA,GAAAV,QAAA;EAAA,CACH,GAAC;EAEFxD,EAAE,CAAC,iEAAiE,mBAAAqD,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAc,SAAA;IAAA,IAAA7B,IAAA,EAAA8B,OAAA,EAAAC,QAAA,EAAAC,QAAA,EAAAC,eAAA;IAAA,OAAAnB,YAAA,YAAAG,IAAA,WAAAiB,SAAA;MAAA,kBAAAA,SAAA,CAAAf,IAAA,GAAAe,SAAA,CAAAd,IAAA;QAAA;UAC9DpB,IAAI,GAAG;YACXI,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;UACzB,CAAC;UACK0B,OAAO,GAAGvD,UAAU,CAACM,OAAO,CAACC,OAAO,CAACqD,qBAAqB;UAAAJ,QAAA,GAC3C,IAAArE,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;YAACC,MAAM,EAAExB,UAAW;YAACyB,IAAI,EAAEA,IAAK;YAAC1C,OAAO,EAAEhB,IAAI,CAACmC,EAAE,CAAC;UAAE,CAAE,CAAC,CAAC,EAA5FuD,QAAQ,GAAAD,QAAA,CAARC,QAAQ;UAAAE,SAAA,CAAAd,IAAA;UAAA,OAEV,IAAAC,WAAG,mBAAAR,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAC,SAAAqB,SAAA;YAAA,OAAAtB,YAAA,YAAAG,IAAA,WAAAoB,SAAA;cAAA,kBAAAA,SAAA,CAAAlB,IAAA,GAAAkB,SAAA,CAAAjB,IAAA;gBAAA;kBAAAiB,SAAA,CAAAjB,IAAA;kBAAA,OACF,IAAII,OAAO,CAAC,UAACrG,CAAC;oBAAA,OAAKsG,UAAU,CAACtG,CAAC,EAAE,CAAC,CAAC;kBAAA,EAAC;gBAAA;gBAAA;kBAAA,OAAAkH,SAAA,CAAAX,IAAA;cAAA;YAAA,GAAAU,QAAA;UAAA,CAC3C,GAAC;QAAA;UAEIH,eAAe,GAAGH,OAAO,CAACvF,IAAI,CAAC+F,KAAK,CAACtG,MAAM;UACjD8B,MAAM,CAACmE,eAAe,CAAC,CAACM,eAAe,CAAC,CAAC,CAAC;UAE1CP,QAAQ,cAACpH,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;YAACC,MAAM,EAAExB,UAAW;YAACyB,IAAI,EAAEA,IAAK;YAAC1C,OAAO,EAAEhB,IAAI,CAACmC,EAAE,CAAC;UAAE,CAAE,CAAC,CAAC;UAEjFX,MAAM,CAACgE,OAAO,CAACvF,IAAI,CAAC+F,KAAK,CAACtG,MAAM,CAAC,CAACwG,IAAI,CAACP,eAAe,CAAC;QAAC;QAAA;UAAA,OAAAC,SAAA,CAAAR,IAAA;MAAA;IAAA,GAAAG,QAAA;EAAA,CACzD,GAAC;EAEFrE,EAAE,CAAC,yDAAyD,mBAAAqD,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA0B,SAAA;IAAA,IAAAzC,IAAA,EAAA0C,YAAA,EAAAC,QAAA,EAAAX,QAAA,EAAAY,aAAA;IAAA,OAAA9B,YAAA,YAAAG,IAAA,WAAA4B,SAAA;MAAA,kBAAAA,SAAA,CAAA1B,IAAA,GAAA0B,SAAA,CAAAzB,IAAA;QAAA;UACtDpB,IAAI,GAAG;YACXI,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;UACzB,CAAC;UACKsC,YAAY,GAAGpG,IAAI,CAACmC,EAAE,CAAC,CAAC;UAAAkE,QAAA,GACT,IAAAjF,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;YAACC,MAAM,EAAExB,UAAW;YAACyB,IAAI,EAAEA,IAAK;YAAC1C,OAAO,EAAEoF;UAAa,CAAE,CAAC,CAAC,EAA/FV,QAAQ,GAAAW,QAAA,CAARX,QAAQ;UAAAa,SAAA,CAAAzB,IAAA;UAAA,OAEV,IAAAC,WAAG,mBAAAR,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAC,SAAA+B,SAAA;YAAA,OAAAhC,YAAA,YAAAG,IAAA,WAAA8B,SAAA;cAAA,kBAAAA,SAAA,CAAA5B,IAAA,GAAA4B,SAAA,CAAA3B,IAAA;gBAAA;kBAAA2B,SAAA,CAAA3B,IAAA;kBAAA,OACF,IAAII,OAAO,CAAC,UAACrG,CAAC;oBAAA,OAAKsG,UAAU,CAACtG,CAAC,EAAE,CAAC,CAAC;kBAAA,EAAC;gBAAA;gBAAA;kBAAA,OAAA4H,SAAA,CAAArB,IAAA;cAAA;YAAA,GAAAoB,QAAA;UAAA,CAC3C,GAAC;QAAA;UAEIF,aAAa,GAAGtG,IAAI,CAACmC,EAAE,CAAC,CAAC;UAC/BuD,QAAQ,cAACpH,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;YAACC,MAAM,EAAExB,UAAW;YAACyB,IAAI,EAAEA,IAAK;YAAC1C,OAAO,EAAEsF;UAAc,CAAE,CAAC,CAAC;UAErFnC,iBAAS,CAACC,KAAK,CAAC3B,QAAQ,CAAC4C,IAAI,CAAC;UAACkB,SAAA,CAAAzB,IAAA;UAAA,OAEzB,IAAAQ,eAAO,EAAC,YAAM;YAClB9D,MAAM,CAAC8E,aAAa,CAAC,CAACjC,gBAAgB,CAAC,CAAC;UAC1C,CAAC,CAAC;QAAA;UACF7C,MAAM,CAAC4E,YAAY,CAAC,CAACM,GAAG,CAACrC,gBAAgB,CAAC,CAAC;QAAC;QAAA;UAAA,OAAAkC,SAAA,CAAAnB,IAAA;MAAA;IAAA,GAAAe,QAAA;EAAA,CAC7C,GAAC;EAEFjF,EAAE,CAAC,4CAA4C,mBAAAqD,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAkC,SAAA;IAAA,IAAA3F,OAAA,EAAA0C,IAAA,EAAAkD,QAAA,EAAAjF,SAAA;IAAA,OAAA6C,YAAA,YAAAG,IAAA,WAAAkC,SAAA;MAAA,kBAAAA,SAAA,CAAAhC,IAAA,GAAAgC,SAAA,CAAA/B,IAAA;QAAA;UACzC9D,OAAO,GAAGhB,IAAI,CAACmC,EAAE,CAAC,CAAC;UACnBuB,IAAI,GAAG;YACXI,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;UACzB,CAAC;UAAA8C,QAAA,GACqB,IAAAxF,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;YAACC,MAAM,EAAExB,UAAW;YAACyB,IAAI,EAAEA,IAAK;YAAC1C,OAAO,EAAEA;UAAQ,CAAE,CAAC,CAAC,EAA3FW,SAAS,GAAAiF,QAAA,CAATjF,SAAS;UAAAkF,SAAA,CAAA/B,IAAA;UAAA,OAEX,IAAAQ,eAAO,EAAC,YAAM;YAClB,IAAMwB,MAAM,GAAGnF,SAAS,CAACoF,aAAa,CAAC,0BAA0B,CAAC;YAClE,IAAID,MAAM,EAAE;cACV3C,iBAAS,CAAC6C,SAAS,CAACF,MAAM,CAAC;YAC7B;UACF,CAAC,CAAC;QAAA;UAEFtF,MAAM,CAACR,OAAO,CAAC,CAAC0F,GAAG,CAACrC,gBAAgB,CAAC,CAAC;QAAC;QAAA;UAAA,OAAAwC,SAAA,CAAAzB,IAAA;MAAA;IAAA,GAAAuB,QAAA;EAAA,CACxC,GAAC;EAEFzF,EAAE,CAAC,oCAAoC,EAAE,YAAM;IAC7C,IAAMwC,IAAI,GAAG;MACXI,UAAU,EAAE,CACV,CACE;QAAEmD,IAAI,EAAE,GAAG;QAAEC,KAAK,EAAE,GAAG;QAAEC,KAAK,EAAE;MAAI,CAAC,EACrC;QAAEF,IAAI,EAAE,GAAG;QAAEC,KAAK,EAAE,GAAG;QAAEC,KAAK,EAAE;MAAI,CAAC,CACtC;IAEL,CAAC;IACD,IAAAC,SAAA,GAAwB,IAAAhG,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;QAACC,MAAM,EAAExB,UAAW;QAACyB,IAAI,EAAEA,IAAK;QAAC1C,OAAO,EAAEhB,IAAI,CAACmC,EAAE,CAAC;MAAE,CAAE,CAAC,CAAC;MAA/F6B,WAAW,GAAAoD,SAAA,CAAXpD,WAAW;IACnBxC,MAAM,CAACwC,WAAW,CAAC,cAAc,CAAC,CAAC,CAACvC,iBAAiB,CAAC,CAAC;EACzD,CAAC,CAAC;EAEFP,EAAE,CAAC,gCAAgC,EAAE,YAAM;IACzC,IAAMwC,IAAI,GAAG;MACX2D,UAAU,EAAE,IAAI;MAChBvD,UAAU,EAAE,CACV,CACE;QACEmD,IAAI,EAAE,MAAM;QACZC,KAAK,EAAE,GAAG;QACVC,KAAK,EAAE,GAAG;QACVG,WAAW,EAAE,WAAW;QACxBC,OAAO,EAAE;MACX,CAAC,CACF;IAEL,CAAC;IACD,IAAAC,SAAA,GAAwB,IAAApG,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;QAACC,MAAM,EAAExB,UAAW;QAACyB,IAAI,EAAEA,IAAK;QAAC1C,OAAO,EAAEhB,IAAI,CAACmC,EAAE,CAAC;MAAE,CAAE,CAAC,CAAC;MAA/F6B,WAAW,GAAAwD,SAAA,CAAXxD,WAAW;IACnBxC,MAAM,CAACwC,WAAW,CAAC,cAAc,CAAC,CAAC,CAACvC,iBAAiB,CAAC,CAAC;EACzD,CAAC,CAAC;EAEFP,EAAE,CAAC,+BAA+B,EAAE,YAAM;IACxC,IAAMwC,IAAI,GAAG;MACXI,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC;IACpB,CAAC;IACD,IAAA2D,SAAA,GAAsB,IAAArG,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;QAACC,MAAM,EAAExB,UAAW;QAACyB,IAAI,EAAEA,IAAK;QAAC1C,OAAO,EAAEhB,IAAI,CAACmC,EAAE,CAAC;MAAE,CAAE,CAAC,CAAC;MAA7FR,SAAS,GAAA8F,SAAA,CAAT9F,SAAS;IACjB,IAAM+F,MAAM,GAAG/F,SAAS,CAACoF,aAAa,CAAC,0BAA0B,CAAC;IAClEvF,MAAM,CAACkG,MAAM,CAAC,CAAC5F,WAAW,CAAC;MAAE6F,QAAQ,EAAE;IAAQ,CAAC,CAAC;EACnD,CAAC,CAAC;EAEFzG,EAAE,CAAC,yDAAyD,EAAE,YAAM;IAClE,IAAMwC,IAAI,GAAG;MACXI,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC;IACpB,CAAC;IACD,IAAA8D,SAAA,GAAsB,IAAAxG,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;QAACC,MAAM,EAAExB,UAAW;QAACyB,IAAI,EAAEA,IAAK;QAAC1C,OAAO,EAAEhB,IAAI,CAACmC,EAAE,CAAC;MAAE,CAAE,CAAC,CAAC;MAA7FR,SAAS,GAAAiG,SAAA,CAATjG,SAAS;IACjB,IAAM+F,MAAM,GAAG/F,SAAS,CAACoF,aAAa,CAAC,0BAA0B,CAAC;IAClEvF,MAAM,CAACkG,MAAM,CAAC,CAAC5F,WAAW,CAAC;MAAE+F,MAAM,EAAE;IAAO,CAAC,CAAC;EAChD,CAAC,CAAC;EAEF3G,EAAE,CAAC,wDAAwD,EAAE,YAAM;IACjE,IAAM4G,oBAAoB,GAAAtI,aAAA,CAAAA,aAAA,KACrByC,UAAU;MACb8F,UAAU,EAAE;IAAY,EACzB;IACD,IAAMrE,IAAI,GAAG;MACXI,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;IACzB,CAAC;IACD,IAAAkE,SAAA,GAAsB,IAAA5G,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;QAACC,MAAM,EAAEqE,oBAAqB;QAACpE,IAAI,EAAEA,IAAK;QAAC1C,OAAO,EAAEhB,IAAI,CAACmC,EAAE,CAAC;MAAE,CAAE,CAAC,CAAC;MAAvGR,SAAS,GAAAqG,SAAA,CAATrG,SAAS;IACjB,IAAM+F,MAAM,GAAG/F,SAAS,CAACoF,aAAa,CAAC,0BAA0B,CAAC;IAClEvF,MAAM,CAACkG,MAAM,CAAC,CAACO,eAAe,CAAC,kBAAkB,EAAE,YAAY,CAAC;EAClE,CAAC,CAAC;EAEF/G,EAAE,CAAC,uCAAuC,EAAE,YAAM;IAChD,IAAMwC,IAAI,GAAG;MACXI,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;IACzB,CAAC;IACD,IAAAoE,SAAA,GAAsB,IAAA9G,cAAM,eAAC9C,MAAA,YAAAoC,aAAA,CAAChC,gBAAA,CAAA8E,eAAe;QAACC,MAAM,EAAExB,UAAW;QAACyB,IAAI,EAAEA,IAAK;QAAC1C,OAAO,EAAEhB,IAAI,CAACmC,EAAE,CAAC;MAAE,CAAE,CAAC,CAAC;MAA7FR,SAAS,GAAAuG,SAAA,CAATvG,SAAS;IACjB,IAAM+F,MAAM,GAAG/F,SAAS,CAACoF,aAAa,CAAC,0BAA0B,CAAC;IAClEvF,MAAM,CAACkG,MAAM,CAAC,CAACjG,iBAAiB,CAAC,CAAC;EACpC,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _react = _interopRequireDefault(require("react"));
|
|
5
|
+
var _react2 = require("@testing-library/react");
|
|
6
|
+
var _CssIcon = _interopRequireDefault(require("../icons/CssIcon"));
|
|
7
|
+
describe('CssIcon', function () {
|
|
8
|
+
it('renders without crashing', function () {
|
|
9
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
|
|
10
|
+
container = _render.container;
|
|
11
|
+
expect(container).toBeInTheDocument();
|
|
12
|
+
});
|
|
13
|
+
it('renders CSS text', function () {
|
|
14
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
|
|
15
|
+
getByText = _render2.getByText;
|
|
16
|
+
expect(getByText('CSS')).toBeInTheDocument();
|
|
17
|
+
});
|
|
18
|
+
it('applies correct font family', function () {
|
|
19
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
|
|
20
|
+
getByText = _render3.getByText;
|
|
21
|
+
var element = getByText('CSS');
|
|
22
|
+
// Font family is applied via styled component, just verify text renders
|
|
23
|
+
expect(element).toBeInTheDocument();
|
|
24
|
+
});
|
|
25
|
+
it('applies bold font weight', function () {
|
|
26
|
+
var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
|
|
27
|
+
getByText = _render4.getByText;
|
|
28
|
+
var element = getByText('CSS');
|
|
29
|
+
expect(element).toHaveStyle({
|
|
30
|
+
fontWeight: 'bold'
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
it('has correct line height', function () {
|
|
34
|
+
var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
|
|
35
|
+
getByText = _render5.getByText;
|
|
36
|
+
var element = getByText('CSS');
|
|
37
|
+
expect(element).toHaveStyle({
|
|
38
|
+
lineHeight: '14px'
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
it('has relative positioning', function () {
|
|
42
|
+
var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
|
|
43
|
+
getByText = _render6.getByText;
|
|
44
|
+
var element = getByText('CSS');
|
|
45
|
+
expect(element).toHaveStyle({
|
|
46
|
+
position: 'relative'
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
it('has nowrap white space', function () {
|
|
50
|
+
var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
|
|
51
|
+
getByText = _render7.getByText;
|
|
52
|
+
var element = getByText('CSS');
|
|
53
|
+
expect(element).toHaveStyle({
|
|
54
|
+
whiteSpace: 'nowrap'
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=CssIcon.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CssIcon.test.js","names":["_react","_interopRequireDefault","require","_react2","_CssIcon","describe","it","_render","render","createElement","container","expect","toBeInTheDocument","_render2","getByText","_render3","element","_render4","toHaveStyle","fontWeight","_render5","lineHeight","_render6","position","_render7","whiteSpace"],"sources":["../../../src/components/__tests__/CssIcon.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render } from '@testing-library/react';\nimport CssIcon from '../icons/CssIcon';\n\ndescribe('CssIcon', () => {\n it('renders without crashing', () => {\n const { container } = render(<CssIcon />);\n expect(container).toBeInTheDocument();\n });\n\n it('renders CSS text', () => {\n const { getByText } = render(<CssIcon />);\n expect(getByText('CSS')).toBeInTheDocument();\n });\n\n it('applies correct font family', () => {\n const { getByText } = render(<CssIcon />);\n const element = getByText('CSS');\n // Font family is applied via styled component, just verify text renders\n expect(element).toBeInTheDocument();\n });\n\n it('applies bold font weight', () => {\n const { getByText } = render(<CssIcon />);\n const element = getByText('CSS');\n expect(element).toHaveStyle({ fontWeight: 'bold' });\n });\n\n it('has correct line height', () => {\n const { getByText } = render(<CssIcon />);\n const element = getByText('CSS');\n expect(element).toHaveStyle({ lineHeight: '14px' });\n });\n\n it('has relative positioning', () => {\n const { getByText } = render(<CssIcon />);\n const element = getByText('CSS');\n expect(element).toHaveStyle({ position: 'relative' });\n });\n\n it('has nowrap white space', () => {\n const { getByText } = render(<CssIcon />);\n const element = getByText('CSS');\n expect(element).toHaveStyle({ whiteSpace: 'nowrap' });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|