@elementor/editor-canvas 3.33.0-220 → 3.33.0-221
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/index.js +36 -5
- package/dist/index.mjs +39 -5
- package/package.json +13 -13
- package/src/components/__tests__/style-renderer.test.tsx +2 -2
- package/src/hooks/use-style-items.ts +34 -7
- package/src/renderers/__tests__/__snapshots__/create-styles-renderer.test.ts.snap +2 -0
- package/src/renderers/__tests__/create-styles-renderer.test.ts +25 -0
- package/src/renderers/create-styles-renderer.ts +19 -3
- package/src/renderers/errors.ts +6 -0
package/dist/index.js
CHANGED
|
@@ -281,6 +281,7 @@ function getLinkAttrs(el) {
|
|
|
281
281
|
// src/hooks/use-style-items.ts
|
|
282
282
|
var import_react9 = require("react");
|
|
283
283
|
var import_editor_responsive2 = require("@elementor/editor-responsive");
|
|
284
|
+
var import_editor_styles3 = require("@elementor/editor-styles");
|
|
284
285
|
var import_editor_styles_repository2 = require("@elementor/editor-styles-repository");
|
|
285
286
|
var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
|
|
286
287
|
|
|
@@ -469,6 +470,7 @@ var import_react8 = require("react");
|
|
|
469
470
|
var import_editor_responsive = require("@elementor/editor-responsive");
|
|
470
471
|
|
|
471
472
|
// src/renderers/create-styles-renderer.ts
|
|
473
|
+
var import_editor_styles2 = require("@elementor/editor-styles");
|
|
472
474
|
var import_utils3 = require("@elementor/utils");
|
|
473
475
|
|
|
474
476
|
// src/renderers/errors.ts
|
|
@@ -477,6 +479,10 @@ var UnknownStyleTypeError = (0, import_utils2.createError)({
|
|
|
477
479
|
code: "unknown_style_type",
|
|
478
480
|
message: "Unknown style type"
|
|
479
481
|
});
|
|
482
|
+
var UnknownStyleStateError = (0, import_utils2.createError)({
|
|
483
|
+
code: "unknown_style_state",
|
|
484
|
+
message: "Unknown style state"
|
|
485
|
+
});
|
|
480
486
|
|
|
481
487
|
// src/renderers/create-styles-renderer.ts
|
|
482
488
|
var SELECTORS_MAP = {
|
|
@@ -494,7 +500,8 @@ function createStylesRenderer({ resolve, breakpoints, selectorPrefix = "" }) {
|
|
|
494
500
|
return {
|
|
495
501
|
id: style.id,
|
|
496
502
|
breakpoint: style?.variants[0]?.meta?.breakpoint || "desktop",
|
|
497
|
-
value: variantsCss.join("")
|
|
503
|
+
value: variantsCss.join(""),
|
|
504
|
+
state: style?.variants[0]?.meta?.state || null
|
|
498
505
|
};
|
|
499
506
|
});
|
|
500
507
|
return await Promise.all(stylesCssPromises);
|
|
@@ -510,7 +517,18 @@ function createStyleWrapper(value = "", wrapper) {
|
|
|
510
517
|
return createStyleWrapper(`${value}${symbol}${cssName}`, wrapper);
|
|
511
518
|
},
|
|
512
519
|
withPrefix: (prefix) => createStyleWrapper([prefix, value].filter(Boolean).join(" "), wrapper),
|
|
513
|
-
withState: (state) =>
|
|
520
|
+
withState: (state) => {
|
|
521
|
+
if (!state) {
|
|
522
|
+
return createStyleWrapper(value, wrapper);
|
|
523
|
+
}
|
|
524
|
+
if ((0, import_editor_styles2.isClassState)(state)) {
|
|
525
|
+
return createStyleWrapper(`${value}.${state}`, wrapper);
|
|
526
|
+
}
|
|
527
|
+
if ((0, import_editor_styles2.isPseudoState)(state)) {
|
|
528
|
+
return createStyleWrapper(`${value}:${state}`, wrapper);
|
|
529
|
+
}
|
|
530
|
+
throw new UnknownStyleStateError({ context: { state } });
|
|
531
|
+
},
|
|
514
532
|
withMediaQuery: (breakpoint) => {
|
|
515
533
|
if (!breakpoint?.type) {
|
|
516
534
|
return createStyleWrapper(value, wrapper);
|
|
@@ -591,14 +609,27 @@ function useStyleItems() {
|
|
|
591
609
|
});
|
|
592
610
|
const breakpointsOrder = (0, import_editor_responsive2.getBreakpoints)().map((breakpoint) => breakpoint.id);
|
|
593
611
|
return (0, import_react9.useMemo)(
|
|
594
|
-
() => Object.values(styleItems).sort(
|
|
595
|
-
return breakpointsOrder.indexOf(breakpointA) - breakpointsOrder.indexOf(breakpointB);
|
|
596
|
-
}),
|
|
612
|
+
() => Object.values(styleItems).sort(sortByProviderPriority).flatMap(({ items }) => items).sort(sortByStateType).sort(sortByBreakpoint(breakpointsOrder)),
|
|
597
613
|
// eslint-disable-next-line
|
|
598
614
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
599
615
|
[styleItems, breakpointsOrder.join("-")]
|
|
600
616
|
);
|
|
601
617
|
}
|
|
618
|
+
function sortByProviderPriority({ provider: providerA }, { provider: providerB }) {
|
|
619
|
+
return providerA.priority - providerB.priority;
|
|
620
|
+
}
|
|
621
|
+
function sortByBreakpoint(breakpointsOrder) {
|
|
622
|
+
return ({ breakpoint: breakpointA }, { breakpoint: breakpointB }) => breakpointsOrder.indexOf(breakpointA) - breakpointsOrder.indexOf(breakpointB);
|
|
623
|
+
}
|
|
624
|
+
function sortByStateType({ state: stateA }, { state: stateB }) {
|
|
625
|
+
if ((0, import_editor_styles3.isClassState)(stateA) && !(0, import_editor_styles3.isClassState)(stateB)) {
|
|
626
|
+
return -1;
|
|
627
|
+
}
|
|
628
|
+
if (!(0, import_editor_styles3.isClassState)(stateA) && (0, import_editor_styles3.isClassState)(stateB)) {
|
|
629
|
+
return 1;
|
|
630
|
+
}
|
|
631
|
+
return 0;
|
|
632
|
+
}
|
|
602
633
|
function createProviderSubscriber({ provider, renderStyles, setStyleItems }) {
|
|
603
634
|
return abortPreviousRuns(
|
|
604
635
|
(abortController) => signalizedProcess(abortController.signal).then((_, signal) => {
|
package/dist/index.mjs
CHANGED
|
@@ -241,6 +241,7 @@ function getLinkAttrs(el) {
|
|
|
241
241
|
// src/hooks/use-style-items.ts
|
|
242
242
|
import { useEffect as useEffect5, useMemo as useMemo3, useState as useState2 } from "react";
|
|
243
243
|
import { getBreakpoints } from "@elementor/editor-responsive";
|
|
244
|
+
import { isClassState as isClassState2 } from "@elementor/editor-styles";
|
|
244
245
|
import { stylesRepository as stylesRepository2 } from "@elementor/editor-styles-repository";
|
|
245
246
|
import { registerDataHook } from "@elementor/editor-v1-adapters";
|
|
246
247
|
|
|
@@ -431,6 +432,10 @@ import { useMemo as useMemo2 } from "react";
|
|
|
431
432
|
import { useBreakpointsMap } from "@elementor/editor-responsive";
|
|
432
433
|
|
|
433
434
|
// src/renderers/create-styles-renderer.ts
|
|
435
|
+
import {
|
|
436
|
+
isClassState,
|
|
437
|
+
isPseudoState
|
|
438
|
+
} from "@elementor/editor-styles";
|
|
434
439
|
import { decodeString } from "@elementor/utils";
|
|
435
440
|
|
|
436
441
|
// src/renderers/errors.ts
|
|
@@ -439,6 +444,10 @@ var UnknownStyleTypeError = createError({
|
|
|
439
444
|
code: "unknown_style_type",
|
|
440
445
|
message: "Unknown style type"
|
|
441
446
|
});
|
|
447
|
+
var UnknownStyleStateError = createError({
|
|
448
|
+
code: "unknown_style_state",
|
|
449
|
+
message: "Unknown style state"
|
|
450
|
+
});
|
|
442
451
|
|
|
443
452
|
// src/renderers/create-styles-renderer.ts
|
|
444
453
|
var SELECTORS_MAP = {
|
|
@@ -456,7 +465,8 @@ function createStylesRenderer({ resolve, breakpoints, selectorPrefix = "" }) {
|
|
|
456
465
|
return {
|
|
457
466
|
id: style.id,
|
|
458
467
|
breakpoint: style?.variants[0]?.meta?.breakpoint || "desktop",
|
|
459
|
-
value: variantsCss.join("")
|
|
468
|
+
value: variantsCss.join(""),
|
|
469
|
+
state: style?.variants[0]?.meta?.state || null
|
|
460
470
|
};
|
|
461
471
|
});
|
|
462
472
|
return await Promise.all(stylesCssPromises);
|
|
@@ -472,7 +482,18 @@ function createStyleWrapper(value = "", wrapper) {
|
|
|
472
482
|
return createStyleWrapper(`${value}${symbol}${cssName}`, wrapper);
|
|
473
483
|
},
|
|
474
484
|
withPrefix: (prefix) => createStyleWrapper([prefix, value].filter(Boolean).join(" "), wrapper),
|
|
475
|
-
withState: (state) =>
|
|
485
|
+
withState: (state) => {
|
|
486
|
+
if (!state) {
|
|
487
|
+
return createStyleWrapper(value, wrapper);
|
|
488
|
+
}
|
|
489
|
+
if (isClassState(state)) {
|
|
490
|
+
return createStyleWrapper(`${value}.${state}`, wrapper);
|
|
491
|
+
}
|
|
492
|
+
if (isPseudoState(state)) {
|
|
493
|
+
return createStyleWrapper(`${value}:${state}`, wrapper);
|
|
494
|
+
}
|
|
495
|
+
throw new UnknownStyleStateError({ context: { state } });
|
|
496
|
+
},
|
|
476
497
|
withMediaQuery: (breakpoint) => {
|
|
477
498
|
if (!breakpoint?.type) {
|
|
478
499
|
return createStyleWrapper(value, wrapper);
|
|
@@ -553,14 +574,27 @@ function useStyleItems() {
|
|
|
553
574
|
});
|
|
554
575
|
const breakpointsOrder = getBreakpoints().map((breakpoint) => breakpoint.id);
|
|
555
576
|
return useMemo3(
|
|
556
|
-
() => Object.values(styleItems).sort(
|
|
557
|
-
return breakpointsOrder.indexOf(breakpointA) - breakpointsOrder.indexOf(breakpointB);
|
|
558
|
-
}),
|
|
577
|
+
() => Object.values(styleItems).sort(sortByProviderPriority).flatMap(({ items }) => items).sort(sortByStateType).sort(sortByBreakpoint(breakpointsOrder)),
|
|
559
578
|
// eslint-disable-next-line
|
|
560
579
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
561
580
|
[styleItems, breakpointsOrder.join("-")]
|
|
562
581
|
);
|
|
563
582
|
}
|
|
583
|
+
function sortByProviderPriority({ provider: providerA }, { provider: providerB }) {
|
|
584
|
+
return providerA.priority - providerB.priority;
|
|
585
|
+
}
|
|
586
|
+
function sortByBreakpoint(breakpointsOrder) {
|
|
587
|
+
return ({ breakpoint: breakpointA }, { breakpoint: breakpointB }) => breakpointsOrder.indexOf(breakpointA) - breakpointsOrder.indexOf(breakpointB);
|
|
588
|
+
}
|
|
589
|
+
function sortByStateType({ state: stateA }, { state: stateB }) {
|
|
590
|
+
if (isClassState2(stateA) && !isClassState2(stateB)) {
|
|
591
|
+
return -1;
|
|
592
|
+
}
|
|
593
|
+
if (!isClassState2(stateA) && isClassState2(stateB)) {
|
|
594
|
+
return 1;
|
|
595
|
+
}
|
|
596
|
+
return 0;
|
|
597
|
+
}
|
|
564
598
|
function createProviderSubscriber({ provider, renderStyles, setStyleItems }) {
|
|
565
599
|
return abortPreviousRuns(
|
|
566
600
|
(abortController) => signalizedProcess(abortController.signal).then((_, signal) => {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elementor/editor-canvas",
|
|
3
3
|
"description": "Elementor Editor Canvas",
|
|
4
|
-
"version": "3.33.0-
|
|
4
|
+
"version": "3.33.0-221",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": "Elementor Team",
|
|
7
7
|
"homepage": "https://elementor.com/",
|
|
@@ -37,19 +37,19 @@
|
|
|
37
37
|
"react-dom": "^18.3.1"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@elementor/editor": "3.33.0-
|
|
41
|
-
"@elementor/editor-notifications": "3.33.0-
|
|
42
|
-
"@elementor/editor-documents": "3.33.0-
|
|
43
|
-
"@elementor/editor-elements": "3.33.0-
|
|
44
|
-
"@elementor/editor-props": "3.33.0-
|
|
45
|
-
"@elementor/editor-responsive": "3.33.0-
|
|
46
|
-
"@elementor/editor-styles": "3.33.0-
|
|
47
|
-
"@elementor/editor-styles-repository": "3.33.0-
|
|
48
|
-
"@elementor/editor-v1-adapters": "3.33.0-
|
|
49
|
-
"@elementor/twing": "3.33.0-
|
|
40
|
+
"@elementor/editor": "3.33.0-221",
|
|
41
|
+
"@elementor/editor-notifications": "3.33.0-221",
|
|
42
|
+
"@elementor/editor-documents": "3.33.0-221",
|
|
43
|
+
"@elementor/editor-elements": "3.33.0-221",
|
|
44
|
+
"@elementor/editor-props": "3.33.0-221",
|
|
45
|
+
"@elementor/editor-responsive": "3.33.0-221",
|
|
46
|
+
"@elementor/editor-styles": "3.33.0-221",
|
|
47
|
+
"@elementor/editor-styles-repository": "3.33.0-221",
|
|
48
|
+
"@elementor/editor-v1-adapters": "3.33.0-221",
|
|
49
|
+
"@elementor/twing": "3.33.0-221",
|
|
50
50
|
"@elementor/ui": "1.36.12",
|
|
51
|
-
"@elementor/utils": "3.33.0-
|
|
52
|
-
"@elementor/wp-media": "3.33.0-
|
|
51
|
+
"@elementor/utils": "3.33.0-221",
|
|
52
|
+
"@elementor/wp-media": "3.33.0-221",
|
|
53
53
|
"@floating-ui/react": "^0.27.5",
|
|
54
54
|
"@wordpress/i18n": "^5.13.0"
|
|
55
55
|
},
|
|
@@ -46,8 +46,8 @@ describe( '<StyleRenderer />', () => {
|
|
|
46
46
|
const mockContainer = document.createElement( 'div' );
|
|
47
47
|
|
|
48
48
|
const mockCssItems = [
|
|
49
|
-
{ id: 'style1', value: '.test { color: red; }', breakpoint: 'desktop' },
|
|
50
|
-
{ id: 'style2', value: '.test2 { color: blue; }', breakpoint: 'desktop' },
|
|
49
|
+
{ id: 'style1', value: '.test { color: red; }', breakpoint: 'desktop', state: null },
|
|
50
|
+
{ id: 'style2', value: '.test2 { color: blue; }', breakpoint: 'desktop', state: null },
|
|
51
51
|
];
|
|
52
52
|
|
|
53
53
|
const mockLinkAttrs = [
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type Dispatch, type SetStateAction, useEffect, useMemo, useState } from 'react';
|
|
2
2
|
import { type BreakpointId, getBreakpoints } from '@elementor/editor-responsive';
|
|
3
|
+
import { isClassState, type StyleDefinitionClassState } from '@elementor/editor-styles';
|
|
3
4
|
import { type StylesProvider, stylesRepository } from '@elementor/editor-styles-repository';
|
|
4
5
|
import { registerDataHook } from '@elementor/editor-v1-adapters';
|
|
5
6
|
|
|
@@ -58,19 +59,45 @@ export function useStyleItems() {
|
|
|
58
59
|
return useMemo(
|
|
59
60
|
() =>
|
|
60
61
|
Object.values( styleItems )
|
|
61
|
-
.sort(
|
|
62
|
+
.sort( sortByProviderPriority )
|
|
62
63
|
.flatMap( ( { items } ) => items )
|
|
63
|
-
.sort(
|
|
64
|
-
|
|
65
|
-
breakpointsOrder.indexOf( breakpointA as BreakpointId ) -
|
|
66
|
-
breakpointsOrder.indexOf( breakpointB as BreakpointId )
|
|
67
|
-
);
|
|
68
|
-
} ),
|
|
64
|
+
.sort( sortByStateType )
|
|
65
|
+
.sort( sortByBreakpoint( breakpointsOrder ) ),
|
|
69
66
|
// eslint-disable-next-line
|
|
70
67
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
71
68
|
[ styleItems, breakpointsOrder.join( '-' ) ]
|
|
72
69
|
);
|
|
73
70
|
}
|
|
71
|
+
function sortByProviderPriority(
|
|
72
|
+
{ provider: providerA }: ProviderAndStyleItems,
|
|
73
|
+
{ provider: providerB }: ProviderAndStyleItems
|
|
74
|
+
) {
|
|
75
|
+
return providerA.priority - providerB.priority;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function sortByBreakpoint( breakpointsOrder: BreakpointId[] ) {
|
|
79
|
+
return ( { breakpoint: breakpointA }: StyleItem, { breakpoint: breakpointB }: StyleItem ) =>
|
|
80
|
+
breakpointsOrder.indexOf( breakpointA as BreakpointId ) -
|
|
81
|
+
breakpointsOrder.indexOf( breakpointB as BreakpointId );
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function sortByStateType( { state: stateA }: StyleItem, { state: stateB }: StyleItem ) {
|
|
85
|
+
if (
|
|
86
|
+
isClassState( stateA as StyleDefinitionClassState ) &&
|
|
87
|
+
! isClassState( stateB as StyleDefinitionClassState )
|
|
88
|
+
) {
|
|
89
|
+
return -1;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (
|
|
93
|
+
! isClassState( stateA as StyleDefinitionClassState ) &&
|
|
94
|
+
isClassState( stateB as StyleDefinitionClassState )
|
|
95
|
+
) {
|
|
96
|
+
return 1;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return 0;
|
|
100
|
+
}
|
|
74
101
|
|
|
75
102
|
type CreateProviderSubscriberArgs = {
|
|
76
103
|
provider: StylesProvider;
|
|
@@ -5,11 +5,13 @@ exports[`renderStyles should render styles 1`] = `
|
|
|
5
5
|
{
|
|
6
6
|
"breakpoint": "desktop",
|
|
7
7
|
"id": "test",
|
|
8
|
+
"state": null,
|
|
8
9
|
"value": ".test{font-size:10px;}.test:hover{font-size:20px;}@media(max-width:992px){.test{font-size:30px;}}@media(max-width:768px){.test:focus{font-size:40px;}}",
|
|
9
10
|
},
|
|
10
11
|
{
|
|
11
12
|
"breakpoint": "desktop",
|
|
12
13
|
"id": "test-2",
|
|
14
|
+
"state": null,
|
|
13
15
|
"value": ".custom-name{font-size:50px;}",
|
|
14
16
|
},
|
|
15
17
|
]
|
|
@@ -112,6 +112,7 @@ describe( 'renderStyles', () => {
|
|
|
112
112
|
breakpoint: 'desktop',
|
|
113
113
|
id: 'test',
|
|
114
114
|
value: '.elementor-prefix .test{font-size:24px;}',
|
|
115
|
+
state: null,
|
|
115
116
|
},
|
|
116
117
|
] );
|
|
117
118
|
} );
|
|
@@ -200,4 +201,28 @@ describe( 'custom_css rendering', () => {
|
|
|
200
201
|
// Assert.
|
|
201
202
|
expect( result[ 0 ].value ).toContain( css );
|
|
202
203
|
} );
|
|
204
|
+
|
|
205
|
+
it( 'should render class state with selector', async () => {
|
|
206
|
+
// Arrange.
|
|
207
|
+
const styleDef: RendererStyleDefinition = {
|
|
208
|
+
id: 'test',
|
|
209
|
+
type: 'class',
|
|
210
|
+
cssName: 'test',
|
|
211
|
+
label: 'Test',
|
|
212
|
+
variants: [
|
|
213
|
+
{
|
|
214
|
+
meta: { breakpoint: null, state: 'e--selected' },
|
|
215
|
+
props: {},
|
|
216
|
+
custom_css: null,
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
// Act.
|
|
222
|
+
const renderStyles = createStylesRenderer( { breakpoints: {} as BreakpointsMap, resolve: async () => ( {} ) } );
|
|
223
|
+
const result = await renderStyles( { styles: [ styleDef ] } );
|
|
224
|
+
|
|
225
|
+
// Assert.
|
|
226
|
+
expect( result[ 0 ].value ).toContain( '.test.e--selected{}' );
|
|
227
|
+
} );
|
|
203
228
|
} );
|
|
@@ -2,6 +2,8 @@ import type { Props } from '@elementor/editor-props';
|
|
|
2
2
|
import { type Breakpoint, type BreakpointsMap } from '@elementor/editor-responsive';
|
|
3
3
|
import {
|
|
4
4
|
type CustomCss,
|
|
5
|
+
isClassState,
|
|
6
|
+
isPseudoState,
|
|
5
7
|
type StyleDefinition,
|
|
6
8
|
type StyleDefinitionState,
|
|
7
9
|
type StyleDefinitionType,
|
|
@@ -9,12 +11,13 @@ import {
|
|
|
9
11
|
import { decodeString } from '@elementor/utils';
|
|
10
12
|
|
|
11
13
|
import { type PropsResolver } from './create-props-resolver';
|
|
12
|
-
import { UnknownStyleTypeError } from './errors';
|
|
14
|
+
import { UnknownStyleStateError, UnknownStyleTypeError } from './errors';
|
|
13
15
|
|
|
14
16
|
export type StyleItem = {
|
|
15
17
|
id: string;
|
|
16
18
|
value: string;
|
|
17
19
|
breakpoint: string;
|
|
20
|
+
state: StyleDefinitionState | null;
|
|
18
21
|
};
|
|
19
22
|
|
|
20
23
|
export type StyleRenderer = ReturnType< typeof createStylesRenderer >;
|
|
@@ -65,6 +68,7 @@ export function createStylesRenderer( { resolve, breakpoints, selectorPrefix = '
|
|
|
65
68
|
id: style.id,
|
|
66
69
|
breakpoint: style?.variants[ 0 ]?.meta?.breakpoint || 'desktop',
|
|
67
70
|
value: variantsCss.join( '' ),
|
|
71
|
+
state: style?.variants[ 0 ]?.meta?.state || null,
|
|
68
72
|
};
|
|
69
73
|
} );
|
|
70
74
|
|
|
@@ -87,9 +91,21 @@ function createStyleWrapper( value: string = '', wrapper?: ( css: string ) => st
|
|
|
87
91
|
withPrefix: ( prefix: string ) =>
|
|
88
92
|
createStyleWrapper( [ prefix, value ].filter( Boolean ).join( ' ' ), wrapper ),
|
|
89
93
|
|
|
90
|
-
withState: ( state: StyleDefinitionState ) =>
|
|
91
|
-
|
|
94
|
+
withState: ( state: StyleDefinitionState ) => {
|
|
95
|
+
if ( ! state ) {
|
|
96
|
+
return createStyleWrapper( value, wrapper );
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if ( isClassState( state ) ) {
|
|
100
|
+
return createStyleWrapper( `${ value }.${ state }`, wrapper );
|
|
101
|
+
}
|
|
92
102
|
|
|
103
|
+
if ( isPseudoState( state ) ) {
|
|
104
|
+
return createStyleWrapper( `${ value }:${ state }`, wrapper );
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
throw new UnknownStyleStateError( { context: { state } } );
|
|
108
|
+
},
|
|
93
109
|
withMediaQuery: ( breakpoint: Breakpoint | null ) => {
|
|
94
110
|
if ( ! breakpoint?.type ) {
|
|
95
111
|
return createStyleWrapper( value, wrapper );
|
package/src/renderers/errors.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
import { type StyleDefinitionState } from '@elementor/editor-styles';
|
|
1
2
|
import { createError } from '@elementor/utils';
|
|
2
3
|
|
|
3
4
|
export const UnknownStyleTypeError = createError< { type: string } >( {
|
|
4
5
|
code: 'unknown_style_type',
|
|
5
6
|
message: 'Unknown style type',
|
|
6
7
|
} );
|
|
8
|
+
|
|
9
|
+
export const UnknownStyleStateError = createError< { state: StyleDefinitionState } >( {
|
|
10
|
+
code: 'unknown_style_state',
|
|
11
|
+
message: 'Unknown style state',
|
|
12
|
+
} );
|