@elementor/editor-canvas 3.33.0-102 → 3.33.0-104

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 CHANGED
@@ -688,25 +688,25 @@ var attributesTransformer = createTransformer((values) => {
688
688
 
689
689
  // src/transformers/settings/classes-transformer.ts
690
690
  var import_editor_styles_repository3 = require("@elementor/editor-styles-repository");
691
+ function transformClassId(id, cache) {
692
+ if (!cache.has(id)) {
693
+ const provider2 = import_editor_styles_repository3.stylesRepository.getProviders().find((p) => {
694
+ return p.actions.all().find((style) => style.id === id);
695
+ });
696
+ if (!provider2) {
697
+ return id;
698
+ }
699
+ cache.set(id, provider2.getKey());
700
+ }
701
+ const providerKey = cache.get(id);
702
+ const provider = import_editor_styles_repository3.stylesRepository.getProviderByKey(providerKey);
703
+ return provider?.actions.resolveCssName(id) ?? id;
704
+ }
691
705
  function createClassesTransformer() {
692
706
  const cache = /* @__PURE__ */ new Map();
693
707
  return createTransformer((value) => {
694
- return value.map((id) => {
695
- if (!cache.has(id)) {
696
- cache.set(id, getCssName(id));
697
- }
698
- return cache.get(id);
699
- }).filter(Boolean);
700
- });
701
- }
702
- function getCssName(id) {
703
- const provider = import_editor_styles_repository3.stylesRepository.getProviders().find((p) => {
704
- return p.actions.all().find((style) => style.id === id);
708
+ return value.map((id) => transformClassId(id, cache)).filter(Boolean);
705
709
  });
706
- if (!provider) {
707
- return id;
708
- }
709
- return provider.actions.resolveCssName(id);
710
710
  }
711
711
 
712
712
  // src/transformers/settings/link-transformer.ts
package/dist/index.mjs CHANGED
@@ -654,25 +654,25 @@ var attributesTransformer = createTransformer((values) => {
654
654
 
655
655
  // src/transformers/settings/classes-transformer.ts
656
656
  import { stylesRepository as stylesRepository3 } from "@elementor/editor-styles-repository";
657
+ function transformClassId(id, cache) {
658
+ if (!cache.has(id)) {
659
+ const provider2 = stylesRepository3.getProviders().find((p) => {
660
+ return p.actions.all().find((style) => style.id === id);
661
+ });
662
+ if (!provider2) {
663
+ return id;
664
+ }
665
+ cache.set(id, provider2.getKey());
666
+ }
667
+ const providerKey = cache.get(id);
668
+ const provider = stylesRepository3.getProviderByKey(providerKey);
669
+ return provider?.actions.resolveCssName(id) ?? id;
670
+ }
657
671
  function createClassesTransformer() {
658
672
  const cache = /* @__PURE__ */ new Map();
659
673
  return createTransformer((value) => {
660
- return value.map((id) => {
661
- if (!cache.has(id)) {
662
- cache.set(id, getCssName(id));
663
- }
664
- return cache.get(id);
665
- }).filter(Boolean);
666
- });
667
- }
668
- function getCssName(id) {
669
- const provider = stylesRepository3.getProviders().find((p) => {
670
- return p.actions.all().find((style) => style.id === id);
674
+ return value.map((id) => transformClassId(id, cache)).filter(Boolean);
671
675
  });
672
- if (!provider) {
673
- return id;
674
- }
675
- return provider.actions.resolveCssName(id);
676
676
  }
677
677
 
678
678
  // src/transformers/settings/link-transformer.ts
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-102",
4
+ "version": "3.33.0-104",
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-102",
41
- "@elementor/editor-notifications": "3.33.0-102",
42
- "@elementor/editor-documents": "3.33.0-102",
43
- "@elementor/editor-elements": "3.33.0-102",
44
- "@elementor/editor-props": "3.33.0-102",
45
- "@elementor/editor-responsive": "3.33.0-102",
46
- "@elementor/editor-styles": "3.33.0-102",
47
- "@elementor/editor-styles-repository": "3.33.0-102",
48
- "@elementor/editor-v1-adapters": "3.33.0-102",
49
- "@elementor/twing": "3.33.0-102",
40
+ "@elementor/editor": "3.33.0-104",
41
+ "@elementor/editor-notifications": "3.33.0-104",
42
+ "@elementor/editor-documents": "3.33.0-104",
43
+ "@elementor/editor-elements": "3.33.0-104",
44
+ "@elementor/editor-props": "3.33.0-104",
45
+ "@elementor/editor-responsive": "3.33.0-104",
46
+ "@elementor/editor-styles": "3.33.0-104",
47
+ "@elementor/editor-styles-repository": "3.33.0-104",
48
+ "@elementor/editor-v1-adapters": "3.33.0-104",
49
+ "@elementor/twing": "3.33.0-104",
50
50
  "@elementor/ui": "1.36.12",
51
- "@elementor/utils": "3.33.0-102",
52
- "@elementor/wp-media": "3.33.0-102",
51
+ "@elementor/utils": "3.33.0-104",
52
+ "@elementor/wp-media": "3.33.0-104",
53
53
  "@floating-ui/react": "^0.27.5",
54
54
  "@wordpress/i18n": "^5.13.0"
55
55
  },
@@ -1,7 +1,5 @@
1
- import { createMockStyleDefinition, createMockStylesProvider } from 'test-utils';
2
1
  import {
3
2
  booleanPropTypeUtil,
4
- classesPropTypeUtil,
5
3
  imageAttachmentIdPropType,
6
4
  imagePropTypeUtil,
7
5
  imageSrcPropTypeUtil,
@@ -12,7 +10,6 @@ import {
12
10
  stringPropTypeUtil,
13
11
  urlPropTypeUtil,
14
12
  } from '@elementor/editor-props';
15
- import { stylesRepository } from '@elementor/editor-styles-repository';
16
13
  import { getMediaAttachment } from '@elementor/wp-media';
17
14
 
18
15
  import { initSettingsTransformers } from '../init-settings-transformers';
@@ -21,7 +18,6 @@ import { settingsTransformersRegistry } from '../settings-transformers-registry'
21
18
  import { mockAttachmentData } from './mock-attachment-data';
22
19
  import {
23
20
  booleanPropType,
24
- classesPropType,
25
21
  imagePropType,
26
22
  linkPropType,
27
23
  numberPropType,
@@ -69,42 +65,6 @@ describe( 'settings props resolver', () => {
69
65
  boolean: true,
70
66
  },
71
67
  },
72
- {
73
- name: 'classes',
74
- props: {
75
- classes: classesPropTypeUtil.create( [
76
- 'test-1',
77
- 'test-2-suffix',
78
- 'without-provider',
79
- '',
80
- null as unknown as string,
81
- undefined as unknown as string,
82
- ] ),
83
- },
84
- prepare: () => {
85
- jest.mocked( stylesRepository.getProviders ).mockReturnValue( [
86
- createMockStylesProvider( {
87
- key: 'test-1-provider',
88
- actions: {
89
- all: () => [ createMockStyleDefinition( { id: 'test-1' } ) ],
90
- },
91
- } ),
92
- createMockStylesProvider( {
93
- key: 'test-2-provider',
94
- actions: {
95
- resolveCssName: ( id ) => `${ id }-suffix`,
96
- all: () => [ createMockStyleDefinition( { id: 'test-2' } ) ],
97
- },
98
- } ),
99
- ] );
100
- },
101
- schema: {
102
- classes: classesPropType(),
103
- },
104
- expected: {
105
- classes: [ 'test-1', 'test-2-suffix', 'without-provider' ],
106
- },
107
- },
108
68
  {
109
69
  name: 'link',
110
70
  props: {
@@ -0,0 +1,83 @@
1
+ import { createClassesTransformer } from '../classes-transformer';
2
+
3
+ jest.mock( '@elementor/editor-styles-repository', () => ( {
4
+ stylesRepository: {
5
+ getProviders: jest.fn(),
6
+ getProviderByKey: jest.fn(),
7
+ },
8
+ } ) );
9
+
10
+ const mockStylesRepository = require( '@elementor/editor-styles-repository' ).stylesRepository;
11
+
12
+ describe( 'createClassesTransformer', () => {
13
+ const createMockProvider = ( key: string, styles: Array< { id: string } > = [] ) => ( {
14
+ getKey: () => key,
15
+ actions: {
16
+ all: () => styles,
17
+ resolveCssName: jest.fn( ( id: string ): string | null => `resolved-${ id }` ),
18
+ },
19
+ } );
20
+
21
+ const createMockStyle = ( id: string ) => ( { id } );
22
+
23
+ beforeEach( () => {
24
+ jest.clearAllMocks();
25
+ } );
26
+
27
+ it( 'should transform class IDs using provider CSS names', () => {
28
+ const provider = createMockProvider( 'test-provider', [ createMockStyle( 'class-1' ) ] );
29
+ const provider2 = createMockProvider( 'test-provider-2', [ createMockStyle( 'class-2' ) ] );
30
+ mockStylesRepository.getProviders.mockReturnValue( [ provider, provider2 ] );
31
+ mockStylesRepository.getProviderByKey.mockReturnValueOnce( provider ).mockReturnValueOnce( provider2 );
32
+ const transformer = createClassesTransformer();
33
+
34
+ const result = transformer( [ 'class-1', 'class-2' ], { key: 'test-key' } );
35
+
36
+ expect( result ).toEqual( [ 'resolved-class-1', 'resolved-class-2' ] );
37
+ expect( provider.actions.resolveCssName ).toHaveBeenCalledWith( 'class-1' );
38
+ } );
39
+
40
+ it( 'should return original ID when no provider is found', () => {
41
+ mockStylesRepository.getProviders.mockReturnValue( [] );
42
+ const transformer = createClassesTransformer();
43
+
44
+ const result = transformer( [ 'unknown-class' ], { key: 'test-key' } );
45
+
46
+ expect( result ).toEqual( [ 'unknown-class' ] );
47
+ } );
48
+
49
+ it( 'should return original ID when provider has no matching style', () => {
50
+ const provider = createMockProvider( 'test-provider', [ createMockStyle( 'other-class' ) ] );
51
+ mockStylesRepository.getProviders.mockReturnValue( [ provider ] );
52
+ const transformer = createClassesTransformer();
53
+
54
+ const result = transformer( [ 'unknown-class' ], { key: 'test-key' } );
55
+
56
+ expect( result ).toEqual( [ 'unknown-class' ] );
57
+ } );
58
+
59
+ it( 'should cache provider keys to avoid repeated lookups', () => {
60
+ const provider = createMockProvider( 'test-provider', [ createMockStyle( 'class-1' ) ] );
61
+ mockStylesRepository.getProviders.mockReturnValue( [ provider ] );
62
+ mockStylesRepository.getProviderByKey.mockReturnValue( provider );
63
+ const transformer = createClassesTransformer();
64
+
65
+ transformer( [ 'class-1' ], { key: 'test-key' } );
66
+ transformer( [ 'class-1' ], { key: 'test-key' } );
67
+
68
+ expect( mockStylesRepository.getProviders ).toHaveBeenCalledTimes( 1 );
69
+ expect( provider.actions.resolveCssName ).toHaveBeenCalledTimes( 2 );
70
+ } );
71
+
72
+ it( 'should handle multiple class IDs', () => {
73
+ const provider1 = createMockProvider( 'provider-1', [ createMockStyle( 'class-1' ) ] );
74
+ const provider2 = createMockProvider( 'provider-2', [ createMockStyle( 'class-2' ) ] );
75
+ mockStylesRepository.getProviders.mockReturnValue( [ provider1, provider2 ] );
76
+ mockStylesRepository.getProviderByKey.mockReturnValueOnce( provider1 ).mockReturnValueOnce( provider2 );
77
+ const transformer = createClassesTransformer();
78
+
79
+ const result = transformer( [ 'class-1', 'class-2' ], { key: 'test-key' } );
80
+
81
+ expect( result ).toEqual( [ 'resolved-class-1', 'resolved-class-2' ] );
82
+ } );
83
+ } );
@@ -2,30 +2,30 @@ import { stylesRepository } from '@elementor/editor-styles-repository';
2
2
 
3
3
  import { createTransformer } from '../create-transformer';
4
4
 
5
+ function transformClassId( id: string, cache: Map< string, string > ): string {
6
+ if ( ! cache.has( id ) ) {
7
+ const provider = stylesRepository.getProviders().find( ( p ) => {
8
+ return p.actions.all().find( ( style ) => style.id === id );
9
+ } );
10
+
11
+ if ( ! provider ) {
12
+ return id;
13
+ }
14
+
15
+ cache.set( id, provider.getKey() );
16
+ }
17
+
18
+ const providerKey = cache.get( id ) as string;
19
+
20
+ const provider = stylesRepository.getProviderByKey( providerKey );
21
+
22
+ return provider?.actions.resolveCssName( id ) ?? id;
23
+ }
24
+
5
25
  export function createClassesTransformer() {
6
26
  const cache = new Map< string, string >();
7
27
 
8
28
  return createTransformer( ( value: string[] ) => {
9
- return value
10
- .map( ( id ) => {
11
- if ( ! cache.has( id ) ) {
12
- cache.set( id, getCssName( id ) );
13
- }
14
-
15
- return cache.get( id );
16
- } )
17
- .filter( Boolean );
18
- } );
19
- }
20
-
21
- function getCssName( id: string ) {
22
- const provider = stylesRepository.getProviders().find( ( p ) => {
23
- return p.actions.all().find( ( style ) => style.id === id );
29
+ return value.map( ( id ) => transformClassId( id, cache ) ).filter( Boolean );
24
30
  } );
25
-
26
- if ( ! provider ) {
27
- return id;
28
- }
29
-
30
- return provider.actions.resolveCssName( id );
31
31
  }