@zipify/wysiwyg 4.9.1 → 4.10.0-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.
Files changed (57) hide show
  1. package/.github/actions/lint-js/action.yaml +8 -3
  2. package/.lintstagedrc.mjs +32 -0
  3. package/.oxlintrc.json +185 -0
  4. package/dist/cli.js +21 -21
  5. package/dist/node.js +18 -18
  6. package/dist/types/Wysiwyg.vue.d.ts +38 -176
  7. package/dist/types/components/base/Button.vue.d.ts +2 -2
  8. package/dist/types/components/base/Modal.vue.d.ts +2 -2
  9. package/dist/types/components/base/ModalFloating.vue.d.ts +2 -2
  10. package/dist/types/components/base/NumberField.vue.d.ts +2 -2
  11. package/dist/types/entryLib.d.ts +2 -0
  12. package/dist/types/enums/Devices.d.ts +15 -6
  13. package/dist/types/enums/index.d.ts +9 -9
  14. package/dist/types/models/PageBlock.d.ts +4 -0
  15. package/dist/types/models/StylePreset.d.ts +27 -0
  16. package/dist/types/models/index.d.ts +3 -2
  17. package/dist/types/types/StylePresetVariableFactory.d.ts +8 -0
  18. package/dist/types/types/index.d.ts +1 -0
  19. package/dist/wysiwyg.css +44 -76
  20. package/dist/wysiwyg.mjs +64 -113
  21. package/eslint.config.mjs +6 -0
  22. package/example/ExampleApp.vue +1 -1
  23. package/example/presets.ts +250 -0
  24. package/lib/Wysiwyg.vue +63 -118
  25. package/lib/cli/commands/Command.js +1 -2
  26. package/lib/components/base/Checkbox.vue +3 -0
  27. package/lib/components/base/Modal.vue +1 -1
  28. package/lib/components/toolbar/Toolbar.vue +4 -4
  29. package/lib/components/toolbar/controls/__tests__/FontColorControl.test.js +2 -2
  30. package/lib/components/toolbar/controls/link/LinkControlHeader.vue +7 -2
  31. package/lib/components/toolbar/controls/link/__tests__/LinkControl.test.js +5 -5
  32. package/lib/components/toolbar/controls/link/__tests__/LinkControlHeader.test.js +4 -4
  33. package/lib/entryLib.ts +2 -0
  34. package/lib/enums/Devices.ts +17 -0
  35. package/lib/enums/index.ts +9 -0
  36. package/lib/extensions/FontStyle.js +3 -3
  37. package/lib/extensions/__tests__/StylePreset.test.js +5 -5
  38. package/lib/extensions/list/List.js +3 -3
  39. package/lib/extensions/list/__tests__/List.test.js +4 -4
  40. package/lib/models/PageBlock.ts +4 -0
  41. package/lib/models/StylePreset.ts +30 -0
  42. package/lib/models/index.ts +3 -2
  43. package/lib/services/JsonSerializer.js +0 -1
  44. package/lib/services/Storage.js +0 -1
  45. package/lib/services/__tests__/Storage.test.js +9 -4
  46. package/lib/services/normalizer/__tests__/HtmlNormalizer.test.js +25 -25
  47. package/lib/styles/variables.css +2 -33
  48. package/lib/types/StylePresetVariableFactory.ts +10 -0
  49. package/lib/types/index.ts +1 -0
  50. package/package.json +3 -13
  51. package/tsconfig.lint.json +7 -0
  52. package/.eslintignore +0 -2
  53. package/.eslintrc.js +0 -95
  54. package/.lintstagedrc +0 -12
  55. package/example/presets.js +0 -247
  56. package/lib/enums/Devices.js +0 -15
  57. package/lib/enums/index.js +0 -9
@@ -1,187 +1,49 @@
1
1
  import type { Content, JSONContent } from '@tiptap/core';
2
- import type { PropType } from 'vue';
3
- import { type IFontJson } from './models';
4
- declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
5
- presets: {
6
- type: ArrayConstructor;
7
- required: true;
8
- };
9
- defaultPresetId: {
10
- type: (NumberConstructor | StringConstructor)[];
11
- required: true;
12
- };
13
- linkPresetId: {
14
- type: (NumberConstructor | StringConstructor)[];
15
- required: true;
16
- };
17
- basePresetClass: {
18
- type: StringConstructor;
19
- required: true;
20
- };
21
- makePresetVariable: {
22
- type: FunctionConstructor;
23
- required: true;
24
- };
25
- fonts: {
26
- type: PropType<IFontJson[]>;
27
- required: true;
28
- };
29
- active: {
30
- type: BooleanConstructor;
31
- required: true;
32
- };
33
- device: {
34
- type: StringConstructor;
35
- required: false;
36
- default: "desktop";
37
- };
38
- favoriteColors: {
39
- type: ArrayConstructor;
40
- required: false;
41
- default: () => never[];
42
- };
43
- toolbarOffsets: {
44
- type: ArrayConstructor;
45
- required: false;
46
- default: () => number[];
47
- };
48
- baseListClass: {
49
- type: StringConstructor;
50
- required: false;
51
- default: string;
52
- };
53
- pageBlocks: {
54
- type: ArrayConstructor;
55
- required: true;
56
- };
57
- readonly: {
58
- type: BooleanConstructor;
59
- required: false;
60
- default: boolean;
61
- };
62
- popupMode: {
63
- type: BooleanConstructor;
64
- required: false;
65
- default: boolean;
66
- };
67
- window: {
68
- required: false;
69
- default: () => Window & typeof globalThis;
70
- };
71
- aiComponent: {
72
- type: ObjectConstructor;
73
- required: false;
74
- default: null;
75
- };
76
- defaultFont: {
77
- type: PropType<IFontJson>;
78
- required: false;
79
- default: null;
80
- };
81
- modelValue: {
82
- type: PropType<Content>;
83
- required: true;
84
- };
85
- }>, {
2
+ import { type Component } from 'vue';
3
+ import { Device } from './enums';
4
+ import { type IFontJson, type IPageBlock, type IStylePreset } from './models';
5
+ import type { StylePresetVariableFactory } from '@/types';
6
+ interface IProps {
7
+ presets: IStylePreset[];
8
+ defaultPresetId: number | string;
9
+ linkPresetId: number | string;
10
+ basePresetClass: string;
11
+ makePresetVariable: StylePresetVariableFactory;
12
+ fonts: IFontJson[];
13
+ active: boolean;
14
+ pageBlocks: IPageBlock[];
15
+ device?: Device;
16
+ toolbarOffsets?: [crossAxis: number, mainAxis: number];
17
+ baseListClass?: string;
18
+ readonly?: boolean;
19
+ popupMode?: boolean;
20
+ window?: Window;
21
+ aiComponent?: Component | null;
22
+ defaultFont?: IFontJson | null;
23
+ }
24
+ type __VLS_Props = IProps;
25
+ type __VLS_PublicProps = {
26
+ modelValue: Content;
27
+ 'favoriteColors'?: string[];
28
+ } & __VLS_Props;
29
+ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
86
30
  getContentCustomization: () => any;
87
31
  getContent: () => JSONContent;
88
32
  editor: import("@tiptap/vue-3").Editor;
89
33
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
90
- "update-favorite-colors": (...args: any[]) => void;
91
- "update:modelValue": (value: Content) => void;
92
- }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
93
- presets: {
94
- type: ArrayConstructor;
95
- required: true;
96
- };
97
- defaultPresetId: {
98
- type: (NumberConstructor | StringConstructor)[];
99
- required: true;
100
- };
101
- linkPresetId: {
102
- type: (NumberConstructor | StringConstructor)[];
103
- required: true;
104
- };
105
- basePresetClass: {
106
- type: StringConstructor;
107
- required: true;
108
- };
109
- makePresetVariable: {
110
- type: FunctionConstructor;
111
- required: true;
112
- };
113
- fonts: {
114
- type: PropType<IFontJson[]>;
115
- required: true;
116
- };
117
- active: {
118
- type: BooleanConstructor;
119
- required: true;
120
- };
121
- device: {
122
- type: StringConstructor;
123
- required: false;
124
- default: "desktop";
125
- };
126
- favoriteColors: {
127
- type: ArrayConstructor;
128
- required: false;
129
- default: () => never[];
130
- };
131
- toolbarOffsets: {
132
- type: ArrayConstructor;
133
- required: false;
134
- default: () => number[];
135
- };
136
- baseListClass: {
137
- type: StringConstructor;
138
- required: false;
139
- default: string;
140
- };
141
- pageBlocks: {
142
- type: ArrayConstructor;
143
- required: true;
144
- };
145
- readonly: {
146
- type: BooleanConstructor;
147
- required: false;
148
- default: boolean;
149
- };
150
- popupMode: {
151
- type: BooleanConstructor;
152
- required: false;
153
- default: boolean;
154
- };
155
- window: {
156
- required: false;
157
- default: () => Window & typeof globalThis;
158
- };
159
- aiComponent: {
160
- type: ObjectConstructor;
161
- required: false;
162
- default: null;
163
- };
164
- defaultFont: {
165
- type: PropType<IFontJson>;
166
- required: false;
167
- default: null;
168
- };
169
- modelValue: {
170
- type: PropType<Content>;
171
- required: true;
172
- };
173
- }>> & Readonly<{
174
- "onUpdate-favorite-colors"?: ((...args: any[]) => any) | undefined;
34
+ "update:modelValue": (value: Content) => any;
35
+ "update:favoriteColors": (value: string[]) => any;
36
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
175
37
  "onUpdate:modelValue"?: ((value: Content) => any) | undefined;
38
+ "onUpdate:favoriteColors"?: ((value: string[]) => any) | undefined;
176
39
  }>, {
177
- defaultFont: IFontJson;
178
- device: string;
179
- favoriteColors: unknown[];
180
- toolbarOffsets: unknown[];
40
+ defaultFont: IFontJson | null;
41
+ device: Device;
42
+ toolbarOffsets: [crossAxis: number, mainAxis: number];
181
43
  baseListClass: string;
182
44
  readonly: boolean;
183
45
  popupMode: boolean;
184
- window: Window & typeof globalThis;
185
- aiComponent: Record<string, any>;
186
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, HTMLDivElement>;
46
+ window: Window;
47
+ aiComponent: Component | null;
48
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, HTMLDivElement>;
187
49
  export default _default;
@@ -6,13 +6,13 @@ type __VLS_WithTemplateSlots<T, S> = T & (new () => {
6
6
  declare const __VLS_component: import("vue").DefineComponent<{}, {
7
7
  $emit: (event: "click", ...args: any[]) => void;
8
8
  active: boolean;
9
- skin: string;
10
9
  disabled: boolean;
10
+ skin: string;
11
11
  icon: boolean;
12
12
  $props: {
13
13
  readonly active?: boolean | undefined;
14
- readonly skin?: string | undefined;
15
14
  readonly disabled?: boolean | undefined;
15
+ readonly skin?: string | undefined;
16
16
  readonly icon?: boolean | undefined;
17
17
  };
18
18
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, HTMLButtonElement>;
@@ -5,6 +5,7 @@ type __VLS_WithTemplateSlots<T, S> = T & (new () => {
5
5
  });
6
6
  declare const __VLS_component: import("vue").DefineComponent<{}, {
7
7
  referenceRef: Record<string, any>;
8
+ offsets: Function | unknown[];
8
9
  toggler: Record<string, any>;
9
10
  maxHeight: string | number;
10
11
  maxWidth: string | number;
@@ -12,9 +13,9 @@ declare const __VLS_component: import("vue").DefineComponent<{}, {
12
13
  placement: string;
13
14
  placementStrategy: string;
14
15
  placementFlip: boolean | unknown[];
15
- offsets: Function | unknown[];
16
16
  $props: {
17
17
  readonly referenceRef?: Record<string, any> | undefined;
18
+ readonly offsets?: Function | unknown[] | undefined;
18
19
  readonly toggler?: Record<string, any> | undefined;
19
20
  readonly maxHeight?: string | number | undefined;
20
21
  readonly maxWidth?: string | number | undefined;
@@ -22,7 +23,6 @@ declare const __VLS_component: import("vue").DefineComponent<{}, {
22
23
  readonly placement?: string | undefined;
23
24
  readonly placementStrategy?: string | undefined;
24
25
  readonly placementFlip?: boolean | unknown[] | undefined;
25
- readonly offsets?: Function | unknown[] | undefined;
26
26
  };
27
27
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
28
28
  type __VLS_TemplateResult = {
@@ -5,16 +5,16 @@ type __VLS_WithTemplateSlots<T, S> = T & (new () => {
5
5
  });
6
6
  declare const __VLS_component: import("vue").DefineComponent<{}, {
7
7
  referenceRef: Record<string, any>;
8
+ offsets: Function | unknown[];
8
9
  placement: string;
9
10
  placementStrategy: string;
10
11
  placementFlip: boolean | unknown[];
11
- offsets: Function | unknown[];
12
12
  $props: {
13
13
  readonly referenceRef?: Record<string, any> | undefined;
14
+ readonly offsets?: Function | unknown[] | undefined;
14
15
  readonly placement?: string | undefined;
15
16
  readonly placementStrategy?: string | undefined;
16
17
  readonly placementFlip?: boolean | unknown[] | undefined;
17
- readonly offsets?: Function | unknown[] | undefined;
18
18
  };
19
19
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, HTMLDivElement>;
20
20
  type __VLS_TemplateResult = {
@@ -4,8 +4,8 @@ declare const _default: import("vue").DefineComponent<{}, {
4
4
  max: string | number;
5
5
  min: string | number;
6
6
  step: string | number;
7
- digits: string | number;
8
7
  disabled: boolean;
8
+ digits: string | number;
9
9
  fieldId: string;
10
10
  units: string;
11
11
  $props: {
@@ -13,8 +13,8 @@ declare const _default: import("vue").DefineComponent<{}, {
13
13
  readonly max?: string | number | undefined;
14
14
  readonly min?: string | number | undefined;
15
15
  readonly step?: string | number | undefined;
16
- readonly digits?: string | number | undefined;
17
16
  readonly disabled?: boolean | undefined;
17
+ readonly digits?: string | number | undefined;
18
18
  readonly fieldId?: string | undefined;
19
19
  readonly units?: string | undefined;
20
20
  };
@@ -4,3 +4,5 @@ export { NodeTypes, TextSettings, Alignments } from './enums';
4
4
  export { isWysiwygContent } from './utils';
5
5
  export * from './components/base';
6
6
  export { InjectionTokens } from './injectionTokens';
7
+ export * from './models';
8
+ export type * from './types';
@@ -1,7 +1,16 @@
1
- export const Devices: Readonly<{
2
- COMMON: "common";
3
- DESKTOP: "desktop";
4
- TABLET: "tablet";
5
- MOBILE: "mobile";
6
- readonly values: any[];
1
+ export declare enum Device {
2
+ COMMON = "common",
3
+ MOBILE = "mobile",
4
+ TABLET = "tablet",
5
+ DESKTOP = "desktop"
6
+ }
7
+ /**
8
+ * @deprecated use TS enum
9
+ */
10
+ export declare const Devices: Readonly<{
11
+ values: Device[];
12
+ COMMON: Device.COMMON;
13
+ MOBILE: Device.MOBILE;
14
+ TABLET: Device.TABLET;
15
+ DESKTOP: Device.DESKTOP;
7
16
  }>;
@@ -1,9 +1,9 @@
1
- export { Devices } from "./Devices";
2
- export { CaseStyles } from "./CaseStyles";
3
- export { Alignments } from "./Alignments";
4
- export { NodeTypes } from "./NodeTypes";
5
- export { ListTypes } from "./ListTypes";
6
- export { TextSettings } from "./TextSettings";
7
- export { MarkGroups } from "./MarkGroups";
8
- export { LinkTargets } from "./LinkTargets";
9
- export { LinkDestinations } from "./LinkDestinations";
1
+ export * from './Devices';
2
+ export * from './CaseStyles';
3
+ export * from './Alignments';
4
+ export * from './NodeTypes';
5
+ export * from './ListTypes';
6
+ export * from './TextSettings';
7
+ export * from './MarkGroups';
8
+ export * from './LinkTargets';
9
+ export * from './LinkDestinations';
@@ -0,0 +1,4 @@
1
+ export interface IPageBlock {
2
+ id: number;
3
+ title: string;
4
+ }
@@ -0,0 +1,27 @@
1
+ export interface IPresetNode {
2
+ type: string;
3
+ level?: number;
4
+ }
5
+ export interface IPresetDeviceStyles {
6
+ alignment: string | null;
7
+ line_height: string;
8
+ font_size: string;
9
+ }
10
+ export interface IPresetCommonStyles {
11
+ font_family: string;
12
+ font_weight: string;
13
+ color: string;
14
+ font_style: string;
15
+ text_decoration: string;
16
+ }
17
+ export interface IStylePreset {
18
+ id: string;
19
+ name: string;
20
+ node?: IPresetNode;
21
+ hidden?: boolean;
22
+ fallbackClass?: string;
23
+ common: IPresetCommonStyles;
24
+ desktop: IPresetDeviceStyles;
25
+ tablet: IPresetDeviceStyles;
26
+ mobile: IPresetDeviceStyles;
27
+ }
@@ -1,2 +1,3 @@
1
- export { Font } from './Font';
2
- export type { IFontJson } from './Font';
1
+ export * from './Font';
2
+ export type * from './StylePreset';
3
+ export type * from './PageBlock';
@@ -0,0 +1,8 @@
1
+ import type { IStylePreset } from '@/models';
2
+ import { Device } from '@/enums';
3
+ export interface IStylePresetVariableArgs {
4
+ device: Device;
5
+ preset: IStylePreset;
6
+ property: string;
7
+ }
8
+ export type StylePresetVariableFactory = (args: IStylePresetVariableArgs) => string;
@@ -0,0 +1 @@
1
+ export type * from './StylePresetVariableFactory';
package/dist/wysiwyg.css CHANGED
@@ -349,36 +349,36 @@
349
349
  position: var(--8349ba3e);
350
350
  }
351
351
 
352
- .zw-modal[data-v-a8a4e8ea] {
352
+ .zw-modal[data-v-72ecfd23] {
353
353
  border-radius: 2px;
354
354
  box-shadow: 0 0 4px rgba(var(--zw-color-black), 0.3);
355
355
  background-color: rgb(var(--zw-color-n15));
356
- max-height: var(--4d6acbf1);
357
- max-width: var(--6330983c);
356
+ max-height: var(--3b807430);
357
+ max-width: var(--749527c6);
358
358
  z-index: 1000;
359
359
  will-change: transform;
360
360
  }
361
- .zw-modal--enter-active[data-v-a8a4e8ea] {
361
+ .zw-modal--enter-active[data-v-72ecfd23] {
362
362
  transition: opacity 0.15s ease-out;
363
363
  }
364
- .zw-modal--enter-from[data-v-a8a4e8ea],
365
- .zw-modal--leave-to[data-v-a8a4e8ea] {
364
+ .zw-modal--enter-from[data-v-72ecfd23],
365
+ .zw-modal--leave-to[data-v-72ecfd23] {
366
366
  opacity: 0;
367
367
  }
368
- .zw-modal--leave-active[data-v-a8a4e8ea] {
368
+ .zw-modal--leave-active[data-v-72ecfd23] {
369
369
  transition: opacity 0.1s ease-in;
370
370
  }
371
371
 
372
372
  /* Scrollbar overrides in modal */
373
- .zw-modal[data-v-a8a4e8ea] .simplebar-offset,
374
- .zw-modal[data-v-a8a4e8ea] .simplebar-mask {
373
+ .zw-modal[data-v-72ecfd23] .simplebar-offset,
374
+ .zw-modal[data-v-72ecfd23] .simplebar-mask {
375
375
  position: initial;
376
376
  }
377
- .zw-modal[data-v-a8a4e8ea] .simplebar-content {
378
- max-height: var(--4d6acbf1);
377
+ .zw-modal[data-v-72ecfd23] .simplebar-content {
378
+ max-height: var(--3b807430);
379
379
  padding: 0 !important;
380
380
  }
381
- .zw-modal[data-v-a8a4e8ea] .simplebar-content-wrapper {
381
+ .zw-modal[data-v-72ecfd23] .simplebar-content-wrapper {
382
382
  overscroll-behavior: contain;
383
383
  }
384
384
 
@@ -421,29 +421,29 @@
421
421
  color: rgb(var(--zw-color-red));
422
422
  }
423
423
 
424
- .zw-checkbox[data-v-94a6bca2] {
424
+ .zw-checkbox[data-v-e1624b5d] {
425
425
  display: inline-flex;
426
426
  align-items: center;
427
427
  position: relative;
428
428
  cursor: pointer;
429
429
  padding: var(--zw-offset-xxs) var(--zw-offset-xxs) var(--zw-offset-xxs) 0;
430
430
  }
431
- .zw-checkbox__field + .zw-checkbox__indicator[data-v-94a6bca2] {
431
+ .zw-checkbox__field + .zw-checkbox__indicator[data-v-e1624b5d] {
432
432
  color: var(--zw-color-n200);
433
433
  box-shadow: inset 0 0 0 2px currentColor;
434
434
  }
435
- .zw-checkbox:hover .zw-checkbox__indicator[data-v-94a6bca2],
436
- .zw-checkbox:focus .zw-checkbox__indicator[data-v-94a6bca2],
437
- .zw-checkbox:focus-within .zw-checkbox__indicator[data-v-94a6bca2] {
435
+ .zw-checkbox:hover .zw-checkbox__indicator[data-v-e1624b5d],
436
+ .zw-checkbox:focus .zw-checkbox__indicator[data-v-e1624b5d],
437
+ .zw-checkbox:focus-within .zw-checkbox__indicator[data-v-e1624b5d] {
438
438
  box-shadow: inset 0 0 0 2px rgb(var(--zw-color-b200));
439
439
  }
440
- .zw-checkbox__field:checked + .zw-checkbox__indicator[data-v-94a6bca2] {
440
+ .zw-checkbox__field:checked + .zw-checkbox__indicator[data-v-e1624b5d] {
441
441
  color: rgb(var(--zw-color-b200))
442
442
  }
443
- .zw-checkbox .zw-checkbox__field:checked + .zw-checkbox__indicator[data-v-94a6bca2] {
443
+ .zw-checkbox .zw-checkbox__field:checked + .zw-checkbox__indicator[data-v-e1624b5d] {
444
444
  background-color: rgb(var(--zw-color-b200));
445
445
  }
446
- .zw-checkbox .zw-checkbox__indicator[data-v-94a6bca2]::after {
446
+ .zw-checkbox .zw-checkbox__indicator[data-v-e1624b5d]::after {
447
447
  content: "";
448
448
  display: block;
449
449
  height: 16px;
@@ -455,16 +455,16 @@
455
455
  background-size: 16px;
456
456
  background-position: center center;
457
457
  }
458
- .zw-checkbox__field:not(:checked) + .zw-checkbox__indicator[data-v-94a6bca2]::after {
458
+ .zw-checkbox__field:not(:checked) + .zw-checkbox__indicator[data-v-e1624b5d]::after {
459
459
  transform: scale(0);
460
460
  }
461
- .zw-checkbox__field[data-v-94a6bca2] {
461
+ .zw-checkbox__field[data-v-e1624b5d] {
462
462
  position: absolute;
463
463
  opacity: 0;
464
464
  height: 0;
465
465
  width: 0;
466
466
  }
467
- .zw-checkbox__label[data-v-94a6bca2] {
467
+ .zw-checkbox__label[data-v-e1624b5d] {
468
468
  font-size: var(--zw-font-size-xs);
469
469
  }
470
470
 
@@ -592,34 +592,34 @@
592
592
  display: flex;
593
593
  }
594
594
 
595
- .zw-link-modal-header[data-v-64870ac2] {
595
+ .zw-link-modal-header[data-v-d721e93d] {
596
596
  display: flex;
597
597
  align-items: center;
598
598
  justify-content: space-between;
599
599
  padding: var(--zw-offset-sm);
600
600
  border-bottom: 2px solid rgb(var(--zw-color-n5));
601
601
  }
602
- .zw-link-modal-header__title[data-v-64870ac2] {
602
+ .zw-link-modal-header__title[data-v-d721e93d] {
603
603
  text-transform: uppercase;
604
604
  font-weight: var(--zw-font-weight-semibold);
605
605
  font-size: var(--zw-font-size-xxs);
606
606
  color: rgb(var(--zw-color-white));
607
607
  }
608
- .zw-link-modal-header__unlink-icon[data-v-64870ac2] {
608
+ .zw-link-modal-header__unlink-icon[data-v-d721e93d] {
609
609
  margin-right: var(--zw-offset-xxs);
610
610
  }
611
- .zw-link-modal-header__unlink-button[data-v-64870ac2] {
611
+ .zw-link-modal-header__unlink-button[data-v-d721e93d] {
612
612
  color: rgb(var(--zw-color-n80));
613
613
  font-size: var(--zw-font-size-xxs);
614
614
  transition: 0.1s opacity ease-out, 0.1s color ease-out;
615
615
  will-change: opacity, color;
616
616
  }
617
- .zw-link-modal-header__unlink-button[data-v-64870ac2]:disabled {
617
+ .zw-link-modal-header__unlink-button[data-v-d721e93d]:disabled {
618
618
  opacity: 0.35;
619
619
  }
620
- .zw-link-modal-header__unlink-button[data-v-64870ac2]:focus,
621
- .zw-link-modal-header__unlink-button[data-v-64870ac2]:focus-within,
622
- .zw-link-modal-header__unlink-button[data-v-64870ac2]:hover {
620
+ .zw-link-modal-header__unlink-button[data-v-d721e93d]:focus,
621
+ .zw-link-modal-header__unlink-button[data-v-d721e93d]:focus-within,
622
+ .zw-link-modal-header__unlink-button[data-v-d721e93d]:hover {
623
623
  color: rgb(var(--zw-color-white));
624
624
  }
625
625
 
@@ -685,7 +685,7 @@
685
685
  background-color: rgb(var(--zw-color-n30));
686
686
  }
687
687
 
688
- .zw-toolbar[data-v-e9105a30] {
688
+ .zw-toolbar[data-v-ba15f8db] {
689
689
  border: 1px solid rgba(var(--zw-color-white), 0.2);
690
690
  border-radius: 2px;
691
691
  background-color: rgba(var(--zw-color-n15), 0.9);
@@ -695,10 +695,10 @@
695
695
  z-index: 999999;
696
696
  text-align: left;
697
697
  position: fixed;
698
- --zw-toolbar-offset-y: calc(var(--7b6bf359) * 1px)
698
+ --zw-toolbar-offset-y: calc(var(--1fad2e10) * 1px)
699
699
  }
700
- .zw-toolbar[data-v-e9105a30]::before,
701
- .zw-toolbar[data-v-e9105a30]::after {
700
+ .zw-toolbar[data-v-ba15f8db]::before,
701
+ .zw-toolbar[data-v-ba15f8db]::after {
702
702
  content: "";
703
703
  display: block;
704
704
  width: 100%;
@@ -706,24 +706,25 @@
706
706
  position: absolute;
707
707
  --zw-toolbar-safe-zone: calc(-1 * var(--zw-toolbar-offset-y));
708
708
  }
709
- .zw-toolbar[data-v-e9105a30]::before {
709
+ .zw-toolbar[data-v-ba15f8db]::before {
710
710
  top: var(--zw-toolbar-safe-zone);
711
711
  }
712
- .zw-toolbar[data-v-e9105a30]::after {
712
+ .zw-toolbar[data-v-ba15f8db]::after {
713
713
  bottom: var(--zw-toolbar-safe-zone);
714
714
  }
715
- .zw-toolbar--enter-active[data-v-e9105a30],
716
- .zw-toolbar--leave-active[data-v-e9105a30] {
715
+ .zw-toolbar--enter-active[data-v-ba15f8db],
716
+ .zw-toolbar--leave-active[data-v-ba15f8db] {
717
717
  transition: opacity 150ms ease-out;
718
718
  }
719
- .zw-toolbar--leave-active[data-v-e9105a30] {
719
+ .zw-toolbar--leave-active[data-v-ba15f8db] {
720
720
  transition: opacity 0s ease-in;
721
721
  }
722
- .zw-toolbar--enter-from[data-v-e9105a30],
723
- .zw-toolbar--leave-to[data-v-e9105a30] {
722
+ .zw-toolbar--enter-from[data-v-ba15f8db],
723
+ .zw-toolbar--leave-to[data-v-ba15f8db] {
724
724
  opacity: 0;
725
725
  }
726
- .zw-wysiwyg {
726
+ .zw-wysiwyg,
727
+ .zw-toolbar {
727
728
  --zw-color-n5: 13, 13, 13; /* #0D0D0D */
728
729
  --zw-color-n15: 38, 38, 38; /* #262626 */
729
730
  --zw-color-n20: 59, 59, 59; /* #3B3B3B */
@@ -756,38 +757,6 @@
756
757
  --zw-line-height-xxs: 1.21;
757
758
  --zw-line-height-md: 1.72;
758
759
  }
759
-
760
- /*
761
- $builder-N5: #0D0D0D;
762
- $builder-N10: #1A1A1A;
763
- $builder-N15: #262626;
764
- $builder-N20: #3B3B3B;
765
- $builder-N30: #4D4D4D;
766
- $builder-N40: #666;
767
- $builder-N50: #808080;
768
- $builder-N60: #999;
769
- $builder-N70: #B3B3B3;
770
- $builder-N80: #C4C4C4;
771
- $builder-N85: #D9D9D9;
772
- $builder-N90: #E6E6E6;
773
- $builder-N94: #F0F0F0;
774
- $builder-N96: #F5F5F5;
775
- $builder-N98: #FAFAFA;
776
- $builder-N200: #C2C8D1;
777
- $builder-R50: #EA3A3A;
778
-
779
- $font-size-xxs: 12px;
780
- $font-size-xs: 14px;
781
- $font-size-sm: 16px;
782
- $font-size-md: 18px;
783
- $font-size-lmd: 20px;
784
- $font-size-lg: 24px;
785
-
786
- $font-height--xxs: 1.2;
787
- $font-height--xs: 1.33;
788
- $font-height--sm: 1.43;
789
- $font-height--md: 1.72;
790
- */
791
760
  .zw-wysiwyg__placeholder::before {
792
761
  content: attr(data-placeholder);
793
762
  color: rgb(var(--zw-color-n70));
@@ -837,7 +806,6 @@ h4.zw-style.zw-style.zw-style {
837
806
  line-height: var(--zw-line-height-mobile, var(--zw-preset-line-height-mobile));
838
807
  }
839
808
  }
840
-
841
809
  /* ProseMirror styles */
842
810
  .ProseMirror {
843
811
  position: relative;