@elementor/editor-canvas 0.8.0 → 0.10.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/.turbo/turbo-build.log +10 -10
  2. package/CHANGELOG.md +29 -0
  3. package/dist/index.d.mts +13 -1
  4. package/dist/index.d.ts +13 -1
  5. package/dist/index.js +203 -220
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +192 -222
  8. package/dist/index.mjs.map +1 -1
  9. package/package.json +5 -5
  10. package/src/{renderers/__tests__ → __tests__}/__mocks__/styles-schema.ts +11 -4
  11. package/src/__tests__/init-styles-renderer.test.ts +8 -3
  12. package/src/{renderers/__tests__/create-props-resolver.transformers.test.ts → __tests__/styles-prop-resolver.test.ts} +23 -27
  13. package/src/index.ts +2 -0
  14. package/src/init-style-transformers.ts +58 -0
  15. package/src/init-styles-renderer.ts +8 -6
  16. package/src/init.tsx +2 -0
  17. package/src/renderers/__tests__/create-props-resolver.test.ts +43 -34
  18. package/src/renderers/__tests__/render-styles.test.ts +3 -15
  19. package/src/renderers/create-props-resolver.ts +32 -31
  20. package/src/renderers/render-styles.ts +4 -7
  21. package/src/style-transformers-registry.ts +3 -0
  22. package/src/transformers/create-transformer.ts +6 -0
  23. package/src/transformers/create-transformers-registry.ts +16 -0
  24. package/src/transformers/styles/background-color-overlay-transformer.ts +5 -0
  25. package/src/transformers/styles/background-image-overlay-transformer.ts +28 -0
  26. package/src/transformers/styles/background-image-position-offset-transformer.ts +10 -0
  27. package/src/transformers/styles/background-image-size-scale-transformer.ts +10 -0
  28. package/src/transformers/styles/background-transformer.ts +13 -0
  29. package/src/transformers/styles/create-combine-array-transformer.ts +5 -0
  30. package/src/transformers/styles/create-multi-props-transformer.ts +14 -0
  31. package/src/transformers/styles/image-attachment-transformer.ts +15 -0
  32. package/src/transformers/styles/image-src-transformer.ts +11 -0
  33. package/src/transformers/styles/image-transformer.ts +34 -0
  34. package/src/transformers/styles/primitive-transformer.ts +3 -0
  35. package/src/transformers/styles/shadow-transformer.ts +16 -0
  36. package/src/transformers/styles/size-transformer.ts +10 -0
  37. package/src/transformers/styles/stroke-transformer.ts +17 -0
  38. package/src/transformers/types.ts +14 -0
  39. package/src/renderers/style-transformers/background-color-overlay-transformer.ts +0 -9
  40. package/src/renderers/style-transformers/background-image-overlay-transformer.ts +0 -24
  41. package/src/renderers/style-transformers/background-image-position-offset-transformer.ts +0 -10
  42. package/src/renderers/style-transformers/background-image-size-scale-transformer.ts +0 -10
  43. package/src/renderers/style-transformers/background-transformer.ts +0 -12
  44. package/src/renderers/style-transformers/create-combine-array-transformer.ts +0 -9
  45. package/src/renderers/style-transformers/create-corner-sizes-transformer.ts +0 -31
  46. package/src/renderers/style-transformers/create-edge-sizes-transformer.ts +0 -31
  47. package/src/renderers/style-transformers/dimensions.ts +0 -20
  48. package/src/renderers/style-transformers/image-attachment.ts +0 -14
  49. package/src/renderers/style-transformers/image-src.ts +0 -8
  50. package/src/renderers/style-transformers/image.ts +0 -25
  51. package/src/renderers/style-transformers/index.ts +0 -48
  52. package/src/renderers/style-transformers/layout-direction-transformer.ts +0 -20
  53. package/src/renderers/style-transformers/primitive-transformer.ts +0 -7
  54. package/src/renderers/style-transformers/shadow-transformer.ts +0 -11
  55. package/src/renderers/style-transformers/size-transformer.ts +0 -9
  56. package/src/renderers/style-transformers/stroke-transformer.ts +0 -9
  57. package/src/renderers/types.ts +0 -12
@@ -1,10 +0,0 @@
1
- import type { BackgroundImageSizeScalePropValue } from '@elementor/editor-props';
2
-
3
- import { type Transformer } from '../types';
4
-
5
- const backgroundImageSizeScaleTransformer: Transformer< BackgroundImageSizeScalePropValue[ 'value' ] > = ( {
6
- width = 'auto',
7
- height = 'auto',
8
- } ) => `${ width } ${ height }`;
9
-
10
- export default backgroundImageSizeScaleTransformer;
@@ -1,12 +0,0 @@
1
- import { type BackgroundPropValue } from '@elementor/editor-props';
2
-
3
- import { type Transformer } from '../types';
4
-
5
- const backgroundTransformer: Transformer< BackgroundPropValue[ 'value' ] > = ( value ) => {
6
- const overlays = value[ 'background-overlay' ] ?? '';
7
- const color = value.color ?? '';
8
-
9
- return `${ overlays } ${ color }`.trim();
10
- };
11
-
12
- export default backgroundTransformer;
@@ -1,9 +0,0 @@
1
- import { type Transformer } from '../types';
2
-
3
- type CreateCombineArrayTransformer = ( delimiter: string ) => Transformer< Array< string | number > >;
4
-
5
- const createCombineArrayTransformer: CreateCombineArrayTransformer = ( delimiter ) => {
6
- return ( value ) => value.filter( Boolean ).join( delimiter );
7
- };
8
-
9
- export default createCombineArrayTransformer;
@@ -1,31 +0,0 @@
1
- import { type Props, type PropValue } from '@elementor/editor-props';
2
-
3
- import { createMultiPropsValue } from '../multi-props';
4
- import { type Transformer } from '../types';
5
-
6
- type CornerSizes = {
7
- top?: PropValue;
8
- right?: PropValue;
9
- bottom?: PropValue;
10
- left?: PropValue;
11
- };
12
-
13
- type CreateCornerSizesTransformer = ( keyGenerator: ( cornerKey: string ) => string ) => Transformer< CornerSizes >;
14
-
15
- const validCorners = [ 'top-left', 'top-right', 'bottom-left', 'bottom-right' ];
16
-
17
- const createCornerSizesTransformer: CreateCornerSizesTransformer = ( keyGenerator ) => ( value ) => {
18
- const props = Object.entries( value ).reduce< Props >( ( acc, [ corner, cornerValue ] ) => {
19
- if ( validCorners.includes( corner ) ) {
20
- const key = keyGenerator( corner );
21
-
22
- acc[ key ] = cornerValue;
23
- }
24
-
25
- return acc;
26
- }, {} );
27
-
28
- return createMultiPropsValue( props );
29
- };
30
-
31
- export default createCornerSizesTransformer;
@@ -1,31 +0,0 @@
1
- import { type Props, type PropValue } from '@elementor/editor-props';
2
-
3
- import { createMultiPropsValue } from '../multi-props';
4
- import { type Transformer } from '../types';
5
-
6
- type EdgeSizes = {
7
- top?: PropValue;
8
- right?: PropValue;
9
- bottom?: PropValue;
10
- left?: PropValue;
11
- };
12
-
13
- type CreateEdgeSizesTransformer = ( keyGenerator: ( edgeKey: string ) => string ) => Transformer< EdgeSizes >;
14
-
15
- const validEdges = [ 'top', 'right', 'bottom', 'left' ];
16
-
17
- const createEdgeSizesTransformer: CreateEdgeSizesTransformer = ( keyGenerator ) => ( value ) => {
18
- const props = Object.entries( value ).reduce< Props >( ( acc, [ edge, edgeValue ] ) => {
19
- if ( validEdges.includes( edge ) ) {
20
- const key = keyGenerator( edge );
21
-
22
- acc[ key ] = edgeValue;
23
- }
24
-
25
- return acc;
26
- }, {} );
27
-
28
- return createMultiPropsValue( props );
29
- };
30
-
31
- export default createEdgeSizesTransformer;
@@ -1,20 +0,0 @@
1
- import { type DimensionsPropValue, type Props } from '@elementor/editor-props';
2
-
3
- import { createMultiPropsValue } from '../multi-props';
4
- import { type Transformer } from '../types';
5
-
6
- const validKeys = [ 'top', 'right', 'bottom', 'left' ];
7
-
8
- const dimensions: Transformer< DimensionsPropValue[ 'value' ] > = ( value, { key } ) => {
9
- const parsed = Object.entries( value ).reduce< Props >( ( acc, [ dimensionKey, dimensionValue ] ) => {
10
- if ( dimensionValue && validKeys.includes( dimensionKey ) ) {
11
- acc[ `${ key }-${ dimensionKey }` ] = dimensionValue;
12
- }
13
-
14
- return acc;
15
- }, {} );
16
-
17
- return createMultiPropsValue( parsed );
18
- };
19
-
20
- export default dimensions;
@@ -1,14 +0,0 @@
1
- import { type ImageSrcPropValue } from '@elementor/editor-props';
2
- import { getMediaAttachment } from '@elementor/wp-media';
3
-
4
- import { type Transformer } from '../types';
5
-
6
- export const imageAttachmentTransformer: Transformer< ImageSrcPropValue[ 'value' ][ 'id' ] > = async ( value ) => {
7
- const attachment = await getMediaAttachment( { id: value } );
8
-
9
- if ( ! attachment ) {
10
- return null;
11
- }
12
-
13
- return attachment;
14
- };
@@ -1,8 +0,0 @@
1
- import { type ImageSrcPropValue } from '@elementor/editor-props';
2
-
3
- import { type Transformer } from '../types';
4
-
5
- export const imageSrcTransformer: Transformer< ImageSrcPropValue[ 'value' ] > = ( value ) => ( {
6
- attachment: value.id,
7
- url: value.url,
8
- } );
@@ -1,25 +0,0 @@
1
- import { type ImagePropValue } from '@elementor/editor-props';
2
-
3
- import { type Transformer } from '../types';
4
-
5
- export const imageTransformer: Transformer< ImagePropValue[ 'value' ] > = ( value ) => {
6
- const { src, size } = value;
7
-
8
- if ( src.url ) {
9
- return `url(${ src.url })`;
10
- }
11
-
12
- const sizeUrl = src.attachment?.sizes[ size ]?.url;
13
-
14
- if ( sizeUrl ) {
15
- return `url(${ sizeUrl })`;
16
- }
17
-
18
- const attachmentUrl = src.attachment?.url;
19
-
20
- if ( attachmentUrl ) {
21
- return `url(${ attachmentUrl })`;
22
- }
23
-
24
- return null;
25
- };
@@ -1,48 +0,0 @@
1
- import { type TransformersMap } from '../types';
2
- import backgroundColorOverlayTransformer from './background-color-overlay-transformer';
3
- import backgroundImageOverlayTransformer from './background-image-overlay-transformer';
4
- import backgroundImagePositionOffsetTransformer from './background-image-position-offset-transformer';
5
- import backgroundImageSizeScaleTransformer from './background-image-size-scale-transformer';
6
- import { default as background } from './background-transformer';
7
- import { default as createCombineArrayTransformer } from './create-combine-array-transformer';
8
- import createCornerSizesTransformer from './create-corner-sizes-transformer';
9
- import createEdgeSizesTransformer from './create-edge-sizes-transformer';
10
- import { default as dimensions } from './dimensions';
11
- import { imageTransformer } from './image';
12
- import { imageAttachmentTransformer } from './image-attachment';
13
- import { imageSrcTransformer } from './image-src';
14
- import { default as layoutDirection } from './layout-direction-transformer';
15
- import { primitiveTransformer } from './primitive-transformer';
16
- import { default as shadow } from './shadow-transformer';
17
- import { default as size } from './size-transformer';
18
- import { default as stroke } from './stroke-transformer';
19
-
20
- export const styleTransformers: TransformersMap = {
21
- size,
22
- shadow,
23
- stroke,
24
- background,
25
-
26
- color: primitiveTransformer,
27
- number: primitiveTransformer,
28
- string: primitiveTransformer,
29
- url: primitiveTransformer,
30
-
31
- dimensions,
32
- 'background-color-overlay': backgroundColorOverlayTransformer,
33
- 'background-image-overlay': backgroundImageOverlayTransformer,
34
- 'background-image-position-offset': backgroundImagePositionOffsetTransformer,
35
- 'background-image-size-scale': backgroundImageSizeScaleTransformer,
36
- 'background-overlay': createCombineArrayTransformer( ',' ),
37
-
38
- 'box-shadow': createCombineArrayTransformer( ',' ),
39
-
40
- 'border-width': createEdgeSizesTransformer( ( edgeKey ) => `border-${ edgeKey }-width` ),
41
- 'border-radius': createCornerSizesTransformer( ( cornerKey ) => `border-${ cornerKey }-radius` ),
42
-
43
- 'image-attachment-id': imageAttachmentTransformer,
44
- 'image-src': imageSrcTransformer,
45
- image: imageTransformer,
46
-
47
- 'layout-direction': layoutDirection,
48
- };
@@ -1,20 +0,0 @@
1
- import { type LayoutDirectionPropValue, type Props } from '@elementor/editor-props';
2
-
3
- import { createMultiPropsValue } from '../multi-props';
4
- import { type Transformer } from '../types';
5
-
6
- const validKeys = [ 'row', 'column' ];
7
-
8
- const layoutDirectionTransformer: Transformer< LayoutDirectionPropValue[ 'value' ] > = ( value, { key } ) => {
9
- const parsed = Object.entries( value ).reduce< Props >( ( acc, [ dimensionKey, dimensionValue ] ) => {
10
- if ( dimensionValue && validKeys.includes( dimensionKey ) ) {
11
- acc[ `${ dimensionKey }-${ key }` ] = dimensionValue;
12
- }
13
-
14
- return acc;
15
- }, {} );
16
-
17
- return createMultiPropsValue( parsed );
18
- };
19
-
20
- export default layoutDirectionTransformer;
@@ -1,7 +0,0 @@
1
- import { type Transformer } from '../types';
2
-
3
- type Primitive = string | number | boolean;
4
-
5
- export const primitiveTransformer: Transformer< Primitive > = ( value ) => {
6
- return value;
7
- };
@@ -1,11 +0,0 @@
1
- import { type ShadowPropValue } from '@elementor/editor-props';
2
-
3
- import { type Transformer } from '../types';
4
-
5
- const shadowTransformer: Transformer< ShadowPropValue[ 'value' ] > = ( value ) => {
6
- return [ value.hOffset, value.vOffset, value.blur, value.spread, value.color, value.position ]
7
- .filter( Boolean )
8
- .join( ' ' );
9
- };
10
-
11
- export default shadowTransformer;
@@ -1,9 +0,0 @@
1
- import { type SizePropValue } from '@elementor/editor-props';
2
-
3
- import { type Transformer } from '../types';
4
-
5
- const sizeTransformer: Transformer< SizePropValue[ 'value' ] > = ( value ) => {
6
- return `${ value.size }${ value.unit }`;
7
- };
8
-
9
- export default sizeTransformer;
@@ -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,12 +0,0 @@
1
- import type { PropValue } from '@elementor/editor-props';
2
-
3
- export type Transformer< TValue extends PropValue > = (
4
- value: TValue,
5
- options: {
6
- key: string;
7
- signal?: AbortSignal;
8
- }
9
- ) => unknown;
10
-
11
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
- export type TransformersMap = Record< string, Transformer< any > >;