@pie-lib/editable-html 13.0.7 → 13.1.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.
Files changed (50) hide show
  1. package/CHANGELOG.md +0 -22
  2. package/lib/__tests__/editor-utils.test.js +164 -0
  3. package/lib/__tests__/editor-utils.test.js.map +1 -0
  4. package/lib/__tests__/serialization.test.js +241 -0
  5. package/lib/__tests__/serialization.test.js.map +1 -0
  6. package/lib/__tests__/utils.js +79 -0
  7. package/lib/__tests__/utils.js.map +1 -0
  8. package/lib/plugins/image/__tests__/component.test.js +96 -0
  9. package/lib/plugins/image/__tests__/component.test.js.map +1 -0
  10. package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +131 -0
  11. package/lib/plugins/image/__tests__/image-toolbar-logic.test.js.map +1 -0
  12. package/lib/plugins/image/__tests__/image-toolbar.test.js +21 -0
  13. package/lib/plugins/image/__tests__/image-toolbar.test.js.map +1 -0
  14. package/lib/plugins/image/__tests__/index.test.js +86 -0
  15. package/lib/plugins/image/__tests__/index.test.js.map +1 -0
  16. package/lib/plugins/image/__tests__/insert-image-handler.test.js +112 -0
  17. package/lib/plugins/image/__tests__/insert-image-handler.test.js.map +1 -0
  18. package/lib/plugins/image/__tests__/mock-change.js +22 -0
  19. package/lib/plugins/image/__tests__/mock-change.js.map +1 -0
  20. package/lib/plugins/list/__tests__/index.test.js +63 -0
  21. package/lib/plugins/list/__tests__/index.test.js.map +1 -0
  22. package/lib/plugins/math/__tests__/index.test.js +284 -0
  23. package/lib/plugins/math/__tests__/index.test.js.map +1 -0
  24. package/lib/plugins/media/__tests__/index.test.js +69 -0
  25. package/lib/plugins/media/__tests__/index.test.js.map +1 -0
  26. package/lib/plugins/respArea/drag-in-the-blank/__tests__/choice.test.js +93 -0
  27. package/lib/plugins/respArea/drag-in-the-blank/__tests__/choice.test.js.map +1 -0
  28. package/lib/plugins/respArea/drag-in-the-blank/choice.js +3 -0
  29. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
  30. package/lib/plugins/respArea/math-templated/index.js +2 -2
  31. package/lib/plugins/respArea/math-templated/index.js.map +1 -1
  32. package/lib/plugins/table/__tests__/index.test.js +416 -0
  33. package/lib/plugins/table/__tests__/index.test.js.map +1 -0
  34. package/lib/plugins/table/__tests__/table-toolbar.test.js +81 -0
  35. package/lib/plugins/table/__tests__/table-toolbar.test.js.map +1 -0
  36. package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +153 -0
  37. package/lib/plugins/toolbar/__tests__/default-toolbar.test.js.map +1 -0
  38. package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +47 -0
  39. package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js.map +1 -0
  40. package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +112 -0
  41. package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js.map +1 -0
  42. package/lib/plugins/toolbar/__tests__/toolbar.test.js +118 -0
  43. package/lib/plugins/toolbar/__tests__/toolbar.test.js.map +1 -0
  44. package/lib/shared/alert-dialog.js +68 -0
  45. package/package.json +7 -7
  46. package/src/__tests__/utils.js +1 -1
  47. package/src/plugins/respArea/drag-in-the-blank/__tests__/choice.test.js +71 -0
  48. package/src/plugins/respArea/drag-in-the-blank/choice.jsx +3 -0
  49. package/src/plugins/respArea/math-templated/index.jsx +1 -1
  50. package/LICENSE.md +0 -5
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+ var _react = _interopRequireDefault(require("react"));
7
+ var _react2 = require("@testing-library/react");
8
+ var _slate = require("slate");
9
+ var _component = require("../component");
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
+ describe('Image Component', function () {
13
+ var createImageNode = function createImageNode() {
14
+ var dataProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
15
+ return _slate.Block.fromJSON({
16
+ type: 'image',
17
+ data: _slate.Data.create(_objectSpread({
18
+ width: 50,
19
+ height: 50,
20
+ src: 'test-image.jpg'
21
+ }, dataProps))
22
+ });
23
+ };
24
+ var createMockEditor = function createMockEditor() {
25
+ return {
26
+ value: {},
27
+ change: jest.fn()
28
+ };
29
+ };
30
+ var defaultClasses = {
31
+ active: 'active',
32
+ loading: 'loading',
33
+ pendingDelete: 'pendingDelete'
34
+ };
35
+ var defaultProps = {
36
+ node: createImageNode(),
37
+ editor: createMockEditor(),
38
+ classes: defaultClasses,
39
+ onDelete: jest.fn()
40
+ };
41
+ it('renders correctly with default props', function () {
42
+ var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_component.Component, defaultProps)),
43
+ container = _render.container;
44
+ expect(container.firstChild).toBeInTheDocument();
45
+ });
46
+ it('renders image with correct dimensions', function () {
47
+ var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_component.Component, defaultProps)),
48
+ container = _render2.container;
49
+ var img = container.querySelector('img');
50
+ expect(img).toBeInTheDocument();
51
+ });
52
+ it('renders with custom width and height', function () {
53
+ var node = createImageNode({
54
+ width: 100,
55
+ height: 200
56
+ });
57
+ var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_component.Component, (0, _extends2["default"])({}, defaultProps, {
58
+ node: node
59
+ }))),
60
+ container = _render3.container;
61
+ var img = container.querySelector('img');
62
+ expect(img).toBeInTheDocument();
63
+ });
64
+ it('renders with loading class when loading', function () {
65
+ var node = createImageNode({
66
+ loading: true
67
+ });
68
+ var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_component.Component, (0, _extends2["default"])({}, defaultProps, {
69
+ node: node
70
+ }))),
71
+ container = _render4.container;
72
+ expect(container.firstChild).toBeInTheDocument();
73
+ });
74
+ it('renders with active class when active', function () {
75
+ var node = createImageNode({
76
+ active: true
77
+ });
78
+ var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_component.Component, (0, _extends2["default"])({}, defaultProps, {
79
+ node: node
80
+ }))),
81
+ container = _render5.container;
82
+ expect(container.firstChild).toBeInTheDocument();
83
+ });
84
+ it('handles image with source', function () {
85
+ var node = createImageNode({
86
+ src: 'test-image.jpg'
87
+ });
88
+ var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_component.Component, (0, _extends2["default"])({}, defaultProps, {
89
+ node: node
90
+ }))),
91
+ container = _render6.container;
92
+ var img = container.querySelector('img');
93
+ expect(img).toHaveAttribute('src', 'test-image.jpg');
94
+ });
95
+ });
96
+ //# sourceMappingURL=component.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.test.js","names":["_react","_interopRequireDefault","require","_react2","_slate","_component","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","describe","createImageNode","dataProps","undefined","Block","fromJSON","type","data","Data","create","width","height","src","createMockEditor","value","change","jest","fn","defaultClasses","active","loading","pendingDelete","defaultProps","node","editor","classes","onDelete","it","_render","render","createElement","Component","container","expect","firstChild","toBeInTheDocument","_render2","img","querySelector","_render3","_extends2","_render4","_render5","_render6","toHaveAttribute"],"sources":["../../../../src/plugins/image/__tests__/component.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render } from '@testing-library/react';\nimport { Block, Data } from 'slate';\nimport { Component } from '../component';\n\ndescribe('Image Component', () => {\n const createImageNode = (dataProps = {}) => {\n return Block.fromJSON({\n type: 'image',\n data: Data.create({\n width: 50,\n height: 50,\n src: 'test-image.jpg',\n ...dataProps,\n }),\n });\n };\n\n const createMockEditor = () => ({\n value: {},\n change: jest.fn(),\n });\n\n const defaultClasses = {\n active: 'active',\n loading: 'loading',\n pendingDelete: 'pendingDelete',\n };\n\n const defaultProps = {\n node: createImageNode(),\n editor: createMockEditor(),\n classes: defaultClasses,\n onDelete: jest.fn(),\n };\n\n it('renders correctly with default props', () => {\n const { container } = render(<Component {...defaultProps} />);\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders image with correct dimensions', () => {\n const { container } = render(<Component {...defaultProps} />);\n const img = container.querySelector('img');\n expect(img).toBeInTheDocument();\n });\n\n it('renders with custom width and height', () => {\n const node = createImageNode({ width: 100, height: 200 });\n const { container } = render(<Component {...defaultProps} node={node} />);\n const img = container.querySelector('img');\n expect(img).toBeInTheDocument();\n });\n\n it('renders with loading class when loading', () => {\n const node = createImageNode({ loading: true });\n const { container } = render(<Component {...defaultProps} node={node} />);\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with active class when active', () => {\n const node = createImageNode({ active: true });\n const { container } = render(<Component {...defaultProps} node={node} />);\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('handles image with source', () => {\n const node = createImageNode({ src: 'test-image.jpg' });\n const { container } = render(<Component {...defaultProps} node={node} />);\n const img = container.querySelector('img');\n expect(img).toHaveAttribute('src', 'test-image.jpg');\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,131 @@
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 = require("@testing-library/react");
8
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
9
+ var _imageToolbar = require("../image-toolbar");
10
+ var _react2 = _interopRequireDefault(require("react"));
11
+ 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; }
12
+ 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; }
13
+ // Mock the alt-dialog component to avoid complex modal rendering in tests
14
+ jest.mock('../alt-dialog', function () {
15
+ return function AltDialog(_ref) {
16
+ var alt = _ref.alt,
17
+ onDone = _ref.onDone;
18
+ return /*#__PURE__*/_react2["default"].createElement("div", {
19
+ "data-testid": "alt-dialog"
20
+ }, /*#__PURE__*/_react2["default"].createElement("input", {
21
+ "data-testid": "alt-input",
22
+ defaultValue: alt,
23
+ onChange: function onChange(e) {
24
+ return onDone(e.target.value);
25
+ }
26
+ }));
27
+ };
28
+ });
29
+ describe('ImageToolbar', function () {
30
+ var onChange;
31
+ beforeEach(function () {
32
+ onChange = jest.fn();
33
+ });
34
+ var renderComponent = function renderComponent() {
35
+ var extras = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
36
+ var props = _objectSpread({
37
+ onChange: onChange,
38
+ imageLoaded: true
39
+ }, extras);
40
+ return (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_imageToolbar.ImageToolbar, props));
41
+ };
42
+ describe('rendering', function () {
43
+ it('renders alignment buttons', function () {
44
+ renderComponent();
45
+ expect(_react.screen.getByText('left')).toBeInTheDocument();
46
+ expect(_react.screen.getByText('center')).toBeInTheDocument();
47
+ expect(_react.screen.getByText('right')).toBeInTheDocument();
48
+ });
49
+ it('renders alt text button', function () {
50
+ renderComponent();
51
+ expect(_react.screen.getByText('Alt text')).toBeInTheDocument();
52
+ });
53
+ it('does not render alignment buttons when disabled', function () {
54
+ renderComponent({
55
+ disableImageAlignmentButtons: true
56
+ });
57
+ expect(_react.screen.queryByText('left')).not.toBeInTheDocument();
58
+ expect(_react.screen.queryByText('center')).not.toBeInTheDocument();
59
+ expect(_react.screen.queryByText('right')).not.toBeInTheDocument();
60
+ });
61
+ it('shows active state for selected alignment', function () {
62
+ var _renderComponent = renderComponent({
63
+ alignment: 'center'
64
+ }),
65
+ container = _renderComponent.container;
66
+ // The MarkButton component uses aria-pressed for active state
67
+ var centerButton = _react.screen.getByText('center').closest('button');
68
+ expect(centerButton).toHaveAttribute('aria-pressed', 'true');
69
+ });
70
+ });
71
+ describe('user interactions', function () {
72
+ it('calls onChange with alignment when left is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
73
+ var user;
74
+ return _regenerator["default"].wrap(function (_context) {
75
+ while (1) switch (_context.prev = _context.next) {
76
+ case 0:
77
+ user = _userEvent["default"].setup();
78
+ renderComponent();
79
+ _context.next = 1;
80
+ return user.click(_react.screen.getByText('left'));
81
+ case 1:
82
+ expect(onChange).toHaveBeenCalledWith({
83
+ alignment: 'left'
84
+ });
85
+ case 2:
86
+ case "end":
87
+ return _context.stop();
88
+ }
89
+ }, _callee);
90
+ })));
91
+ it('calls onChange with alignment when center is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
92
+ var user;
93
+ return _regenerator["default"].wrap(function (_context2) {
94
+ while (1) switch (_context2.prev = _context2.next) {
95
+ case 0:
96
+ user = _userEvent["default"].setup();
97
+ renderComponent();
98
+ _context2.next = 1;
99
+ return user.click(_react.screen.getByText('center'));
100
+ case 1:
101
+ expect(onChange).toHaveBeenCalledWith({
102
+ alignment: 'center'
103
+ });
104
+ case 2:
105
+ case "end":
106
+ return _context2.stop();
107
+ }
108
+ }, _callee2);
109
+ })));
110
+ it('calls onChange with alignment when right is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
111
+ var user;
112
+ return _regenerator["default"].wrap(function (_context3) {
113
+ while (1) switch (_context3.prev = _context3.next) {
114
+ case 0:
115
+ user = _userEvent["default"].setup();
116
+ renderComponent();
117
+ _context3.next = 1;
118
+ return user.click(_react.screen.getByText('right'));
119
+ case 1:
120
+ expect(onChange).toHaveBeenCalledWith({
121
+ alignment: 'right'
122
+ });
123
+ case 2:
124
+ case "end":
125
+ return _context3.stop();
126
+ }
127
+ }, _callee3);
128
+ })));
129
+ });
130
+ });
131
+ //# sourceMappingURL=image-toolbar-logic.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-toolbar-logic.test.js","names":["_react","require","_userEvent","_interopRequireDefault","_imageToolbar","_react2","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","jest","mock","AltDialog","_ref","alt","onDone","createElement","defaultValue","onChange","target","value","describe","beforeEach","fn","renderComponent","extras","undefined","props","imageLoaded","render","ImageToolbar","it","expect","screen","getByText","toBeInTheDocument","disableImageAlignmentButtons","queryByText","not","_renderComponent","alignment","container","centerButton","closest","toHaveAttribute","_asyncToGenerator2","_regenerator","mark","_callee","user","wrap","_context","prev","next","userEvent","setup","click","toHaveBeenCalledWith","stop","_callee2","_context2","_callee3","_context3"],"sources":["../../../../src/plugins/image/__tests__/image-toolbar-logic.test.jsx"],"sourcesContent":["import { render, screen } from '@testing-library/react';\nimport userEvent from '@testing-library/user-event';\nimport { ImageToolbar } from '../image-toolbar';\nimport React from 'react';\n\n// Mock the alt-dialog component to avoid complex modal rendering in tests\njest.mock('../alt-dialog', () => {\n return function AltDialog({ alt, onDone }) {\n return (\n <div data-testid=\"alt-dialog\">\n <input data-testid=\"alt-input\" defaultValue={alt} onChange={(e) => onDone(e.target.value)} />\n </div>\n );\n };\n});\n\ndescribe('ImageToolbar', () => {\n let onChange;\n\n beforeEach(() => {\n onChange = jest.fn();\n });\n\n const renderComponent = (extras = {}) => {\n const props = {\n onChange,\n imageLoaded: true,\n ...extras,\n };\n\n return render(<ImageToolbar {...props} />);\n };\n\n describe('rendering', () => {\n it('renders alignment buttons', () => {\n renderComponent();\n expect(screen.getByText('left')).toBeInTheDocument();\n expect(screen.getByText('center')).toBeInTheDocument();\n expect(screen.getByText('right')).toBeInTheDocument();\n });\n\n it('renders alt text button', () => {\n renderComponent();\n expect(screen.getByText('Alt text')).toBeInTheDocument();\n });\n\n it('does not render alignment buttons when disabled', () => {\n renderComponent({ disableImageAlignmentButtons: true });\n expect(screen.queryByText('left')).not.toBeInTheDocument();\n expect(screen.queryByText('center')).not.toBeInTheDocument();\n expect(screen.queryByText('right')).not.toBeInTheDocument();\n });\n\n it('shows active state for selected alignment', () => {\n const { container } = renderComponent({ alignment: 'center' });\n // The MarkButton component uses aria-pressed for active state\n const centerButton = screen.getByText('center').closest('button');\n expect(centerButton).toHaveAttribute('aria-pressed', 'true');\n });\n });\n\n describe('user interactions', () => {\n it('calls onChange with alignment when left is clicked', async () => {\n const user = userEvent.setup();\n renderComponent();\n\n await user.click(screen.getByText('left'));\n\n expect(onChange).toHaveBeenCalledWith({ alignment: 'left' });\n });\n\n it('calls onChange with alignment when center is clicked', async () => {\n const user = userEvent.setup();\n renderComponent();\n\n await user.click(screen.getByText('center'));\n\n expect(onChange).toHaveBeenCalledWith({ alignment: 'center' });\n });\n\n it('calls onChange with alignment when right is clicked', async () => {\n const user = userEvent.setup();\n renderComponent();\n\n await user.click(screen.getByText('right'));\n\n expect(onChange).toHaveBeenCalledWith({ alignment: 'right' });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _react = _interopRequireDefault(require("react"));
5
+ var _imageToolbar = _interopRequireDefault(require("../image-toolbar"));
6
+ var _react2 = require("@testing-library/react");
7
+ it('renders image toolbar', function () {
8
+ var classes = {
9
+ holder: 'holder'
10
+ };
11
+ var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_imageToolbar["default"], {
12
+ percent: 50,
13
+ classes: classes,
14
+ onChange: jest.fn()
15
+ })),
16
+ container = _render.container;
17
+
18
+ // Verify the toolbar is rendered
19
+ expect(container.firstChild).toBeInTheDocument();
20
+ });
21
+ //# sourceMappingURL=image-toolbar.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-toolbar.test.js","names":["_react","_interopRequireDefault","require","_imageToolbar","_react2","it","classes","holder","_render","render","createElement","percent","onChange","jest","fn","container","expect","firstChild","toBeInTheDocument"],"sources":["../../../../src/plugins/image/__tests__/image-toolbar.test.jsx"],"sourcesContent":["import React from 'react';\nimport Toolbar from '../image-toolbar';\nimport { render } from '@testing-library/react';\n\nit('renders image toolbar', () => {\n const classes = { holder: 'holder' };\n\n const { container } = render(<Toolbar percent={50} classes={classes} onChange={jest.fn()} />);\n\n // Verify the toolbar is rendered\n expect(container.firstChild).toBeInTheDocument();\n});\n"],"mappings":";;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAEAG,EAAE,CAAC,uBAAuB,EAAE,YAAM;EAChC,IAAMC,OAAO,GAAG;IAAEC,MAAM,EAAE;EAAS,CAAC;EAEpC,IAAAC,OAAA,GAAsB,IAAAC,cAAM,eAACT,MAAA,YAAAU,aAAA,CAACP,aAAA,WAAO;MAACQ,OAAO,EAAE,EAAG;MAACL,OAAO,EAAEA,OAAQ;MAACM,QAAQ,EAAEC,IAAI,CAACC,EAAE,CAAC;IAAE,CAAE,CAAC,CAAC;IAArFC,SAAS,GAAAP,OAAA,CAATO,SAAS;;EAEjB;EACAC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;AAClD,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _ = _interopRequireDefault(require("../"));
5
+ describe('image plugin', function () {
6
+ var value = {};
7
+ var imageSupport = {
8
+ "delete": jest.fn(),
9
+ add: jest.fn()
10
+ };
11
+ var imagePlugin = (0, _["default"])({
12
+ onDelete: function onDelete(src, done) {
13
+ imageSupport["delete"](src, function (e) {
14
+ done(e, value);
15
+ });
16
+ },
17
+ insertImageRequested: function insertImageRequested(node, getHandler) {
18
+ var handler = getHandler(function () {
19
+ return value;
20
+ });
21
+ imageSupport.add(handler);
22
+ }
23
+ });
24
+ describe('normalizeNode', function () {
25
+ it('should exit the function if the node is not of type document', function () {
26
+ var returnValue = imagePlugin.normalizeNode({
27
+ object: 'image'
28
+ });
29
+ expect(returnValue).toEqual(undefined);
30
+ });
31
+ it('should exit if the function if there are no changes needed', function () {
32
+ var nodes = [{
33
+ object: 'text',
34
+ text: 'Before Image'
35
+ }, {
36
+ type: 'image'
37
+ }, {
38
+ object: 'text',
39
+ text: 'After Image'
40
+ }];
41
+ var returnValue = imagePlugin.normalizeNode({
42
+ object: 'document',
43
+ findDescendant: jest.fn(function (callback) {
44
+ nodes.forEach(function (n) {
45
+ return callback(n);
46
+ });
47
+ })
48
+ });
49
+ expect(returnValue).toEqual(undefined);
50
+ });
51
+ it('should return a function if there is a node with an empty text before an image', function () {
52
+ var nodes = [{
53
+ object: 'text',
54
+ text: '',
55
+ key: '1'
56
+ }, {
57
+ type: 'image',
58
+ key: '2'
59
+ }, {
60
+ object: 'text',
61
+ text: 'After Image',
62
+ key: '3'
63
+ }];
64
+ var findDescendant = jest.fn(function (callback) {
65
+ nodes.forEach(function (n) {
66
+ return callback(n);
67
+ });
68
+ });
69
+ var change = {
70
+ withoutNormalization: jest.fn(function (callback) {
71
+ callback();
72
+ }),
73
+ insertTextByKey: jest.fn()
74
+ };
75
+ var returnValue = imagePlugin.normalizeNode({
76
+ object: 'document',
77
+ findDescendant: findDescendant
78
+ });
79
+ expect(returnValue).toEqual(expect.any(Function));
80
+ returnValue(change);
81
+ expect(change.withoutNormalization).toHaveBeenCalledWith(expect.any(Function));
82
+ expect(change.insertTextByKey).toHaveBeenCalledWith('1', 0, ' ');
83
+ });
84
+ });
85
+ });
86
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","names":["_","_interopRequireDefault","require","describe","value","imageSupport","jest","fn","add","imagePlugin","ImageToolbar","onDelete","src","done","e","insertImageRequested","node","getHandler","handler","it","returnValue","normalizeNode","object","expect","toEqual","undefined","nodes","text","type","findDescendant","callback","forEach","n","key","change","withoutNormalization","insertTextByKey","any","Function","toHaveBeenCalledWith"],"sources":["../../../../src/plugins/image/__tests__/index.test.js"],"sourcesContent":["import ImageToolbar from '../';\n\ndescribe('image plugin', () => {\n let value = {};\n\n const imageSupport = {\n delete: jest.fn(),\n add: jest.fn(),\n };\n\n const imagePlugin = ImageToolbar({\n onDelete: (src, done) => {\n imageSupport.delete(src, (e) => {\n done(e, value);\n });\n },\n insertImageRequested: (node, getHandler) => {\n const handler = getHandler(() => value);\n imageSupport.add(handler);\n },\n });\n\n describe('normalizeNode', () => {\n it('should exit the function if the node is not of type document', () => {\n const returnValue = imagePlugin.normalizeNode({ object: 'image' });\n\n expect(returnValue).toEqual(undefined);\n });\n\n it('should exit if the function if there are no changes needed', () => {\n const nodes = [\n {\n object: 'text',\n text: 'Before Image',\n },\n {\n type: 'image',\n },\n {\n object: 'text',\n text: 'After Image',\n },\n ];\n const returnValue = imagePlugin.normalizeNode({\n object: 'document',\n findDescendant: jest.fn((callback) => {\n nodes.forEach((n) => callback(n));\n }),\n });\n expect(returnValue).toEqual(undefined);\n });\n\n it('should return a function if there is a node with an empty text before an image', () => {\n const nodes = [\n {\n object: 'text',\n text: '',\n key: '1',\n },\n {\n type: 'image',\n key: '2',\n },\n {\n object: 'text',\n text: 'After Image',\n key: '3',\n },\n ];\n const findDescendant = jest.fn((callback) => {\n nodes.forEach((n) => callback(n));\n });\n const change = {\n withoutNormalization: jest.fn((callback) => {\n callback();\n }),\n insertTextByKey: jest.fn(),\n };\n const returnValue = imagePlugin.normalizeNode({\n object: 'document',\n findDescendant,\n });\n\n expect(returnValue).toEqual(expect.any(Function));\n\n returnValue(change);\n\n expect(change.withoutNormalization).toHaveBeenCalledWith(expect.any(Function));\n expect(change.insertTextByKey).toHaveBeenCalledWith('1', 0, ' ');\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ var _mockChange = _interopRequireWildcard(require("./mock-change"));
6
+ var _slate = require("slate");
7
+ var _insertImageHandler = _interopRequireDefault(require("../insert-image-handler"));
8
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
9
+ expect.extend({
10
+ toMatchData: function toMatchData(received, argument) {
11
+ var argData = _slate.Data.create(argument);
12
+ var pass = argData.equals(received.data);
13
+ if (pass) {
14
+ return {
15
+ message: function message() {
16
+ return "expected ".concat(received.toJSON(), " not to be divisible by ").concat(argData.toJSON());
17
+ },
18
+ pass: true
19
+ };
20
+ } else {
21
+ return {
22
+ message: function message() {
23
+ return "expected ".concat(received.toJSON(), " to be divisible by ").concat(argData.toJSON());
24
+ },
25
+ pass: false
26
+ };
27
+ }
28
+ }
29
+ });
30
+ describe('insert image handler', function () {
31
+ var _change, document, value;
32
+ beforeEach(function () {
33
+ document = new _mockChange.MockDocument();
34
+ _change = new _mockChange["default"]();
35
+ value = {
36
+ change: function change() {
37
+ return _change;
38
+ },
39
+ document: document
40
+ };
41
+ });
42
+ var block = {
43
+ key: 1
44
+ };
45
+ var onChange = jest.fn();
46
+ var handler = new _insertImageHandler["default"](block, function () {}, function () {
47
+ return value;
48
+ }, onChange);
49
+ test('it constructs', function () {
50
+ expect(handler).not.toEqual(undefined);
51
+ });
52
+ describe('fileChosen', function () {
53
+ var fileReader;
54
+ beforeEach(function () {
55
+ fileReader = {
56
+ readAsDataURL: jest.fn()
57
+ };
58
+ global.FileReader = function () {
59
+ return fileReader;
60
+ };
61
+ handler.fileChosen({});
62
+ });
63
+ test('calls readAsDataURL', function () {
64
+ expect(fileReader.readAsDataURL).toBeCalledWith({});
65
+ });
66
+ test('calls onChange with src -> dataUrl', function () {
67
+ fileReader.result = 'dataURL';
68
+ fileReader.onload();
69
+ expect(_change.setNodeByKey).toBeCalledWith(block.key, expect.anything());
70
+ expect(_change.setNodeByKey.mock.calls[0][1]).toMatchData({
71
+ src: 'dataURL'
72
+ });
73
+ expect(onChange).toBeCalledWith(_change);
74
+ });
75
+ });
76
+ describe('progress', function () {
77
+ test('calls change w/ percent', function () {
78
+ handler.progress(40, 40, 100);
79
+ expect(_change.setNodeByKey).toBeCalledWith(block.key, expect.anything());
80
+ expect(_change.setNodeByKey.mock.calls[0][1].data.toJS()).toMatchObject({
81
+ percent: 40
82
+ });
83
+ });
84
+ });
85
+ describe('done', function () {
86
+ test('calls setNodeByKey', function () {
87
+ handler.done(null, 'src');
88
+ expect(_change.setNodeByKey).toBeCalledWith(block.key, expect.anything());
89
+ expect(_change.setNodeByKey.mock.calls[0][1].data.toJS()).toMatchObject({
90
+ src: 'src',
91
+ loaded: true,
92
+ percent: 100
93
+ });
94
+ });
95
+ });
96
+ describe('cancel', function () {
97
+ beforeEach(function () {
98
+ document.getChild = jest.fn().mockReturnValue({
99
+ data: _slate.Data.create({}),
100
+ key: block.key
101
+ });
102
+ handler.cancel();
103
+ });
104
+ test('calls onChange', function () {
105
+ expect(onChange).toBeCalled();
106
+ });
107
+ test('calls removeNodeByKey', function () {
108
+ expect(_change.removeNodeByKey).toBeCalledWith(block.key);
109
+ });
110
+ });
111
+ });
112
+ //# sourceMappingURL=insert-image-handler.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-image-handler.test.js","names":["_mockChange","_interopRequireWildcard","require","_slate","_insertImageHandler","_interopRequireDefault","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","expect","extend","toMatchData","received","argument","argData","Data","create","pass","equals","data","message","concat","toJSON","describe","change","document","value","beforeEach","MockDocument","MockChange","block","key","onChange","jest","fn","handler","InsertImageHandler","test","not","toEqual","undefined","fileReader","readAsDataURL","global","FileReader","fileChosen","toBeCalledWith","result","onload","setNodeByKey","anything","mock","calls","src","progress","toJS","toMatchObject","percent","done","loaded","getChild","mockReturnValue","cancel","toBeCalled","removeNodeByKey"],"sources":["../../../../src/plugins/image/__tests__/insert-image-handler.test.js"],"sourcesContent":["import MockChange, { MockDocument } from './mock-change';\n\nimport { Data } from 'slate';\nimport InsertImageHandler from '../insert-image-handler';\n\nexpect.extend({\n toMatchData: (received, argument) => {\n const argData = Data.create(argument);\n const pass = argData.equals(received.data);\n if (pass) {\n return {\n message: () => `expected ${received.toJSON()} not to be divisible by ${argData.toJSON()}`,\n pass: true,\n };\n } else {\n return {\n message: () => `expected ${received.toJSON()} to be divisible by ${argData.toJSON()}`,\n pass: false,\n };\n }\n },\n});\ndescribe('insert image handler', () => {\n let change, document, value;\n beforeEach(() => {\n document = new MockDocument();\n change = new MockChange();\n value = {\n change: () => change,\n document,\n };\n });\n\n const block = { key: 1 };\n const onChange = jest.fn();\n\n const handler = new InsertImageHandler(\n block,\n () => {},\n () => value,\n onChange,\n );\n\n test('it constructs', () => {\n expect(handler).not.toEqual(undefined);\n });\n\n describe('fileChosen', () => {\n let fileReader;\n beforeEach(() => {\n fileReader = {\n readAsDataURL: jest.fn(),\n };\n\n global.FileReader = () => fileReader;\n handler.fileChosen({});\n });\n\n test('calls readAsDataURL', () => {\n expect(fileReader.readAsDataURL).toBeCalledWith({});\n });\n\n test('calls onChange with src -> dataUrl', () => {\n fileReader.result = 'dataURL';\n fileReader.onload();\n expect(change.setNodeByKey).toBeCalledWith(block.key, expect.anything());\n expect(change.setNodeByKey.mock.calls[0][1]).toMatchData({\n src: 'dataURL',\n });\n expect(onChange).toBeCalledWith(change);\n });\n });\n\n describe('progress', () => {\n test('calls change w/ percent', () => {\n handler.progress(40, 40, 100);\n expect(change.setNodeByKey).toBeCalledWith(block.key, expect.anything());\n\n expect(change.setNodeByKey.mock.calls[0][1].data.toJS()).toMatchObject({\n percent: 40,\n });\n });\n });\n\n describe('done', () => {\n test('calls setNodeByKey', () => {\n handler.done(null, 'src');\n\n expect(change.setNodeByKey).toBeCalledWith(block.key, expect.anything());\n\n expect(change.setNodeByKey.mock.calls[0][1].data.toJS()).toMatchObject({\n src: 'src',\n loaded: true,\n percent: 100,\n });\n });\n });\n\n describe('cancel', () => {\n beforeEach(() => {\n document.getChild = jest.fn().mockReturnValue({ data: Data.create({}), key: block.key });\n handler.cancel();\n });\n\n test('calls onChange', () => {\n expect(onChange).toBeCalled();\n });\n\n test('calls removeNodeByKey', () => {\n expect(change.removeNodeByKey).toBeCalledWith(block.key);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MockDocument = MockDocument;
7
+ exports["default"] = MockChange;
8
+ var _slate = require("slate");
9
+ function MockChange() {
10
+ this.setNodeByKey = jest.fn().mockReturnValue(this);
11
+ this.removeNodeByKey = jest.fn().mockReturnValue(this);
12
+ this.insertInline = jest.fn().mockReturnValue(this);
13
+ this.moveFocusTo = jest.fn().mockReturnValue(this);
14
+ this.moveAnchorTo = jest.fn().mockReturnValue(this);
15
+ }
16
+ function MockDocument() {
17
+ this.getChild = jest.fn().mockReturnValue({
18
+ data: _slate.Data.create({})
19
+ });
20
+ this.getDescendant = jest.fn();
21
+ }
22
+ //# sourceMappingURL=mock-change.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-change.js","names":["_slate","require","MockChange","setNodeByKey","jest","fn","mockReturnValue","removeNodeByKey","insertInline","moveFocusTo","moveAnchorTo","MockDocument","getChild","data","Data","create","getDescendant"],"sources":["../../../../src/plugins/image/__tests__/mock-change.js"],"sourcesContent":["import { Data } from 'slate';\n\nexport default function MockChange() {\n this.setNodeByKey = jest.fn().mockReturnValue(this);\n this.removeNodeByKey = jest.fn().mockReturnValue(this);\n this.insertInline = jest.fn().mockReturnValue(this);\n this.moveFocusTo = jest.fn().mockReturnValue(this);\n this.moveAnchorTo = jest.fn().mockReturnValue(this);\n}\n\nexport function MockDocument() {\n this.getChild = jest.fn().mockReturnValue({ data: Data.create({}) });\n\n this.getDescendant = jest.fn();\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEe,SAASC,UAAUA,CAAA,EAAG;EACnC,IAAI,CAACC,YAAY,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC,IAAI,CAAC;EACnD,IAAI,CAACC,eAAe,GAAGH,IAAI,CAACC,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC,IAAI,CAAC;EACtD,IAAI,CAACE,YAAY,GAAGJ,IAAI,CAACC,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC,IAAI,CAAC;EACnD,IAAI,CAACG,WAAW,GAAGL,IAAI,CAACC,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC,IAAI,CAAC;EAClD,IAAI,CAACI,YAAY,GAAGN,IAAI,CAACC,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC,IAAI,CAAC;AACrD;AAEO,SAASK,YAAYA,CAAA,EAAG;EAC7B,IAAI,CAACC,QAAQ,GAAGR,IAAI,CAACC,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC;IAAEO,IAAI,EAAEC,WAAI,CAACC,MAAM,CAAC,CAAC,CAAC;EAAE,CAAC,CAAC;EAEpE,IAAI,CAACC,aAAa,GAAGZ,IAAI,CAACC,EAAE,CAAC,CAAC;AAChC","ignoreList":[]}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ var _index = _interopRequireWildcard(require("../index"));
6
+ var _debug = _interopRequireDefault(require("debug"));
7
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
8
+ var log = (0, _debug["default"])('@pie-lib:editable-html:test:plugins:list');
9
+ describe('ListPlugin', function () {
10
+ var next;
11
+ describe('deserialize', function () {
12
+ next = jest.fn();
13
+ var assertDeserialize = function assertDeserialize(tagName, expectedType) {
14
+ it("should deserialize ".concat(tagName, " to ").concat(expectedType), function () {
15
+ var out = _index.serialization.deserialize({
16
+ tagName: tagName,
17
+ children: [],
18
+ childNodes: []
19
+ }, next);
20
+ expect(out).toMatchObject({
21
+ object: 'block',
22
+ type: expectedType
23
+ });
24
+ expect(next).toHaveBeenCalledWith([]);
25
+ });
26
+ };
27
+ assertDeserialize('ul', 'ul_list');
28
+ assertDeserialize('ol', 'ol_list');
29
+ assertDeserialize('li', 'list_item');
30
+ });
31
+ describe('serialize', function () {
32
+ var assertSerialize = function assertSerialize(type, expectedType) {
33
+ it("should serialize ".concat(type, " to ").concat(expectedType), function () {
34
+ var out = _index.serialization.serialize({
35
+ object: 'block',
36
+ type: type
37
+ }, {});
38
+ log('out: ', out);
39
+ expect(out.type).toMatch(expectedType);
40
+ });
41
+ };
42
+ assertSerialize('ul_list', 'ul');
43
+ assertSerialize('ol_list', 'ol');
44
+ assertSerialize('list_item', 'li');
45
+ });
46
+ describe('renderNode', function () {
47
+ var plugin = (0, _index["default"])({});
48
+ var assertRenderNode = function assertRenderNode(type, expectedType) {
49
+ it("should renderNode ".concat(type, " to ").concat(expectedType), function () {
50
+ var out = plugin.renderNode({
51
+ node: {
52
+ type: type
53
+ }
54
+ });
55
+ expect(out.type).toMatch(expectedType);
56
+ });
57
+ };
58
+ assertRenderNode('ul_list', 'ul');
59
+ assertRenderNode('ol_list', 'ol');
60
+ assertRenderNode('list_item', 'li');
61
+ });
62
+ });
63
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","names":["_index","_interopRequireWildcard","require","_debug","_interopRequireDefault","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","log","debug","describe","next","jest","fn","assertDeserialize","tagName","expectedType","it","concat","out","serialization","deserialize","children","childNodes","expect","toMatchObject","object","type","toHaveBeenCalledWith","assertSerialize","serialize","toMatch","plugin","List","assertRenderNode","renderNode","node"],"sources":["../../../../src/plugins/list/__tests__/index.test.js"],"sourcesContent":["import List, { serialization } from '../index';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:test:plugins:list');\n\ndescribe('ListPlugin', () => {\n let next;\n\n describe('deserialize', () => {\n next = jest.fn();\n\n const assertDeserialize = (tagName, expectedType) => {\n it(`should deserialize ${tagName} to ${expectedType}`, () => {\n const out = serialization.deserialize({ tagName, children: [], childNodes: [] }, next);\n\n expect(out).toMatchObject({ object: 'block', type: expectedType });\n expect(next).toHaveBeenCalledWith([]);\n });\n };\n assertDeserialize('ul', 'ul_list');\n assertDeserialize('ol', 'ol_list');\n assertDeserialize('li', 'list_item');\n });\n\n describe('serialize', () => {\n const assertSerialize = (type, expectedType) => {\n it(`should serialize ${type} to ${expectedType}`, () => {\n const out = serialization.serialize({ object: 'block', type }, {});\n log('out: ', out);\n expect(out.type).toMatch(expectedType);\n });\n };\n assertSerialize('ul_list', 'ul');\n assertSerialize('ol_list', 'ol');\n assertSerialize('list_item', 'li');\n });\n\n describe('renderNode', () => {\n let plugin = List({});\n\n const assertRenderNode = (type, expectedType) => {\n it(`should renderNode ${type} to ${expectedType}`, () => {\n const out = plugin.renderNode({ node: { type } });\n expect(out.type).toMatch(expectedType);\n });\n };\n\n assertRenderNode('ul_list', 'ul');\n assertRenderNode('ol_list', 'ol');\n assertRenderNode('list_item', 'li');\n });\n});\n"],"mappings":"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","ignoreList":[]}