@zipify/wysiwyg 1.3.0-0 → 2.0.0-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 (103) hide show
  1. package/.eslintrc.js +1 -1
  2. package/config/build/lib.config.js +4 -2
  3. package/dist/cli.js +10 -2
  4. package/dist/wysiwyg.css +43 -48
  5. package/dist/wysiwyg.mjs +1928 -787
  6. package/example/ExampleApp.vue +3 -1
  7. package/lib/__tests__/utils/buildTestExtensions.js +14 -0
  8. package/lib/__tests__/utils/index.js +1 -0
  9. package/lib/components/base/Button.vue +0 -7
  10. package/lib/components/base/dropdown/Dropdown.vue +1 -7
  11. package/lib/components/base/dropdown/DropdownActivator.vue +4 -19
  12. package/lib/components/base/dropdown/__tests__/DropdownActivator.test.js +1 -23
  13. package/lib/components/toolbar/controls/AlignmentControl.vue +1 -11
  14. package/lib/components/toolbar/controls/FontColorControl.vue +0 -13
  15. package/lib/components/toolbar/controls/FontFamilyControl.vue +0 -4
  16. package/lib/components/toolbar/controls/FontSizeControl.vue +1 -6
  17. package/lib/components/toolbar/controls/FontWeightControl.vue +0 -12
  18. package/lib/components/toolbar/controls/ItalicControl.vue +0 -13
  19. package/lib/components/toolbar/controls/LineHeightControl.vue +0 -14
  20. package/lib/components/toolbar/controls/StylePresetControl.vue +1 -1
  21. package/lib/components/toolbar/controls/SuperscriptControl.vue +2 -2
  22. package/lib/components/toolbar/controls/UnderlineControl.vue +0 -12
  23. package/lib/components/toolbar/controls/__tests__/AlignmentControl.test.js +5 -72
  24. package/lib/components/toolbar/controls/__tests__/FontColorControl.test.js +1 -22
  25. package/lib/components/toolbar/controls/__tests__/FontFamilyControl.test.js +0 -1
  26. package/lib/components/toolbar/controls/__tests__/FontSizeControl.test.js +0 -1
  27. package/lib/components/toolbar/controls/__tests__/FontWeightControl.test.js +0 -1
  28. package/lib/components/toolbar/controls/__tests__/ItalicControl.test.js +1 -23
  29. package/lib/components/toolbar/controls/__tests__/LineHeightControl.test.js +1 -23
  30. package/lib/components/toolbar/controls/__tests__/StylePresetControl.test.js +2 -2
  31. package/lib/components/toolbar/controls/__tests__/SuperscriptControl.test.js +2 -2
  32. package/lib/components/toolbar/controls/__tests__/UnderlineControl.test.js +1 -25
  33. package/lib/composables/__tests__/useEditor.test.js +2 -2
  34. package/lib/enums/TextSettings.js +5 -5
  35. package/lib/extensions/BackgroundColor.js +4 -4
  36. package/lib/extensions/FontColor.js +4 -5
  37. package/lib/extensions/FontFamily.js +4 -5
  38. package/lib/extensions/FontSize.js +5 -7
  39. package/lib/extensions/FontStyle.js +13 -11
  40. package/lib/extensions/FontWeight.js +6 -9
  41. package/lib/extensions/Link.js +1 -1
  42. package/lib/extensions/StylePreset.js +1 -15
  43. package/lib/extensions/Superscript.js +23 -1
  44. package/lib/extensions/TextDecoration.js +16 -20
  45. package/lib/extensions/__tests__/Alignment.test.js +10 -7
  46. package/lib/extensions/__tests__/BackgroundColor.test.js +6 -3
  47. package/lib/extensions/__tests__/CaseStyle.test.js +11 -7
  48. package/lib/extensions/__tests__/FontColor.test.js +6 -3
  49. package/lib/extensions/__tests__/FontFamily.test.js +29 -22
  50. package/lib/extensions/__tests__/FontSize.test.js +24 -17
  51. package/lib/extensions/__tests__/FontStyle.test.js +22 -16
  52. package/lib/extensions/__tests__/FontWeight.test.js +28 -21
  53. package/lib/extensions/__tests__/LineHeight.test.js +14 -11
  54. package/lib/extensions/__tests__/Link.test.js +14 -10
  55. package/lib/extensions/__tests__/Margin.test.js +2 -2
  56. package/lib/extensions/__tests__/StylePreset.test.js +49 -100
  57. package/lib/extensions/__tests__/TextDecoration.test.js +59 -37
  58. package/lib/extensions/__tests__/__snapshots__/BackgroundColor.test.js.snap +25 -25
  59. package/lib/extensions/__tests__/__snapshots__/FontColor.test.js.snap +25 -25
  60. package/lib/extensions/__tests__/__snapshots__/FontFamily.test.js.snap +105 -105
  61. package/lib/extensions/__tests__/__snapshots__/FontSize.test.js.snap +72 -72
  62. package/lib/extensions/__tests__/__snapshots__/FontStyle.test.js.snap +54 -46
  63. package/lib/extensions/__tests__/__snapshots__/FontWeight.test.js.snap +77 -77
  64. package/lib/extensions/__tests__/__snapshots__/TextDecoration.test.js.snap +68 -3
  65. package/lib/extensions/core/Document.js +5 -0
  66. package/lib/extensions/core/Heading.js +10 -0
  67. package/lib/extensions/core/NodeProcessor.js +112 -10
  68. package/lib/extensions/core/Paragraph.js +9 -0
  69. package/lib/extensions/core/TextProcessor.js +9 -16
  70. package/lib/extensions/core/__tests__/NodeProcessor.test.js +137 -10
  71. package/lib/extensions/core/__tests__/SelectionProcessor.test.js +2 -2
  72. package/lib/extensions/core/__tests__/TextProcessor.test.js +18 -41
  73. package/lib/extensions/core/__tests__/__snapshots__/NodeProcessor.test.js.snap +192 -0
  74. package/lib/extensions/core/__tests__/__snapshots__/TextProcessor.test.js.snap +7 -27
  75. package/lib/extensions/core/index.js +5 -5
  76. package/lib/extensions/core/steps/AddNodeMarkStep.js +60 -0
  77. package/lib/extensions/core/steps/AttrStep.js +54 -0
  78. package/lib/extensions/core/steps/RemoveNodeMarkStep.js +50 -0
  79. package/lib/extensions/core/steps/index.js +3 -0
  80. package/lib/extensions/list/List.js +1 -0
  81. package/lib/extensions/list/ListItem.js +5 -0
  82. package/lib/extensions/list/__tests__/List.test.js +30 -25
  83. package/lib/services/NodeFactory.js +25 -21
  84. package/lib/services/index.js +1 -1
  85. package/lib/services/normalizer/BaseNormalizer.js +11 -0
  86. package/lib/services/{BrowserDomParser.js → normalizer/BrowserDomParser.js} +0 -0
  87. package/lib/services/normalizer/ContentNormalizer.js +24 -0
  88. package/lib/services/normalizer/HtmlNormalizer.js +245 -0
  89. package/lib/services/normalizer/JsonNormalizer.js +81 -0
  90. package/lib/services/{__tests__/ContentNormalizer.test.js → normalizer/__tests__/HtmlNormalizer.test.js} +27 -67
  91. package/lib/services/normalizer/__tests__/JsonNormalizer.test.js +70 -0
  92. package/lib/services/normalizer/__tests__/__snapshots__/JsonNormalizer.test.js.snap +159 -0
  93. package/lib/services/normalizer/index.js +1 -0
  94. package/lib/styles/content.css +8 -0
  95. package/lib/utils/findMarkByType.js +5 -0
  96. package/lib/utils/index.js +5 -0
  97. package/lib/utils/isMarkAppliedToParent.js +10 -0
  98. package/lib/utils/isNodeFullySelected.js +10 -0
  99. package/lib/utils/resolveNodePosition.js +6 -0
  100. package/lib/utils/resolveTextPosition.js +6 -0
  101. package/package.json +3 -1
  102. package/lib/assets/icons/indicator.svg +0 -5
  103. package/lib/services/ContentNormalizer.js +0 -293
package/dist/wysiwyg.css CHANGED
@@ -23,7 +23,7 @@
23
23
  column-gap: var(--zw-offset-xxs);
24
24
  }
25
25
 
26
- .zw-button[data-v-2fa65564] {
26
+ .zw-button[data-v-562f4e4a] {
27
27
  display: inline-flex;
28
28
  align-items: center;
29
29
  vertical-align: middle;
@@ -43,21 +43,21 @@
43
43
  transition: 0.1s opacity ease-out;
44
44
  will-change: opacity;
45
45
  }
46
- .zw-button[data-v-2fa65564]::-moz-focus-inner {
46
+ .zw-button[data-v-562f4e4a]::-moz-focus-inner {
47
47
  border: 0 !important;
48
48
  }
49
- .zw-button[data-v-2fa65564]:hover,
50
- .zw-button[data-v-2fa65564]:focus {
49
+ .zw-button[data-v-562f4e4a]:hover,
50
+ .zw-button[data-v-562f4e4a]:focus {
51
51
  text-decoration: none;
52
52
  outline: none;
53
53
  }
54
- .zw-button[data-v-2fa65564]:disabled {
54
+ .zw-button[data-v-562f4e4a]:disabled {
55
55
  user-select: none;
56
56
  box-shadow: none;
57
57
  cursor: not-allowed;
58
58
  opacity: 0.35;
59
59
  }
60
- .zw-button--toolbar[data-v-2fa65564] {
60
+ .zw-button--toolbar[data-v-562f4e4a] {
61
61
  border-radius: 1px;
62
62
  min-height: 28px;
63
63
  font-weight: var(--zw-font-weight-semibold);
@@ -67,38 +67,32 @@
67
67
  transition-property: background-color, color, opacity;
68
68
  will-change: background-color, color, opacity;
69
69
  }
70
- .zw-button--primary[data-v-2fa65564] {
70
+ .zw-button--primary[data-v-562f4e4a] {
71
71
  background-color: rgb(var(--zw-color-green));
72
72
  color: rgb(var(--zw-color-white));
73
73
  padding: var(--zw-offset-xxs) var(--zw-offset-sm);
74
74
  line-height: var(--zw-line-height-md);
75
75
  }
76
- .zw-button--primary[data-v-2fa65564],
77
- .zw-button--secondary[data-v-2fa65564] {
76
+ .zw-button--primary[data-v-562f4e4a],
77
+ .zw-button--secondary[data-v-562f4e4a] {
78
78
  color: rgb(var(--zw-color-white));
79
79
  padding: var(--zw-offset-xxs) var(--zw-offset-sm);
80
80
  font-weight: 600;
81
81
  font-size: var(--zw-font-size-xs);
82
82
  }
83
- .zw-button--primary[data-v-2fa65564]:not(:disabled):hover,
84
- .zw-button--secondary[data-v-2fa65564]:not(:disabled):hover {
83
+ .zw-button--primary[data-v-562f4e4a]:not(:disabled):hover,
84
+ .zw-button--secondary[data-v-562f4e4a]:not(:disabled):hover {
85
85
  opacity: 0.9;
86
86
  }
87
- .zw-button--toolbar[data-v-2fa65564]:not(.zw-button--icon) {
87
+ .zw-button--toolbar[data-v-562f4e4a]:not(.zw-button--icon) {
88
88
  padding: var(--zw-offset-xxs) var(--zw-offset-xs);
89
89
  }
90
- .zw-button--toolbar[data-v-2fa65564]:not(:disabled):hover,
91
- .zw-button--toolbar[data-v-2fa65564]:not(:disabled):focus,
92
- .zw-button--toolbar.zw-button--active[data-v-2fa65564]:not(:disabled) {
90
+ .zw-button--toolbar[data-v-562f4e4a]:not(:disabled):hover,
91
+ .zw-button--toolbar[data-v-562f4e4a]:not(:disabled):focus,
92
+ .zw-button--toolbar.zw-button--active[data-v-562f4e4a]:not(:disabled) {
93
93
  color: rgb(var(--zw-color-white));
94
94
  background-color: rgb(var(--zw-color-n5));
95
95
  }
96
- .zw-button__customized-indicator[data-v-2fa65564] {
97
- display: inline-block !important;
98
- position: absolute;
99
- top: calc(0px - var(--zw-offset-xxs));
100
- right: 2px;
101
- }
102
96
 
103
97
  .zw-button-toggle[data-v-a02f12aa] {
104
98
  display: flex;
@@ -461,24 +455,23 @@
461
455
  font-size: var(--zw-font-size-xs);
462
456
  }
463
457
 
464
- .zw-dropdown__activator[data-v-58b29148] {
458
+ .zw-dropdown__activator[data-v-021ac370] {
465
459
  width: 100%;
466
460
  }
467
- .zw-dropdown__activator-arrow[data-v-58b29148] {
461
+ .zw-dropdown__activator-title[data-v-021ac370] {
462
+ margin-right: var(--zw-offset-xs);
463
+ }
464
+ .zw-dropdown__activator-arrow[data-v-021ac370] {
468
465
  margin-left: auto;
469
466
  }
470
- .zw-dropdown__activator--active .zw-dropdown__activator-arrow[data-v-58b29148] {
467
+ .zw-dropdown__activator--active .zw-dropdown__activator-arrow[data-v-021ac370] {
471
468
  transform: rotateX(180deg);
472
469
  }
473
- .zw-dropdown__activator--gray[data-v-58b29148] {
470
+ .zw-dropdown__activator--gray[data-v-021ac370] {
474
471
  background-color: rgb(var(--zw-color-n20));
475
472
  font-size: var(--zw-font-size-xxs);
476
473
  color: rgb(var(--zw-color-white));
477
474
  }
478
- .zw-dropdown__customized-indicator[data-v-58b29148] {
479
- position: relative;
480
- top: calc(0px - var(--zw-offset-xs));
481
- }
482
475
 
483
476
  .zw-dropdown__option[data-v-1355d08c] {
484
477
  width: 100%;
@@ -526,43 +519,39 @@
526
519
  padding-bottom: var(--zw-offset-xs);
527
520
  }
528
521
 
529
- .zw-dropdown[data-v-29e6a104] {
522
+ .zw-dropdown[data-v-885109ea] {
530
523
  position: relative;
531
524
  font-size: var(--zw-font-size-xs);
532
525
  line-height: var(--zw-line-height-xxs);
533
526
  }
534
527
 
535
- .zw-style-preset-control[data-v-2893d64e] {
528
+ .zw-style-preset-control[data-v-5983cfee] {
536
529
  display: flex;
537
530
  align-items: center;
538
531
  }
539
- .zw-style-preset-control__dropdown[data-v-2893d64e] {
532
+ .zw-style-preset-control__dropdown[data-v-5983cfee] {
540
533
  width: 96px;
541
534
  }
542
- .zw-style-preset-control__reset[data-v-2893d64e] {
535
+ .zw-style-preset-control__reset[data-v-5983cfee] {
543
536
  color: rgb(var(--zw-color-n70));
544
537
  }
545
- .zw-style-preset-control__reset[data-v-2893d64e]:not(:disabled):hover,
546
- .zw-style-preset-control__reset[data-v-2893d64e]:not(:disabled):focus,
547
- .zw-style-preset-control__reset[data-v-2893d64e]:not(:disabled):focus-within {
538
+ .zw-style-preset-control__reset[data-v-5983cfee]:not(:disabled):hover,
539
+ .zw-style-preset-control__reset[data-v-5983cfee]:not(:disabled):focus,
540
+ .zw-style-preset-control__reset[data-v-5983cfee]:not(:disabled):focus-within {
548
541
  color: rgb(var(--zw-color-white));
549
542
  }
550
543
 
551
- .zw-font-family-control[data-v-2f66bfa6] {
544
+ .zw-font-family-control[data-v-07a47462] {
552
545
  width: 96px;
553
546
  }
554
- .zw-font-family-control__option[data-v-2f66bfa6] {
547
+ .zw-font-family-control__option[data-v-07a47462] {
555
548
  font-weight: 400;
556
549
  font-family: var(--zw-font-family-option);
557
550
  width: 150px;
558
551
  }
559
552
 
560
- .zw-font-weight-control[data-v-5a87e48e] {
561
- width: 60px;
562
- }
563
-
564
- .zw-font-size-control[data-v-3f8185ea] {
565
- width: 72px;
553
+ .zw-font-size-control[data-v-71dd7ffc] {
554
+ width: 64px;
566
555
  }
567
556
 
568
557
  .zw-alignment-control__modal[data-v-cef30e1a] {
@@ -572,17 +561,17 @@
572
561
  flex-direction: column;
573
562
  }
574
563
 
575
- .zw-line-height-control__modal[data-v-8aeefd68] {
564
+ .zw-line-height-control__modal[data-v-9ea28b80] {
576
565
  padding: var(--zw-offset-sm);
577
566
  }
578
- .zw-line-height-control__row[data-v-8aeefd68] {
567
+ .zw-line-height-control__row[data-v-9ea28b80] {
579
568
  display: flex;
580
569
  align-items: center;
581
570
  }
582
- .zw-line-height-control__range[data-v-8aeefd68] {
571
+ .zw-line-height-control__range[data-v-9ea28b80] {
583
572
  width: 156px;
584
573
  }
585
- .zw-line-height-control__field[data-v-8aeefd68] {
574
+ .zw-line-height-control__field[data-v-9ea28b80] {
586
575
  width: 64px;
587
576
  margin-left: var(--zw-offset-sm);
588
577
  }
@@ -838,6 +827,12 @@ img.ProseMirror-separator {
838
827
  border-top: 1px solid #000;
839
828
  animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;
840
829
  }
830
+ .ProseMirror span {
831
+ display: block;
832
+ }
833
+ .ProseMirror :where(p, h1, h2, h3, h4) span {
834
+ display: initial;
835
+ }
841
836
  @keyframes ProseMirror-cursor-blink {
842
837
  to {
843
838
  visibility: hidden;