@zipify/wysiwyg 1.0.0-dev.16 → 1.0.0-dev.19

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 (100) hide show
  1. package/.github/dependabot.yaml +1 -0
  2. package/dist/wysiwyg.css +293 -12
  3. package/dist/wysiwyg.js +1 -1
  4. package/example/ExampleApp.vue +6 -2
  5. package/example/pageBlocks.js +31 -0
  6. package/example/presets.js +2 -2
  7. package/lib/Wysiwyg.vue +16 -6
  8. package/lib/assets/icons/link.svg +3 -0
  9. package/lib/assets/icons/unlink.svg +3 -0
  10. package/lib/components/base/Button.vue +21 -1
  11. package/lib/components/base/Checkbox.vue +89 -0
  12. package/lib/components/base/FieldLabel.vue +2 -1
  13. package/lib/components/base/Icon.vue +2 -2
  14. package/lib/components/base/Modal.vue +0 -1
  15. package/lib/components/base/TextField.vue +106 -0
  16. package/lib/components/base/__tests__/TextField.test.js +57 -0
  17. package/lib/components/base/__tests__/__snapshots__/TextField.test.js.snap +9 -0
  18. package/lib/components/base/composables/index.js +1 -0
  19. package/lib/components/base/composables/useValidator.js +19 -0
  20. package/lib/components/base/dropdown/Dropdown.vue +15 -3
  21. package/lib/components/base/dropdown/DropdownActivator.vue +19 -3
  22. package/lib/components/base/index.js +3 -1
  23. package/lib/components/toolbar/Toolbar.vue +48 -8
  24. package/lib/components/toolbar/ToolbarFull.vue +10 -2
  25. package/lib/components/toolbar/__tests__/Toolbar.test.js +6 -0
  26. package/lib/components/toolbar/controls/FontSizeControl.vue +7 -0
  27. package/lib/components/toolbar/controls/UnderlineControl.vue +2 -2
  28. package/lib/components/toolbar/controls/__tests__/UnderlineControl.test.js +4 -0
  29. package/lib/components/toolbar/controls/index.js +1 -0
  30. package/lib/components/toolbar/controls/link/LinkControl.vue +152 -0
  31. package/lib/components/toolbar/controls/link/LinkControlApply.vue +35 -0
  32. package/lib/components/toolbar/controls/link/LinkControlHeader.vue +67 -0
  33. package/lib/components/toolbar/controls/link/composables/index.js +1 -0
  34. package/lib/components/toolbar/controls/link/composables/useLink.js +61 -0
  35. package/lib/components/toolbar/controls/link/destination/LinkControlDestination.vue +103 -0
  36. package/lib/components/toolbar/controls/link/destination/LinkControlPageBlock.vue +54 -0
  37. package/lib/components/toolbar/controls/link/destination/LinkControlUrl.vue +52 -0
  38. package/lib/components/toolbar/controls/link/destination/index.js +1 -0
  39. package/lib/components/toolbar/controls/link/index.js +1 -0
  40. package/lib/composables/__tests__/useEditor.test.js +2 -2
  41. package/lib/composables/useEditor.js +4 -5
  42. package/lib/composables/useToolbar.js +15 -19
  43. package/lib/enums/LinkDestinations.js +4 -0
  44. package/lib/enums/LinkTargets.js +4 -0
  45. package/lib/enums/TextSettings.js +3 -1
  46. package/lib/enums/index.js +2 -0
  47. package/lib/extensions/Alignment.js +18 -6
  48. package/lib/extensions/BackgroundColor.js +14 -6
  49. package/lib/extensions/FontColor.js +14 -6
  50. package/lib/extensions/FontFamily.js +25 -8
  51. package/lib/extensions/FontSize.js +26 -13
  52. package/lib/extensions/FontStyle.js +23 -13
  53. package/lib/extensions/FontWeight.js +22 -14
  54. package/lib/extensions/LineHeight.js +11 -3
  55. package/lib/extensions/Link.js +101 -0
  56. package/lib/extensions/StylePreset.js +4 -2
  57. package/lib/extensions/TextDecoration.js +27 -12
  58. package/lib/extensions/__tests__/Alignment.test.js +11 -5
  59. package/lib/extensions/__tests__/BackgroundColor.test.js +11 -5
  60. package/lib/extensions/__tests__/CaseStyle.test.js +3 -5
  61. package/lib/extensions/__tests__/FontColor.test.js +11 -5
  62. package/lib/extensions/__tests__/FontFamily.test.js +32 -7
  63. package/lib/extensions/__tests__/FontSize.test.js +11 -5
  64. package/lib/extensions/__tests__/FontStyle.test.js +11 -5
  65. package/lib/extensions/__tests__/FontWeight.test.js +11 -5
  66. package/lib/extensions/__tests__/LineHeight.test.js +11 -5
  67. package/lib/extensions/__tests__/StylePreset.test.js +70 -6
  68. package/lib/extensions/__tests__/TextDecoration.test.js +27 -5
  69. package/lib/extensions/__tests__/__snapshots__/Alignment.test.js.snap +26 -2
  70. package/lib/extensions/__tests__/__snapshots__/BackgroundColor.test.js.snap +30 -1
  71. package/lib/extensions/__tests__/__snapshots__/FontColor.test.js.snap +18 -1
  72. package/lib/extensions/__tests__/__snapshots__/FontFamily.test.js.snap +88 -1
  73. package/lib/extensions/__tests__/__snapshots__/FontSize.test.js.snap +33 -2
  74. package/lib/extensions/__tests__/__snapshots__/FontStyle.test.js.snap +25 -4
  75. package/lib/extensions/__tests__/__snapshots__/FontWeight.test.js.snap +30 -1
  76. package/lib/extensions/__tests__/__snapshots__/LineHeight.test.js.snap +26 -2
  77. package/lib/extensions/__tests__/__snapshots__/StylePreset.test.js.snap +6 -2
  78. package/lib/extensions/__tests__/__snapshots__/TextDecoration.test.js.snap +93 -3
  79. package/lib/extensions/core/CopyPasteProcessor.js +10 -0
  80. package/lib/extensions/core/TextProcessor.js +10 -0
  81. package/lib/extensions/core/__tests__/NodeProcessor.test.js +3 -5
  82. package/lib/extensions/core/__tests__/SelectionProcessor.test.js +3 -5
  83. package/lib/extensions/core/__tests__/TextProcessor.test.js +138 -12
  84. package/lib/extensions/core/__tests__/__snapshots__/TextProcessor.test.js.snap +26 -0
  85. package/lib/extensions/core/index.js +11 -2
  86. package/lib/extensions/core/plugins/PastePlugin.js +48 -0
  87. package/lib/extensions/core/plugins/ProseMirrorPlugin.js +20 -0
  88. package/lib/extensions/core/plugins/index.js +1 -0
  89. package/lib/extensions/index.js +41 -34
  90. package/lib/extensions/list/__tests__/List.test.js +3 -5
  91. package/lib/extensions/list/__tests__/__snapshots__/List.test.js.snap +45 -15
  92. package/lib/injectionTokens.js +2 -1
  93. package/lib/services/ContentNormalizer.js +62 -20
  94. package/lib/services/__tests__/ContentNormalizer.test.js +40 -7
  95. package/lib/styles/content.css +96 -9
  96. package/lib/styles/helpers/offsets.css +16 -0
  97. package/lib/styles/variables.css +6 -0
  98. package/lib/utils/__tests__/__snapshots__/renderInlineSetting.test.js.snap +4 -4
  99. package/lib/utils/renderInlineSetting.js +1 -1
  100. package/package.json +11 -9
@@ -11,6 +11,7 @@ updates:
11
11
  day: "monday"
12
12
  timezone: "Europe/Kiev"
13
13
  time: "09:00"
14
+ versioning-strategy: "increase"
14
15
  pull-request-branch-name:
15
16
  separator: "_"
16
17
  labels:
package/dist/wysiwyg.css CHANGED
@@ -68,6 +68,23 @@
68
68
  transition-property: background-color, color, opacity;
69
69
  will-change: background-color, color, opacity;
70
70
  }
71
+ .zw-button--primary[data-v-610825a2] {
72
+ background-color: rgb(var(--zw-color-green));
73
+ color: rgb(var(--zw-color-white));
74
+ padding: var(--zw-offset-xxs) var(--zw-offset-sm);
75
+ line-height: var(--zw-line-height-md);
76
+ }
77
+ .zw-button--primary[data-v-610825a2],
78
+ .zw-button--secondary[data-v-610825a2] {
79
+ color: rgb(var(--zw-color-white));
80
+ padding: var(--zw-offset-xxs) var(--zw-offset-sm);
81
+ font-weight: 600;
82
+ font-size: var(--zw-font-size-xs);
83
+ }
84
+ .zw-button--primary[data-v-610825a2]:not(:disabled):hover,
85
+ .zw-button--secondary[data-v-610825a2]:not(:disabled):hover {
86
+ opacity: 0.9;
87
+ }
71
88
  .zw-button--toolbar[data-v-610825a2]:not(.zw-button--icon) {
72
89
  padding: var(--zw-offset-xxs) var(--zw-offset-xs);
73
90
  }
@@ -86,7 +103,7 @@
86
103
 
87
104
 
88
105
  .zw-icon[data-v-d4624794] {
89
- display: inline-block;
106
+ display: flex;
90
107
  }
91
108
  .zw-icon--auto-color[data-v-d4624794] {
92
109
  --zw-icon-foreground: currentColor;
@@ -541,7 +558,6 @@
541
558
 
542
559
  .zw-modal[data-v-0a3c1c80] {
543
560
  border-radius: 2px;
544
- overflow: hidden;
545
561
  box-shadow: 0 0 4px rgba(var(--zw-color-black), 0.3);
546
562
  background-color: rgb(var(--zw-color-n15));
547
563
  max-height: var(--zw-modal-max-height);
@@ -574,6 +590,90 @@
574
590
  }
575
591
 
576
592
 
593
+ .zw-field[data-v-49291160] {
594
+ display: flex;
595
+ flex-direction: column;
596
+ }
597
+ .zw-field__input[data-v-49291160] {
598
+ --border-color: rgb(var(--zw-color-n60));
599
+ --text-color: rgb(var(--zw-color-n85));
600
+
601
+ border: 1px solid var(--border-color);
602
+ background-color: transparent;
603
+ color: var(--text-color);
604
+ font-size: var(--zw-font-size-xxs);
605
+ outline: none;
606
+ padding: 6px;
607
+ line-height: var(--zw-line-height-xxs);
608
+ }
609
+ .zw-field__input[data-v-49291160]:hover {
610
+ --border-color: rgb(var(--zw-color-n80));
611
+ --text-color: rgb(var(--zw-color-n85));
612
+ }
613
+ .zw-field__input[data-v-49291160]:focus,
614
+ .zw-field__input[data-v-49291160]:focus-within {
615
+ --border-color: rgb(var(--zw-color-white));
616
+ --text-color: rgb(var(--zw-color-white));
617
+ }
618
+ .zw-field__label[data-v-49291160] {
619
+ display: inline-block;
620
+ font-size: var(--zw-font-size-xxs);
621
+ padding-bottom: var(--zw-offset-xxs);
622
+ line-height: var(--zw-line-height-xxs);
623
+ }
624
+ .zw-field__label--error[data-v-49291160] {
625
+ font-size: var(--zw-font-size-xxs);
626
+ margin: var(--zw-offset-xxs) 0 0;
627
+ color: rgb(var(--zw-color-red));
628
+ }
629
+
630
+
631
+ .zw-checkbox[data-v-f7eea800] {
632
+ display: inline-flex;
633
+ align-items: center;
634
+ position: relative;
635
+ cursor: pointer;
636
+ padding: var(--zw-offset-xxs) var(--zw-offset-xxs) var(--zw-offset-xxs) 0;
637
+ }
638
+ .zw-checkbox__field + .zw-checkbox__indicator[data-v-f7eea800] {
639
+ color: var(--zw-color-n200);
640
+ box-shadow: inset 0 0 0 2px currentColor;
641
+ }
642
+ .zw-checkbox:hover .zw-checkbox__indicator[data-v-f7eea800] {
643
+ box-shadow: inset 0 0 0 2px rgb(var(--zw-color-green));
644
+ }
645
+ .zw-checkbox__field:checked + .zw-checkbox__indicator[data-v-f7eea800] {
646
+ color: rgb(var(--zw-color-green))
647
+ }
648
+ .zw-checkbox .zw-checkbox__field:checked + .zw-checkbox__indicator[data-v-f7eea800] {
649
+ background-color: rgb(var(--zw-color-green));
650
+ }
651
+ .zw-checkbox .zw-checkbox__indicator[data-v-f7eea800]::after {
652
+ content: "";
653
+ display: block;
654
+ height: 16px;
655
+ transform: scale(0.6);
656
+ transition: transform 0.2s ease-out;
657
+ width: 16px;
658
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNiAyNiIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPgogIDxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik0uMyAxNGMtLjItLjItLjMtLjUtLjMtLjdzLjEtLjUuMy0uN2wxLjQtMS40Yy40LS40IDEtLjQgMS40IDBsLjEuMSA1LjUgNS45Yy4yLjIuNS4yLjcgMEwyMi44IDMuM2guMWMuNC0uNCAxLS40IDEuNCAwbDEuNCAxLjRjLjQuNC40IDEgMCAxLjRsLTE2IDE2LjZjLS4yLjItLjQuMy0uNy4zLS4zIDAtLjUtLjEtLjctLjNMLjUgMTQuMy4zIDE0eiIvPgo8L3N2Zz4K);
659
+ background-repeat: no-repeat;
660
+ background-size: 16px;
661
+ background-position: center center;
662
+ }
663
+ .zw-checkbox__field:not(:checked) + .zw-checkbox__indicator[data-v-f7eea800]::after {
664
+ transform: scale(0);
665
+ }
666
+ .zw-checkbox__field[data-v-f7eea800] {
667
+ position: absolute;
668
+ opacity: 0;
669
+ height: 0;
670
+ width: 0;
671
+ }
672
+ .zw-checkbox__label[data-v-f7eea800] {
673
+ font-size: var(--zw-font-size-xs);
674
+ }
675
+
676
+
577
677
  .zw-dropdown__activator[data-v-4865ea7a] {
578
678
  width: 100%;
579
679
  }
@@ -586,6 +686,11 @@
586
686
  .zw-dropdown__activator--active .zw-dropdown__activator-arrow[data-v-4865ea7a] {
587
687
  transform: rotateX(180deg);
588
688
  }
689
+ .zw-dropdown__activator--gray[data-v-4865ea7a] {
690
+ background-color: rgb(var(--zw-color-n20));
691
+ font-size: var(--zw-font-size-xxs);
692
+ color: rgb(var(--zw-color-white));
693
+ }
589
694
 
590
695
 
591
696
  .zw-dropdown__option[data-v-10a0f0b7] {
@@ -672,6 +777,11 @@
672
777
  }
673
778
 
674
779
 
780
+ .zw-font-size-control[data-v-a2e458ce] {
781
+ width: 64px;
782
+ }
783
+
784
+
675
785
  .zw-alignment-control__modal[data-v-9713d430] {
676
786
  padding: var(--zw-offset-xxs);
677
787
  }
@@ -702,15 +812,77 @@
702
812
  }
703
813
 
704
814
 
815
+ .zw-link-modal-header[data-v-1b67b282] {
816
+ display: flex;
817
+ align-items: center;
818
+ justify-content: space-between;
819
+ padding: var(--zw-offset-sm);
820
+ border-bottom: 2px solid rgb(var(--zw-color-n5));
821
+ }
822
+ .zw-link-modal-header__title[data-v-1b67b282] {
823
+ text-transform: uppercase;
824
+ font-weight: var(--zw-font-weight-semibold);
825
+ font-size: var(--zw-font-size-xxs);
826
+ color: rgb(var(--zw-color-white));
827
+ }
828
+ .zw-link-modal-header__unlink-icon[data-v-1b67b282] {
829
+ margin-right: var(--zw-offset-xxs);
830
+ }
831
+ .zw-link-modal-header__unlink-button[data-v-1b67b282] {
832
+ color: rgb(var(--zw-color-n80));
833
+ font-size: var(--zw-font-size-xxs);
834
+ transition: 0.1s opacity ease-out;
835
+ will-change: opacity;
836
+ }
837
+ .zw-link-modal-header__unlink-button[data-v-1b67b282]:disabled {
838
+ opacity: 0.35;
839
+ }
840
+ .zw-link-modal-header__unlink-button[data-v-1b67b282]:hover {
841
+ color: rgb(var(--zw-color-white));
842
+ }
843
+
844
+
845
+ .zw-link-modal__apply[data-v-77b6c3ac] {
846
+ display: flex;
847
+ justify-content: flex-end;
848
+ }
849
+
850
+
851
+ .zw-link-modal[data-v-30870bdc] {
852
+ width: 266px;
853
+ }
854
+ .zw-link-modal__body[data-v-30870bdc] {
855
+ padding: var(--zw-offset-sm);
856
+ }
857
+ [data-v-30870bdc] .zw-link-modal-dropdown__option {
858
+ width: 234px;
859
+ }
860
+
861
+
705
862
  .zw-toolbar[data-v-05accea6] {
706
863
  border-radius: 2px;
707
864
  background-color: rgb(var(--zw-color-n15));
708
865
  color: rgb(var(--zw-color-n70));
709
866
  z-index: 999999;
710
867
  }
868
+ .zw-toolbar[data-v-05accea6]::before,
869
+ .zw-toolbar[data-v-05accea6]::after {
870
+ content: "";
871
+ display: block;
872
+ width: 100%;
873
+ height: calc(var(--zw-toolbar-offset-y) + 4px);
874
+ position: absolute;
875
+ --zw-toolbar-safe-zone: calc(-1 * var(--zw-toolbar-offset-y));
876
+ }
877
+ .zw-toolbar[data-v-05accea6]::before {
878
+ top: var(--zw-toolbar-safe-zone);
879
+ }
880
+ .zw-toolbar[data-v-05accea6]::after {
881
+ bottom: var(--zw-toolbar-safe-zone);
882
+ }
711
883
  .zw-toolbar--enter-active[data-v-05accea6],
712
884
  .zw-toolbar--leave-active[data-v-05accea6] {
713
- transition: opacity 0.15s ease-out;
885
+ transition: opacity 150ms ease-out;
714
886
  }
715
887
  .zw-toolbar--leave-active[data-v-05accea6] {
716
888
  transition: opacity 0s ease-in;
@@ -730,13 +902,17 @@
730
902
  --zw-color-n80: 196, 196, 196; /* #C4C4C4 */
731
903
  --zw-color-n85: 217, 217, 217; /* #D9D9D9 */
732
904
  --zw-color-n90: 230, 230, 230; /* #E6E6E6 */
905
+ --zw-color-n200: 194, 200, 209; /* #C2C8D1 */
733
906
  --zw-color-black: 0, 0, 0;
734
907
  --zw-color-white: 255, 255, 255;
908
+ --zw-color-green: 59, 180, 74; /* #3BB44A */
909
+ --zw-color-red: 234, 58, 58; /* #EA3A3A */
735
910
 
736
911
  --zw-offset-xxs: 4px;
737
912
  --zw-offset-xs: 8px;
738
913
  --zw-offset-xsm: 12px;
739
914
  --zw-offset-sm: 16px;
915
+ --zw-offset-md: 24px;
740
916
 
741
917
  --zw-font-weight-thin: 400;
742
918
  --zw-font-weight-semibold: 500;
@@ -764,6 +940,8 @@ $builder-N90: #E6E6E6;
764
940
  $builder-N94: #F0F0F0;
765
941
  $builder-N96: #F5F5F5;
766
942
  $builder-N98: #FAFAFA;
943
+ $builder-N200: #C2C8D1;
944
+ $builder-R50: #EA3A3A;
767
945
 
768
946
  $font-size-xxs: 12px;
769
947
  $font-size-xs: 14px;
@@ -782,6 +960,14 @@ $font-height--md: 1.72;
782
960
  outline: none;
783
961
  }
784
962
 
963
+ .zw-wysiwyg__placeholder:first-child:last-child::before {
964
+ content: attr(data-placeholder);
965
+ color: rgb(var(--zw-color-n70));
966
+ float: left;
967
+ height: 0;
968
+ pointer-events: none;
969
+ }
970
+
785
971
  .zw-style {
786
972
  font-weight: var(--zw-font-weight, var(--zw-preset-font-weight));
787
973
  font-family: var(--zw-font-family, var(--zw-preset-font-family));
@@ -794,30 +980,109 @@ $font-height--md: 1.72;
794
980
  @media (min-width: 1200px) {
795
981
 
796
982
  .zw-style {
797
- font-size: var(--zw-desktop-font-size, var(--zw-preset-desktop-font-size));
798
- text-align: var(--zw-desktop-text-align, var(--zw-preset-desktop-text-align));
799
- line-height: var(--zw-desktop-line-height, var(--zw-preset-desktop-line-height));
983
+ font-size: var(--zw-font-size-desktop, var(--zw-preset-desktop-font-size));
984
+ text-align: var(--zw-text-align-desktop, var(--zw-preset-desktop-text-align));
985
+ line-height: var(--zw-line-height-desktop, var(--zw-preset-desktop-line-height));
800
986
  }
801
987
  }
802
988
 
803
989
  @media (min-width: 769px) and (max-width: 1199.98px) {
804
990
 
805
991
  .zw-style {
806
- font-size: var(--zw-tablet-font-size, var(--zw-preset-tablet-font-size));
807
- text-align: var(--zw-tablet-text-align, var(--zw-preset-tablet-text-align));
808
- line-height: var(--zw-tablet-line-height, var(--zw-preset-tablet-line-height));
992
+ font-size: var(--zw-font-size-tablet, var(--zw-preset-tablet-font-size));
993
+ text-align: var(--zw-text-align-tablet, var(--zw-preset-tablet-text-align));
994
+ line-height: var(--zw-line-height-tablet, var(--zw-preset-tablet-line-height));
809
995
  }
810
996
  }
811
997
 
812
998
  @media (max-width: 768.98px) {
813
999
 
814
1000
  .zw-style {
815
- font-size: var(--zw-mobile-font-size, var(--zw-preset-mobile-font-size));
816
- text-align: var(--zw-mobile-text-align, var(--zw-preset-mobile-text-align));
817
- line-height: var(--zw-mobile-line-height, var(--zw-preset-mobile-line-height));
1001
+ font-size: var(--zw-font-size-mobile, var(--zw-preset-mobile-font-size));
1002
+ text-align: var(--zw-text-align-mobile, var(--zw-preset-mobile-text-align));
1003
+ line-height: var(--zw-line-height-mobile, var(--zw-preset-mobile-line-height));
1004
+ }
1005
+ }
1006
+
1007
+ /* ProseMirror styles */
1008
+
1009
+ .ProseMirror {
1010
+ position: relative;
1011
+ }
1012
+
1013
+ .ProseMirror {
1014
+ word-wrap: break-word;
1015
+ white-space: pre-wrap;
1016
+ white-space: break-spaces;
1017
+ -webkit-font-variant-ligatures: none;
1018
+ font-variant-ligatures: none;
1019
+ font-feature-settings: "liga" 0; /* the above doesn't seem to work in Edge */
1020
+ }
1021
+
1022
+ .ProseMirror [contenteditable="false"] {
1023
+ white-space: normal;
1024
+ }
1025
+
1026
+ .ProseMirror [contenteditable="false"] [contenteditable="true"] {
1027
+ white-space: pre-wrap;
1028
+ }
1029
+
1030
+ .ProseMirror pre {
1031
+ white-space: pre-wrap;
1032
+ }
1033
+
1034
+ img.ProseMirror-separator {
1035
+ display: inline !important;
1036
+ border: none !important;
1037
+ margin: 0 !important;
1038
+ width: 1px !important;
1039
+ height: 1px !important;
1040
+ }
1041
+
1042
+ .ProseMirror-gapcursor {
1043
+ display: none;
1044
+ pointer-events: none;
1045
+ position: absolute;
1046
+ margin: 0;
1047
+ }
1048
+
1049
+ .ProseMirror-gapcursor::after {
1050
+ content: "";
1051
+ display: block;
1052
+ position: absolute;
1053
+ top: -2px;
1054
+ width: 20px;
1055
+ border-top: 1px solid #000;
1056
+ animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;
1057
+ }
1058
+
1059
+ @keyframes ProseMirror-cursor-blink {
1060
+
1061
+ to {
1062
+ visibility: hidden;
818
1063
  }
819
1064
  }
820
1065
 
1066
+ .ProseMirror-hideselection *::selection {
1067
+ background: transparent;
1068
+ }
1069
+
1070
+ .ProseMirror-hideselection *::-moz-selection {
1071
+ background: transparent;
1072
+ }
1073
+
1074
+ .ProseMirror-hideselection * {
1075
+ caret-color: transparent;
1076
+ }
1077
+
1078
+ .ProseMirror-focused .ProseMirror-gapcursor {
1079
+ display: block;
1080
+ }
1081
+
1082
+ .tippy-box[data-animation=fade][data-state=hidden] {
1083
+ opacity: 0
1084
+ }
1085
+
821
1086
  .zw-text--truncate {
822
1087
  white-space: nowrap;
823
1088
  overflow: hidden;
@@ -829,9 +1094,25 @@ $font-height--md: 1.72;
829
1094
  position: relative;
830
1095
  }
831
1096
 
1097
+ .zw-margin-bottom--xxs {
1098
+ margin-bottom: var(--zw-offset-xxs);
1099
+ }
1100
+
832
1101
  .zw-margin-bottom--xs {
833
1102
  margin-bottom: var(--zw-offset-xs);
834
1103
  }
835
1104
 
1105
+ .zw-margin-bottom--sm {
1106
+ margin-bottom: var(--zw-offset-sm);
1107
+ }
1108
+
1109
+ .zw-margin-bottom--md {
1110
+ margin-bottom: var(--zw-offset-md);
1111
+ }
1112
+
1113
+ .zw-margin-right--xs {
1114
+ margin-right: var(--zw-offset-xs);
1115
+ }
1116
+
836
1117
 
837
1118