@elementor/editor-styles-repository 0.2.0 → 0.3.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 +10 -10
- package/CHANGELOG.md +6 -0
- package/dist/index.d.mts +5 -3
- package/dist/index.d.ts +5 -3
- package/dist/index.js +13 -14
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +13 -14
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/elements-styles-provider.test.ts +9 -9
- package/src/elements-styles-provider.ts +3 -7
- package/src/init.ts +1 -1
- package/src/utils/__tests__/create-styles-repository.test.ts +15 -21
- package/src/utils/create-styles-repository.ts +14 -10
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @elementor/editor-styles-repository@0.
|
|
2
|
+
> @elementor/editor-styles-repository@0.3.0 build
|
|
3
3
|
> tsup --config=../../tsup.build.ts
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: src/index.ts
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
[34mCLI[39m Cleaning output folder
|
|
11
11
|
[34mESM[39m Build start
|
|
12
12
|
[34mCJS[39m Build start
|
|
13
|
-
[32mESM[39m [1mdist/index.mjs [22m[32m2.
|
|
14
|
-
[32mESM[39m [1mdist/index.mjs.map [22m[32m5.
|
|
15
|
-
[32mESM[39m ⚡️ Build success in
|
|
16
|
-
[32mCJS[39m [1mdist/index.js [22m[32m3.
|
|
17
|
-
[32mCJS[39m [1mdist/index.js.map [22m[32m5.
|
|
18
|
-
[32mCJS[39m ⚡️ Build success in
|
|
13
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m2.22 KB[39m
|
|
14
|
+
[32mESM[39m [1mdist/index.mjs.map [22m[32m5.02 KB[39m
|
|
15
|
+
[32mESM[39m ⚡️ Build success in 55ms
|
|
16
|
+
[32mCJS[39m [1mdist/index.js [22m[32m3.50 KB[39m
|
|
17
|
+
[32mCJS[39m [1mdist/index.js.map [22m[32m5.07 KB[39m
|
|
18
|
+
[32mCJS[39m ⚡️ Build success in 56ms
|
|
19
19
|
[34mDTS[39m Build start
|
|
20
|
-
[32mDTS[39m ⚡️ Build success in
|
|
21
|
-
[32mDTS[39m [1mdist/index.d.mts [22m[
|
|
22
|
-
[32mDTS[39m [1mdist/index.d.ts [22m[
|
|
20
|
+
[32mDTS[39m ⚡️ Build success in 4336ms
|
|
21
|
+
[32mDTS[39m [1mdist/index.d.mts [22m[32m990.00 B[39m
|
|
22
|
+
[32mDTS[39m [1mdist/index.d.ts [22m[32m990.00 B[39m
|
package/CHANGELOG.md
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import * as _elementor_editor_styles from '@elementor/editor-styles';
|
|
2
|
-
import {
|
|
2
|
+
import { StyleDefinition } from '@elementor/editor-styles';
|
|
3
3
|
|
|
4
4
|
type StyleProviderMeta = Record<string, unknown>;
|
|
5
5
|
type StylesProvider = {
|
|
6
|
-
|
|
6
|
+
key: string;
|
|
7
|
+
priority: number;
|
|
8
|
+
get: (meta?: StyleProviderMeta) => StyleDefinition[];
|
|
7
9
|
subscribe: (callback: () => void) => () => void;
|
|
8
10
|
};
|
|
9
11
|
|
|
10
12
|
declare const stylesRepository: {
|
|
11
13
|
all: (meta?: StyleProviderMeta) => _elementor_editor_styles.StyleDefinition[];
|
|
12
14
|
allByProvider: (meta?: StyleProviderMeta) => (readonly [string, _elementor_editor_styles.StyleDefinition[]])[];
|
|
13
|
-
register: (
|
|
15
|
+
register: (provider: StylesProvider) => void;
|
|
14
16
|
subscribe: (cb: () => void) => () => void;
|
|
15
17
|
};
|
|
16
18
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import * as _elementor_editor_styles from '@elementor/editor-styles';
|
|
2
|
-
import {
|
|
2
|
+
import { StyleDefinition } from '@elementor/editor-styles';
|
|
3
3
|
|
|
4
4
|
type StyleProviderMeta = Record<string, unknown>;
|
|
5
5
|
type StylesProvider = {
|
|
6
|
-
|
|
6
|
+
key: string;
|
|
7
|
+
priority: number;
|
|
8
|
+
get: (meta?: StyleProviderMeta) => StyleDefinition[];
|
|
7
9
|
subscribe: (callback: () => void) => () => void;
|
|
8
10
|
};
|
|
9
11
|
|
|
10
12
|
declare const stylesRepository: {
|
|
11
13
|
all: (meta?: StyleProviderMeta) => _elementor_editor_styles.StyleDefinition[];
|
|
12
14
|
allByProvider: (meta?: StyleProviderMeta) => (readonly [string, _elementor_editor_styles.StyleDefinition[]])[];
|
|
13
|
-
register: (
|
|
15
|
+
register: (provider: StylesProvider) => void;
|
|
14
16
|
subscribe: (cb: () => void) => () => void;
|
|
15
17
|
};
|
|
16
18
|
|
package/dist/index.js
CHANGED
|
@@ -28,20 +28,21 @@ module.exports = __toCommonJS(index_exports);
|
|
|
28
28
|
|
|
29
29
|
// src/utils/create-styles-repository.ts
|
|
30
30
|
var createStylesRepository = () => {
|
|
31
|
-
const providers =
|
|
32
|
-
const
|
|
33
|
-
providers.
|
|
31
|
+
const providers = [];
|
|
32
|
+
const getProvidersByPriority = () => {
|
|
33
|
+
return providers.slice(0).sort((a, b) => a.priority > b.priority ? -1 : 1);
|
|
34
|
+
};
|
|
35
|
+
const register = (provider) => {
|
|
36
|
+
providers.push(provider);
|
|
34
37
|
};
|
|
35
38
|
const allByProvider = (meta = {}) => {
|
|
36
|
-
return
|
|
37
|
-
([key, provider]) => [key, Object.values(provider.get(meta))]
|
|
38
|
-
);
|
|
39
|
+
return getProvidersByPriority().map((provider) => [provider.key, provider.get(meta)]);
|
|
39
40
|
};
|
|
40
41
|
const all = (meta = {}) => {
|
|
41
|
-
return
|
|
42
|
+
return getProvidersByPriority().flatMap((provider) => provider.get(meta));
|
|
42
43
|
};
|
|
43
44
|
const subscribe = (cb) => {
|
|
44
|
-
const unsubscribes =
|
|
45
|
+
const unsubscribes = providers.map((provider) => {
|
|
45
46
|
return provider.subscribe(cb);
|
|
46
47
|
});
|
|
47
48
|
return () => {
|
|
@@ -72,16 +73,14 @@ var import_editor_elements = require("@elementor/editor-elements");
|
|
|
72
73
|
var import_editor_v1_adapters = require("@elementor/editor-v1-adapters");
|
|
73
74
|
var ELEMENTS_STYLES_PROVIDER_KEY = "elements";
|
|
74
75
|
var elementsStylesProvider = {
|
|
76
|
+
key: ELEMENTS_STYLES_PROVIDER_KEY,
|
|
77
|
+
priority: 50,
|
|
75
78
|
get: (meta = {}) => {
|
|
76
79
|
let elements = (0, import_editor_elements.getElements)();
|
|
77
80
|
if ("elementId" in meta && meta.elementId) {
|
|
78
81
|
elements = elements.filter((element) => element.id === meta.elementId);
|
|
79
82
|
}
|
|
80
|
-
|
|
81
|
-
const styles = element.model.get("styles");
|
|
82
|
-
return styles ? Object.entries(styles) : [];
|
|
83
|
-
});
|
|
84
|
-
return Object.fromEntries(entries);
|
|
83
|
+
return elements.flatMap((element) => Object.values(element.model.get("styles") ?? {}));
|
|
85
84
|
},
|
|
86
85
|
subscribe: (cb) => {
|
|
87
86
|
return (0, import_editor_v1_adapters.__privateListenTo)(
|
|
@@ -96,7 +95,7 @@ var elementsStylesProvider = {
|
|
|
96
95
|
|
|
97
96
|
// src/init.ts
|
|
98
97
|
function init() {
|
|
99
|
-
stylesRepository.register(
|
|
98
|
+
stylesRepository.register(elementsStylesProvider);
|
|
100
99
|
}
|
|
101
100
|
|
|
102
101
|
// src/index.ts
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/utils/create-styles-repository.ts","../src/styles-repository.ts","../src/hooks/use-all-styles-by-provider.ts","../src/elements-styles-provider.ts","../src/init.ts"],"sourcesContent":["export { type StylesProvider } from './utils/create-styles-repository';\n\nexport { stylesRepository } from './styles-repository';\nexport { useAllStylesByProvider } from './hooks/use-all-styles-by-provider';\n\nexport { ELEMENTS_STYLES_PROVIDER_KEY } from './elements-styles-provider';\n\nimport { init } from './init';\n\ninit();\n","import { type
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/utils/create-styles-repository.ts","../src/styles-repository.ts","../src/hooks/use-all-styles-by-provider.ts","../src/elements-styles-provider.ts","../src/init.ts"],"sourcesContent":["export { type StylesProvider } from './utils/create-styles-repository';\n\nexport { stylesRepository } from './styles-repository';\nexport { useAllStylesByProvider } from './hooks/use-all-styles-by-provider';\n\nexport { ELEMENTS_STYLES_PROVIDER_KEY } from './elements-styles-provider';\n\nimport { init } from './init';\n\ninit();\n","import { type StyleDefinition } from '@elementor/editor-styles';\n\nexport type StyleProviderMeta = Record< string, unknown >;\n\nexport type StylesProvider = {\n\tkey: string;\n\tpriority: number;\n\tget: ( meta?: StyleProviderMeta ) => StyleDefinition[];\n\tsubscribe: ( callback: () => void ) => () => void;\n};\n\nexport const createStylesRepository = () => {\n\tconst providers: StylesProvider[] = [];\n\n\tconst getProvidersByPriority = () => {\n\t\treturn providers.slice( 0 ).sort( ( a, b ) => ( a.priority > b.priority ? -1 : 1 ) );\n\t};\n\n\tconst register = ( provider: StylesProvider ) => {\n\t\tproviders.push( provider );\n\t};\n\n\tconst allByProvider = ( meta: StyleProviderMeta = {} ) => {\n\t\treturn getProvidersByPriority().map( ( provider ) => [ provider.key, provider.get( meta ) ] as const );\n\t};\n\n\tconst all = ( meta: StyleProviderMeta = {} ) => {\n\t\treturn getProvidersByPriority().flatMap( ( provider ) => provider.get( meta ) );\n\t};\n\n\tconst subscribe = ( cb: () => void ) => {\n\t\tconst unsubscribes = providers.map( ( provider ) => {\n\t\t\treturn provider.subscribe( cb );\n\t\t} );\n\n\t\treturn () => {\n\t\t\tunsubscribes.forEach( ( unsubscribe ) => unsubscribe() );\n\t\t};\n\t};\n\n\treturn {\n\t\tall,\n\t\tallByProvider,\n\t\tregister,\n\t\tsubscribe,\n\t};\n};\n","import { createStylesRepository } from './utils/create-styles-repository';\n\nexport const stylesRepository = createStylesRepository();\n","import { useEffect, useReducer } from 'react';\n\nimport { stylesRepository } from '../styles-repository';\nimport { type StyleProviderMeta } from '../utils/create-styles-repository';\n\nexport function useAllStylesByProvider( meta: StyleProviderMeta = {} ) {\n\tconst [ , rerender ] = useReducer( ( prev ) => ! prev, false );\n\n\tuseEffect( () => stylesRepository.subscribe( rerender ), [] );\n\n\treturn stylesRepository.allByProvider( meta );\n}\n","import { getElements } from '@elementor/editor-elements';\nimport { __privateListenTo as listenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { type StylesProvider } from './utils/create-styles-repository';\n\nexport const ELEMENTS_STYLES_PROVIDER_KEY = 'elements';\n\nexport const elementsStylesProvider: StylesProvider = {\n\tkey: ELEMENTS_STYLES_PROVIDER_KEY,\n\tpriority: 50,\n\tget: ( meta = {} ) => {\n\t\tlet elements = getElements();\n\n\t\tif ( 'elementId' in meta && meta.elementId ) {\n\t\t\telements = elements.filter( ( element ) => element.id === meta.elementId );\n\t\t}\n\n\t\treturn elements.flatMap( ( element ) => Object.values( element.model.get( 'styles' ) ?? {} ) );\n\t},\n\tsubscribe: ( cb ) => {\n\t\treturn listenTo(\n\t\t\t[\n\t\t\t\tcommandEndEvent( 'editor/documents/attach-preview' ),\n\t\t\t\tcommandEndEvent( 'document/atomic-widgets/styles' ),\n\t\t\t],\n\t\t\tcb\n\t\t);\n\t},\n};\n","import { elementsStylesProvider } from './elements-styles-provider';\nimport { stylesRepository } from './styles-repository';\n\nexport function init() {\n\tstylesRepository.register( elementsStylesProvider );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACWO,IAAM,yBAAyB,MAAM;AAC3C,QAAM,YAA8B,CAAC;AAErC,QAAM,yBAAyB,MAAM;AACpC,WAAO,UAAU,MAAO,CAAE,EAAE,KAAM,CAAE,GAAG,MAAS,EAAE,WAAW,EAAE,WAAW,KAAK,CAAI;AAAA,EACpF;AAEA,QAAM,WAAW,CAAE,aAA8B;AAChD,cAAU,KAAM,QAAS;AAAA,EAC1B;AAEA,QAAM,gBAAgB,CAAE,OAA0B,CAAC,MAAO;AACzD,WAAO,uBAAuB,EAAE,IAAK,CAAE,aAAc,CAAE,SAAS,KAAK,SAAS,IAAK,IAAK,CAAE,CAAW;AAAA,EACtG;AAEA,QAAM,MAAM,CAAE,OAA0B,CAAC,MAAO;AAC/C,WAAO,uBAAuB,EAAE,QAAS,CAAE,aAAc,SAAS,IAAK,IAAK,CAAE;AAAA,EAC/E;AAEA,QAAM,YAAY,CAAE,OAAoB;AACvC,UAAM,eAAe,UAAU,IAAK,CAAE,aAAc;AACnD,aAAO,SAAS,UAAW,EAAG;AAAA,IAC/B,CAAE;AAEF,WAAO,MAAM;AACZ,mBAAa,QAAS,CAAE,gBAAiB,YAAY,CAAE;AAAA,IACxD;AAAA,EACD;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;;;AC5CO,IAAM,mBAAmB,uBAAuB;;;ACFvD,mBAAsC;AAK/B,SAAS,uBAAwB,OAA0B,CAAC,GAAI;AACtE,QAAM,CAAE,EAAE,QAAS,QAAI,yBAAY,CAAE,SAAU,CAAE,MAAM,KAAM;AAE7D,8BAAW,MAAM,iBAAiB,UAAW,QAAS,GAAG,CAAC,CAAE;AAE5D,SAAO,iBAAiB,cAAe,IAAK;AAC7C;;;ACXA,6BAA4B;AAC5B,gCAA+D;AAIxD,IAAM,+BAA+B;AAErC,IAAM,yBAAyC;AAAA,EACrD,KAAK;AAAA,EACL,UAAU;AAAA,EACV,KAAK,CAAE,OAAO,CAAC,MAAO;AACrB,QAAI,eAAW,oCAAY;AAE3B,QAAK,eAAe,QAAQ,KAAK,WAAY;AAC5C,iBAAW,SAAS,OAAQ,CAAE,YAAa,QAAQ,OAAO,KAAK,SAAU;AAAA,IAC1E;AAEA,WAAO,SAAS,QAAS,CAAE,YAAa,OAAO,OAAQ,QAAQ,MAAM,IAAK,QAAS,KAAK,CAAC,CAAE,CAAE;AAAA,EAC9F;AAAA,EACA,WAAW,CAAE,OAAQ;AACpB,eAAO,0BAAAA;AAAA,MACN;AAAA,YACC,2CAAiB,iCAAkC;AAAA,YACnD,2CAAiB,gCAAiC;AAAA,MACnD;AAAA,MACA;AAAA,IACD;AAAA,EACD;AACD;;;ACzBO,SAAS,OAAO;AACtB,mBAAiB,SAAU,sBAAuB;AACnD;;;ALIA,KAAK;","names":["listenTo"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
// src/utils/create-styles-repository.ts
|
|
2
2
|
var createStylesRepository = () => {
|
|
3
|
-
const providers =
|
|
4
|
-
const
|
|
5
|
-
providers.
|
|
3
|
+
const providers = [];
|
|
4
|
+
const getProvidersByPriority = () => {
|
|
5
|
+
return providers.slice(0).sort((a, b) => a.priority > b.priority ? -1 : 1);
|
|
6
|
+
};
|
|
7
|
+
const register = (provider) => {
|
|
8
|
+
providers.push(provider);
|
|
6
9
|
};
|
|
7
10
|
const allByProvider = (meta = {}) => {
|
|
8
|
-
return
|
|
9
|
-
([key, provider]) => [key, Object.values(provider.get(meta))]
|
|
10
|
-
);
|
|
11
|
+
return getProvidersByPriority().map((provider) => [provider.key, provider.get(meta)]);
|
|
11
12
|
};
|
|
12
13
|
const all = (meta = {}) => {
|
|
13
|
-
return
|
|
14
|
+
return getProvidersByPriority().flatMap((provider) => provider.get(meta));
|
|
14
15
|
};
|
|
15
16
|
const subscribe = (cb) => {
|
|
16
|
-
const unsubscribes =
|
|
17
|
+
const unsubscribes = providers.map((provider) => {
|
|
17
18
|
return provider.subscribe(cb);
|
|
18
19
|
});
|
|
19
20
|
return () => {
|
|
@@ -44,16 +45,14 @@ import { getElements } from "@elementor/editor-elements";
|
|
|
44
45
|
import { __privateListenTo as listenTo, commandEndEvent } from "@elementor/editor-v1-adapters";
|
|
45
46
|
var ELEMENTS_STYLES_PROVIDER_KEY = "elements";
|
|
46
47
|
var elementsStylesProvider = {
|
|
48
|
+
key: ELEMENTS_STYLES_PROVIDER_KEY,
|
|
49
|
+
priority: 50,
|
|
47
50
|
get: (meta = {}) => {
|
|
48
51
|
let elements = getElements();
|
|
49
52
|
if ("elementId" in meta && meta.elementId) {
|
|
50
53
|
elements = elements.filter((element) => element.id === meta.elementId);
|
|
51
54
|
}
|
|
52
|
-
|
|
53
|
-
const styles = element.model.get("styles");
|
|
54
|
-
return styles ? Object.entries(styles) : [];
|
|
55
|
-
});
|
|
56
|
-
return Object.fromEntries(entries);
|
|
55
|
+
return elements.flatMap((element) => Object.values(element.model.get("styles") ?? {}));
|
|
57
56
|
},
|
|
58
57
|
subscribe: (cb) => {
|
|
59
58
|
return listenTo(
|
|
@@ -68,7 +67,7 @@ var elementsStylesProvider = {
|
|
|
68
67
|
|
|
69
68
|
// src/init.ts
|
|
70
69
|
function init() {
|
|
71
|
-
stylesRepository.register(
|
|
70
|
+
stylesRepository.register(elementsStylesProvider);
|
|
72
71
|
}
|
|
73
72
|
|
|
74
73
|
// src/index.ts
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/create-styles-repository.ts","../src/styles-repository.ts","../src/hooks/use-all-styles-by-provider.ts","../src/elements-styles-provider.ts","../src/init.ts","../src/index.ts"],"sourcesContent":["import { type
|
|
1
|
+
{"version":3,"sources":["../src/utils/create-styles-repository.ts","../src/styles-repository.ts","../src/hooks/use-all-styles-by-provider.ts","../src/elements-styles-provider.ts","../src/init.ts","../src/index.ts"],"sourcesContent":["import { type StyleDefinition } from '@elementor/editor-styles';\n\nexport type StyleProviderMeta = Record< string, unknown >;\n\nexport type StylesProvider = {\n\tkey: string;\n\tpriority: number;\n\tget: ( meta?: StyleProviderMeta ) => StyleDefinition[];\n\tsubscribe: ( callback: () => void ) => () => void;\n};\n\nexport const createStylesRepository = () => {\n\tconst providers: StylesProvider[] = [];\n\n\tconst getProvidersByPriority = () => {\n\t\treturn providers.slice( 0 ).sort( ( a, b ) => ( a.priority > b.priority ? -1 : 1 ) );\n\t};\n\n\tconst register = ( provider: StylesProvider ) => {\n\t\tproviders.push( provider );\n\t};\n\n\tconst allByProvider = ( meta: StyleProviderMeta = {} ) => {\n\t\treturn getProvidersByPriority().map( ( provider ) => [ provider.key, provider.get( meta ) ] as const );\n\t};\n\n\tconst all = ( meta: StyleProviderMeta = {} ) => {\n\t\treturn getProvidersByPriority().flatMap( ( provider ) => provider.get( meta ) );\n\t};\n\n\tconst subscribe = ( cb: () => void ) => {\n\t\tconst unsubscribes = providers.map( ( provider ) => {\n\t\t\treturn provider.subscribe( cb );\n\t\t} );\n\n\t\treturn () => {\n\t\t\tunsubscribes.forEach( ( unsubscribe ) => unsubscribe() );\n\t\t};\n\t};\n\n\treturn {\n\t\tall,\n\t\tallByProvider,\n\t\tregister,\n\t\tsubscribe,\n\t};\n};\n","import { createStylesRepository } from './utils/create-styles-repository';\n\nexport const stylesRepository = createStylesRepository();\n","import { useEffect, useReducer } from 'react';\n\nimport { stylesRepository } from '../styles-repository';\nimport { type StyleProviderMeta } from '../utils/create-styles-repository';\n\nexport function useAllStylesByProvider( meta: StyleProviderMeta = {} ) {\n\tconst [ , rerender ] = useReducer( ( prev ) => ! prev, false );\n\n\tuseEffect( () => stylesRepository.subscribe( rerender ), [] );\n\n\treturn stylesRepository.allByProvider( meta );\n}\n","import { getElements } from '@elementor/editor-elements';\nimport { __privateListenTo as listenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { type StylesProvider } from './utils/create-styles-repository';\n\nexport const ELEMENTS_STYLES_PROVIDER_KEY = 'elements';\n\nexport const elementsStylesProvider: StylesProvider = {\n\tkey: ELEMENTS_STYLES_PROVIDER_KEY,\n\tpriority: 50,\n\tget: ( meta = {} ) => {\n\t\tlet elements = getElements();\n\n\t\tif ( 'elementId' in meta && meta.elementId ) {\n\t\t\telements = elements.filter( ( element ) => element.id === meta.elementId );\n\t\t}\n\n\t\treturn elements.flatMap( ( element ) => Object.values( element.model.get( 'styles' ) ?? {} ) );\n\t},\n\tsubscribe: ( cb ) => {\n\t\treturn listenTo(\n\t\t\t[\n\t\t\t\tcommandEndEvent( 'editor/documents/attach-preview' ),\n\t\t\t\tcommandEndEvent( 'document/atomic-widgets/styles' ),\n\t\t\t],\n\t\t\tcb\n\t\t);\n\t},\n};\n","import { elementsStylesProvider } from './elements-styles-provider';\nimport { stylesRepository } from './styles-repository';\n\nexport function init() {\n\tstylesRepository.register( elementsStylesProvider );\n}\n","export { type StylesProvider } from './utils/create-styles-repository';\n\nexport { stylesRepository } from './styles-repository';\nexport { useAllStylesByProvider } from './hooks/use-all-styles-by-provider';\n\nexport { ELEMENTS_STYLES_PROVIDER_KEY } from './elements-styles-provider';\n\nimport { init } from './init';\n\ninit();\n"],"mappings":";AAWO,IAAM,yBAAyB,MAAM;AAC3C,QAAM,YAA8B,CAAC;AAErC,QAAM,yBAAyB,MAAM;AACpC,WAAO,UAAU,MAAO,CAAE,EAAE,KAAM,CAAE,GAAG,MAAS,EAAE,WAAW,EAAE,WAAW,KAAK,CAAI;AAAA,EACpF;AAEA,QAAM,WAAW,CAAE,aAA8B;AAChD,cAAU,KAAM,QAAS;AAAA,EAC1B;AAEA,QAAM,gBAAgB,CAAE,OAA0B,CAAC,MAAO;AACzD,WAAO,uBAAuB,EAAE,IAAK,CAAE,aAAc,CAAE,SAAS,KAAK,SAAS,IAAK,IAAK,CAAE,CAAW;AAAA,EACtG;AAEA,QAAM,MAAM,CAAE,OAA0B,CAAC,MAAO;AAC/C,WAAO,uBAAuB,EAAE,QAAS,CAAE,aAAc,SAAS,IAAK,IAAK,CAAE;AAAA,EAC/E;AAEA,QAAM,YAAY,CAAE,OAAoB;AACvC,UAAM,eAAe,UAAU,IAAK,CAAE,aAAc;AACnD,aAAO,SAAS,UAAW,EAAG;AAAA,IAC/B,CAAE;AAEF,WAAO,MAAM;AACZ,mBAAa,QAAS,CAAE,gBAAiB,YAAY,CAAE;AAAA,IACxD;AAAA,EACD;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;;;AC5CO,IAAM,mBAAmB,uBAAuB;;;ACFvD,SAAS,WAAW,kBAAkB;AAK/B,SAAS,uBAAwB,OAA0B,CAAC,GAAI;AACtE,QAAM,CAAE,EAAE,QAAS,IAAI,WAAY,CAAE,SAAU,CAAE,MAAM,KAAM;AAE7D,YAAW,MAAM,iBAAiB,UAAW,QAAS,GAAG,CAAC,CAAE;AAE5D,SAAO,iBAAiB,cAAe,IAAK;AAC7C;;;ACXA,SAAS,mBAAmB;AAC5B,SAAS,qBAAqB,UAAU,uBAAuB;AAIxD,IAAM,+BAA+B;AAErC,IAAM,yBAAyC;AAAA,EACrD,KAAK;AAAA,EACL,UAAU;AAAA,EACV,KAAK,CAAE,OAAO,CAAC,MAAO;AACrB,QAAI,WAAW,YAAY;AAE3B,QAAK,eAAe,QAAQ,KAAK,WAAY;AAC5C,iBAAW,SAAS,OAAQ,CAAE,YAAa,QAAQ,OAAO,KAAK,SAAU;AAAA,IAC1E;AAEA,WAAO,SAAS,QAAS,CAAE,YAAa,OAAO,OAAQ,QAAQ,MAAM,IAAK,QAAS,KAAK,CAAC,CAAE,CAAE;AAAA,EAC9F;AAAA,EACA,WAAW,CAAE,OAAQ;AACpB,WAAO;AAAA,MACN;AAAA,QACC,gBAAiB,iCAAkC;AAAA,QACnD,gBAAiB,gCAAiC;AAAA,MACnD;AAAA,MACA;AAAA,IACD;AAAA,EACD;AACD;;;ACzBO,SAAS,OAAO;AACtB,mBAAiB,SAAU,sBAAuB;AACnD;;;ACIA,KAAK;","names":[]}
|
package/package.json
CHANGED
|
@@ -33,11 +33,11 @@ describe( 'elementsStylesProvider', () => {
|
|
|
33
33
|
const styles = elementsStylesProvider.get();
|
|
34
34
|
|
|
35
35
|
// Assert.
|
|
36
|
-
expect( styles ).toEqual(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
expect( styles ).toEqual( [
|
|
37
|
+
expect.objectContaining( { id: 's-1' } ),
|
|
38
|
+
expect.objectContaining( { id: 's-2' } ),
|
|
39
|
+
expect.objectContaining( { id: 's-3' } ),
|
|
40
|
+
] );
|
|
41
41
|
} );
|
|
42
42
|
|
|
43
43
|
it( 'should return all styles filtered by element', () => {
|
|
@@ -45,9 +45,9 @@ describe( 'elementsStylesProvider', () => {
|
|
|
45
45
|
const styles = elementsStylesProvider.get( { elementId: '1' } );
|
|
46
46
|
|
|
47
47
|
// Assert.
|
|
48
|
-
expect( styles ).toEqual(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
expect( styles ).toEqual( [
|
|
49
|
+
expect.objectContaining( { id: 's-1' } ),
|
|
50
|
+
expect.objectContaining( { id: 's-2' } ),
|
|
51
|
+
] );
|
|
52
52
|
} );
|
|
53
53
|
} );
|
|
@@ -6,6 +6,8 @@ import { type StylesProvider } from './utils/create-styles-repository';
|
|
|
6
6
|
export const ELEMENTS_STYLES_PROVIDER_KEY = 'elements';
|
|
7
7
|
|
|
8
8
|
export const elementsStylesProvider: StylesProvider = {
|
|
9
|
+
key: ELEMENTS_STYLES_PROVIDER_KEY,
|
|
10
|
+
priority: 50,
|
|
9
11
|
get: ( meta = {} ) => {
|
|
10
12
|
let elements = getElements();
|
|
11
13
|
|
|
@@ -13,13 +15,7 @@ export const elementsStylesProvider: StylesProvider = {
|
|
|
13
15
|
elements = elements.filter( ( element ) => element.id === meta.elementId );
|
|
14
16
|
}
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
const styles = element.model.get( 'styles' );
|
|
18
|
-
|
|
19
|
-
return styles ? Object.entries( styles ) : [];
|
|
20
|
-
} );
|
|
21
|
-
|
|
22
|
-
return Object.fromEntries( entries );
|
|
18
|
+
return elements.flatMap( ( element ) => Object.values( element.model.get( 'styles' ) ?? {} ) );
|
|
23
19
|
},
|
|
24
20
|
subscribe: ( cb ) => {
|
|
25
21
|
return listenTo(
|
package/src/init.ts
CHANGED
|
@@ -2,5 +2,5 @@ import { elementsStylesProvider } from './elements-styles-provider';
|
|
|
2
2
|
import { stylesRepository } from './styles-repository';
|
|
3
3
|
|
|
4
4
|
export function init() {
|
|
5
|
-
stylesRepository.register(
|
|
5
|
+
stylesRepository.register( elementsStylesProvider );
|
|
6
6
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createMockStyleDefinition } from 'test-utils';
|
|
2
|
-
import { type
|
|
2
|
+
import { type StyleDefinition } from '@elementor/editor-styles';
|
|
3
3
|
|
|
4
4
|
import { createStylesRepository, type StylesProvider } from '../create-styles-repository';
|
|
5
5
|
|
|
@@ -8,32 +8,28 @@ const styleDef2 = createMockStyleDefinition( { props: { color: { $$type: 'color'
|
|
|
8
8
|
const styleDef3 = createMockStyleDefinition( { props: { color: { $$type: 'color', value: '#111111' } } } );
|
|
9
9
|
|
|
10
10
|
describe( 'createStylesRepository', () => {
|
|
11
|
-
it( 'should get all the style defs from all
|
|
11
|
+
it( 'should get all the style defs from all providers ordered by priority', () => {
|
|
12
12
|
// Arrange
|
|
13
13
|
const repo = createStylesRepository();
|
|
14
14
|
|
|
15
|
-
repo.register( 'mock1',
|
|
16
|
-
repo.register( 'mock2',
|
|
15
|
+
repo.register( createMockProvider( 'mock1', 10, [ styleDef1 ] ).provider );
|
|
16
|
+
repo.register( createMockProvider( 'mock2', 20, [ styleDef2 ] ).provider );
|
|
17
17
|
|
|
18
18
|
// Assert
|
|
19
|
-
expect( repo.all() ).toEqual( [
|
|
19
|
+
expect( repo.all() ).toEqual( [ styleDef2, styleDef1 ] );
|
|
20
20
|
} );
|
|
21
21
|
|
|
22
22
|
it( 'should get all the style defs grouped by providers', () => {
|
|
23
23
|
// Arrange
|
|
24
24
|
const repo = createStylesRepository();
|
|
25
25
|
|
|
26
|
-
repo.register( 'mock1',
|
|
27
|
-
|
|
28
|
-
repo.register(
|
|
29
|
-
'mock2',
|
|
30
|
-
createMockProvider( { [ styleDef2.id ]: styleDef2, [ styleDef3.id ]: styleDef3 } ).provider
|
|
31
|
-
);
|
|
26
|
+
repo.register( createMockProvider( 'mock1', 10, [ styleDef1 ] ).provider );
|
|
27
|
+
repo.register( createMockProvider( 'mock2', 20, [ styleDef2, styleDef3 ] ).provider );
|
|
32
28
|
|
|
33
29
|
// Assert
|
|
34
30
|
expect( repo.allByProvider() ).toEqual( [
|
|
35
|
-
[ 'mock1', [ styleDef1 ] ],
|
|
36
31
|
[ 'mock2', [ styleDef2, styleDef3 ] ],
|
|
32
|
+
[ 'mock1', [ styleDef1 ] ],
|
|
37
33
|
] );
|
|
38
34
|
} );
|
|
39
35
|
|
|
@@ -41,16 +37,12 @@ describe( 'createStylesRepository', () => {
|
|
|
41
37
|
// Arrange
|
|
42
38
|
const repo = createStylesRepository();
|
|
43
39
|
|
|
44
|
-
const { provider: mockStylesProvider1, notify: notify1 } = createMockProvider(
|
|
45
|
-
[ styleDef1.id ]: styleDef1,
|
|
46
|
-
} );
|
|
40
|
+
const { provider: mockStylesProvider1, notify: notify1 } = createMockProvider( 'mock1', 10, [ styleDef1 ] );
|
|
47
41
|
|
|
48
|
-
const { provider: mockStylesProvider2, notify: notify2 } = createMockProvider(
|
|
49
|
-
[ styleDef2.id ]: styleDef2,
|
|
50
|
-
} );
|
|
42
|
+
const { provider: mockStylesProvider2, notify: notify2 } = createMockProvider( 'mock2', 10, [ styleDef2 ] );
|
|
51
43
|
|
|
52
|
-
repo.register(
|
|
53
|
-
repo.register(
|
|
44
|
+
repo.register( mockStylesProvider1 );
|
|
45
|
+
repo.register( mockStylesProvider2 );
|
|
54
46
|
|
|
55
47
|
const cb = jest.fn();
|
|
56
48
|
const unsubscribe = repo.subscribe( cb );
|
|
@@ -78,7 +70,7 @@ describe( 'createStylesRepository', () => {
|
|
|
78
70
|
} );
|
|
79
71
|
} );
|
|
80
72
|
|
|
81
|
-
const createMockProvider = ( styleDefinitions:
|
|
73
|
+
const createMockProvider = ( key: string, priority: number, styleDefinitions: StyleDefinition[] ) => {
|
|
82
74
|
const subscribers = new Set< () => void >();
|
|
83
75
|
|
|
84
76
|
const notify = () => {
|
|
@@ -86,6 +78,8 @@ const createMockProvider = ( styleDefinitions: StyleDefinitionsMap ) => {
|
|
|
86
78
|
};
|
|
87
79
|
|
|
88
80
|
const provider: StylesProvider = {
|
|
81
|
+
key,
|
|
82
|
+
priority,
|
|
89
83
|
get: () => styleDefinitions,
|
|
90
84
|
subscribe: ( cb ) => {
|
|
91
85
|
subscribers.add( cb );
|
|
@@ -1,31 +1,35 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type StyleDefinition } from '@elementor/editor-styles';
|
|
2
2
|
|
|
3
3
|
export type StyleProviderMeta = Record< string, unknown >;
|
|
4
4
|
|
|
5
5
|
export type StylesProvider = {
|
|
6
|
-
|
|
6
|
+
key: string;
|
|
7
|
+
priority: number;
|
|
8
|
+
get: ( meta?: StyleProviderMeta ) => StyleDefinition[];
|
|
7
9
|
subscribe: ( callback: () => void ) => () => void;
|
|
8
10
|
};
|
|
9
11
|
|
|
10
12
|
export const createStylesRepository = () => {
|
|
11
|
-
const providers =
|
|
13
|
+
const providers: StylesProvider[] = [];
|
|
12
14
|
|
|
13
|
-
const
|
|
14
|
-
providers.
|
|
15
|
+
const getProvidersByPriority = () => {
|
|
16
|
+
return providers.slice( 0 ).sort( ( a, b ) => ( a.priority > b.priority ? -1 : 1 ) );
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const register = ( provider: StylesProvider ) => {
|
|
20
|
+
providers.push( provider );
|
|
15
21
|
};
|
|
16
22
|
|
|
17
23
|
const allByProvider = ( meta: StyleProviderMeta = {} ) => {
|
|
18
|
-
return
|
|
19
|
-
( [ key, provider ] ) => [ key, Object.values( provider.get( meta ) ) ] as const
|
|
20
|
-
);
|
|
24
|
+
return getProvidersByPriority().map( ( provider ) => [ provider.key, provider.get( meta ) ] as const );
|
|
21
25
|
};
|
|
22
26
|
|
|
23
27
|
const all = ( meta: StyleProviderMeta = {} ) => {
|
|
24
|
-
return
|
|
28
|
+
return getProvidersByPriority().flatMap( ( provider ) => provider.get( meta ) );
|
|
25
29
|
};
|
|
26
30
|
|
|
27
31
|
const subscribe = ( cb: () => void ) => {
|
|
28
|
-
const unsubscribes =
|
|
32
|
+
const unsubscribes = providers.map( ( provider ) => {
|
|
29
33
|
return provider.subscribe( cb );
|
|
30
34
|
} );
|
|
31
35
|
|