@elementor/editor-canvas 0.7.0 → 0.8.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 (43) hide show
  1. package/.turbo/turbo-build.log +9 -9
  2. package/CHANGELOG.md +60 -0
  3. package/dist/index.js +247 -223
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +249 -225
  6. package/dist/index.mjs.map +1 -1
  7. package/package.json +15 -12
  8. package/src/__tests__/init-styles-renderer.test.ts +26 -11
  9. package/src/init-styles-renderer.ts +36 -18
  10. package/src/{styles-renderer → renderers}/__tests__/__mocks__/styles-schema.ts +210 -12
  11. package/src/renderers/__tests__/create-props-resolver.test.ts +175 -0
  12. package/src/renderers/__tests__/create-props-resolver.transformers.test.ts +323 -0
  13. package/src/renderers/__tests__/render-styles.test.ts +126 -0
  14. package/src/renderers/create-props-resolver.ts +123 -0
  15. package/src/{styles-renderer → renderers}/multi-props.ts +1 -1
  16. package/src/{styles-renderer/render.ts → renderers/render-styles.ts} +18 -17
  17. package/src/renderers/style-transformers/background-image-overlay-transformer.ts +24 -0
  18. package/src/renderers/style-transformers/background-image-position-offset-transformer.ts +10 -0
  19. package/src/renderers/style-transformers/background-image-size-scale-transformer.ts +10 -0
  20. package/src/{styles-renderer/transformers → renderers/style-transformers}/create-corner-sizes-transformer.ts +2 -4
  21. package/src/{styles-renderer/transformers → renderers/style-transformers}/create-edge-sizes-transformer.ts +2 -2
  22. package/src/{styles-renderer/transformers → renderers/style-transformers}/image-attachment.ts +1 -1
  23. package/src/{styles-renderer/transformers → renderers/style-transformers}/image-src.ts +4 -7
  24. package/src/renderers/style-transformers/image.ts +25 -0
  25. package/src/{styles-renderer/transformers → renderers/style-transformers}/index.ts +9 -2
  26. package/src/renderers/types.ts +12 -0
  27. package/src/styles-renderer/__tests__/enqueue-used-fonts.test.ts +0 -60
  28. package/src/styles-renderer/__tests__/index.test.ts +0 -777
  29. package/src/styles-renderer/enqueue-used-fonts.ts +0 -22
  30. package/src/styles-renderer/index.ts +0 -2
  31. package/src/styles-renderer/resolve.ts +0 -103
  32. package/src/styles-renderer/transformers/background-image-overlay-transformer.ts +0 -31
  33. package/src/styles-renderer/types.ts +0 -16
  34. /package/src/{styles-renderer → renderers}/errors.ts +0 -0
  35. /package/src/{styles-renderer/transformers → renderers/style-transformers}/background-color-overlay-transformer.ts +0 -0
  36. /package/src/{styles-renderer/transformers → renderers/style-transformers}/background-transformer.ts +0 -0
  37. /package/src/{styles-renderer/transformers → renderers/style-transformers}/create-combine-array-transformer.ts +0 -0
  38. /package/src/{styles-renderer/transformers → renderers/style-transformers}/dimensions.ts +0 -0
  39. /package/src/{styles-renderer/transformers → renderers/style-transformers}/layout-direction-transformer.ts +0 -0
  40. /package/src/{styles-renderer/transformers → renderers/style-transformers}/primitive-transformer.ts +0 -0
  41. /package/src/{styles-renderer/transformers → renderers/style-transformers}/shadow-transformer.ts +0 -0
  42. /package/src/{styles-renderer/transformers → renderers/style-transformers}/size-transformer.ts +0 -0
  43. /package/src/{styles-renderer/transformers → renderers/style-transformers}/stroke-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,2 +0,0 @@
1
- export { default as transformers } from './transformers';
2
- export { default as render } from './render';
@@ -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,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