@elementor/editor-canvas 0.7.1 → 0.9.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.
- package/.turbo/turbo-build.log +9 -9
- package/CHANGELOG.md +57 -0
- package/dist/index.js +241 -215
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +243 -217
- package/dist/index.mjs.map +1 -1
- package/package.json +15 -12
- package/src/__tests__/init-styles-renderer.test.ts +19 -9
- package/src/init-styles-renderer.ts +20 -7
- package/src/{styles-renderer → renderers}/__tests__/__mocks__/styles-schema.ts +214 -16
- package/src/renderers/__tests__/create-props-resolver.test.ts +175 -0
- package/src/renderers/__tests__/create-props-resolver.transformers.test.ts +325 -0
- package/src/renderers/__tests__/render-styles.test.ts +126 -0
- package/src/renderers/create-props-resolver.ts +123 -0
- package/src/{styles-renderer → renderers}/multi-props.ts +1 -1
- package/src/{styles-renderer/render.ts → renderers/render-styles.ts} +18 -17
- package/src/renderers/style-transformers/background-image-overlay-transformer.ts +24 -0
- package/src/renderers/style-transformers/background-image-position-offset-transformer.ts +10 -0
- package/src/renderers/style-transformers/background-image-size-scale-transformer.ts +10 -0
- package/src/{styles-renderer/transformers → renderers/style-transformers}/create-corner-sizes-transformer.ts +7 -9
- package/src/{styles-renderer/transformers → renderers/style-transformers}/create-edge-sizes-transformer.ts +2 -2
- package/src/{styles-renderer/transformers → renderers/style-transformers}/image-attachment.ts +1 -1
- package/src/{styles-renderer/transformers → renderers/style-transformers}/image-src.ts +4 -7
- package/src/renderers/style-transformers/image.ts +25 -0
- package/src/{styles-renderer/transformers → renderers/style-transformers}/index.ts +9 -2
- package/src/renderers/style-transformers/stroke-transformer.ts +16 -0
- package/src/renderers/types.ts +12 -0
- package/src/styles-renderer/__tests__/enqueue-used-fonts.test.ts +0 -60
- package/src/styles-renderer/__tests__/index.test.ts +0 -777
- package/src/styles-renderer/enqueue-used-fonts.ts +0 -22
- package/src/styles-renderer/index.ts +0 -2
- package/src/styles-renderer/resolve.ts +0 -103
- package/src/styles-renderer/transformers/background-image-overlay-transformer.ts +0 -31
- package/src/styles-renderer/transformers/stroke-transformer.ts +0 -9
- package/src/styles-renderer/types.ts +0 -16
- /package/src/{styles-renderer → renderers}/errors.ts +0 -0
- /package/src/{styles-renderer/transformers → renderers/style-transformers}/background-color-overlay-transformer.ts +0 -0
- /package/src/{styles-renderer/transformers → renderers/style-transformers}/background-transformer.ts +0 -0
- /package/src/{styles-renderer/transformers → renderers/style-transformers}/create-combine-array-transformer.ts +0 -0
- /package/src/{styles-renderer/transformers → renderers/style-transformers}/dimensions.ts +0 -0
- /package/src/{styles-renderer/transformers → renderers/style-transformers}/layout-direction-transformer.ts +0 -0
- /package/src/{styles-renderer/transformers → renderers/style-transformers}/primitive-transformer.ts +0 -0
- /package/src/{styles-renderer/transformers → renderers/style-transformers}/shadow-transformer.ts +0 -0
- /package/src/{styles-renderer/transformers → renderers/style-transformers}/size-transformer.ts +0 -0
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { type StringPropValue } from '@elementor/editor-props';
|
|
2
|
-
import { type StyleDefinition } from '@elementor/editor-styles';
|
|
3
|
-
import { ensureError } from '@elementor/utils';
|
|
4
|
-
|
|
5
|
-
import { enqueueFont } from '../sync/enqueue-font';
|
|
6
|
-
|
|
7
|
-
export default function enqueueUsedFonts( styles: StyleDefinition[] ) {
|
|
8
|
-
try {
|
|
9
|
-
styles.forEach( ( styleDef ) => {
|
|
10
|
-
Object.values( styleDef.variants ).forEach( ( variant ) => {
|
|
11
|
-
const fontFamily = variant.props[ 'font-family' ] as StringPropValue;
|
|
12
|
-
|
|
13
|
-
if ( fontFamily?.value ) {
|
|
14
|
-
enqueueFont( fontFamily.value );
|
|
15
|
-
}
|
|
16
|
-
} );
|
|
17
|
-
} );
|
|
18
|
-
} catch ( error: unknown ) {
|
|
19
|
-
// eslint-disable-next-line no-console
|
|
20
|
-
console.error( `Cannot enqueue font': ${ ensureError( error ).message }` );
|
|
21
|
-
}
|
|
22
|
-
}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { type PropsSchema } from '@elementor/editor-elements';
|
|
2
|
-
import { isTransformable, type PropKey, type Props, type PropType, type PropValue } from '@elementor/editor-props';
|
|
3
|
-
|
|
4
|
-
import { getMultiPropsValue, isMultiProps } from './multi-props';
|
|
5
|
-
import { type TransformersMap } from './types';
|
|
6
|
-
|
|
7
|
-
const TRANSFORM_DEPTH_LIMIT = 3;
|
|
8
|
-
|
|
9
|
-
type ResolveArgs = {
|
|
10
|
-
props: Props;
|
|
11
|
-
schema: PropsSchema;
|
|
12
|
-
transformers: TransformersMap;
|
|
13
|
-
signal?: AbortSignal;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export async function resolve( { props, schema, transformers, signal }: ResolveArgs ) {
|
|
17
|
-
const promises = Promise.all(
|
|
18
|
-
Object.entries( schema ).map( async ( [ propKey, propType ] ) => {
|
|
19
|
-
const value = props[ propKey ] ?? propType.default;
|
|
20
|
-
|
|
21
|
-
const transformed = await transform( value, propKey, propType, transformers, 0, signal );
|
|
22
|
-
|
|
23
|
-
if ( transformed === null ) {
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
if ( isMultiProps( transformed ) ) {
|
|
28
|
-
return getMultiPropsValue( transformed );
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return { [ propKey ]: transformed };
|
|
32
|
-
} )
|
|
33
|
-
);
|
|
34
|
-
|
|
35
|
-
return Object.assign( {}, ...( await promises ).filter( Boolean ) );
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
async function transform(
|
|
39
|
-
value: PropValue,
|
|
40
|
-
propKey: PropKey,
|
|
41
|
-
propType: PropType,
|
|
42
|
-
transformers: TransformersMap,
|
|
43
|
-
depth: number = 0,
|
|
44
|
-
signal?: AbortSignal
|
|
45
|
-
): Promise< unknown > {
|
|
46
|
-
if ( ! value && value !== 0 ) {
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if ( ! isTransformable( value ) ) {
|
|
51
|
-
return value;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if ( depth > TRANSFORM_DEPTH_LIMIT ) {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
if ( value.disabled === true ) {
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
if ( propType.kind === 'union' ) {
|
|
63
|
-
propType = propType.prop_types[ value.$$type ];
|
|
64
|
-
|
|
65
|
-
if ( ! propType ) {
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// Warning: This variable is loosely-typed - use with caution.
|
|
71
|
-
let resolvedValue = value.value;
|
|
72
|
-
|
|
73
|
-
if ( propType.kind === 'object' ) {
|
|
74
|
-
resolvedValue = await resolve( {
|
|
75
|
-
transformers,
|
|
76
|
-
props: resolvedValue,
|
|
77
|
-
schema: propType.shape,
|
|
78
|
-
signal,
|
|
79
|
-
} );
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if ( propType.kind === 'array' ) {
|
|
83
|
-
resolvedValue = await Promise.all(
|
|
84
|
-
resolvedValue.map( ( item: PropValue ) =>
|
|
85
|
-
transform( item, propKey, propType.item_prop_type, transformers, depth, signal )
|
|
86
|
-
)
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
const transformer = transformers[ value.$$type ];
|
|
91
|
-
|
|
92
|
-
if ( ! transformer ) {
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
try {
|
|
97
|
-
const transformed = await transformer( resolvedValue, { key: propKey, signal } );
|
|
98
|
-
|
|
99
|
-
return transform( transformed, propKey, propType, transformers, depth + 1, signal );
|
|
100
|
-
} catch {
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { type BackgroundImageOverlayPropValue } from '@elementor/editor-props';
|
|
2
|
-
|
|
3
|
-
import { type Transformer } from '../types';
|
|
4
|
-
|
|
5
|
-
export const defaultPositionValue = '0% 0%';
|
|
6
|
-
|
|
7
|
-
const backgroundImageOverlayTransformer: Transformer< BackgroundImageOverlayPropValue[ 'value' ] > = ( value ) => {
|
|
8
|
-
const { 'image-src': imageSrc, size = null, position = null, repeat = null, attachment = null } = value;
|
|
9
|
-
|
|
10
|
-
let resultBackgroundStyle = imageSrc;
|
|
11
|
-
|
|
12
|
-
if ( repeat ) {
|
|
13
|
-
resultBackgroundStyle += ` ${ repeat }`;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
if ( attachment ) {
|
|
17
|
-
resultBackgroundStyle += ` ${ attachment }`;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
if ( position && ! size ) {
|
|
21
|
-
resultBackgroundStyle += ` ${ position }`;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if ( size ) {
|
|
25
|
-
resultBackgroundStyle += ` ${ position || defaultPositionValue } / ${ size }`;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return resultBackgroundStyle;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
export default backgroundImageOverlayTransformer;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { type StrokePropValue } from '@elementor/editor-props';
|
|
2
|
-
|
|
3
|
-
import { type Transformer } from '../types';
|
|
4
|
-
|
|
5
|
-
const strokeTransformer: Transformer< StrokePropValue[ 'value' ] > = ( value ) => {
|
|
6
|
-
return `${ value.width } ${ value.color }`;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
export default strokeTransformer;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { type PropValue } from '@elementor/editor-props';
|
|
2
|
-
|
|
3
|
-
type TransformerOptions = {
|
|
4
|
-
key: string;
|
|
5
|
-
signal?: AbortSignal;
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
type MaybePromise< T > = T | Promise< T >;
|
|
9
|
-
|
|
10
|
-
export type Transformer< TValue extends PropValue > = (
|
|
11
|
-
value: TValue,
|
|
12
|
-
options: TransformerOptions
|
|
13
|
-
) => MaybePromise< PropValue >;
|
|
14
|
-
|
|
15
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
|
-
export type TransformersMap = Record< string, Transformer< any > >;
|
|
File without changes
|
|
File without changes
|
/package/src/{styles-renderer/transformers → renderers/style-transformers}/background-transformer.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/src/{styles-renderer/transformers → renderers/style-transformers}/primitive-transformer.ts
RENAMED
|
File without changes
|
/package/src/{styles-renderer/transformers → renderers/style-transformers}/shadow-transformer.ts
RENAMED
|
File without changes
|
/package/src/{styles-renderer/transformers → renderers/style-transformers}/size-transformer.ts
RENAMED
|
File without changes
|