@zipify/wysiwyg 1.0.0-dev.5 → 1.0.0-dev.52

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 (180) hide show
  1. package/.editorconfig +1 -1
  2. package/.eslintignore +1 -0
  3. package/.eslintrc.js +2 -2
  4. package/.github/dependabot.yaml +1 -0
  5. package/.lintstagedrc +2 -2
  6. package/.release-it.json +3 -1
  7. package/.stylelintignore +1 -0
  8. package/.stylelintrc +0 -4
  9. package/README.md +2 -2
  10. package/config/jest/setupTests.js +4 -0
  11. package/config/vite/example.config.js +25 -0
  12. package/config/vite/lib.config.js +30 -0
  13. package/config/{webpack → vite}/settings.js +0 -0
  14. package/dist/wysiwyg.css +1 -0
  15. package/dist/wysiwyg.mjs +18305 -0
  16. package/dist/wysiwyg.mjs.map +1 -0
  17. package/example/ExampleApp.vue +20 -1
  18. package/example/{example.html → index.html} +1 -0
  19. package/example/pageBlocks.js +31 -0
  20. package/example/presets.js +2 -2
  21. package/jest.config.js +3 -1
  22. package/lib/Wysiwyg.vue +50 -25
  23. package/lib/__tests__/utils/NodeFactory.js +13 -0
  24. package/lib/assets/icons/alignment-center.svg +3 -0
  25. package/lib/assets/icons/alignment-justify.svg +3 -0
  26. package/lib/assets/icons/alignment-left.svg +3 -0
  27. package/lib/assets/icons/alignment-right.svg +3 -0
  28. package/lib/assets/icons/arrow.svg +3 -0
  29. package/lib/assets/icons/background-color.svg +3 -0
  30. package/lib/assets/icons/case-style.svg +3 -0
  31. package/lib/assets/icons/font-color.svg +5 -0
  32. package/lib/assets/icons/italic.svg +3 -0
  33. package/lib/assets/icons/line-height.svg +3 -0
  34. package/lib/assets/icons/link.svg +3 -0
  35. package/lib/assets/icons/list-circle.svg +3 -0
  36. package/lib/assets/icons/list-decimal.svg +3 -0
  37. package/lib/assets/icons/list-disc.svg +3 -0
  38. package/lib/assets/icons/list-latin.svg +3 -0
  39. package/lib/assets/icons/list-roman.svg +3 -0
  40. package/lib/assets/icons/list-square.svg +3 -0
  41. package/lib/assets/icons/remove-format.svg +3 -0
  42. package/lib/assets/icons/reset-styles.svg +3 -0
  43. package/lib/assets/icons/strike-through.svg +3 -0
  44. package/lib/assets/icons/superscript.svg +3 -0
  45. package/lib/assets/icons/underline.svg +3 -0
  46. package/lib/assets/icons/unlink.svg +3 -0
  47. package/lib/components/base/Button.vue +21 -1
  48. package/lib/components/base/Checkbox.vue +89 -0
  49. package/lib/components/base/FieldLabel.vue +2 -1
  50. package/lib/components/base/Icon.vue +18 -10
  51. package/lib/components/base/Modal.vue +0 -1
  52. package/lib/components/base/NumberField.vue +1 -1
  53. package/lib/components/base/ScrollView.vue +0 -2
  54. package/lib/components/base/TextField.vue +106 -0
  55. package/lib/components/base/__tests__/Icon.test.js +6 -13
  56. package/lib/components/base/__tests__/Modal.test.js +6 -1
  57. package/lib/components/base/__tests__/TextField.test.js +57 -0
  58. package/lib/components/base/__tests__/__snapshots__/TextField.test.js.snap +9 -0
  59. package/lib/components/base/colorPicker/ColorPicker.vue +1 -1
  60. package/lib/components/base/colorPicker/composables/usePickerHotkeys.js +2 -1
  61. package/lib/components/base/composables/__tests__/useValidator.test.js +44 -0
  62. package/lib/components/base/composables/index.js +1 -0
  63. package/lib/components/base/composables/useValidator.js +23 -0
  64. package/lib/components/base/dropdown/Dropdown.vue +15 -3
  65. package/lib/components/base/dropdown/DropdownActivator.vue +19 -3
  66. package/lib/components/base/index.js +3 -1
  67. package/lib/components/toolbar/Toolbar.vue +49 -9
  68. package/lib/components/toolbar/ToolbarFull.vue +10 -2
  69. package/lib/components/toolbar/__tests__/Toolbar.test.js +6 -0
  70. package/lib/components/toolbar/controls/FontSizeControl.vue +7 -0
  71. package/lib/components/toolbar/controls/ListControl.vue +1 -5
  72. package/lib/components/toolbar/controls/StylePresetControl.vue +14 -1
  73. package/lib/components/toolbar/controls/UnderlineControl.vue +2 -2
  74. package/lib/components/toolbar/controls/__tests__/StylePresetControl.test.js +16 -0
  75. package/lib/components/toolbar/controls/__tests__/UnderlineControl.test.js +4 -0
  76. package/lib/components/toolbar/controls/index.js +1 -0
  77. package/lib/components/toolbar/controls/link/LinkControl.vue +155 -0
  78. package/lib/components/toolbar/controls/link/LinkControlApply.vue +35 -0
  79. package/lib/components/toolbar/controls/link/LinkControlHeader.vue +67 -0
  80. package/lib/components/toolbar/controls/link/__tests__/LinkControl.test.js +79 -0
  81. package/lib/components/toolbar/controls/link/__tests__/LinkControlHeader.test.js +42 -0
  82. package/lib/components/toolbar/controls/link/composables/__tests__/__snapshots__/useLink.test.js.snap +8 -0
  83. package/lib/components/toolbar/controls/link/composables/__tests__/useLink.test.js +114 -0
  84. package/lib/components/toolbar/controls/link/composables/index.js +1 -0
  85. package/lib/components/toolbar/controls/link/composables/useLink.js +61 -0
  86. package/lib/components/toolbar/controls/link/destination/LinkControlDestination.vue +103 -0
  87. package/lib/components/toolbar/controls/link/destination/LinkControlPageBlock.vue +54 -0
  88. package/lib/components/toolbar/controls/link/destination/LinkControlUrl.vue +52 -0
  89. package/lib/components/toolbar/controls/link/destination/__tests__/LinkControlPageBlock.test.js +36 -0
  90. package/lib/components/toolbar/controls/link/destination/__tests__/LinkControlUrl.test.js +46 -0
  91. package/lib/components/toolbar/controls/link/destination/__tests__/__snapshots__/LinkControlPageBlock.test.js.snap +9 -0
  92. package/lib/components/toolbar/controls/link/destination/__tests__/__snapshots__/LinkControlUrl.test.js.snap +17 -0
  93. package/lib/components/toolbar/controls/link/destination/index.js +1 -0
  94. package/lib/components/toolbar/controls/link/index.js +1 -0
  95. package/lib/composables/__tests__/useEditor.test.js +2 -2
  96. package/lib/composables/useEditor.js +5 -7
  97. package/lib/composables/useToolbar.js +23 -28
  98. package/lib/directives/__tests__/outClick.test.js +6 -0
  99. package/lib/directives/outClick.js +19 -6
  100. package/lib/enums/Alignments.js +10 -1
  101. package/lib/enums/LinkDestinations.js +4 -0
  102. package/lib/enums/LinkTargets.js +4 -0
  103. package/lib/enums/TextSettings.js +3 -1
  104. package/lib/enums/index.js +2 -0
  105. package/lib/extensions/Alignment.js +21 -7
  106. package/lib/extensions/BackgroundColor.js +14 -6
  107. package/lib/extensions/DeviceManager.js +0 -4
  108. package/lib/extensions/FontColor.js +14 -6
  109. package/lib/extensions/FontFamily.js +25 -8
  110. package/lib/extensions/FontSize.js +31 -12
  111. package/lib/extensions/FontStyle.js +23 -13
  112. package/lib/extensions/FontWeight.js +24 -14
  113. package/lib/extensions/LineHeight.js +31 -28
  114. package/lib/extensions/Link.js +89 -0
  115. package/lib/extensions/StylePreset.js +16 -15
  116. package/lib/extensions/TextDecoration.js +45 -12
  117. package/lib/extensions/__tests__/Alignment.test.js +11 -5
  118. package/lib/extensions/__tests__/BackgroundColor.test.js +11 -5
  119. package/lib/extensions/__tests__/CaseStyle.test.js +3 -5
  120. package/lib/extensions/__tests__/FontColor.test.js +11 -5
  121. package/lib/extensions/__tests__/FontFamily.test.js +32 -7
  122. package/lib/extensions/__tests__/FontSize.test.js +13 -6
  123. package/lib/extensions/__tests__/FontStyle.test.js +11 -5
  124. package/lib/extensions/__tests__/FontWeight.test.js +19 -5
  125. package/lib/extensions/__tests__/LineHeight.test.js +23 -11
  126. package/lib/extensions/__tests__/Link.test.js +102 -0
  127. package/lib/extensions/__tests__/StylePreset.test.js +70 -6
  128. package/lib/extensions/__tests__/TextDecoration.test.js +51 -5
  129. package/lib/extensions/__tests__/__snapshots__/Alignment.test.js.snap +26 -2
  130. package/lib/extensions/__tests__/__snapshots__/BackgroundColor.test.js.snap +30 -1
  131. package/lib/extensions/__tests__/__snapshots__/FontColor.test.js.snap +18 -1
  132. package/lib/extensions/__tests__/__snapshots__/FontFamily.test.js.snap +88 -1
  133. package/lib/extensions/__tests__/__snapshots__/FontSize.test.js.snap +33 -2
  134. package/lib/extensions/__tests__/__snapshots__/FontStyle.test.js.snap +25 -4
  135. package/lib/extensions/__tests__/__snapshots__/FontWeight.test.js.snap +47 -1
  136. package/lib/extensions/__tests__/__snapshots__/LineHeight.test.js.snap +26 -2
  137. package/lib/extensions/__tests__/__snapshots__/Link.test.js.snap +225 -0
  138. package/lib/extensions/__tests__/__snapshots__/StylePreset.test.js.snap +6 -2
  139. package/lib/extensions/__tests__/__snapshots__/TextDecoration.test.js.snap +183 -3
  140. package/lib/extensions/core/CopyPasteProcessor.js +10 -0
  141. package/lib/extensions/core/TextProcessor.js +10 -0
  142. package/lib/extensions/core/__tests__/NodeProcessor.test.js +3 -5
  143. package/lib/extensions/core/__tests__/SelectionProcessor.test.js +3 -5
  144. package/lib/extensions/core/__tests__/TextProcessor.test.js +138 -12
  145. package/lib/extensions/core/__tests__/__snapshots__/TextProcessor.test.js.snap +26 -0
  146. package/lib/extensions/core/index.js +11 -2
  147. package/lib/extensions/core/plugins/PastePlugin.js +57 -0
  148. package/lib/extensions/core/plugins/ProseMirrorPlugin.js +20 -0
  149. package/lib/extensions/core/plugins/index.js +1 -0
  150. package/lib/extensions/index.js +46 -34
  151. package/lib/extensions/list/__tests__/List.test.js +3 -5
  152. package/lib/extensions/list/__tests__/__snapshots__/List.test.js.snap +45 -15
  153. package/lib/injectionTokens.js +2 -1
  154. package/lib/services/ContentNormalizer.js +113 -29
  155. package/lib/services/ContextWidnow.js +23 -0
  156. package/lib/services/__tests__/ContentNormalizer.test.js +75 -7
  157. package/lib/services/index.js +1 -0
  158. package/lib/styles/content.css +102 -13
  159. package/lib/styles/helpers/offsets.css +16 -0
  160. package/lib/styles/variables.css +6 -0
  161. package/lib/utils/__tests__/__snapshots__/renderInlineSetting.test.js.snap +4 -4
  162. package/lib/utils/__tests__/convertAlignment.test.js +16 -0
  163. package/lib/utils/__tests__/convertFontSize.test.js +21 -0
  164. package/lib/utils/__tests__/convertLineHeight.test.js +21 -0
  165. package/lib/utils/convertAlignment.js +12 -0
  166. package/lib/utils/convertColor.js +1 -1
  167. package/lib/utils/convertFontSize.js +8 -0
  168. package/lib/utils/convertLineHeight.js +17 -0
  169. package/lib/utils/importIcon.js +13 -0
  170. package/lib/utils/index.js +4 -0
  171. package/lib/utils/renderInlineSetting.js +1 -1
  172. package/package.json +21 -25
  173. package/config/webpack/example.config.js +0 -86
  174. package/config/webpack/loaders/index.js +0 -6
  175. package/config/webpack/loaders/js-loader.js +0 -5
  176. package/config/webpack/loaders/style-loader.js +0 -7
  177. package/config/webpack/loaders/svg-loader.js +0 -4
  178. package/config/webpack/loaders/vue-loader.js +0 -4
  179. package/lib/assets/icons.svg +0 -69
  180. package/lib/composables/__tests__/useToolbar.test.js +0 -56
package/.editorconfig CHANGED
@@ -10,7 +10,7 @@ charset = utf-8
10
10
  trim_trailing_whitespace = true
11
11
  insert_final_newline = true
12
12
 
13
- [*.{js,html,vue,scss,css,svg}]
13
+ [*.{js,html,vue,css,svg}]
14
14
  indent_size = 4
15
15
  tab_width = 4
16
16
 
package/.eslintignore ADDED
@@ -0,0 +1 @@
1
+ dist/**
package/.eslintrc.js CHANGED
@@ -12,7 +12,7 @@ module.exports = {
12
12
  settings: {
13
13
  'import/resolver': {
14
14
  node: {
15
- extensions: ['.js', '.scss', '.css', '.vue', '.html']
15
+ extensions: ['.js', '.css', '.vue', '.html']
16
16
  }
17
17
  }
18
18
  },
@@ -113,7 +113,7 @@ module.exports = {
113
113
  'import/extensions': [
114
114
  'error',
115
115
  'never',
116
- { scss: 'always', html: 'always' }
116
+ { html: 'always' }
117
117
  ],
118
118
  'import/order': [
119
119
  'error',
@@ -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/.lintstagedrc CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "*.{vue,scss}": [
3
- "stylelint --config .stylelintrc"
2
+ "*.{vue,css}": [
3
+ "stylelint --allow-empty-input --config .stylelintrc"
4
4
  ],
5
5
  "*.{vue,js}": [
6
6
  "eslint --fix --fix-type layout --fix-type suggestion --config .eslintrc.js",
package/.release-it.json CHANGED
@@ -6,7 +6,9 @@
6
6
  "git": {
7
7
  "push": true,
8
8
  "commit": true,
9
- "tag": true
9
+ "tag": true,
10
+ "addUntrackedFiles": true,
11
+ "requireCleanWorkingDir": false
10
12
  },
11
13
  "github": {
12
14
  "release": true,
@@ -0,0 +1 @@
1
+ dist/**
package/.stylelintrc CHANGED
@@ -98,10 +98,6 @@
98
98
  "keyframe-block-no-duplicate-selectors": true
99
99
  },
100
100
  "overrides": [
101
- {
102
- "files": ["**/*.scss"],
103
- "customSyntax": "postcss-scss"
104
- },
105
101
  {
106
102
  "files": ["**/*.vue"],
107
103
  "customSyntax": "postcss-html"
package/README.md CHANGED
@@ -6,9 +6,9 @@ Zipify modification of TipTap text editor
6
6
  1. Install library & dependencies
7
7
  ```shell
8
8
  # if npm
9
- npm install @zipify/wysiwyg @vue/composition-api
9
+ npm install @zipify/wysiwyg
10
10
  # if yarn
11
- yarn add @zipify/wysiwyg @vue/composition-api
11
+ yarn add @zipify/wysiwyg
12
12
  ```
13
13
  2. Use editor
14
14
 
@@ -32,3 +32,7 @@ Range.prototype.getClientRects = () => ({
32
32
  length: 0,
33
33
  [Symbol.iterator]: jest.fn()
34
34
  });
35
+
36
+ jest.mock('../../lib/utils/importIcon', () => ({
37
+ importIcon: () => ''
38
+ }));
@@ -0,0 +1,25 @@
1
+ import { defineConfig } from 'vite';
2
+ import { createVuePlugin } from 'vite-plugin-vue2';
3
+ import { resolvePath } from './settings';
4
+
5
+ export default defineConfig({
6
+ root: resolvePath('./example'),
7
+ base: './',
8
+
9
+ server: {
10
+ port: 7777,
11
+ host: 'localhost'
12
+ },
13
+
14
+ clearScreen: false,
15
+
16
+ resolve: {
17
+ extensions: ['*', '.js', '.vue', '.json']
18
+ },
19
+
20
+ plugins: [createVuePlugin()],
21
+
22
+ define: {
23
+ ZW_UPDATED_AT: Date.now()
24
+ }
25
+ });
@@ -0,0 +1,30 @@
1
+ import { defineConfig } from 'vite';
2
+ import { createVuePlugin } from 'vite-plugin-vue2';
3
+ import { resolvePath } from './settings';
4
+
5
+ export default defineConfig({
6
+ build: {
7
+ sourcemap: true,
8
+
9
+ lib: {
10
+ entry: resolvePath('./lib/index.js'),
11
+ fileName: 'wysiwyg',
12
+ formats: ['es']
13
+ },
14
+
15
+ rollupOptions: {
16
+ external: ['@vue/composition-api', '@zipify/colorpicker'],
17
+ output: {
18
+ assetFileNames: (asset) => {
19
+ return asset.name === 'style.css' ? 'wysiwyg.css' : asset.name;
20
+ }
21
+ }
22
+ }
23
+ },
24
+
25
+ resolve: {
26
+ extensions: ['*', '.js', '.vue', '.json']
27
+ },
28
+
29
+ plugins: [createVuePlugin()]
30
+ });
File without changes
@@ -0,0 +1 @@
1
+ .zw-toolbar__divider[data-v-045b370b]{border-color:rgba(var(--zw-color-n90),.1);border-style:solid;border-width:0}.zw-toolbar__divider--vertical[data-v-045b370b]{border-left-width:1px}.zw-toolbar__divider--horizontal[data-v-045b370b]{border-bottom-width:1px}.zw-toolbar__row[data-v-6b424a6f]{display:flex;column-gap:var(--zw-offset-xs);padding:var(--zw-offset-xxs) var(--zw-offset-xs)}.zw-toolbar__group[data-v-25eee0ed]{display:flex;column-gap:var(--zw-offset-xxs)}.zw-button[data-v-3271aefb]{display:inline-flex;align-items:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;background-color:transparent;border:0;padding:0;white-space:nowrap;appearance:none;user-select:none;text-transform:none;letter-spacing:normal;color:inherit;transition:.1s opacity ease-out;will-change:opacity}.zw-button[data-v-3271aefb]::-moz-focus-inner{border:0!important}.zw-button[data-v-3271aefb]:hover,.zw-button[data-v-3271aefb]:focus{text-decoration:none;outline:none}.zw-button[data-v-3271aefb]:disabled{user-select:none;box-shadow:none;cursor:not-allowed;opacity:.35}.zw-button--toolbar[data-v-3271aefb]{border-radius:1px;min-height:28px;font-weight:var(--zw-font-weight-semibold);font-size:var(--zw-font-size-xs);line-height:var(--zw-line-height-xxs);color:rgb(var(--zw-color-n70));transition-property:background-color,color,opacity;will-change:background-color,color,opacity}.zw-button--primary[data-v-3271aefb]{background-color:rgb(var(--zw-color-green));color:rgb(var(--zw-color-white));padding:var(--zw-offset-xxs) var(--zw-offset-sm);line-height:var(--zw-line-height-md)}.zw-button--primary[data-v-3271aefb],.zw-button--secondary[data-v-3271aefb]{color:rgb(var(--zw-color-white));padding:var(--zw-offset-xxs) var(--zw-offset-sm);font-weight:600;font-size:var(--zw-font-size-xs)}.zw-button--primary[data-v-3271aefb]:not(:disabled):hover,.zw-button--secondary[data-v-3271aefb]:not(:disabled):hover{opacity:.9}.zw-button--toolbar[data-v-3271aefb]:not(.zw-button--icon){padding:var(--zw-offset-xxs) var(--zw-offset-xs)}.zw-button--toolbar[data-v-3271aefb]:not(:disabled):hover,.zw-button--toolbar[data-v-3271aefb]:not(:disabled):focus,.zw-button--toolbar.zw-button--active[data-v-3271aefb]:not(:disabled){color:rgb(var(--zw-color-white));background-color:rgb(var(--zw-color-n5))}.zw-button-toggle[data-v-a02f12aa]{display:flex;column-gap:var(--zw-offset-xxs)}.zw-icon[data-v-00c3ad92]{display:flex}.zw-icon--auto-color[data-v-00c3ad92]{--zw-icon-foreground: currentColor}.zw-scroll-view[data-v-656e8490] .simplebar-placeholder{display:none}.zw-scroll-view[data-v-656e8490] .simplebar-track{width:4px;background-color:rgb(var(--zw-color-n20));pointer-events:initial}.zw-scroll-view[data-v-656e8490] .simplebar-scrollbar{width:4px}.zw-scroll-view[data-v-656e8490] .simplebar-scrollbar:before{top:0;left:0;background-color:rgb(var(--zw-color-n5));cursor:pointer;height:100%;width:100%;opacity:1;border-radius:0}.zw-field-label[data-v-116650c2]{font-weight:var(--zw-font-weight-thin);font-size:var(--zw-font-size-xxs);line-height:var(--zw-line-height-xxs);color:rgb(var(--zw-color-n70));display:block}.zw-range[data-v-00b1b266]{width:100%;height:32px;background:none;cursor:pointer;flex-grow:1;-webkit-appearance:none;--zw-range-track-background-color: transparent;--zw-range-track-background-image: linear-gradient(to right, #B3B3B3 var(--zw-range-progress), #3B3B3B var(--zw-range-progress));--zw-range-thumb-background: rgb(var(--zw-color-white));--zw-range-thumb-box-shadow: -1px -1px 3px rgba(59, 59, 59, .35), 1px 1px 3px rgba(59, 59, 59, .35)}.zw-range[data-v-00b1b266]::-webkit-slider-runnable-track{width:100%;height:4px;border:0;border-radius:0;background-size:100%;background-color:var(--zw-range-track-background-color);background-image:var(--zw-range-track-background-image)}.zw-range[data-v-00b1b266]::-moz-range-track{width:100%;height:4px;border:0;border-radius:0;background-size:100%;background-color:var(--zw-range-track-background-color);background-image:var(--zw-range-track-background-image)}.zw-range[data-v-00b1b266]::-ms-track{width:100%;height:4px;border:0;border-radius:0;background-size:100%;background-color:var(--zw-range-track-background-color);background-image:var(--zw-range-track-background-image)}.zw-range[data-v-00b1b266]::-webkit-slider-thumb{height:13px;width:13px;border-radius:100%;margin-top:-5px;background:var(--zw-range-thumb-background);box-shadow:var(--zw-range-thumb-box-shadow);-webkit-appearance:none;transition:box-shadow .15s cubic-bezier(0,0,.2,1)}.zw-range[data-v-00b1b266]::-moz-range-thumb{height:13px;width:13px;border-radius:100%;margin-top:-5px;background:var(--zw-range-thumb-background);box-shadow:var(--zw-range-thumb-box-shadow);-webkit-appearance:none;transition:box-shadow .15s cubic-bezier(0,0,.2,1)}.zw-range[data-v-00b1b266]::-ms-thumb{height:13px;width:13px;border-radius:100%;margin-top:-5px;background:var(--zw-range-thumb-background);box-shadow:var(--zw-range-thumb-box-shadow);-webkit-appearance:none;transition:box-shadow .15s cubic-bezier(0,0,.2,1)}.zw-range[data-v-00b1b266]::-moz-focus-outer,.zw-range[data-v-00b1b266]::-moz-range-thumb{border:0}.zw-range[data-v-00b1b266]::-ms-thumb{margin-top:-2px}.zw-range[data-v-00b1b266]:focus{outline:none}.zw-range[data-v-00b1b266]:disabled{cursor:not-allowed;opacity:.6;--zw-range-track-background-color: #3B3B3B;--zw-range-track-background-image: linear-gradient(to right, #B3B3B3 var(--zw-range-progress), #3B3B3B var(--zw-range-progress))}.zw-range[data-v-00b1b266]:disabled{--zw-range-thumb-background: #B3B3B3;--zw-range-thumb-box-shadow: 0 0 6px rgba(0, 0, 0, .35)}.zw-range[data-v-00b1b266]:not(:disabled):hover{--zw-range-thumb-box-shadow: 0 0 0 8px rgba(240, 240, 240, .15)}.zw-range[data-v-00b1b266]:not(:disabled):active{--zw-range-thumb-box-shadow: 0 0 0 12px rgba(240, 240, 240, .15)}.zw-number-field[data-v-c36402da]{--border-color: rgb(var(--zw-color-n60));--text-color: rgb(var(--zw-color-n85));--buttons-color: rgb(var(--zw-color-n70));padding:2px 4px;border:solid 1px var(--border-color);align-items:stretch;display:flex}.zw-number-field[data-v-c36402da]:hover{--border-color: rgb(var(--zw-color-n80));--text-color: rgb(var(--zw-color-n85))}.zw-number-field[data-v-c36402da]:focus,.zw-number-field[data-v-c36402da]:focus-within{--border-color: rgb(var(--zw-color-white));--text-color: rgb(var(--zw-color-white))}.zw-number-field__input[data-v-c36402da]{color:var(--text-color);background-color:rgb(var(--zw-color-n15));border:0;display:block;width:100%;outline:none!important;line-height:var(--zw-line-height-md);font-size:var(--zw-font-size-xs);-moz-appearance:textfield}.zw-number-field__buttons[data-v-c36402da]{display:none;flex-direction:column;height:100%}.zw-number-field:hover .zw-number-field__buttons[data-v-c36402da],.zw-number-field:focus .zw-number-field__buttons[data-v-c36402da],.zw-number-field:focus-within .zw-number-field__buttons[data-v-c36402da]{display:flex}.zw-number-field__input[data-v-c36402da]::placeholder{color:var(--text-color)}.zw-number-field__input[data-v-c36402da]::-webkit-outer-spin-button,.zw-number-field__input[data-v-c36402da]::-webkit-inner-spin-button{color:var(--text-color);-webkit-appearance:none}.zw-number-field__controls[data-v-c36402da]{min-width:var(--zw-offset-sm)}.zw-number-field--disabled[data-v-c36402da]{opacity:.5}.zw-number-field--disabled[data-v-c36402da],.zw-number-field--disabled .zw-number-field__input[data-v-c36402da]{cursor:not-allowed}.zw-number-field__increment-button[data-v-c36402da],.zw-number-field__decrement-button[data-v-c36402da]{width:100%;height:50%;display:flex;align-items:center;justify-content:center}.zw-number-field__increment-button[data-v-c36402da]:after,.zw-number-field__decrement-button[data-v-c36402da]:after{content:"";border-left:3px solid transparent;border-right:3px solid transparent}.zw-number-field__increment-button[data-v-c36402da]:after{border-bottom:3px solid var(--buttons-color)}.zw-number-field__decrement-button[data-v-c36402da]:after{border-top:3px solid var(--buttons-color)}.zw-number-field__increment-button[data-v-c36402da]:hover,.zw-number-field__decrement-button[data-v-c36402da]:hover{background-color:rgb(var(--zw-color-n20));--buttons-color: rgb(var(--zw-color-white))}.zw-number-field__units[data-v-c36402da]{color:rgb(var(--zw-color-n70));font-size:var(--zw-font-size-xs);line-height:var(--zw-line-height-md);text-align:center;display:inline-block;width:100%}.zw-number-field:hover .zw-number-field__units[data-v-c36402da],.zw-number-field:focus .zw-number-field__units[data-v-c36402da]{display:none}.zw-modal[data-v-176ee9f5]{border-radius:2px;box-shadow:0 0 4px rgba(var(--zw-color-black),.3);background-color:rgb(var(--zw-color-n15));max-height:var(--zw-modal-max-height);max-width:var(--zw-modal-max-width);z-index:1000;will-change:transform}.zw-modal--enter-active[data-v-176ee9f5]{transition:opacity .15s ease-out}.zw-modal--enter[data-v-176ee9f5],.zw-modal--leave-to[data-v-176ee9f5]{opacity:0}.zw-modal--leave-active[data-v-176ee9f5]{transition:opacity .1s ease-in}.zw-modal[data-v-176ee9f5] .simplebar-offset,.zw-modal[data-v-176ee9f5] .simplebar-mask{position:initial}.zw-modal[data-v-176ee9f5] .simplebar-content{max-height:var(--zw-modal-max-height);padding:0!important}.zw-modal[data-v-176ee9f5] .simplebar-content-wrapper{overscroll-behavior:contain}.zw-field[data-v-5201153a]{display:flex;flex-direction:column}.zw-field__input[data-v-5201153a]{--border-color: rgb(var(--zw-color-n60));--text-color: rgb(var(--zw-color-n85));border:1px solid var(--border-color);background-color:transparent;color:var(--text-color);font-size:var(--zw-font-size-xxs);outline:none;padding:6px;line-height:var(--zw-line-height-xxs)}.zw-field__input[data-v-5201153a]:hover{--border-color: rgb(var(--zw-color-n80));--text-color: rgb(var(--zw-color-n85))}.zw-field__input[data-v-5201153a]:focus,.zw-field__input[data-v-5201153a]:focus-within{--border-color: rgb(var(--zw-color-white));--text-color: rgb(var(--zw-color-white))}.zw-field__label[data-v-5201153a]{display:inline-block;font-size:var(--zw-font-size-xxs);padding-bottom:var(--zw-offset-xxs);line-height:var(--zw-line-height-xxs)}.zw-field__label--error[data-v-5201153a]{font-size:var(--zw-font-size-xxs);margin:var(--zw-offset-xxs) 0 0;color:rgb(var(--zw-color-red))}.zw-checkbox[data-v-2de7f5c1]{display:inline-flex;align-items:center;position:relative;cursor:pointer;padding:var(--zw-offset-xxs) var(--zw-offset-xxs) var(--zw-offset-xxs) 0}.zw-checkbox__field+.zw-checkbox__indicator[data-v-2de7f5c1]{color:var(--zw-color-n200);box-shadow:inset 0 0 0 2px currentColor}.zw-checkbox:hover .zw-checkbox__indicator[data-v-2de7f5c1]{box-shadow:inset 0 0 0 2px rgb(var(--zw-color-green))}.zw-checkbox__field:checked+.zw-checkbox__indicator[data-v-2de7f5c1]{color:rgb(var(--zw-color-green))}.zw-checkbox .zw-checkbox__field:checked+.zw-checkbox__indicator[data-v-2de7f5c1]{background-color:rgb(var(--zw-color-green))}.zw-checkbox .zw-checkbox__indicator[data-v-2de7f5c1]:after{content:"";display:block;height:16px;transform:scale(.6);transition:transform .2s ease-out;width:16px;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNiAyNiIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiPgogIDxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik0uMyAxNGMtLjItLjItLjMtLjUtLjMtLjdzLjEtLjUuMy0uN2wxLjQtMS40Yy40LS40IDEtLjQgMS40IDBsLjEuMSA1LjUgNS45Yy4yLjIuNS4yLjcgMEwyMi44IDMuM2guMWMuNC0uNCAxLS40IDEuNCAwbDEuNCAxLjRjLjQuNC40IDEgMCAxLjRsLTE2IDE2LjZjLS4yLjItLjQuMy0uNy4zLS4zIDAtLjUtLjEtLjctLjNMLjUgMTQuMy4zIDE0eiIvPgo8L3N2Zz4K);background-repeat:no-repeat;background-size:16px;background-position:center center}.zw-checkbox__field:not(:checked)+.zw-checkbox__indicator[data-v-2de7f5c1]:after{transform:scale(0)}.zw-checkbox__field[data-v-2de7f5c1]{position:absolute;opacity:0;height:0;width:0}.zw-checkbox__label[data-v-2de7f5c1]{font-size:var(--zw-font-size-xs)}.zw-dropdown__activator[data-v-86a4a284]{width:100%}.zw-dropdown__activator-title[data-v-86a4a284]{margin-right:var(--zw-offset-xs)}.zw-dropdown__activator-arrow[data-v-86a4a284]{margin-left:auto}.zw-dropdown__activator--active .zw-dropdown__activator-arrow[data-v-86a4a284]{transform:rotateX(180deg)}.zw-dropdown__activator--gray[data-v-86a4a284]{background-color:rgb(var(--zw-color-n20));font-size:var(--zw-font-size-xxs);color:rgb(var(--zw-color-white))}.zw-dropdown__option[data-v-763d3764]{width:100%;display:block;color:rgb(var(--zw-color-white));padding-top:var(--zw-offset-xxs);padding-right:var(--zw-offset-sm);padding-left:calc(var(--zw-offset-sm) + var(--zw-option-offset, 0px));padding-bottom:var(--zw-offset-xxs);text-align:left;transition:.1s background-color ease-out;will-change:background-color}.zw-dropdown__option[data-v-763d3764]:hover,.zw-dropdown__option[data-v-763d3764]:focus,.zw-dropdown__option--active[data-v-763d3764]{background-color:rgb(var(--zw-color-n30))}.zw-dropdown__group[data-v-82d71c28]{padding-top:var(--zw-offset-xs);padding-bottom:var(--zw-offset-xs);--zw-option-offset: var(--zw-offset-xs)}.zw-dropdown__group-title[data-v-82d71c28]{color:var(--zw-color-n70);font-weight:var(--zw-font-weight-semibold);padding-left:var(--zw-offset-sm);padding-right:var(--zw-offset-sm);margin-top:0;margin-bottom:var(--zw-offset-xs)}.zw-dropdown__divider[data-v-1f5efb01]{padding:0 var(--zw-offset-sm)}.zw-dropdown__divider[data-v-1f5efb01]:before{content:"";display:block;border-bottom:1px solid rgb(var(--zw-color-n30))}.zw-dropdown__menu{padding-top:var(--zw-offset-xs);padding-bottom:var(--zw-offset-xs)}.zw-dropdown[data-v-75f6270e]{position:relative;font-size:var(--zw-font-size-xs);line-height:var(--zw-line-height-xxs)}.zw-style-preset-control[data-v-3c79694d]{display:flex;align-items:center}.zw-style-preset-control__dropdown[data-v-3c79694d]{width:96px}.zw-style-preset-control__reset[data-v-3c79694d]{color:rgb(var(--zw-color-n70))}.zw-style-preset-control__reset[data-v-3c79694d]:not(:disabled):hover,.zw-style-preset-control__reset[data-v-3c79694d]:not(:disabled):focus,.zw-style-preset-control__reset[data-v-3c79694d]:not(:disabled):focus-within{color:rgb(var(--zw-color-white))}.zw-font-family-control[data-v-7424744b]{width:96px}.zw-font-family-control__option[data-v-7424744b]{font-weight:400;font-family:var(--zw-font-family-option);width:150px}.zw-font-size-control[data-v-3494faec]{width:64px}.zw-alignment-control__modal[data-v-61ce8243]{padding:var(--zw-offset-xxs)}.zw-alignment-control__toggle[data-v-61ce8243]{flex-direction:column}.zw-line-height-control__modal[data-v-4a0a2202]{padding:var(--zw-offset-sm)}.zw-line-height-control__row[data-v-4a0a2202]{display:flex;align-items:center}.zw-line-height-control__range[data-v-4a0a2202]{width:156px}.zw-line-height-control__field[data-v-4a0a2202]{width:52px;margin-left:var(--zw-offset-sm)}.zw-list-control__option[data-v-76bd3ee8]{padding:0 var(--zw-offset-xs);display:flex}.zw-link-modal-header[data-v-f7266b5e]{display:flex;align-items:center;justify-content:space-between;padding:var(--zw-offset-sm);border-bottom:2px solid rgb(var(--zw-color-n5))}.zw-link-modal-header__title[data-v-f7266b5e]{text-transform:uppercase;font-weight:var(--zw-font-weight-semibold);font-size:var(--zw-font-size-xxs);color:rgb(var(--zw-color-white))}.zw-link-modal-header__unlink-icon[data-v-f7266b5e]{margin-right:var(--zw-offset-xxs)}.zw-link-modal-header__unlink-button[data-v-f7266b5e]{color:rgb(var(--zw-color-n80));font-size:var(--zw-font-size-xxs);transition:.1s opacity ease-out;will-change:opacity}.zw-link-modal-header__unlink-button[data-v-f7266b5e]:disabled{opacity:.35}.zw-link-modal-header__unlink-button[data-v-f7266b5e]:hover{color:rgb(var(--zw-color-white))}.zw-link-modal__apply[data-v-2ad47228]{display:flex;justify-content:flex-end}.zw-link-modal[data-v-0418dcf7]{width:266px}.zw-link-modal__body[data-v-0418dcf7]{padding:var(--zw-offset-sm)}[data-v-0418dcf7] .zw-link-modal-dropdown__option{width:234px}.zw-toolbar[data-v-863e2d50]{border-radius:2px;background-color:rgb(var(--zw-color-n15));color:rgb(var(--zw-color-n70));z-index:999999}.zw-toolbar[data-v-863e2d50]:before,.zw-toolbar[data-v-863e2d50]:after{content:"";display:block;width:100%;height:calc(var(--zw-toolbar-offset-y) + 4px);position:absolute;--zw-toolbar-safe-zone: calc(-1 * var(--zw-toolbar-offset-y))}.zw-toolbar[data-v-863e2d50]:before{top:var(--zw-toolbar-safe-zone)}.zw-toolbar[data-v-863e2d50]:after{bottom:var(--zw-toolbar-safe-zone)}.zw-toolbar--enter-active[data-v-863e2d50],.zw-toolbar--leave-active[data-v-863e2d50]{transition:opacity .15s ease-out}.zw-toolbar--leave-active[data-v-863e2d50]{transition:opacity 0s ease-in}.zw-toolbar--enter[data-v-863e2d50],.zw-toolbar--leave-to[data-v-863e2d50]{opacity:0}.zw-wysiwyg{--zw-color-n5: 13, 13, 13;--zw-color-n15: 38, 38, 38;--zw-color-n20: 59, 59, 59;--zw-color-n30: 77, 77, 77;--zw-color-n60: 153, 153, 153;--zw-color-n70: 179, 179, 179;--zw-color-n80: 196, 196, 196;--zw-color-n85: 217, 217, 217;--zw-color-n90: 230, 230, 230;--zw-color-n200: 194, 200, 209;--zw-color-black: 0, 0, 0;--zw-color-white: 255, 255, 255;--zw-color-green: 59, 180, 74;--zw-color-red: 234, 58, 58;--zw-offset-xxs: 4px;--zw-offset-xs: 8px;--zw-offset-xsm: 12px;--zw-offset-sm: 16px;--zw-offset-md: 24px;--zw-font-weight-thin: 400;--zw-font-weight-semibold: 500;--zw-font-size-xxs: 12px;--zw-font-size-xs: 14px;--zw-line-height-xxs: 1.21;--zw-line-height-md: 1.72}.zw-wysiwyg [contenteditable]{outline:none}.zw-wysiwyg__placeholder:first-child:last-child:before{content:attr(data-placeholder);color:rgb(var(--zw-color-n70));float:left;height:0;pointer-events:none}.zw-style.zw-style.zw-style{font-weight:var(--zw-font-weight, var(--zw-preset-font-weight));font-family:var(--zw-font-family, var(--zw-preset-font-family));color:var(--zw-font-color, var(--zw-preset-color));font-style:var(--zw-font-style, var(--zw-preset-font-style));text-decoration:var(--zw-text-decoration, var(--zw-preset-text-decoration));background-color:var(--zw-background-color, var(--zw-preset-background-color))}@media (min-width: 1200px){.zw-style.zw-style.zw-style{font-size:var(--zw-font-size-desktop, var(--zw-preset-desktop-font-size));text-align:var(--zw-text-align-desktop, var(--zw-preset-desktop-text-align));line-height:var(--zw-line-height-desktop, var(--zw-preset-desktop-line-height))}}@media (min-width: 769px) and (max-width: 1199.98px){.zw-style.zw-style.zw-style{font-size:var(--zw-font-size-tablet, var(--zw-preset-tablet-font-size));text-align:var(--zw-text-align-tablet, var(--zw-preset-tablet-text-align));line-height:var(--zw-line-height-tablet, var(--zw-preset-tablet-line-height))}}@media (max-width: 768.98px){.zw-style.zw-style.zw-style{font-size:var(--zw-font-size-mobile, var(--zw-preset-mobile-font-size));text-align:var(--zw-text-align-mobile, var(--zw-preset-mobile-text-align));line-height:var(--zw-line-height-mobile, var(--zw-preset-mobile-line-height))}}.ProseMirror{position:relative}.ProseMirror{word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;font-feature-settings:"liga" 0}.ProseMirror [contenteditable=false]{white-space:normal}.ProseMirror [contenteditable=false] [contenteditable=true],.ProseMirror pre{white-space:pre-wrap}img.ProseMirror-separator{display:inline!important;border:none!important;margin:0!important;width:1px!important;height:1px!important}.ProseMirror-gapcursor{display:none;pointer-events:none;position:absolute;margin:0}.ProseMirror-gapcursor:after{content:"";display:block;position:absolute;top:-2px;width:20px;border-top:1px solid #000;animation:ProseMirror-cursor-blink 1.1s steps(2,start) infinite}@keyframes ProseMirror-cursor-blink{to{visibility:hidden}}.ProseMirror-hideselection *::selection{background:transparent}.ProseMirror-hideselection *::-moz-selection{background:transparent}.ProseMirror-hideselection *{caret-color:transparent}.ProseMirror-focused .ProseMirror-gapcursor{display:block}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}.zw-text--truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.zw-position--relative{position:relative}.zw-margin-bottom--xxs{margin-bottom:var(--zw-offset-xxs)}.zw-margin-bottom--xs{margin-bottom:var(--zw-offset-xs)}.zw-margin-bottom--sm{margin-bottom:var(--zw-offset-sm)}.zw-margin-bottom--md{margin-bottom:var(--zw-offset-md)}.zw-margin-right--xs{margin-right:var(--zw-offset-xs)}