@zipify/wysiwyg 1.0.0-dev.10 → 1.0.0-dev.100
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/.editorconfig +1 -1
- package/.eslintrc.js +2 -2
- package/.github/dependabot.yaml +1 -0
- package/.lintstagedrc +2 -2
- package/.release-it.json +3 -1
- package/.stylelintrc +0 -4
- package/README.md +2 -2
- package/config/jest/setupTests.js +0 -3
- package/config/vite/example.config.js +25 -0
- package/config/vite/lib.config.js +30 -0
- package/config/{webpack → vite}/settings.js +0 -0
- package/dist/wysiwyg.css +407 -376
- package/dist/wysiwyg.mjs +26091 -0
- package/example/ExampleApp.vue +37 -4
- package/example/example.js +0 -3
- package/example/{example.html → index.html} +1 -0
- package/example/pageBlocks.js +31 -0
- package/example/presets.js +2 -2
- package/example/tooltip/Tooltip.js +1 -1
- package/jest.config.js +3 -1
- package/lib/Wysiwyg.vue +73 -14
- package/lib/__tests__/utils/index.js +0 -1
- package/lib/__tests__/utils/withComponentContext.js +1 -1
- package/lib/assets/icons/background-color.svg +3 -1
- package/lib/assets/icons/font-color.svg +1 -3
- package/lib/assets/icons/link.svg +3 -0
- package/lib/assets/icons/unlink.svg +3 -0
- package/lib/components/base/Button.vue +23 -2
- package/lib/components/base/Checkbox.vue +89 -0
- package/lib/components/base/FieldLabel.vue +2 -1
- package/lib/components/base/Icon.vue +3 -3
- package/lib/components/base/Modal.vue +1 -2
- package/lib/components/base/NumberField.vue +4 -4
- package/lib/components/base/Range.vue +1 -1
- package/lib/components/base/ScrollView.vue +1 -3
- package/lib/components/base/TextField.vue +108 -0
- package/lib/components/base/__tests__/Modal.test.js +7 -2
- package/lib/components/base/__tests__/TextField.test.js +57 -0
- package/lib/components/base/__tests__/__snapshots__/TextField.test.js.snap +9 -0
- package/lib/components/base/colorPicker/ColorPicker.vue +14 -12
- package/lib/components/base/colorPicker/composables/__tests__/usePickerApi.test.js +6 -6
- package/lib/components/base/colorPicker/composables/usePickerApi.js +15 -8
- package/lib/components/base/colorPicker/composables/usePickerHotkeys.js +3 -2
- package/lib/components/base/composables/__tests__/useActivatedListener.test.js +1 -1
- package/lib/components/base/composables/__tests__/useDeselectionLock.test.js +1 -1
- package/lib/components/base/composables/__tests__/useElementRef.test.js +1 -1
- package/lib/components/base/composables/__tests__/useModalToggler.test.js +1 -1
- package/lib/components/base/composables/__tests__/useNumberValue.test.js +1 -1
- package/lib/components/base/composables/__tests__/useScrollView.test.js +1 -1
- package/lib/components/base/composables/__tests__/useTempValue.test.js +1 -1
- package/lib/components/base/composables/__tests__/useValidator.test.js +44 -0
- package/lib/components/base/composables/index.js +1 -0
- package/lib/components/base/composables/useActivatedListener.js +1 -1
- package/lib/components/base/composables/useDeselectionLock.js +1 -1
- package/lib/components/base/composables/useElementRef.js +1 -1
- package/lib/components/base/composables/useModalToggler.js +6 -2
- package/lib/components/base/composables/useScrollView.js +1 -1
- package/lib/components/base/composables/useTempValue.js +1 -1
- package/lib/components/base/composables/useValidator.js +23 -0
- package/lib/components/base/dropdown/Dropdown.vue +16 -4
- package/lib/components/base/dropdown/DropdownActivator.vue +19 -3
- package/lib/components/base/dropdown/DropdownGroup.vue +1 -1
- package/lib/components/base/dropdown/DropdownMenu.vue +1 -1
- package/lib/components/base/dropdown/DropdownOption.vue +1 -1
- package/lib/components/base/dropdown/__tests__/DropdownActivator.test.js +1 -1
- package/lib/components/base/dropdown/__tests__/DropdownMenu.test.js +1 -1
- package/lib/components/base/dropdown/__tests__/DropdownOption.test.js +1 -1
- package/lib/components/base/dropdown/composables/__tests__/useActiveOptionManager.test.js +1 -1
- package/lib/components/base/dropdown/composables/__tests__/useDropdownEntityTitle.test.js +1 -1
- package/lib/components/base/dropdown/composables/useActiveOptionManager.js +1 -1
- package/lib/components/base/dropdown/composables/useDropdownEntityTitle.js +1 -1
- package/lib/components/base/index.js +3 -1
- package/lib/components/toolbar/Toolbar.vue +50 -8
- package/lib/components/toolbar/ToolbarDivider.vue +1 -1
- package/lib/components/toolbar/ToolbarFull.vue +41 -10
- package/lib/components/toolbar/ToolbarRow.vue +1 -0
- package/lib/components/toolbar/__tests__/Toolbar.test.js +6 -0
- package/lib/components/toolbar/controls/AlignmentControl.vue +1 -1
- package/lib/components/toolbar/controls/AlignmentDeviceControl.vue +1 -1
- package/lib/components/toolbar/controls/BackgroundColorControl.vue +1 -1
- package/lib/components/toolbar/controls/CaseStyleControl.vue +1 -1
- package/lib/components/toolbar/controls/FontColorControl.vue +1 -1
- package/lib/components/toolbar/controls/FontFamilyControl.vue +1 -1
- package/lib/components/toolbar/controls/FontSizeControl.vue +8 -1
- package/lib/components/toolbar/controls/FontWeightControl.vue +2 -2
- package/lib/components/toolbar/controls/ItalicControl.vue +1 -1
- package/lib/components/toolbar/controls/LineHeightControl.vue +2 -2
- package/lib/components/toolbar/controls/ListControl.vue +70 -36
- package/lib/components/toolbar/controls/RemoveFormatControl.vue +1 -1
- package/lib/components/toolbar/controls/StrikeThroughControl.vue +1 -1
- package/lib/components/toolbar/controls/StylePresetControl.vue +17 -4
- package/lib/components/toolbar/controls/SuperscriptControl.vue +1 -1
- package/lib/components/toolbar/controls/UnderlineControl.vue +1 -1
- package/lib/components/toolbar/controls/__tests__/AlignmentControl.test.js +1 -1
- package/lib/components/toolbar/controls/__tests__/AlignmentDeviceControl.test.js +1 -1
- package/lib/components/toolbar/controls/__tests__/BackgroundColorControl.test.js +1 -1
- package/lib/components/toolbar/controls/__tests__/CaseStyleControl.test.js +1 -1
- package/lib/components/toolbar/controls/__tests__/FontColorControl.test.js +1 -1
- package/lib/components/toolbar/controls/__tests__/FontFamilyControl.test.js +1 -1
- package/lib/components/toolbar/controls/__tests__/FontSizeControl.test.js +1 -1
- package/lib/components/toolbar/controls/__tests__/FontWeightControl.test.js +1 -1
- package/lib/components/toolbar/controls/__tests__/ItalicControl.test.js +1 -1
- package/lib/components/toolbar/controls/__tests__/LineHeightControl.test.js +1 -1
- package/lib/components/toolbar/controls/__tests__/ListControl.test.js +18 -3
- package/lib/components/toolbar/controls/__tests__/StrikeThroughControl.test.js +1 -1
- package/lib/components/toolbar/controls/__tests__/StylePresetControl.test.js +17 -1
- package/lib/components/toolbar/controls/__tests__/UnderlineControl.test.js +5 -1
- package/lib/components/toolbar/controls/composables/useRecentFonts.js +1 -1
- package/lib/components/toolbar/controls/index.js +1 -0
- package/lib/components/toolbar/controls/link/LinkControl.vue +160 -0
- package/lib/components/toolbar/controls/link/LinkControlApply.vue +35 -0
- package/lib/components/toolbar/controls/link/LinkControlHeader.vue +69 -0
- package/lib/components/toolbar/controls/link/__tests__/LinkControl.test.js +79 -0
- package/lib/components/toolbar/controls/link/__tests__/LinkControlHeader.test.js +42 -0
- package/lib/components/toolbar/controls/link/composables/__tests__/__snapshots__/useLink.test.js.snap +15 -0
- package/lib/components/toolbar/controls/link/composables/__tests__/useLink.test.js +172 -0
- package/lib/components/toolbar/controls/link/composables/index.js +1 -0
- package/lib/components/toolbar/controls/link/composables/useLink.js +82 -0
- package/lib/components/toolbar/controls/link/destination/LinkControlDestination.vue +103 -0
- package/lib/components/toolbar/controls/link/destination/LinkControlPageBlock.vue +54 -0
- package/lib/components/toolbar/controls/link/destination/LinkControlUrl.vue +52 -0
- package/lib/components/toolbar/controls/link/destination/__tests__/LinkControlPageBlock.test.js +36 -0
- package/lib/components/toolbar/controls/link/destination/__tests__/LinkControlUrl.test.js +46 -0
- package/lib/components/toolbar/controls/link/destination/__tests__/__snapshots__/LinkControlPageBlock.test.js.snap +9 -0
- package/lib/components/toolbar/controls/link/destination/__tests__/__snapshots__/LinkControlUrl.test.js.snap +17 -0
- package/lib/components/toolbar/controls/link/destination/index.js +1 -0
- package/lib/components/toolbar/controls/link/index.js +1 -0
- package/lib/composables/__tests__/__snapshots__/useEditor.test.js.snap +1 -0
- package/lib/composables/__tests__/useEditor.test.js +5 -4
- package/lib/composables/useEditor.js +12 -9
- package/lib/composables/useToolbar.js +26 -19
- package/lib/directives/__tests__/outClick.test.js +6 -0
- package/lib/directives/outClick.js +19 -6
- package/lib/enums/Alignments.js +10 -1
- package/lib/enums/LinkDestinations.js +4 -0
- package/lib/enums/LinkTargets.js +4 -0
- package/lib/enums/TextSettings.js +6 -2
- package/lib/enums/index.js +2 -0
- package/lib/extensions/Alignment.js +25 -11
- package/lib/extensions/BackgroundColor.js +15 -7
- package/lib/extensions/DeviceManager.js +2 -5
- package/lib/extensions/FontColor.js +17 -9
- package/lib/extensions/FontFamily.js +30 -13
- package/lib/extensions/FontSize.js +38 -18
- package/lib/extensions/FontStyle.js +30 -20
- package/lib/extensions/FontWeight.js +34 -23
- package/lib/extensions/LineHeight.js +36 -32
- package/lib/extensions/Link.js +92 -0
- package/lib/extensions/Margin.js +38 -0
- package/lib/extensions/StylePreset.js +23 -22
- package/lib/extensions/Superscript.js +5 -1
- package/lib/extensions/TextDecoration.js +52 -19
- package/lib/extensions/__tests__/Alignment.test.js +14 -9
- package/lib/extensions/__tests__/BackgroundColor.test.js +13 -8
- package/lib/extensions/__tests__/CaseStyle.test.js +4 -7
- package/lib/extensions/__tests__/FontColor.test.js +13 -8
- package/lib/extensions/__tests__/FontFamily.test.js +34 -10
- package/lib/extensions/__tests__/FontSize.test.js +16 -10
- package/lib/extensions/__tests__/FontStyle.test.js +13 -8
- package/lib/extensions/__tests__/FontWeight.test.js +21 -8
- package/lib/extensions/__tests__/LineHeight.test.js +25 -14
- package/lib/extensions/__tests__/Link.test.js +101 -0
- package/lib/extensions/__tests__/Margin.test.js +59 -0
- package/lib/extensions/__tests__/StylePreset.test.js +72 -10
- package/lib/extensions/__tests__/TextDecoration.test.js +53 -8
- package/lib/extensions/__tests__/__snapshots__/Alignment.test.js.snap +26 -2
- package/lib/extensions/__tests__/__snapshots__/BackgroundColor.test.js.snap +30 -1
- package/lib/extensions/__tests__/__snapshots__/FontColor.test.js.snap +18 -1
- package/lib/extensions/__tests__/__snapshots__/FontFamily.test.js.snap +88 -1
- package/lib/extensions/__tests__/__snapshots__/FontSize.test.js.snap +33 -2
- package/lib/extensions/__tests__/__snapshots__/FontStyle.test.js.snap +25 -4
- package/lib/extensions/__tests__/__snapshots__/FontWeight.test.js.snap +47 -1
- package/lib/extensions/__tests__/__snapshots__/LineHeight.test.js.snap +26 -2
- package/lib/extensions/__tests__/__snapshots__/Link.test.js.snap +225 -0
- package/lib/extensions/__tests__/__snapshots__/Margin.test.js.snap +69 -0
- package/lib/extensions/__tests__/__snapshots__/StylePreset.test.js.snap +6 -2
- package/lib/extensions/__tests__/__snapshots__/TextDecoration.test.js.snap +183 -3
- package/lib/extensions/core/CopyPasteProcessor.js +10 -0
- package/lib/extensions/core/NodeProcessor.js +2 -2
- package/lib/extensions/core/TextProcessor.js +11 -24
- package/lib/extensions/core/__tests__/NodeProcessor.test.js +4 -7
- package/lib/extensions/core/__tests__/SelectionProcessor.test.js +4 -7
- package/lib/extensions/core/__tests__/TextProcessor.test.js +139 -14
- package/lib/extensions/core/__tests__/__snapshots__/TextProcessor.test.js.snap +26 -0
- package/lib/extensions/core/index.js +11 -2
- package/lib/extensions/core/plugins/PastePlugin.js +78 -0
- package/lib/extensions/core/plugins/ProseMirrorPlugin.js +20 -0
- package/lib/extensions/core/plugins/index.js +1 -0
- package/lib/extensions/index.js +49 -34
- package/lib/extensions/list/List.js +7 -6
- package/lib/extensions/list/__tests__/List.test.js +6 -10
- package/lib/extensions/list/__tests__/__snapshots__/List.test.js.snap +60 -20
- package/lib/index.js +3 -0
- package/lib/injectionTokens.js +3 -1
- package/lib/services/ContentNormalizer.js +180 -28
- package/lib/services/ContextWidnow.js +23 -0
- package/lib/{__tests__/utils → services}/NodeFactory.js +5 -1
- package/lib/services/__tests__/ContentNormalizer.test.js +131 -8
- package/lib/services/__tests__/FavoriteColors.test.js +1 -1
- package/lib/services/index.js +2 -0
- package/lib/styles/content.css +109 -15
- package/lib/styles/helpers/offsets.css +17 -1
- package/lib/styles/variables.css +6 -0
- package/lib/utils/__tests__/__snapshots__/renderInlineSetting.test.js.snap +4 -4
- package/lib/utils/__tests__/convertAlignment.test.js +16 -0
- package/lib/utils/__tests__/convertFontSize.test.js +21 -0
- package/lib/utils/__tests__/convertLineHeight.test.js +21 -0
- package/lib/utils/convertAlignment.js +12 -0
- package/lib/utils/convertColor.js +1 -1
- package/lib/utils/convertFontSize.js +8 -0
- package/lib/utils/convertLineHeight.js +17 -0
- package/lib/utils/importIcon.js +7 -6
- package/lib/utils/index.js +4 -0
- package/lib/utils/isWysiwygContent.js +12 -0
- package/lib/utils/renderInlineSetting.js +1 -1
- package/package.json +26 -30
- package/config/webpack/example.config.js +0 -88
- package/config/webpack/lib.config.js +0 -48
- package/config/webpack/loaders/index.js +0 -6
- package/config/webpack/loaders/js-loader.js +0 -5
- package/config/webpack/loaders/style-loader.js +0 -9
- package/config/webpack/loaders/svg-loader.js +0 -4
- package/config/webpack/loaders/vue-loader.js +0 -4
- package/dist/wysiwyg.js +0 -38655
- package/lib/extensions/core/inputRules/closeDoubleQuote.js +0 -6
- package/lib/extensions/core/inputRules/closeSingleQuote.js +0 -6
- package/lib/extensions/core/inputRules/copyright.js +0 -6
- package/lib/extensions/core/inputRules/ellipsis.js +0 -6
- package/lib/extensions/core/inputRules/emDash.js +0 -6
- package/lib/extensions/core/inputRules/index.js +0 -9
- package/lib/extensions/core/inputRules/openDoubleQuote.js +0 -6
- package/lib/extensions/core/inputRules/openSingleQuote.js +0 -6
- package/lib/extensions/core/inputRules/registeredTrademark.js +0 -6
- package/lib/extensions/core/inputRules/trademark.js +0 -6
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { ref } from 'vue';
|
|
2
|
+
import { Editor } from '@tiptap/vue-2';
|
|
3
|
+
import { ContentNormalizer, NodeFactory } from '../../services';
|
|
4
|
+
import { Link } from '../Link';
|
|
5
|
+
import { buildCoreExtensions } from '../core';
|
|
6
|
+
|
|
7
|
+
function createEditor({ content }) {
|
|
8
|
+
return new Editor({
|
|
9
|
+
content: ContentNormalizer.normalize(content),
|
|
10
|
+
extensions: buildCoreExtensions().concat(
|
|
11
|
+
Link.configure({
|
|
12
|
+
preset: 'link',
|
|
13
|
+
baseClass: 'zw ts-',
|
|
14
|
+
pageBlocks: ref([{ id: 987654 }])
|
|
15
|
+
})
|
|
16
|
+
)
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const createContent = (text) => NodeFactory.doc([
|
|
21
|
+
NodeFactory.paragraph([text])
|
|
22
|
+
]);
|
|
23
|
+
|
|
24
|
+
const linkAttributes = (href) => ({
|
|
25
|
+
href: href ?? '/test',
|
|
26
|
+
text: 'Hello world link',
|
|
27
|
+
target: '_self',
|
|
28
|
+
destination: 'url'
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
describe('apply link', () => {
|
|
32
|
+
test('should apply link', () => {
|
|
33
|
+
const editor = createEditor({
|
|
34
|
+
content: createContent(NodeFactory.text('hello world'))
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
editor.chain().selectAll().applyLink(linkAttributes()).run();
|
|
38
|
+
|
|
39
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
test('should apply link when no selected text', () => {
|
|
43
|
+
const editor = createEditor({
|
|
44
|
+
content: createContent(NodeFactory.text('Some text'))
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
editor.chain().setTextSelection(6).applyLink(linkAttributes()).run();
|
|
48
|
+
|
|
49
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
describe('parse html', () => {
|
|
54
|
+
test('should parse url links from html', () => {
|
|
55
|
+
const editor = createEditor({
|
|
56
|
+
content: '<a href="https://hello.world" target="_blank">Hello</a>'
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
test('should parse block links from html', () => {
|
|
63
|
+
const editor = createEditor({
|
|
64
|
+
content: '<a href="#987654" target="_blank">Hello</a>'
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
test('should parse link target', () => {
|
|
71
|
+
const editor = createEditor({
|
|
72
|
+
content: '<a href="https://hello.world" target="_blank">Hello</a>'
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
test('should add default self target for links from html without target', () => {
|
|
79
|
+
const editor = createEditor({
|
|
80
|
+
content: '<a href="https://hello.world">Hello</a>'
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
test('should parse value for relative url', () => {
|
|
87
|
+
const editor = createEditor({
|
|
88
|
+
content: '<a href="/hello-world">Hello</a>'
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
test('should parse not valid value', () => {
|
|
95
|
+
const editor = createEditor({
|
|
96
|
+
content: '<a href="934238">Hello</a>'
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
100
|
+
});
|
|
101
|
+
});
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Editor } from '@tiptap/core';
|
|
2
|
+
import { ContentNormalizer, NodeFactory } from '../../services';
|
|
3
|
+
import { buildCoreExtensions } from '../core';
|
|
4
|
+
import { Margin } from '../Margin';
|
|
5
|
+
|
|
6
|
+
function createEditor({ content }) {
|
|
7
|
+
return new Editor({
|
|
8
|
+
content: ContentNormalizer.normalize(content),
|
|
9
|
+
extensions: buildCoreExtensions().concat(Margin)
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
describe('parse html', () => {
|
|
14
|
+
test('should set null if no margin', () => {
|
|
15
|
+
const editor = createEditor({
|
|
16
|
+
content: '<p>lorem ipsum</p>'
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test('should parse shorthand', () => {
|
|
23
|
+
const editor = createEditor({
|
|
24
|
+
content: '<p style="margin: 10px 3px 1em;">lorem ipsum</p>'
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test('should parse values', () => {
|
|
31
|
+
const editor = createEditor({
|
|
32
|
+
content: '<p style="margin-left: 10px; margin-bottom: 1em">lorem ipsum</p>'
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
describe('render html', () => {
|
|
40
|
+
test('should not render empty', () => {
|
|
41
|
+
const editor = createEditor({
|
|
42
|
+
content: NodeFactory.doc([
|
|
43
|
+
NodeFactory.paragraph({ margin: null }, 'lorem ipsum')
|
|
44
|
+
])
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
expect(editor.getHTML()).toMatchSnapshot();
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
test('should render value', () => {
|
|
51
|
+
const editor = createEditor({
|
|
52
|
+
content: NodeFactory.doc([
|
|
53
|
+
NodeFactory.paragraph({ margin: { value: '10px' } }, 'lorem ipsum')
|
|
54
|
+
])
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
expect(editor.getHTML()).toMatchSnapshot();
|
|
58
|
+
});
|
|
59
|
+
});
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { Editor, Extension, Mark } from '@tiptap/vue-2';
|
|
2
|
-
import { ref } from '@vue/composition-api';
|
|
3
|
-
import { NodeFactory } from '../../__tests__/utils';
|
|
4
|
-
import { CORE_EXTENSIONS } from '../core';
|
|
5
2
|
import { StylePreset } from '../StylePreset';
|
|
6
3
|
import { List } from '../list';
|
|
7
4
|
import { ListTypes, NodeTypes, TextSettings } from '../../enums';
|
|
8
|
-
import { ContentNormalizer } from '../../services';
|
|
5
|
+
import { ContentNormalizer, NodeFactory } from '../../services';
|
|
6
|
+
import { buildCoreExtensions } from '../core';
|
|
9
7
|
|
|
10
8
|
const MockFontSize = Mark.create({
|
|
11
9
|
name: TextSettings.FONT_SIZE,
|
|
@@ -43,17 +41,75 @@ const MockAlignment = Extension.create({
|
|
|
43
41
|
]
|
|
44
42
|
});
|
|
45
43
|
|
|
44
|
+
const MockBackgroundColor = Mark.create({
|
|
45
|
+
name: TextSettings.BACKGROUND_COLOR,
|
|
46
|
+
|
|
47
|
+
addAttributes: () => ({
|
|
48
|
+
value: { default: null }
|
|
49
|
+
}),
|
|
50
|
+
|
|
51
|
+
renderHTML: () => ['span', {}, 0]
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
const MockFontColor = Mark.create({
|
|
55
|
+
name: TextSettings.FONT_COLOR,
|
|
56
|
+
|
|
57
|
+
addAttributes: () => ({
|
|
58
|
+
value: { default: null }
|
|
59
|
+
}),
|
|
60
|
+
|
|
61
|
+
renderHTML: () => ['span', {}, 0]
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
const MockFontFamily = Mark.create({
|
|
65
|
+
name: TextSettings.FONT_FAMILY,
|
|
66
|
+
|
|
67
|
+
addAttributes: () => ({
|
|
68
|
+
value: { default: null }
|
|
69
|
+
}),
|
|
70
|
+
|
|
71
|
+
renderHTML: () => ['span', {}, 0]
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
const MockFontStyle = Mark.create({
|
|
75
|
+
name: TextSettings.FONT_STYLE,
|
|
76
|
+
|
|
77
|
+
addAttributes: () => ({
|
|
78
|
+
value: { default: null }
|
|
79
|
+
}),
|
|
80
|
+
|
|
81
|
+
renderHTML: () => ['span', {}, 0]
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
const MockTextDecoration = Mark.create({
|
|
85
|
+
name: TextSettings.TEXT_DECORATION,
|
|
86
|
+
|
|
87
|
+
addAttributes: () => ({
|
|
88
|
+
value: { default: null }
|
|
89
|
+
}),
|
|
90
|
+
|
|
91
|
+
renderHTML: () => ['span', {}, 0]
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
const MockSuperscript = Mark.create({
|
|
95
|
+
name: TextSettings.SUPERSCRIPT,
|
|
96
|
+
|
|
97
|
+
addAttributes: () => ({
|
|
98
|
+
value: { default: null }
|
|
99
|
+
}),
|
|
100
|
+
|
|
101
|
+
renderHTML: () => ['span', {}, 0]
|
|
102
|
+
});
|
|
103
|
+
|
|
46
104
|
function createEditor({ content, presets, defaultId }) {
|
|
47
105
|
return new Promise((resolve) => {
|
|
48
|
-
const normalizer = new ContentNormalizer();
|
|
49
|
-
|
|
50
106
|
const editor = new Editor({
|
|
51
|
-
content:
|
|
107
|
+
content: ContentNormalizer.normalize(content),
|
|
52
108
|
onCreate: () => resolve(editor),
|
|
53
109
|
|
|
54
|
-
extensions:
|
|
110
|
+
extensions: buildCoreExtensions().concat(
|
|
55
111
|
StylePreset.configure({
|
|
56
|
-
|
|
112
|
+
presets: presets,
|
|
57
113
|
baseClass: 'zw ts-',
|
|
58
114
|
defaultId,
|
|
59
115
|
|
|
@@ -68,7 +124,13 @@ function createEditor({ content, presets, defaultId }) {
|
|
|
68
124
|
}),
|
|
69
125
|
MockFontSize,
|
|
70
126
|
MockFontWeight,
|
|
71
|
-
MockAlignment
|
|
127
|
+
MockAlignment,
|
|
128
|
+
MockBackgroundColor,
|
|
129
|
+
MockFontColor,
|
|
130
|
+
MockFontFamily,
|
|
131
|
+
MockFontStyle,
|
|
132
|
+
MockTextDecoration,
|
|
133
|
+
MockSuperscript
|
|
72
134
|
)
|
|
73
135
|
});
|
|
74
136
|
});
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Editor, Extension } from '@tiptap/vue-2';
|
|
2
|
-
import { ref } from '
|
|
3
|
-
import { NodeFactory } from '../../__tests__/utils';
|
|
2
|
+
import { ref } from 'vue';
|
|
4
3
|
import { createCommand } from '../../utils';
|
|
5
|
-
import { CORE_EXTENSIONS } from '../core';
|
|
6
4
|
import { TextDecoration } from '../TextDecoration';
|
|
7
|
-
import { ContentNormalizer } from '../../services';
|
|
5
|
+
import { ContentNormalizer, NodeFactory } from '../../services';
|
|
6
|
+
import { buildCoreExtensions } from '../core';
|
|
8
7
|
|
|
9
8
|
const MockStylePreset = Extension.create({
|
|
10
9
|
name: 'style_preset',
|
|
@@ -19,11 +18,9 @@ const MockStylePreset = Extension.create({
|
|
|
19
18
|
});
|
|
20
19
|
|
|
21
20
|
function createEditor({ content }) {
|
|
22
|
-
const normalizer = new ContentNormalizer();
|
|
23
|
-
|
|
24
21
|
return new Editor({
|
|
25
|
-
content:
|
|
26
|
-
extensions:
|
|
22
|
+
content: ContentNormalizer.normalize(content),
|
|
23
|
+
extensions: buildCoreExtensions().concat(MockStylePreset, TextDecoration)
|
|
27
24
|
});
|
|
28
25
|
}
|
|
29
26
|
|
|
@@ -294,6 +291,14 @@ describe('parsing html', () => {
|
|
|
294
291
|
expect(editor.getJSON()).toMatchSnapshot();
|
|
295
292
|
});
|
|
296
293
|
|
|
294
|
+
test('should get underline from rendered view', () => {
|
|
295
|
+
const editor = createEditor({
|
|
296
|
+
content: '<p><span style="--zw-text-decoration: underline">lorem</span> ipsum</p>'
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
300
|
+
});
|
|
301
|
+
|
|
297
302
|
test('should get strike through from text', () => {
|
|
298
303
|
const editor = createEditor({
|
|
299
304
|
content: '<p><span style="text-decoration-line: line-through">lorem</span> ipsum</p>'
|
|
@@ -302,6 +307,14 @@ describe('parsing html', () => {
|
|
|
302
307
|
expect(editor.getJSON()).toMatchSnapshot();
|
|
303
308
|
});
|
|
304
309
|
|
|
310
|
+
test('should get strike through from rendered view', () => {
|
|
311
|
+
const editor = createEditor({
|
|
312
|
+
content: '<p><span style="--zw-text-decoration: line-through">lorem</span> ipsum</p>'
|
|
313
|
+
});
|
|
314
|
+
|
|
315
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
316
|
+
});
|
|
317
|
+
|
|
305
318
|
test('should get both from text', () => {
|
|
306
319
|
const editor = createEditor({
|
|
307
320
|
content: '<p><span style="text-decoration-line: underline line-through">lorem</span> ipsum</p>'
|
|
@@ -310,6 +323,22 @@ describe('parsing html', () => {
|
|
|
310
323
|
expect(editor.getJSON()).toMatchSnapshot();
|
|
311
324
|
});
|
|
312
325
|
|
|
326
|
+
test('should get both from text with property shorthand', () => {
|
|
327
|
+
const editor = createEditor({
|
|
328
|
+
content: '<p><span style="text-decoration: underline line-through">lorem</span> ipsum</p>'
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
test('should get both from rendered view', () => {
|
|
335
|
+
const editor = createEditor({
|
|
336
|
+
content: '<p><span style="--zw-text-decoration: underline line-through">lorem</span> ipsum</p>'
|
|
337
|
+
});
|
|
338
|
+
|
|
339
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
340
|
+
});
|
|
341
|
+
|
|
313
342
|
test('should merge paragraph and text settings', () => {
|
|
314
343
|
const editor = createEditor({
|
|
315
344
|
content: '<p style="text-decoration-line: underline"><span style="text-decoration-line: line-through">lorem</span> ipsum</p>'
|
|
@@ -317,4 +346,20 @@ describe('parsing html', () => {
|
|
|
317
346
|
|
|
318
347
|
expect(editor.getJSON()).toMatchSnapshot();
|
|
319
348
|
});
|
|
349
|
+
|
|
350
|
+
test('should parse underline from tag', () => {
|
|
351
|
+
const editor = createEditor({
|
|
352
|
+
content: '<p><u>lorem</u> ipsum</p>'
|
|
353
|
+
});
|
|
354
|
+
|
|
355
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
356
|
+
});
|
|
357
|
+
|
|
358
|
+
test('should parse strike through from tag', () => {
|
|
359
|
+
const editor = createEditor({
|
|
360
|
+
content: '<p><s>lorem</s> ipsum</p>'
|
|
361
|
+
});
|
|
362
|
+
|
|
363
|
+
expect(editor.getJSON()).toMatchSnapshot();
|
|
364
|
+
});
|
|
320
365
|
});
|
|
@@ -24,6 +24,30 @@ Object {
|
|
|
24
24
|
}
|
|
25
25
|
`;
|
|
26
26
|
|
|
27
|
+
exports[`parsing html should get alignment from rendered view 1`] = `
|
|
28
|
+
Object {
|
|
29
|
+
"content": Array [
|
|
30
|
+
Object {
|
|
31
|
+
"attrs": Object {
|
|
32
|
+
"alignment": Object {
|
|
33
|
+
"desktop": "right",
|
|
34
|
+
"mobile": "center",
|
|
35
|
+
"tablet": null,
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
"content": Array [
|
|
39
|
+
Object {
|
|
40
|
+
"text": "test",
|
|
41
|
+
"type": "text",
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
"type": "paragraph",
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
"type": "doc",
|
|
48
|
+
}
|
|
49
|
+
`;
|
|
50
|
+
|
|
27
51
|
exports[`parsing html should get alignment from text 1`] = `
|
|
28
52
|
Object {
|
|
29
53
|
"content": Array [
|
|
@@ -68,6 +92,6 @@ Object {
|
|
|
68
92
|
}
|
|
69
93
|
`;
|
|
70
94
|
|
|
71
|
-
exports[`rendering should render all devices 1`] = `"<p class=\\"zw-style\\" style=\\"--zw-
|
|
95
|
+
exports[`rendering should render all devices 1`] = `"<p class=\\"zw-style\\" style=\\"--zw-text-align-mobile:left;--zw-text-align-tablet:right;--zw-text-align-desktop:center;\\">hello world</p>"`;
|
|
72
96
|
|
|
73
|
-
exports[`rendering should render only desktop 1`] = `"<p class=\\"zw-style\\" style=\\"--zw-
|
|
97
|
+
exports[`rendering should render only desktop 1`] = `"<p class=\\"zw-style\\" style=\\"--zw-text-align-desktop:center;\\">hello world</p>"`;
|
|
@@ -50,6 +50,35 @@ Object {
|
|
|
50
50
|
}
|
|
51
51
|
`;
|
|
52
52
|
|
|
53
|
+
exports[`parsing html should get value from rendered view 1`] = `
|
|
54
|
+
Object {
|
|
55
|
+
"content": Array [
|
|
56
|
+
Object {
|
|
57
|
+
"content": Array [
|
|
58
|
+
Object {
|
|
59
|
+
"marks": Array [
|
|
60
|
+
Object {
|
|
61
|
+
"attrs": Object {
|
|
62
|
+
"value": "#FF0000",
|
|
63
|
+
},
|
|
64
|
+
"type": "background_color",
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
"text": "lorem",
|
|
68
|
+
"type": "text",
|
|
69
|
+
},
|
|
70
|
+
Object {
|
|
71
|
+
"text": " ipsum",
|
|
72
|
+
"type": "text",
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
"type": "paragraph",
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
"type": "doc",
|
|
79
|
+
}
|
|
80
|
+
`;
|
|
81
|
+
|
|
53
82
|
exports[`parsing html should get value from text 1`] = `
|
|
54
83
|
Object {
|
|
55
84
|
"content": Array [
|
|
@@ -116,4 +145,4 @@ Object {
|
|
|
116
145
|
}
|
|
117
146
|
`;
|
|
118
147
|
|
|
119
|
-
exports[`rendering should render html 1`] = `"<p class=\\"zw-style\\"><span style=\\"--zw-background-color:
|
|
148
|
+
exports[`rendering should render html 1`] = `"<p class=\\"zw-style\\"><span style=\\"--zw-background-color:green;\\" class=\\"zw-style\\">hello world</span></p>"`;
|
|
@@ -50,6 +50,23 @@ Object {
|
|
|
50
50
|
}
|
|
51
51
|
`;
|
|
52
52
|
|
|
53
|
+
exports[`parsing html should get value from parsed view 1`] = `
|
|
54
|
+
Object {
|
|
55
|
+
"content": Array [
|
|
56
|
+
Object {
|
|
57
|
+
"content": Array [
|
|
58
|
+
Object {
|
|
59
|
+
"text": "lorem ipsum",
|
|
60
|
+
"type": "text",
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
"type": "paragraph",
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
"type": "doc",
|
|
67
|
+
}
|
|
68
|
+
`;
|
|
69
|
+
|
|
53
70
|
exports[`parsing html should get value from text 1`] = `
|
|
54
71
|
Object {
|
|
55
72
|
"content": Array [
|
|
@@ -116,4 +133,4 @@ Object {
|
|
|
116
133
|
}
|
|
117
134
|
`;
|
|
118
135
|
|
|
119
|
-
exports[`rendering should render html 1`] = `"<p class=\\"zw-style\\"><span style=\\"--zw-font-color:
|
|
136
|
+
exports[`rendering should render html 1`] = `"<p class=\\"zw-style\\"><span style=\\"--zw-font-color:green;\\" class=\\"zw-style\\">hello world</span></p>"`;
|
|
@@ -155,6 +155,64 @@ Object {
|
|
|
155
155
|
}
|
|
156
156
|
`;
|
|
157
157
|
|
|
158
|
+
exports[`parsing html should get parse font name with quotes 1`] = `
|
|
159
|
+
Object {
|
|
160
|
+
"content": Array [
|
|
161
|
+
Object {
|
|
162
|
+
"content": Array [
|
|
163
|
+
Object {
|
|
164
|
+
"text": "hello ",
|
|
165
|
+
"type": "text",
|
|
166
|
+
},
|
|
167
|
+
Object {
|
|
168
|
+
"marks": Array [
|
|
169
|
+
Object {
|
|
170
|
+
"attrs": Object {
|
|
171
|
+
"value": "Josefin Slab",
|
|
172
|
+
},
|
|
173
|
+
"type": "font_family",
|
|
174
|
+
},
|
|
175
|
+
],
|
|
176
|
+
"text": "world",
|
|
177
|
+
"type": "text",
|
|
178
|
+
},
|
|
179
|
+
],
|
|
180
|
+
"type": "paragraph",
|
|
181
|
+
},
|
|
182
|
+
],
|
|
183
|
+
"type": "doc",
|
|
184
|
+
}
|
|
185
|
+
`;
|
|
186
|
+
|
|
187
|
+
exports[`parsing html should get set default if undefined font 1`] = `
|
|
188
|
+
Object {
|
|
189
|
+
"content": Array [
|
|
190
|
+
Object {
|
|
191
|
+
"content": Array [
|
|
192
|
+
Object {
|
|
193
|
+
"marks": Array [
|
|
194
|
+
Object {
|
|
195
|
+
"attrs": Object {
|
|
196
|
+
"value": "Lato",
|
|
197
|
+
},
|
|
198
|
+
"type": "font_family",
|
|
199
|
+
},
|
|
200
|
+
],
|
|
201
|
+
"text": "lorem",
|
|
202
|
+
"type": "text",
|
|
203
|
+
},
|
|
204
|
+
Object {
|
|
205
|
+
"text": " ipsum",
|
|
206
|
+
"type": "text",
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
"type": "paragraph",
|
|
210
|
+
},
|
|
211
|
+
],
|
|
212
|
+
"type": "doc",
|
|
213
|
+
}
|
|
214
|
+
`;
|
|
215
|
+
|
|
158
216
|
exports[`parsing html should get value from paragraph 1`] = `
|
|
159
217
|
Object {
|
|
160
218
|
"content": Array [
|
|
@@ -180,6 +238,35 @@ Object {
|
|
|
180
238
|
}
|
|
181
239
|
`;
|
|
182
240
|
|
|
241
|
+
exports[`parsing html should get value from rendered view 1`] = `
|
|
242
|
+
Object {
|
|
243
|
+
"content": Array [
|
|
244
|
+
Object {
|
|
245
|
+
"content": Array [
|
|
246
|
+
Object {
|
|
247
|
+
"marks": Array [
|
|
248
|
+
Object {
|
|
249
|
+
"attrs": Object {
|
|
250
|
+
"value": "Lato",
|
|
251
|
+
},
|
|
252
|
+
"type": "font_family",
|
|
253
|
+
},
|
|
254
|
+
],
|
|
255
|
+
"text": "lorem",
|
|
256
|
+
"type": "text",
|
|
257
|
+
},
|
|
258
|
+
Object {
|
|
259
|
+
"text": " ipsum",
|
|
260
|
+
"type": "text",
|
|
261
|
+
},
|
|
262
|
+
],
|
|
263
|
+
"type": "paragraph",
|
|
264
|
+
},
|
|
265
|
+
],
|
|
266
|
+
"type": "doc",
|
|
267
|
+
}
|
|
268
|
+
`;
|
|
269
|
+
|
|
183
270
|
exports[`parsing html should get value from text 1`] = `
|
|
184
271
|
Object {
|
|
185
272
|
"content": Array [
|
|
@@ -246,4 +333,4 @@ Object {
|
|
|
246
333
|
}
|
|
247
334
|
`;
|
|
248
335
|
|
|
249
|
-
exports[`rendering should render html 1`] = `"<p class=\\"zw-style\\"><span style=\\"--zw-font-family
|
|
336
|
+
exports[`rendering should render html 1`] = `"<p class=\\"zw-style\\"><span style=\\"--zw-font-family:"Bungee";\\" class=\\"zw-style\\">hello world</span></p>"`;
|
|
@@ -162,6 +162,37 @@ Object {
|
|
|
162
162
|
}
|
|
163
163
|
`;
|
|
164
164
|
|
|
165
|
+
exports[`parsing html should get value from rendered view 1`] = `
|
|
166
|
+
Object {
|
|
167
|
+
"content": Array [
|
|
168
|
+
Object {
|
|
169
|
+
"content": Array [
|
|
170
|
+
Object {
|
|
171
|
+
"marks": Array [
|
|
172
|
+
Object {
|
|
173
|
+
"attrs": Object {
|
|
174
|
+
"desktop": "30",
|
|
175
|
+
"mobile": "24",
|
|
176
|
+
"tablet": null,
|
|
177
|
+
},
|
|
178
|
+
"type": "font_size",
|
|
179
|
+
},
|
|
180
|
+
],
|
|
181
|
+
"text": "lorem",
|
|
182
|
+
"type": "text",
|
|
183
|
+
},
|
|
184
|
+
Object {
|
|
185
|
+
"text": " ipsum",
|
|
186
|
+
"type": "text",
|
|
187
|
+
},
|
|
188
|
+
],
|
|
189
|
+
"type": "paragraph",
|
|
190
|
+
},
|
|
191
|
+
],
|
|
192
|
+
"type": "doc",
|
|
193
|
+
}
|
|
194
|
+
`;
|
|
195
|
+
|
|
165
196
|
exports[`parsing html should get value from text 1`] = `
|
|
166
197
|
Object {
|
|
167
198
|
"content": Array [
|
|
@@ -234,6 +265,6 @@ Object {
|
|
|
234
265
|
}
|
|
235
266
|
`;
|
|
236
267
|
|
|
237
|
-
exports[`rendering should render all devices 1`] = `"<p class=\\"zw-style\\"><span style=\\"--zw-
|
|
268
|
+
exports[`rendering should render all devices 1`] = `"<p class=\\"zw-style\\"><span style=\\"--zw-font-size-mobile:12px;--zw-font-size-tablet:14px;--zw-font-size-desktop:16px;\\" class=\\"zw-style\\">hello world</span></p>"`;
|
|
238
269
|
|
|
239
|
-
exports[`rendering should render only desktop 1`] = `"<p class=\\"zw-style\\"><span style=\\"--zw-
|
|
270
|
+
exports[`rendering should render only desktop 1`] = `"<p class=\\"zw-style\\"><span style=\\"--zw-font-size-desktop:14px;\\" class=\\"zw-style\\">hello world</span></p>"`;
|
|
@@ -138,7 +138,7 @@ Object {
|
|
|
138
138
|
}
|
|
139
139
|
`;
|
|
140
140
|
|
|
141
|
-
exports[`parsing html should get value from
|
|
141
|
+
exports[`parsing html should get value from rendered view 1`] = `
|
|
142
142
|
Object {
|
|
143
143
|
"content": Array [
|
|
144
144
|
Object {
|
|
@@ -167,7 +167,7 @@ Object {
|
|
|
167
167
|
}
|
|
168
168
|
`;
|
|
169
169
|
|
|
170
|
-
exports[`parsing html should
|
|
170
|
+
exports[`parsing html should get value from text 1`] = `
|
|
171
171
|
Object {
|
|
172
172
|
"content": Array [
|
|
173
173
|
Object {
|
|
@@ -176,7 +176,7 @@ Object {
|
|
|
176
176
|
"marks": Array [
|
|
177
177
|
Object {
|
|
178
178
|
"attrs": Object {
|
|
179
|
-
"italic":
|
|
179
|
+
"italic": true,
|
|
180
180
|
},
|
|
181
181
|
"type": "font_style",
|
|
182
182
|
},
|
|
@@ -184,6 +184,27 @@ Object {
|
|
|
184
184
|
"text": "lorem",
|
|
185
185
|
"type": "text",
|
|
186
186
|
},
|
|
187
|
+
Object {
|
|
188
|
+
"text": " ipsum",
|
|
189
|
+
"type": "text",
|
|
190
|
+
},
|
|
191
|
+
],
|
|
192
|
+
"type": "paragraph",
|
|
193
|
+
},
|
|
194
|
+
],
|
|
195
|
+
"type": "doc",
|
|
196
|
+
}
|
|
197
|
+
`;
|
|
198
|
+
|
|
199
|
+
exports[`parsing html should merge paragraph and text settings 1`] = `
|
|
200
|
+
Object {
|
|
201
|
+
"content": Array [
|
|
202
|
+
Object {
|
|
203
|
+
"content": Array [
|
|
204
|
+
Object {
|
|
205
|
+
"text": "lorem",
|
|
206
|
+
"type": "text",
|
|
207
|
+
},
|
|
187
208
|
Object {
|
|
188
209
|
"marks": Array [
|
|
189
210
|
Object {
|
|
@@ -204,4 +225,4 @@ Object {
|
|
|
204
225
|
}
|
|
205
226
|
`;
|
|
206
227
|
|
|
207
|
-
exports[`rendering should render html 1`] = `"<p class=\\"zw-style\\"><span style=\\"--zw-font-style:
|
|
228
|
+
exports[`rendering should render html 1`] = `"<p class=\\"zw-style\\"><span style=\\"--zw-font-style:italic;\\" class=\\"zw-style\\">hello world</span></p>"`;
|