@zipify/wysiwyg 1.0.0-dev.94 → 1.0.0-dev.97
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.
- package/dist/wysiwyg.css +37 -37
- package/dist/wysiwyg.mjs +11 -3
- package/example/ExampleApp.vue +2 -0
- package/lib/components/base/NumberField.vue +2 -2
- package/lib/components/toolbar/controls/LineHeightControl.vue +1 -1
- package/lib/services/ContentNormalizer.js +12 -0
- package/lib/services/__tests__/ContentNormalizer.test.js +7 -0
- package/lib/styles/helpers/offsets.css +5 -5
- package/package.json +1 -1
package/dist/wysiwyg.css
CHANGED
|
@@ -240,7 +240,7 @@
|
|
|
240
240
|
--zw-range-thumb-box-shadow: 0 0 0 12px rgba(240, 240, 240, 0.15);
|
|
241
241
|
}
|
|
242
242
|
|
|
243
|
-
.zw-number-field[data-v-
|
|
243
|
+
.zw-number-field[data-v-2e210d91] {
|
|
244
244
|
--border-color: rgb(var(--zw-color-n60));
|
|
245
245
|
--text-color: rgb(var(--zw-color-n85));
|
|
246
246
|
--buttons-color: rgb(var(--zw-color-n70));
|
|
@@ -250,16 +250,16 @@
|
|
|
250
250
|
align-items: stretch;
|
|
251
251
|
display: flex;
|
|
252
252
|
}
|
|
253
|
-
.zw-number-field[data-v-
|
|
253
|
+
.zw-number-field[data-v-2e210d91]:hover {
|
|
254
254
|
--border-color: rgb(var(--zw-color-n80));
|
|
255
255
|
--text-color: rgb(var(--zw-color-n85));
|
|
256
256
|
}
|
|
257
|
-
.zw-number-field[data-v-
|
|
258
|
-
.zw-number-field[data-v-
|
|
257
|
+
.zw-number-field[data-v-2e210d91]:focus,
|
|
258
|
+
.zw-number-field[data-v-2e210d91]:focus-within {
|
|
259
259
|
--border-color: rgb(var(--zw-color-white));
|
|
260
260
|
--text-color: rgb(var(--zw-color-white));
|
|
261
261
|
}
|
|
262
|
-
.zw-number-field__input[data-v-
|
|
262
|
+
.zw-number-field__input[data-v-2e210d91] {
|
|
263
263
|
color: var(--text-color);
|
|
264
264
|
background-color: rgb(var(--zw-color-n15));
|
|
265
265
|
border: 0;
|
|
@@ -270,60 +270,60 @@
|
|
|
270
270
|
font-size: var(--zw-font-size-xs);
|
|
271
271
|
-moz-appearance: textfield;
|
|
272
272
|
}
|
|
273
|
-
.zw-number-field__buttons[data-v-
|
|
273
|
+
.zw-number-field__buttons[data-v-2e210d91] {
|
|
274
274
|
display: none;
|
|
275
275
|
flex-direction: column;
|
|
276
276
|
height: 100%;
|
|
277
277
|
}
|
|
278
|
-
.zw-number-field:hover .zw-number-field__buttons[data-v-
|
|
279
|
-
.zw-number-field:focus .zw-number-field__buttons[data-v-
|
|
280
|
-
.zw-number-field:focus-within .zw-number-field__buttons[data-v-
|
|
278
|
+
.zw-number-field:hover .zw-number-field__buttons[data-v-2e210d91],
|
|
279
|
+
.zw-number-field:focus .zw-number-field__buttons[data-v-2e210d91],
|
|
280
|
+
.zw-number-field:focus-within .zw-number-field__buttons[data-v-2e210d91] {
|
|
281
281
|
display: flex;
|
|
282
282
|
}
|
|
283
|
-
.zw-number-field__input[data-v-
|
|
283
|
+
.zw-number-field__input[data-v-2e210d91]::placeholder {
|
|
284
284
|
color: var(--text-color);
|
|
285
285
|
}
|
|
286
|
-
.zw-number-field__input[data-v-
|
|
287
|
-
.zw-number-field__input[data-v-
|
|
286
|
+
.zw-number-field__input[data-v-2e210d91]::-webkit-outer-spin-button,
|
|
287
|
+
.zw-number-field__input[data-v-2e210d91]::-webkit-inner-spin-button {
|
|
288
288
|
color: var(--text-color);
|
|
289
289
|
-webkit-appearance: none;
|
|
290
290
|
}
|
|
291
|
-
.zw-number-field__controls[data-v-
|
|
291
|
+
.zw-number-field__controls[data-v-2e210d91] {
|
|
292
292
|
min-width: var(--zw-offset-sm);
|
|
293
293
|
}
|
|
294
|
-
.zw-number-field--disabled[data-v-
|
|
294
|
+
.zw-number-field--disabled[data-v-2e210d91] {
|
|
295
295
|
opacity: 0.5;
|
|
296
296
|
}
|
|
297
|
-
.zw-number-field--disabled[data-v-
|
|
298
|
-
.zw-number-field--disabled .zw-number-field__input[data-v-
|
|
297
|
+
.zw-number-field--disabled[data-v-2e210d91],
|
|
298
|
+
.zw-number-field--disabled .zw-number-field__input[data-v-2e210d91] {
|
|
299
299
|
cursor: not-allowed;
|
|
300
300
|
}
|
|
301
|
-
.zw-number-field__increment-button[data-v-
|
|
302
|
-
.zw-number-field__decrement-button[data-v-
|
|
301
|
+
.zw-number-field__increment-button[data-v-2e210d91],
|
|
302
|
+
.zw-number-field__decrement-button[data-v-2e210d91] {
|
|
303
303
|
width: 100%;
|
|
304
304
|
height: 50%;
|
|
305
305
|
display: flex;
|
|
306
306
|
align-items: center;
|
|
307
307
|
justify-content: center;
|
|
308
308
|
}
|
|
309
|
-
.zw-number-field__increment-button[data-v-
|
|
310
|
-
.zw-number-field__decrement-button[data-v-
|
|
309
|
+
.zw-number-field__increment-button[data-v-2e210d91]::after,
|
|
310
|
+
.zw-number-field__decrement-button[data-v-2e210d91]::after {
|
|
311
311
|
content: "";
|
|
312
312
|
border-left: 3px solid transparent;
|
|
313
313
|
border-right: 3px solid transparent;
|
|
314
314
|
}
|
|
315
|
-
.zw-number-field__increment-button[data-v-
|
|
315
|
+
.zw-number-field__increment-button[data-v-2e210d91]::after {
|
|
316
316
|
border-bottom: 3px solid var(--buttons-color);
|
|
317
317
|
}
|
|
318
|
-
.zw-number-field__decrement-button[data-v-
|
|
318
|
+
.zw-number-field__decrement-button[data-v-2e210d91]::after {
|
|
319
319
|
border-top: 3px solid var(--buttons-color);
|
|
320
320
|
}
|
|
321
|
-
.zw-number-field__increment-button[data-v-
|
|
322
|
-
.zw-number-field__decrement-button[data-v-
|
|
321
|
+
.zw-number-field__increment-button[data-v-2e210d91]:hover,
|
|
322
|
+
.zw-number-field__decrement-button[data-v-2e210d91]:hover {
|
|
323
323
|
background-color: rgb(var(--zw-color-n20));
|
|
324
324
|
--buttons-color: rgb(var(--zw-color-white));
|
|
325
325
|
}
|
|
326
|
-
.zw-number-field__units[data-v-
|
|
326
|
+
.zw-number-field__units[data-v-2e210d91] {
|
|
327
327
|
color: rgb(var(--zw-color-n70));
|
|
328
328
|
font-size: var(--zw-font-size-xs);
|
|
329
329
|
line-height: var(--zw-line-height-md);
|
|
@@ -331,8 +331,8 @@
|
|
|
331
331
|
display: inline-block;
|
|
332
332
|
width: 100%;
|
|
333
333
|
}
|
|
334
|
-
.zw-number-field:hover .zw-number-field__units[data-v-
|
|
335
|
-
.zw-number-field:focus .zw-number-field__units[data-v-
|
|
334
|
+
.zw-number-field:hover .zw-number-field__units[data-v-2e210d91],
|
|
335
|
+
.zw-number-field:focus .zw-number-field__units[data-v-2e210d91] {
|
|
336
336
|
display: none;
|
|
337
337
|
}
|
|
338
338
|
|
|
@@ -561,18 +561,18 @@
|
|
|
561
561
|
flex-direction: column;
|
|
562
562
|
}
|
|
563
563
|
|
|
564
|
-
.zw-line-height-control__modal[data-v-
|
|
564
|
+
.zw-line-height-control__modal[data-v-9ea28b80] {
|
|
565
565
|
padding: var(--zw-offset-sm);
|
|
566
566
|
}
|
|
567
|
-
.zw-line-height-control__row[data-v-
|
|
567
|
+
.zw-line-height-control__row[data-v-9ea28b80] {
|
|
568
568
|
display: flex;
|
|
569
569
|
align-items: center;
|
|
570
570
|
}
|
|
571
|
-
.zw-line-height-control__range[data-v-
|
|
571
|
+
.zw-line-height-control__range[data-v-9ea28b80] {
|
|
572
572
|
width: 156px;
|
|
573
573
|
}
|
|
574
|
-
.zw-line-height-control__field[data-v-
|
|
575
|
-
width:
|
|
574
|
+
.zw-line-height-control__field[data-v-9ea28b80] {
|
|
575
|
+
width: 64px;
|
|
576
576
|
margin-left: var(--zw-offset-sm);
|
|
577
577
|
}
|
|
578
578
|
|
|
@@ -851,17 +851,17 @@ to {
|
|
|
851
851
|
position: relative;
|
|
852
852
|
}
|
|
853
853
|
.zw-margin-bottom--xxs {
|
|
854
|
-
margin-bottom: var(--zw-offset-xxs);
|
|
854
|
+
margin-bottom: var(--zw-offset-xxs) !important;
|
|
855
855
|
}
|
|
856
856
|
.zw-margin-bottom--xs {
|
|
857
|
-
margin-bottom: var(--zw-offset-xs);
|
|
857
|
+
margin-bottom: var(--zw-offset-xs) !important;
|
|
858
858
|
}
|
|
859
859
|
.zw-margin-bottom--sm {
|
|
860
|
-
margin-bottom: var(--zw-offset-sm);
|
|
860
|
+
margin-bottom: var(--zw-offset-sm) !important;
|
|
861
861
|
}
|
|
862
862
|
.zw-margin-bottom--md {
|
|
863
|
-
margin-bottom: var(--zw-offset-md);
|
|
863
|
+
margin-bottom: var(--zw-offset-md) !important;
|
|
864
864
|
}
|
|
865
865
|
.zw-margin-right--xs {
|
|
866
|
-
margin-right: var(--zw-offset-xs);
|
|
866
|
+
margin-right: var(--zw-offset-xs) !important;
|
|
867
867
|
}
|
package/dist/wysiwyg.mjs
CHANGED
|
@@ -19256,7 +19256,7 @@ var render$A = function __render__10() {
|
|
|
19256
19256
|
var _vm = this;
|
|
19257
19257
|
var _h = _vm.$createElement;
|
|
19258
19258
|
var _c = _vm._self._c || _h;
|
|
19259
|
-
return _c("
|
|
19259
|
+
return _c("label", {
|
|
19260
19260
|
staticClass: "zw-number-field",
|
|
19261
19261
|
"class": _vm.elementClasses
|
|
19262
19262
|
}, [_c("input", {
|
|
@@ -19379,7 +19379,7 @@ var __component__$A = /* @__PURE__ */ normalizeComponent(
|
|
|
19379
19379
|
staticRenderFns$A,
|
|
19380
19380
|
false,
|
|
19381
19381
|
__vue2_injectStyles$A,
|
|
19382
|
-
"
|
|
19382
|
+
"2e210d91",
|
|
19383
19383
|
null,
|
|
19384
19384
|
null
|
|
19385
19385
|
);
|
|
@@ -19455,6 +19455,7 @@ const _ContentNormalizer = class {
|
|
|
19455
19455
|
}
|
|
19456
19456
|
_normalizeTextContent() {
|
|
19457
19457
|
this._dom = this._parser.parseFromString(this._content.replace(/(\r)?\n/g, ""), "text/html");
|
|
19458
|
+
this._removeComments();
|
|
19458
19459
|
this._iterateNodes(this._normalizeBreakLines, (node) => node.tagName === "BR");
|
|
19459
19460
|
this._iterateNodes(this._removeEmptyNodes, this._isBlockNode);
|
|
19460
19461
|
this._iterateNodes(this._normalizeListItems, (node) => node.tagName === "LI");
|
|
@@ -19462,10 +19463,17 @@ const _ContentNormalizer = class {
|
|
|
19462
19463
|
this._iterateNodes(this._normalizeStyles, (node) => node.tagName !== "SPAN");
|
|
19463
19464
|
return this._dom.body.innerHTML;
|
|
19464
19465
|
}
|
|
19466
|
+
_removeComments() {
|
|
19467
|
+
const iterator = this._dom.createNodeIterator(this._dom.body, NodeFilter.SHOW_COMMENT);
|
|
19468
|
+
this._runIterator(iterator, (node) => node.remove());
|
|
19469
|
+
}
|
|
19465
19470
|
_iterateNodes(handler, condition = () => true) {
|
|
19466
19471
|
const iterator = this._dom.createNodeIterator(this._dom.body, NodeFilter.SHOW_ELEMENT, {
|
|
19467
19472
|
acceptNode: (node) => condition.call(this, node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT
|
|
19468
19473
|
});
|
|
19474
|
+
this._runIterator(iterator, handler);
|
|
19475
|
+
}
|
|
19476
|
+
_runIterator(iterator, handler) {
|
|
19469
19477
|
let currentNode = iterator.nextNode();
|
|
19470
19478
|
while (currentNode) {
|
|
19471
19479
|
handler.call(this, currentNode);
|
|
@@ -21788,7 +21796,7 @@ var __component__$c = /* @__PURE__ */ normalizeComponent(
|
|
|
21788
21796
|
staticRenderFns$c,
|
|
21789
21797
|
false,
|
|
21790
21798
|
__vue2_injectStyles$c,
|
|
21791
|
-
"
|
|
21799
|
+
"9ea28b80",
|
|
21792
21800
|
null,
|
|
21793
21801
|
null
|
|
21794
21802
|
);
|
package/example/ExampleApp.vue
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
2
|
+
<label :class="elementClasses" class="zw-number-field">
|
|
3
3
|
<input
|
|
4
4
|
type="number"
|
|
5
5
|
class="zw-number-field__input"
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
{{ units }}
|
|
33
33
|
</p>
|
|
34
34
|
</div>
|
|
35
|
-
</
|
|
35
|
+
</label>
|
|
36
36
|
</template>
|
|
37
37
|
|
|
38
38
|
<script>
|
|
@@ -40,6 +40,7 @@ export class ContentNormalizer {
|
|
|
40
40
|
_normalizeTextContent() {
|
|
41
41
|
this._dom = this._parser.parseFromString(this._content.replace(/(\r)?\n/g, ''), 'text/html');
|
|
42
42
|
|
|
43
|
+
this._removeComments();
|
|
43
44
|
this._iterateNodes(this._normalizeBreakLines, (node) => node.tagName === 'BR');
|
|
44
45
|
this._iterateNodes(this._removeEmptyNodes, this._isBlockNode);
|
|
45
46
|
this._iterateNodes(this._normalizeListItems, (node) => node.tagName === 'LI');
|
|
@@ -49,10 +50,21 @@ export class ContentNormalizer {
|
|
|
49
50
|
return this._dom.body.innerHTML;
|
|
50
51
|
}
|
|
51
52
|
|
|
53
|
+
_removeComments() {
|
|
54
|
+
const iterator = this._dom.createNodeIterator(this._dom.body, NodeFilter.SHOW_COMMENT);
|
|
55
|
+
|
|
56
|
+
this._runIterator(iterator, (node) => node.remove());
|
|
57
|
+
}
|
|
58
|
+
|
|
52
59
|
_iterateNodes(handler, condition = () => true) {
|
|
53
60
|
const iterator = this._dom.createNodeIterator(this._dom.body, NodeFilter.SHOW_ELEMENT, {
|
|
54
61
|
acceptNode: (node) => condition.call(this, node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT
|
|
55
62
|
});
|
|
63
|
+
|
|
64
|
+
this._runIterator(iterator, handler);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
_runIterator(iterator, handler) {
|
|
56
68
|
let currentNode = iterator.nextNode();
|
|
57
69
|
|
|
58
70
|
while (currentNode) {
|
|
@@ -161,4 +161,11 @@ describe('normalize text content', () => {
|
|
|
161
161
|
|
|
162
162
|
expect(ContentNormalizer.normalize(input)).toBe(output);
|
|
163
163
|
});
|
|
164
|
+
|
|
165
|
+
test('should remove comments', () => {
|
|
166
|
+
const input = '<p>lorem ipsum</p><p style="color: red;">Hello <!-- world --></p>';
|
|
167
|
+
const output = '<p>lorem ipsum</p><p><span style="color: red;">Hello </span></p>';
|
|
168
|
+
|
|
169
|
+
expect(ContentNormalizer.normalize(input)).toBe(output);
|
|
170
|
+
});
|
|
164
171
|
});
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
.zw-margin-bottom--xxs {
|
|
2
|
-
margin-bottom: var(--zw-offset-xxs);
|
|
2
|
+
margin-bottom: var(--zw-offset-xxs) !important;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
5
|
.zw-margin-bottom--xs {
|
|
6
|
-
margin-bottom: var(--zw-offset-xs);
|
|
6
|
+
margin-bottom: var(--zw-offset-xs) !important;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
.zw-margin-bottom--sm {
|
|
10
|
-
margin-bottom: var(--zw-offset-sm);
|
|
10
|
+
margin-bottom: var(--zw-offset-sm) !important;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
.zw-margin-bottom--md {
|
|
14
|
-
margin-bottom: var(--zw-offset-md);
|
|
14
|
+
margin-bottom: var(--zw-offset-md) !important;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
.zw-margin-right--xs {
|
|
18
|
-
margin-right: var(--zw-offset-xs);
|
|
18
|
+
margin-right: var(--zw-offset-xs) !important;
|
|
19
19
|
}
|