@zipify/wysiwyg 1.2.0 → 1.2.1-0

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.
Binary file
package/dist/wysiwyg.css CHANGED
@@ -591,34 +591,34 @@
591
591
  display: flex;
592
592
  }
593
593
 
594
- .zw-link-modal-header[data-v-0a202ba4] {
594
+ .zw-link-modal-header[data-v-aa42e2ce] {
595
595
  display: flex;
596
596
  align-items: center;
597
597
  justify-content: space-between;
598
598
  padding: var(--zw-offset-sm);
599
599
  border-bottom: 2px solid rgb(var(--zw-color-n5));
600
600
  }
601
- .zw-link-modal-header__title[data-v-0a202ba4] {
601
+ .zw-link-modal-header__title[data-v-aa42e2ce] {
602
602
  text-transform: uppercase;
603
603
  font-weight: var(--zw-font-weight-semibold);
604
604
  font-size: var(--zw-font-size-xxs);
605
605
  color: rgb(var(--zw-color-white));
606
606
  }
607
- .zw-link-modal-header__unlink-icon[data-v-0a202ba4] {
607
+ .zw-link-modal-header__unlink-icon[data-v-aa42e2ce] {
608
608
  margin-right: var(--zw-offset-xxs);
609
609
  }
610
- .zw-link-modal-header__unlink-button[data-v-0a202ba4] {
610
+ .zw-link-modal-header__unlink-button[data-v-aa42e2ce] {
611
611
  color: rgb(var(--zw-color-n80));
612
612
  font-size: var(--zw-font-size-xxs);
613
613
  transition: 0.1s opacity ease-out, 0.1s color ease-out;
614
614
  will-change: opacity, color;
615
615
  }
616
- .zw-link-modal-header__unlink-button[data-v-0a202ba4]:disabled {
616
+ .zw-link-modal-header__unlink-button[data-v-aa42e2ce]:disabled {
617
617
  opacity: 0.35;
618
618
  }
619
- .zw-link-modal-header__unlink-button[data-v-0a202ba4]:focus,
620
- .zw-link-modal-header__unlink-button[data-v-0a202ba4]:focus-within,
621
- .zw-link-modal-header__unlink-button[data-v-0a202ba4]:hover {
619
+ .zw-link-modal-header__unlink-button[data-v-aa42e2ce]:focus,
620
+ .zw-link-modal-header__unlink-button[data-v-aa42e2ce]:focus-within,
621
+ .zw-link-modal-header__unlink-button[data-v-aa42e2ce]:hover {
622
622
  color: rgb(var(--zw-color-white));
623
623
  }
624
624
 
@@ -627,13 +627,13 @@
627
627
  justify-content: flex-end;
628
628
  }
629
629
 
630
- .zw-link-modal[data-v-28e9497e] {
630
+ .zw-link-modal[data-v-74b3b43a] {
631
631
  width: 266px;
632
632
  }
633
- .zw-link-modal__body[data-v-28e9497e] {
633
+ .zw-link-modal__body[data-v-74b3b43a] {
634
634
  padding: var(--zw-offset-sm);
635
635
  }
636
- [data-v-28e9497e] .zw-link-modal-dropdown__option {
636
+ [data-v-74b3b43a] .zw-link-modal-dropdown__option {
637
637
  width: 234px;
638
638
  }
639
639
 
package/dist/wysiwyg.mjs CHANGED
@@ -13986,6 +13986,8 @@ const TextSettings = Object.freeze({
13986
13986
  TEXT_DECORATION: "text_decoration",
13987
13987
  SUPERSCRIPT: "superscript",
13988
13988
  MARGIN: "margin",
13989
+ LINK: "link",
13990
+ STYLE_PRESET: "style_preset",
13989
13991
  get attributes() {
13990
13992
  return [
13991
13993
  this.ALIGNMENT,
@@ -22088,7 +22090,7 @@ const __vue2_script$9 = {
22088
22090
  components: { Icon, Button },
22089
22091
  setup(_, { emit }) {
22090
22092
  const editor = inject(InjectionTokens$1.EDITOR);
22091
- const isLink = computed(() => editor.isActive("link"));
22093
+ const isLink = editor.commands.isLink();
22092
22094
  const removeLink = () => emit("remove-link");
22093
22095
  return { isLink, removeLink };
22094
22096
  }
@@ -22100,7 +22102,7 @@ var __component__$9 = /* @__PURE__ */ normalizeComponent(
22100
22102
  staticRenderFns$9,
22101
22103
  false,
22102
22104
  __vue2_injectStyles$9,
22103
- "0a202ba4",
22105
+ "aa42e2ce",
22104
22106
  null,
22105
22107
  null
22106
22108
  );
@@ -22175,11 +22177,12 @@ function useLink() {
22175
22177
  linkData.value.target = isChecked ? LinkTargets.BLANK : LinkTargets.SELF;
22176
22178
  }
22177
22179
  function prepareInitialFields() {
22180
+ const link = editor.getAttributes(TextSettings.LINK);
22178
22181
  linkData.value.text = editor.commands.getSelectedText();
22179
- currentDestination.value.id = editor.getAttributes("link").destination || LinkDestinations.URL;
22180
- linkData.value.target = editor.getAttributes("link").target || LinkTargets.SELF;
22181
- if (editor.getAttributes("link").href) {
22182
- destinationHrefs.value[currentDestination.value.id] = editor.getAttributes("link").href;
22182
+ currentDestination.value.id = link.destination || LinkDestinations.URL;
22183
+ linkData.value.target = link.target || LinkTargets.SELF;
22184
+ if (link.href) {
22185
+ destinationHrefs.value[currentDestination.value.id] = link.href;
22183
22186
  }
22184
22187
  }
22185
22188
  function resetDestinations() {
@@ -22590,7 +22593,7 @@ const __vue2_script$4 = {
22590
22593
  urlValidator.reset();
22591
22594
  };
22592
22595
  const onBeforeOpened = () => {
22593
- editor.commands.extendMarkRange("link");
22596
+ editor.commands.extendMarkRange(TextSettings.LINK);
22594
22597
  resetErrors();
22595
22598
  link.prepareInitialFields();
22596
22599
  };
@@ -22599,7 +22602,8 @@ const __vue2_script$4 = {
22599
22602
  wrapperRef,
22600
22603
  modalRef
22601
22604
  });
22602
- const isActive2 = computed(() => toggler.isOpened.value || editor.isActive("link"));
22605
+ const isLink = editor.commands.isLink();
22606
+ const isActive2 = computed(() => toggler.isOpened.value || unref(isLink));
22603
22607
  const updateLinkText = (value) => {
22604
22608
  resetErrors();
22605
22609
  link.updateText(value);
@@ -22639,7 +22643,7 @@ var __component__$4 = /* @__PURE__ */ normalizeComponent(
22639
22643
  staticRenderFns$4,
22640
22644
  false,
22641
22645
  __vue2_injectStyles$4,
22642
- "28e9497e",
22646
+ "74b3b43a",
22643
22647
  null,
22644
22648
  null
22645
22649
  );
@@ -23462,7 +23466,7 @@ const FontStyle = Mark.create({
23462
23466
  commands2.setMark(this.name, { italic: true });
23463
23467
  }),
23464
23468
  removeItalic: createCommand(({ commands: commands2 }) => {
23465
- commands2.unsetMark(this.name);
23469
+ commands2.setMark(this.name, { italic: false });
23466
23470
  })
23467
23471
  };
23468
23472
  },
@@ -23488,21 +23492,22 @@ const FontStyle = Mark.create({
23488
23492
  ];
23489
23493
  },
23490
23494
  renderHTML({ HTMLAttributes: attrs }) {
23491
- const font_style = attrs.italic ? "italic" : null;
23495
+ const font_style = attrs.italic ? "italic" : "normal";
23492
23496
  return renderMark({ font_style });
23493
23497
  }
23494
23498
  });
23495
23499
  const TextDecoration = Mark.create({
23496
23500
  name: TextSettings.TEXT_DECORATION,
23501
+ priority: 1e3,
23497
23502
  addAttributes: () => ({
23498
23503
  underline: { default: false },
23499
23504
  strike_through: { default: false }
23500
23505
  }),
23501
23506
  addCommands() {
23502
23507
  return {
23503
- isUnderline: createCommand(({ commands: commands2, editor }) => {
23508
+ isUnderline: createCommand(({ commands: commands2 }) => {
23504
23509
  const decoration = commands2.getTextDecoration();
23505
- return computed(() => editor.isActive("link") || unref(decoration).underline);
23510
+ return computed(() => unref(decoration).underline);
23506
23511
  }),
23507
23512
  isStrikeThrough: createCommand(({ commands: commands2 }) => {
23508
23513
  const decoration = commands2.getTextDecoration();
@@ -23521,17 +23526,20 @@ const TextDecoration = Mark.create({
23521
23526
  }),
23522
23527
  getDefaultTextDecoration: createCommand(({ commands: commands2 }) => {
23523
23528
  const preset = commands2.getPreset();
23529
+ const isLink = commands2.isLink();
23530
+ const linkPreset = commands2.getLinkPreset();
23524
23531
  return computed(() => {
23525
- const decoration = unref(preset).common.text_decoration;
23532
+ const decoration = [
23533
+ unref(preset).common.text_decoration,
23534
+ unref(isLink) ? unref(linkPreset).common.text_decoration : ""
23535
+ ].join(" ");
23526
23536
  return {
23527
23537
  underline: decoration.includes("underline"),
23528
23538
  strike_through: decoration.includes("line-through")
23529
23539
  };
23530
23540
  });
23531
23541
  }),
23532
- toggleUnderline: createCommand(({ commands: commands2, editor }) => {
23533
- if (editor.isActive("link"))
23534
- return;
23542
+ toggleUnderline: createCommand(({ commands: commands2 }) => {
23535
23543
  commands2.toggleTextDecoration("underline");
23536
23544
  }),
23537
23545
  toggleStrikeThrough: createCommand(({ commands: commands2 }) => {
@@ -23545,12 +23553,7 @@ const TextDecoration = Mark.create({
23545
23553
  commands2.setMark(this.name, { [name]: true });
23546
23554
  }),
23547
23555
  removeTextDecoration: createCommand(({ commands: commands2 }, name) => {
23548
- const mark = {
23549
- ...unref(commands2.getTextDecoration()),
23550
- [name]: false
23551
- };
23552
- const isRemoveMark = !mark.underline && !mark.strike_through;
23553
- isRemoveMark ? commands2.unsetMark(this.name) : commands2.setMark(this.name, mark);
23556
+ commands2.setMark(this.name, { ...unref(commands2.getTextDecoration()), [name]: false });
23554
23557
  })
23555
23558
  };
23556
23559
  },
@@ -23602,6 +23605,8 @@ const TextDecoration = Mark.create({
23602
23605
  decorations.push("underline");
23603
23606
  if (attrs.strike_through)
23604
23607
  decorations.push("line-through");
23608
+ if (!decorations.length)
23609
+ decorations.push("none");
23605
23610
  return renderMark({ text_decoration: decorations.join(" ") });
23606
23611
  }
23607
23612
  });
@@ -24859,7 +24864,7 @@ const Link$1 = Mark.create({
24859
24864
  }
24860
24865
  });
24861
24866
  const Link = Link$1.extend({
24862
- name: "link",
24867
+ name: TextSettings.LINK,
24863
24868
  addOptions() {
24864
24869
  var _a;
24865
24870
  return {
@@ -24902,19 +24907,14 @@ const Link = Link$1.extend({
24902
24907
  ...(_a = this.parent) == null ? void 0 : _a.call(this),
24903
24908
  applyLink: createCommand(({ commands: commands2, chain }, attributes) => {
24904
24909
  if (!commands2.getSelectedText()) {
24905
- return commands2.insertContent({
24906
- type: "text",
24907
- marks: [
24908
- {
24909
- type: "link",
24910
- attrs: { ...attributes }
24911
- }
24912
- ],
24913
- text: attributes.text
24914
- });
24910
+ return commands2.insertContent(NodeFactory.text(attributes.text, [
24911
+ NodeFactory.mark(TextSettings.LINK, attributes)
24912
+ ]));
24915
24913
  }
24916
- return chain().setMark(this.name, attributes).transformText(() => attributes.text).extendMarkRange("link").run();
24917
- })
24914
+ return chain().setMark(this.name, attributes).transformText(() => attributes.text).extendMarkRange(TextSettings.LINK).run();
24915
+ }),
24916
+ isLink: createCommand(({ editor }) => computed(() => editor.isActive(TextSettings.LINK))),
24917
+ getLinkPreset: createCommand(() => computed(() => this.options.preset))
24918
24918
  };
24919
24919
  },
24920
24920
  renderHTML({ HTMLAttributes: attrs }) {
@@ -31,8 +31,8 @@
31
31
  </template>
32
32
 
33
33
  <script>
34
- import { computed, ref, inject } from 'vue';
35
- import { LinkDestinations } from '../../../../enums';
34
+ import { computed, ref, inject, unref } from 'vue';
35
+ import { LinkDestinations, TextSettings } from '../../../../enums';
36
36
  import { InjectionTokens } from '../../../../injectionTokens';
37
37
  import { tooltip } from '../../../../directives';
38
38
  import { useValidator } from '../../../base/composables';
@@ -94,7 +94,7 @@ export default {
94
94
  };
95
95
 
96
96
  const onBeforeOpened = () => {
97
- editor.commands.extendMarkRange('link');
97
+ editor.commands.extendMarkRange(TextSettings.LINK);
98
98
  resetErrors();
99
99
  link.prepareInitialFields();
100
100
  };
@@ -105,7 +105,8 @@ export default {
105
105
  modalRef
106
106
  });
107
107
 
108
- const isActive = computed(() => toggler.isOpened.value || editor.isActive('link'));
108
+ const isLink = editor.commands.isLink();
109
+ const isActive = computed(() => toggler.isOpened.value || unref(isLink));
109
110
 
110
111
  const updateLinkText = (value) => {
111
112
  resetErrors();
@@ -10,7 +10,7 @@
10
10
  </template>
11
11
 
12
12
  <script>
13
- import { computed, inject } from 'vue';
13
+ import { inject } from 'vue';
14
14
  import { Icon, Button } from '../../../base';
15
15
  import { InjectionTokens } from '../../../../injectionTokens';
16
16
 
@@ -21,7 +21,7 @@ export default {
21
21
 
22
22
  setup(_, { emit }) {
23
23
  const editor = inject(InjectionTokens.EDITOR);
24
- const isLink = computed(() => editor.isActive('link'));
24
+ const isLink = editor.commands.isLink();
25
25
 
26
26
  const removeLink = () => emit('remove-link');
27
27
 
@@ -7,7 +7,7 @@ import LinkControlApply from '../LinkControlApply';
7
7
  import { LinkControlDestination } from '../destination';
8
8
 
9
9
  const createEditor = (isActive) => ({
10
- isActive: () => isActive ?? false
10
+ commands: { isLink: () => isActive ?? false }
11
11
  });
12
12
 
13
13
  function createComponent({ editor }) {
@@ -4,7 +4,7 @@ import { Button } from '../../../../base';
4
4
  import LinkControlHeader from '../LinkControlHeader';
5
5
 
6
6
  const createEditor = (isActive) => ({
7
- isActive: () => isActive ?? false
7
+ commands: { isLink: () => isActive ?? false }
8
8
  });
9
9
 
10
10
  function createComponent({ editor }) {
@@ -1,5 +1,5 @@
1
1
  import { ref, inject } from 'vue';
2
- import { LinkTargets, LinkDestinations } from '../../../../../enums';
2
+ import { LinkTargets, LinkDestinations, TextSettings } from '../../../../../enums';
3
3
  import { InjectionTokens } from '../../../../../injectionTokens';
4
4
 
5
5
  export function useLink() {
@@ -15,12 +15,14 @@ export function useLink() {
15
15
  }
16
16
 
17
17
  function prepareInitialFields() {
18
+ const link = editor.getAttributes(TextSettings.LINK);
19
+
18
20
  linkData.value.text = editor.commands.getSelectedText();
19
- currentDestination.value.id = editor.getAttributes('link').destination || LinkDestinations.URL;
20
- linkData.value.target = editor.getAttributes('link').target || LinkTargets.SELF;
21
+ currentDestination.value.id = link.destination || LinkDestinations.URL;
22
+ linkData.value.target = link.target || LinkTargets.SELF;
21
23
 
22
- if (editor.getAttributes('link').href) {
23
- destinationHrefs.value[currentDestination.value.id] = editor.getAttributes('link').href;
24
+ if (link.href) {
25
+ destinationHrefs.value[currentDestination.value.id] = link.href;
24
26
  }
25
27
  }
26
28
 
@@ -10,6 +10,8 @@ export const TextSettings = Object.freeze({
10
10
  TEXT_DECORATION: 'text_decoration',
11
11
  SUPERSCRIPT: 'superscript',
12
12
  MARGIN: 'margin',
13
+ LINK: 'link',
14
+ STYLE_PRESET: 'style_preset',
13
15
 
14
16
  get attributes() {
15
17
  return [
@@ -46,7 +46,7 @@ export const FontStyle = Mark.create({
46
46
  }),
47
47
 
48
48
  removeItalic: createCommand(({ commands }) => {
49
- commands.unsetMark(this.name);
49
+ commands.setMark(this.name, { italic: false });
50
50
  })
51
51
  };
52
52
  },
@@ -76,7 +76,7 @@ export const FontStyle = Mark.create({
76
76
  },
77
77
 
78
78
  renderHTML({ HTMLAttributes: attrs }) {
79
- const font_style = attrs.italic ? 'italic' : null;
79
+ const font_style = attrs.italic ? 'italic' : 'normal';
80
80
 
81
81
  return renderMark({ font_style });
82
82
  }
@@ -1,10 +1,11 @@
1
1
  import Base from '@tiptap/extension-link';
2
- import { unref } from 'vue';
2
+ import { computed, unref } from 'vue';
3
3
  import { createCommand } from '../utils';
4
- import { LinkDestinations, LinkTargets } from '../enums';
4
+ import { LinkDestinations, LinkTargets, TextSettings } from '../enums';
5
+ import { NodeFactory } from '../services';
5
6
 
6
7
  export const Link = Base.extend({
7
- name: 'link',
8
+ name: TextSettings.LINK,
8
9
 
9
10
  addOptions() {
10
11
  return {
@@ -52,26 +53,23 @@ export const Link = Base.extend({
52
53
  addCommands() {
53
54
  return {
54
55
  ...this.parent?.(),
56
+
55
57
  applyLink: createCommand(({ commands, chain }, attributes) => {
56
58
  if (!commands.getSelectedText()) {
57
- return commands.insertContent({
58
- type: 'text',
59
- marks: [
60
- {
61
- type: 'link',
62
- attrs: { ...attributes }
63
- }
64
- ],
65
- text: attributes.text
66
- });
59
+ return commands.insertContent(NodeFactory.text(attributes.text, [
60
+ NodeFactory.mark(TextSettings.LINK, attributes)
61
+ ]));
67
62
  }
68
63
 
69
64
  return chain()
70
65
  .setMark(this.name, attributes)
71
66
  .transformText(() => attributes.text)
72
- .extendMarkRange('link')
67
+ .extendMarkRange(TextSettings.LINK)
73
68
  .run();
74
- })
69
+ }),
70
+
71
+ isLink: createCommand(({ editor }) => computed(() => editor.isActive(TextSettings.LINK))),
72
+ getLinkPreset: createCommand(() => computed(() => this.options.preset))
75
73
  };
76
74
  },
77
75
 
@@ -5,6 +5,7 @@ import { TextSettings } from '../enums';
5
5
 
6
6
  export const TextDecoration = Mark.create({
7
7
  name: TextSettings.TEXT_DECORATION,
8
+ priority: 1000,
8
9
 
9
10
  addAttributes: () => ({
10
11
  underline: { default: false },
@@ -13,10 +14,10 @@ export const TextDecoration = Mark.create({
13
14
 
14
15
  addCommands() {
15
16
  return {
16
- isUnderline: createCommand(({ commands, editor }) => {
17
+ isUnderline: createCommand(({ commands }) => {
17
18
  const decoration = commands.getTextDecoration();
18
19
 
19
- return computed(() => editor.isActive('link') || unref(decoration).underline);
20
+ return computed(() => unref(decoration).underline);
20
21
  }),
21
22
 
22
23
  isStrikeThrough: createCommand(({ commands }) => {
@@ -40,9 +41,14 @@ export const TextDecoration = Mark.create({
40
41
 
41
42
  getDefaultTextDecoration: createCommand(({ commands }) => {
42
43
  const preset = commands.getPreset();
44
+ const isLink = commands.isLink();
45
+ const linkPreset = commands.getLinkPreset();
43
46
 
44
47
  return computed(() => {
45
- const decoration = unref(preset).common.text_decoration;
48
+ const decoration = [
49
+ unref(preset).common.text_decoration,
50
+ unref(isLink) ? unref(linkPreset).common.text_decoration : ''
51
+ ].join(' ');
46
52
 
47
53
  return {
48
54
  underline: decoration.includes('underline'),
@@ -51,9 +57,7 @@ export const TextDecoration = Mark.create({
51
57
  });
52
58
  }),
53
59
 
54
- toggleUnderline: createCommand(({ commands, editor }) => {
55
- if (editor.isActive('link')) return;
56
-
60
+ toggleUnderline: createCommand(({ commands }) => {
57
61
  commands.toggleTextDecoration('underline');
58
62
  }),
59
63
 
@@ -72,13 +76,7 @@ export const TextDecoration = Mark.create({
72
76
  }),
73
77
 
74
78
  removeTextDecoration: createCommand(({ commands }, name) => {
75
- const mark = {
76
- ...unref(commands.getTextDecoration()),
77
- [name]: false
78
- };
79
- const isRemoveMark = !mark.underline && !mark.strike_through;
80
-
81
- isRemoveMark ? commands.unsetMark(this.name) : commands.setMark(this.name, mark);
79
+ commands.setMark(this.name, { ...unref(commands.getTextDecoration()), [name]: false });
82
80
  })
83
81
  };
84
82
  },
@@ -135,6 +133,7 @@ export const TextDecoration = Mark.create({
135
133
 
136
134
  if (attrs.underline) decorations.push('underline');
137
135
  if (attrs.strike_through) decorations.push('line-through');
136
+ if (!decorations.length) decorations.push('none');
138
137
 
139
138
  return renderMark({ text_decoration: decorations.join(' ') });
140
139
  }
@@ -6,10 +6,11 @@ import { FontFamily } from '../FontFamily';
6
6
  import { FontWeight } from '../FontWeight';
7
7
  import { FontStyle } from '../FontStyle';
8
8
  import { ContentNormalizer, NodeFactory } from '../../services';
9
+ import { TextSettings } from '../../enums';
9
10
  import { buildCoreExtensions } from '../core';
10
11
 
11
12
  const MockStylePreset = Extension.create({
12
- name: 'style_preset',
13
+ name: TextSettings.STYLE_PRESET,
13
14
 
14
15
  addCommands() {
15
16
  return {
@@ -30,10 +31,10 @@ function createEditor({ content }) {
30
31
  MockStylePreset,
31
32
  FontFamily.configure({
32
33
  fonts: [
33
- new Font({ name: 'Lato', styles: ['400', '700', '700i'] }),
34
+ new Font({ name: 'Lato', styles: ['400', '400i', '700', '700i'] }),
34
35
  new Font({ name: 'Bungee', styles: ['400'] }),
35
- new Font({ name: 'Roboto', styles: ['400'] }),
36
- new Font({ name: 'Josefin Slab', styles: ['400'] })
36
+ new Font({ name: 'Roboto', styles: ['400', '400i'] }),
37
+ new Font({ name: 'Josefin Slab', styles: ['400', '400i'] })
37
38
  ],
38
39
  defaultFont: 'Lato'
39
40
  }),
@@ -51,7 +52,7 @@ describe('get font family', () => {
51
52
  test('should get from selection', () => {
52
53
  const editor = createEditor({
53
54
  content: createContent(NodeFactory.text('hello world', [
54
- NodeFactory.mark('font_family', { value: 'Bungee' })
55
+ NodeFactory.mark(TextSettings.FONT_FAMILY, { value: 'Bungee' })
55
56
  ]))
56
57
  });
57
58
 
@@ -165,7 +166,7 @@ describe('rendering', () => {
165
166
  test('should render html', () => {
166
167
  const editor = createEditor({
167
168
  content: createContent(NodeFactory.text('hello world', [
168
- NodeFactory.mark('font_family', { value: 'Bungee' })
169
+ NodeFactory.mark(TextSettings.FONT_FAMILY, { value: 'Bungee' })
169
170
  ]))
170
171
  });
171
172
 
@@ -6,10 +6,11 @@ import { FontWeight } from '../FontWeight';
6
6
  import { FontFamily } from '../FontFamily';
7
7
  import { FontStyle } from '../FontStyle';
8
8
  import { ContentNormalizer, NodeFactory } from '../../services';
9
+ import { TextSettings } from '../../enums';
9
10
  import { buildCoreExtensions } from '../core';
10
11
 
11
12
  const MockStylePreset = Extension.create({
12
- name: 'style_preset',
13
+ name: TextSettings.STYLE_PRESET,
13
14
 
14
15
  addCommands() {
15
16
  return {
@@ -30,8 +31,8 @@ function createEditor({ content }) {
30
31
  MockStylePreset,
31
32
  FontFamily.configure({
32
33
  fonts: [
33
- new Font({ name: 'Lato', styles: ['400', '700'] }),
34
- new Font({ name: 'Bungee', styles: ['300', '800'] })
34
+ new Font({ name: 'Lato', styles: ['400', '400i', '700', '700i'] }),
35
+ new Font({ name: 'Bungee', styles: ['300', '300i', '800', '800i'] })
35
36
  ]
36
37
  }),
37
38
  FontWeight,
@@ -48,7 +49,7 @@ describe('get font weight', () => {
48
49
  test('should get from selection', () => {
49
50
  const editor = createEditor({
50
51
  content: createContent(NodeFactory.text('hello world', [
51
- NodeFactory.mark('font_weight', { value: '700' })
52
+ NodeFactory.mark(TextSettings.FONT_WEIGHT, { value: '700' })
52
53
  ]))
53
54
  });
54
55
 
@@ -78,7 +79,7 @@ describe('get font weight', () => {
78
79
  test('should get closest available font weight', () => {
79
80
  const editor = createEditor({
80
81
  content: createContent(NodeFactory.text('hello world', [
81
- NodeFactory.mark('font_weight', { value: '800' })
82
+ NodeFactory.mark(TextSettings.FONT_WEIGHT, { value: '800' })
82
83
  ]))
83
84
  });
84
85
 
@@ -102,7 +103,7 @@ describe('apply font weight', () => {
102
103
  test('should toggle weight to bold', () => {
103
104
  const editor = createEditor({
104
105
  content: createContent(NodeFactory.text('hello world', [
105
- NodeFactory.mark('font_weight', { value: '400' })
106
+ NodeFactory.mark(TextSettings.FONT_WEIGHT, { value: '400' })
106
107
  ]))
107
108
  });
108
109
 
@@ -115,7 +116,7 @@ describe('apply font weight', () => {
115
116
  const editor = createEditor({
116
117
  content: createContent(NodeFactory.text('hello world', [
117
118
  NodeFactory.mark('font_family', { value: 'Bungee' }),
118
- NodeFactory.mark('font_weight', { value: '400' })
119
+ NodeFactory.mark(TextSettings.FONT_WEIGHT, { value: '400' })
119
120
  ]))
120
121
  });
121
122
 
@@ -127,7 +128,7 @@ describe('apply font weight', () => {
127
128
  test('should toggle weight to medium', () => {
128
129
  const editor = createEditor({
129
130
  content: createContent(NodeFactory.text('hello world', [
130
- NodeFactory.mark('font_weight', { value: '700' })
131
+ NodeFactory.mark(TextSettings.FONT_WEIGHT, { value: '700' })
131
132
  ]))
132
133
  });
133
134
 
@@ -140,7 +141,7 @@ describe('apply font weight', () => {
140
141
  const editor = createEditor({
141
142
  content: createContent(NodeFactory.text('hello world', [
142
143
  NodeFactory.mark('font_family', { value: 'Bungee' }),
143
- NodeFactory.mark('font_weight', { value: '800' })
144
+ NodeFactory.mark(TextSettings.FONT_WEIGHT, { value: '800' })
144
145
  ]))
145
146
  });
146
147
 
@@ -154,7 +155,7 @@ describe('rendering', () => {
154
155
  test('should render html', () => {
155
156
  const editor = createEditor({
156
157
  content: createContent(NodeFactory.text('hello world', [
157
- NodeFactory.mark('font_weight', { value: '700' })
158
+ NodeFactory.mark(TextSettings.FONT_WEIGHT, { value: '700' })
158
159
  ]))
159
160
  });
160
161