@elementor/editor-styles-repository 0.1.0 → 0.2.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 +22 -0
- package/dist/index.d.mts +10 -4
- package/dist/index.d.ts +10 -4
- package/dist/index.js +34 -15
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +28 -11
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -4
- package/src/__tests__/elements-styles-provider.test.ts +14 -2
- package/src/elements-styles-provider.ts +8 -2
- package/src/hooks/use-all-styles-by-provider.ts +12 -0
- package/src/index.ts +3 -0
- package/src/init.ts +1 -1
- package/src/utils/__tests__/create-styles-repository.test.ts +25 -9
- package/src/utils/create-styles-repository.ts +13 -8
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @elementor/editor-styles-repository@0.
|
|
2
|
+
> @elementor/editor-styles-repository@0.2.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[
|
|
14
|
-
[32mESM[39m [1mdist/index.mjs.map [22m[
|
|
15
|
-
[32mESM[39m ⚡️ Build success in
|
|
16
|
-
[32mCJS[39m [1mdist/index.js [22m[
|
|
17
|
-
[32mCJS[39m [1mdist/index.js.map [22m[
|
|
18
|
-
[32mCJS[39m ⚡️ Build success in
|
|
13
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m2.27 KB[39m
|
|
14
|
+
[32mESM[39m [1mdist/index.mjs.map [22m[32m5.11 KB[39m
|
|
15
|
+
[32mESM[39m ⚡️ Build success in 44ms
|
|
16
|
+
[32mCJS[39m [1mdist/index.js [22m[32m3.55 KB[39m
|
|
17
|
+
[32mCJS[39m [1mdist/index.js.map [22m[32m5.15 KB[39m
|
|
18
|
+
[32mCJS[39m ⚡️ Build success in 44ms
|
|
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 4285ms
|
|
21
|
+
[32mDTS[39m [1mdist/index.d.mts [22m[32m970.00 B[39m
|
|
22
|
+
[32mDTS[39m [1mdist/index.d.ts [22m[32m970.00 B[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @elementor/editor-styles-repository
|
|
2
2
|
|
|
3
|
+
## 0.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 6f2b17f: Introduce empty (local) style def for class selector.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [6f2b17f]
|
|
12
|
+
- @elementor/editor-elements@0.3.3
|
|
13
|
+
- @elementor/editor-styles@0.3.2
|
|
14
|
+
|
|
15
|
+
## 0.1.1
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- 91453b3: Update and lock dependencies versions
|
|
20
|
+
- Updated dependencies [91453b3]
|
|
21
|
+
- @elementor/editor-v1-adapters@0.8.5
|
|
22
|
+
- @elementor/editor-elements@0.3.2
|
|
23
|
+
- @elementor/editor-styles@0.3.1
|
|
24
|
+
|
|
3
25
|
## 0.1.0
|
|
4
26
|
|
|
5
27
|
### Minor Changes
|
package/dist/index.d.mts
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import * as _elementor_editor_styles from '@elementor/editor-styles';
|
|
2
2
|
import { StyleDefinitionsMap } from '@elementor/editor-styles';
|
|
3
3
|
|
|
4
|
+
type StyleProviderMeta = Record<string, unknown>;
|
|
4
5
|
type StylesProvider = {
|
|
5
|
-
get: () => StyleDefinitionsMap;
|
|
6
|
+
get: (meta?: StyleProviderMeta) => StyleDefinitionsMap;
|
|
6
7
|
subscribe: (callback: () => void) => () => void;
|
|
7
8
|
};
|
|
8
9
|
|
|
9
10
|
declare const stylesRepository: {
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
all: (meta?: StyleProviderMeta) => _elementor_editor_styles.StyleDefinition[];
|
|
12
|
+
allByProvider: (meta?: StyleProviderMeta) => (readonly [string, _elementor_editor_styles.StyleDefinition[]])[];
|
|
13
|
+
register: (key: string, provider: StylesProvider) => void;
|
|
12
14
|
subscribe: (cb: () => void) => () => void;
|
|
13
15
|
};
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
declare function useAllStylesByProvider(meta?: StyleProviderMeta): (readonly [string, _elementor_editor_styles.StyleDefinition[]])[];
|
|
18
|
+
|
|
19
|
+
declare const ELEMENTS_STYLES_PROVIDER_KEY = "elements";
|
|
20
|
+
|
|
21
|
+
export { ELEMENTS_STYLES_PROVIDER_KEY, type StylesProvider, stylesRepository, useAllStylesByProvider };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import * as _elementor_editor_styles from '@elementor/editor-styles';
|
|
2
2
|
import { StyleDefinitionsMap } from '@elementor/editor-styles';
|
|
3
3
|
|
|
4
|
+
type StyleProviderMeta = Record<string, unknown>;
|
|
4
5
|
type StylesProvider = {
|
|
5
|
-
get: () => StyleDefinitionsMap;
|
|
6
|
+
get: (meta?: StyleProviderMeta) => StyleDefinitionsMap;
|
|
6
7
|
subscribe: (callback: () => void) => () => void;
|
|
7
8
|
};
|
|
8
9
|
|
|
9
10
|
declare const stylesRepository: {
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
all: (meta?: StyleProviderMeta) => _elementor_editor_styles.StyleDefinition[];
|
|
12
|
+
allByProvider: (meta?: StyleProviderMeta) => (readonly [string, _elementor_editor_styles.StyleDefinition[]])[];
|
|
13
|
+
register: (key: string, provider: StylesProvider) => void;
|
|
12
14
|
subscribe: (cb: () => void) => () => void;
|
|
13
15
|
};
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
declare function useAllStylesByProvider(meta?: StyleProviderMeta): (readonly [string, _elementor_editor_styles.StyleDefinition[]])[];
|
|
18
|
+
|
|
19
|
+
declare const ELEMENTS_STYLES_PROVIDER_KEY = "elements";
|
|
20
|
+
|
|
21
|
+
export { ELEMENTS_STYLES_PROVIDER_KEY, type StylesProvider, stylesRepository, useAllStylesByProvider };
|
package/dist/index.js
CHANGED
|
@@ -18,23 +18,27 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
|
|
20
20
|
// src/index.ts
|
|
21
|
-
var
|
|
22
|
-
__export(
|
|
23
|
-
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
ELEMENTS_STYLES_PROVIDER_KEY: () => ELEMENTS_STYLES_PROVIDER_KEY,
|
|
24
|
+
stylesRepository: () => stylesRepository,
|
|
25
|
+
useAllStylesByProvider: () => useAllStylesByProvider
|
|
24
26
|
});
|
|
25
|
-
module.exports = __toCommonJS(
|
|
27
|
+
module.exports = __toCommonJS(index_exports);
|
|
26
28
|
|
|
27
29
|
// src/utils/create-styles-repository.ts
|
|
28
30
|
var createStylesRepository = () => {
|
|
29
31
|
const providers = /* @__PURE__ */ new Map();
|
|
30
|
-
const
|
|
32
|
+
const register = (key, provider) => {
|
|
31
33
|
providers.set(key, provider);
|
|
32
34
|
};
|
|
33
|
-
const
|
|
34
|
-
return Array.from(providers.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
const allByProvider = (meta = {}) => {
|
|
36
|
+
return Array.from(providers.entries()).map(
|
|
37
|
+
([key, provider]) => [key, Object.values(provider.get(meta))]
|
|
38
|
+
);
|
|
39
|
+
};
|
|
40
|
+
const all = (meta = {}) => {
|
|
41
|
+
return Array.from(providers.values()).flatMap((provider) => Object.values(provider.get(meta)));
|
|
38
42
|
};
|
|
39
43
|
const subscribe = (cb) => {
|
|
40
44
|
const unsubscribes = Array.from(providers.values()).map((provider) => {
|
|
@@ -45,8 +49,9 @@ var createStylesRepository = () => {
|
|
|
45
49
|
};
|
|
46
50
|
};
|
|
47
51
|
return {
|
|
48
|
-
registerProvider,
|
|
49
52
|
all,
|
|
53
|
+
allByProvider,
|
|
54
|
+
register,
|
|
50
55
|
subscribe
|
|
51
56
|
};
|
|
52
57
|
};
|
|
@@ -54,12 +59,24 @@ var createStylesRepository = () => {
|
|
|
54
59
|
// src/styles-repository.ts
|
|
55
60
|
var stylesRepository = createStylesRepository();
|
|
56
61
|
|
|
62
|
+
// src/hooks/use-all-styles-by-provider.ts
|
|
63
|
+
var import_react = require("react");
|
|
64
|
+
function useAllStylesByProvider(meta = {}) {
|
|
65
|
+
const [, rerender] = (0, import_react.useReducer)((prev) => !prev, false);
|
|
66
|
+
(0, import_react.useEffect)(() => stylesRepository.subscribe(rerender), []);
|
|
67
|
+
return stylesRepository.allByProvider(meta);
|
|
68
|
+
}
|
|
69
|
+
|
|
57
70
|
// src/elements-styles-provider.ts
|
|
58
71
|
var import_editor_elements = require("@elementor/editor-elements");
|
|
59
72
|
var import_editor_v1_adapters = require("@elementor/editor-v1-adapters");
|
|
73
|
+
var ELEMENTS_STYLES_PROVIDER_KEY = "elements";
|
|
60
74
|
var elementsStylesProvider = {
|
|
61
|
-
get: () => {
|
|
62
|
-
|
|
75
|
+
get: (meta = {}) => {
|
|
76
|
+
let elements = (0, import_editor_elements.getElements)();
|
|
77
|
+
if ("elementId" in meta && meta.elementId) {
|
|
78
|
+
elements = elements.filter((element) => element.id === meta.elementId);
|
|
79
|
+
}
|
|
63
80
|
const entries = elements.flatMap((element) => {
|
|
64
81
|
const styles = element.model.get("styles");
|
|
65
82
|
return styles ? Object.entries(styles) : [];
|
|
@@ -79,13 +96,15 @@ var elementsStylesProvider = {
|
|
|
79
96
|
|
|
80
97
|
// src/init.ts
|
|
81
98
|
function init() {
|
|
82
|
-
stylesRepository.
|
|
99
|
+
stylesRepository.register("elements", elementsStylesProvider);
|
|
83
100
|
}
|
|
84
101
|
|
|
85
102
|
// src/index.ts
|
|
86
103
|
init();
|
|
87
104
|
// Annotate the CommonJS export names for ESM import in node:
|
|
88
105
|
0 && (module.exports = {
|
|
89
|
-
|
|
106
|
+
ELEMENTS_STYLES_PROVIDER_KEY,
|
|
107
|
+
stylesRepository,
|
|
108
|
+
useAllStylesByProvider
|
|
90
109
|
});
|
|
91
110
|
//# sourceMappingURL=index.js.map
|
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/elements-styles-provider.ts","../src/init.ts"],"sourcesContent":["export { type StylesProvider } from './utils/create-styles-repository';\n\nexport { stylesRepository } from './styles-repository';\n\nimport { init } from './init';\n\ninit();\n","import { type StyleDefinitionsMap } from '@elementor/editor-styles';\n\nexport type StylesProvider = {\n\tget: () => StyleDefinitionsMap;\n\tsubscribe: ( callback: () => void ) => () => void;\n};\n\nexport const createStylesRepository = () => {\n\tconst providers = new Map< string, StylesProvider >();\n\n\tconst
|
|
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 StyleDefinitionsMap } from '@elementor/editor-styles';\n\nexport type StyleProviderMeta = Record< string, unknown >;\n\nexport type StylesProvider = {\n\tget: ( meta?: StyleProviderMeta ) => StyleDefinitionsMap;\n\tsubscribe: ( callback: () => void ) => () => void;\n};\n\nexport const createStylesRepository = () => {\n\tconst providers = new Map< string, StylesProvider >();\n\n\tconst register = ( key: string, provider: StylesProvider ) => {\n\t\tproviders.set( key, provider );\n\t};\n\n\tconst allByProvider = ( meta: StyleProviderMeta = {} ) => {\n\t\treturn Array.from( providers.entries() ).map(\n\t\t\t( [ key, provider ] ) => [ key, Object.values( provider.get( meta ) ) ] as const\n\t\t);\n\t};\n\n\tconst all = ( meta: StyleProviderMeta = {} ) => {\n\t\treturn Array.from( providers.values() ).flatMap( ( provider ) => Object.values( provider.get( meta ) ) );\n\t};\n\n\tconst subscribe = ( cb: () => void ) => {\n\t\tconst unsubscribes = Array.from( providers.values() ).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\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\tconst entries = elements.flatMap( ( element ) => {\n\t\t\tconst styles = element.model.get( 'styles' );\n\n\t\t\treturn styles ? Object.entries( styles ) : [];\n\t\t} );\n\n\t\treturn Object.fromEntries( entries );\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( 'elements', elementsStylesProvider );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACSO,IAAM,yBAAyB,MAAM;AAC3C,QAAM,YAAY,oBAAI,IAA8B;AAEpD,QAAM,WAAW,CAAE,KAAa,aAA8B;AAC7D,cAAU,IAAK,KAAK,QAAS;AAAA,EAC9B;AAEA,QAAM,gBAAgB,CAAE,OAA0B,CAAC,MAAO;AACzD,WAAO,MAAM,KAAM,UAAU,QAAQ,CAAE,EAAE;AAAA,MACxC,CAAE,CAAE,KAAK,QAAS,MAAO,CAAE,KAAK,OAAO,OAAQ,SAAS,IAAK,IAAK,CAAE,CAAE;AAAA,IACvE;AAAA,EACD;AAEA,QAAM,MAAM,CAAE,OAA0B,CAAC,MAAO;AAC/C,WAAO,MAAM,KAAM,UAAU,OAAO,CAAE,EAAE,QAAS,CAAE,aAAc,OAAO,OAAQ,SAAS,IAAK,IAAK,CAAE,CAAE;AAAA,EACxG;AAEA,QAAM,YAAY,CAAE,OAAoB;AACvC,UAAM,eAAe,MAAM,KAAM,UAAU,OAAO,CAAE,EAAE,IAAK,CAAE,aAAc;AAC1E,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;;;ACxCO,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,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,UAAM,UAAU,SAAS,QAAS,CAAE,YAAa;AAChD,YAAM,SAAS,QAAQ,MAAM,IAAK,QAAS;AAE3C,aAAO,SAAS,OAAO,QAAS,MAAO,IAAI,CAAC;AAAA,IAC7C,CAAE;AAEF,WAAO,OAAO,YAAa,OAAQ;AAAA,EACpC;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;;;AC7BO,SAAS,OAAO;AACtB,mBAAiB,SAAU,YAAY,sBAAuB;AAC/D;;;ALIA,KAAK;","names":["listenTo"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
// src/utils/create-styles-repository.ts
|
|
2
2
|
var createStylesRepository = () => {
|
|
3
3
|
const providers = /* @__PURE__ */ new Map();
|
|
4
|
-
const
|
|
4
|
+
const register = (key, provider) => {
|
|
5
5
|
providers.set(key, provider);
|
|
6
6
|
};
|
|
7
|
-
const
|
|
8
|
-
return Array.from(providers.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
const allByProvider = (meta = {}) => {
|
|
8
|
+
return Array.from(providers.entries()).map(
|
|
9
|
+
([key, provider]) => [key, Object.values(provider.get(meta))]
|
|
10
|
+
);
|
|
11
|
+
};
|
|
12
|
+
const all = (meta = {}) => {
|
|
13
|
+
return Array.from(providers.values()).flatMap((provider) => Object.values(provider.get(meta)));
|
|
12
14
|
};
|
|
13
15
|
const subscribe = (cb) => {
|
|
14
16
|
const unsubscribes = Array.from(providers.values()).map((provider) => {
|
|
@@ -19,8 +21,9 @@ var createStylesRepository = () => {
|
|
|
19
21
|
};
|
|
20
22
|
};
|
|
21
23
|
return {
|
|
22
|
-
registerProvider,
|
|
23
24
|
all,
|
|
25
|
+
allByProvider,
|
|
26
|
+
register,
|
|
24
27
|
subscribe
|
|
25
28
|
};
|
|
26
29
|
};
|
|
@@ -28,12 +31,24 @@ var createStylesRepository = () => {
|
|
|
28
31
|
// src/styles-repository.ts
|
|
29
32
|
var stylesRepository = createStylesRepository();
|
|
30
33
|
|
|
34
|
+
// src/hooks/use-all-styles-by-provider.ts
|
|
35
|
+
import { useEffect, useReducer } from "react";
|
|
36
|
+
function useAllStylesByProvider(meta = {}) {
|
|
37
|
+
const [, rerender] = useReducer((prev) => !prev, false);
|
|
38
|
+
useEffect(() => stylesRepository.subscribe(rerender), []);
|
|
39
|
+
return stylesRepository.allByProvider(meta);
|
|
40
|
+
}
|
|
41
|
+
|
|
31
42
|
// src/elements-styles-provider.ts
|
|
32
43
|
import { getElements } from "@elementor/editor-elements";
|
|
33
44
|
import { __privateListenTo as listenTo, commandEndEvent } from "@elementor/editor-v1-adapters";
|
|
45
|
+
var ELEMENTS_STYLES_PROVIDER_KEY = "elements";
|
|
34
46
|
var elementsStylesProvider = {
|
|
35
|
-
get: () => {
|
|
36
|
-
|
|
47
|
+
get: (meta = {}) => {
|
|
48
|
+
let elements = getElements();
|
|
49
|
+
if ("elementId" in meta && meta.elementId) {
|
|
50
|
+
elements = elements.filter((element) => element.id === meta.elementId);
|
|
51
|
+
}
|
|
37
52
|
const entries = elements.flatMap((element) => {
|
|
38
53
|
const styles = element.model.get("styles");
|
|
39
54
|
return styles ? Object.entries(styles) : [];
|
|
@@ -53,12 +68,14 @@ var elementsStylesProvider = {
|
|
|
53
68
|
|
|
54
69
|
// src/init.ts
|
|
55
70
|
function init() {
|
|
56
|
-
stylesRepository.
|
|
71
|
+
stylesRepository.register("elements", elementsStylesProvider);
|
|
57
72
|
}
|
|
58
73
|
|
|
59
74
|
// src/index.ts
|
|
60
75
|
init();
|
|
61
76
|
export {
|
|
62
|
-
|
|
77
|
+
ELEMENTS_STYLES_PROVIDER_KEY,
|
|
78
|
+
stylesRepository,
|
|
79
|
+
useAllStylesByProvider
|
|
63
80
|
};
|
|
64
81
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/create-styles-repository.ts","../src/styles-repository.ts","../src/elements-styles-provider.ts","../src/init.ts","../src/index.ts"],"sourcesContent":["import { type StyleDefinitionsMap } from '@elementor/editor-styles';\n\nexport type StylesProvider = {\n\tget: () => StyleDefinitionsMap;\n\tsubscribe: ( callback: () => void ) => () => void;\n};\n\nexport const createStylesRepository = () => {\n\tconst providers = new Map< string, StylesProvider >();\n\n\tconst
|
|
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 StyleDefinitionsMap } from '@elementor/editor-styles';\n\nexport type StyleProviderMeta = Record< string, unknown >;\n\nexport type StylesProvider = {\n\tget: ( meta?: StyleProviderMeta ) => StyleDefinitionsMap;\n\tsubscribe: ( callback: () => void ) => () => void;\n};\n\nexport const createStylesRepository = () => {\n\tconst providers = new Map< string, StylesProvider >();\n\n\tconst register = ( key: string, provider: StylesProvider ) => {\n\t\tproviders.set( key, provider );\n\t};\n\n\tconst allByProvider = ( meta: StyleProviderMeta = {} ) => {\n\t\treturn Array.from( providers.entries() ).map(\n\t\t\t( [ key, provider ] ) => [ key, Object.values( provider.get( meta ) ) ] as const\n\t\t);\n\t};\n\n\tconst all = ( meta: StyleProviderMeta = {} ) => {\n\t\treturn Array.from( providers.values() ).flatMap( ( provider ) => Object.values( provider.get( meta ) ) );\n\t};\n\n\tconst subscribe = ( cb: () => void ) => {\n\t\tconst unsubscribes = Array.from( providers.values() ).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\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\tconst entries = elements.flatMap( ( element ) => {\n\t\t\tconst styles = element.model.get( 'styles' );\n\n\t\t\treturn styles ? Object.entries( styles ) : [];\n\t\t} );\n\n\t\treturn Object.fromEntries( entries );\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( 'elements', 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":";AASO,IAAM,yBAAyB,MAAM;AAC3C,QAAM,YAAY,oBAAI,IAA8B;AAEpD,QAAM,WAAW,CAAE,KAAa,aAA8B;AAC7D,cAAU,IAAK,KAAK,QAAS;AAAA,EAC9B;AAEA,QAAM,gBAAgB,CAAE,OAA0B,CAAC,MAAO;AACzD,WAAO,MAAM,KAAM,UAAU,QAAQ,CAAE,EAAE;AAAA,MACxC,CAAE,CAAE,KAAK,QAAS,MAAO,CAAE,KAAK,OAAO,OAAQ,SAAS,IAAK,IAAK,CAAE,CAAE;AAAA,IACvE;AAAA,EACD;AAEA,QAAM,MAAM,CAAE,OAA0B,CAAC,MAAO;AAC/C,WAAO,MAAM,KAAM,UAAU,OAAO,CAAE,EAAE,QAAS,CAAE,aAAc,OAAO,OAAQ,SAAS,IAAK,IAAK,CAAE,CAAE;AAAA,EACxG;AAEA,QAAM,YAAY,CAAE,OAAoB;AACvC,UAAM,eAAe,MAAM,KAAM,UAAU,OAAO,CAAE,EAAE,IAAK,CAAE,aAAc;AAC1E,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;;;ACxCO,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,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,UAAM,UAAU,SAAS,QAAS,CAAE,YAAa;AAChD,YAAM,SAAS,QAAQ,MAAM,IAAK,QAAS;AAE3C,aAAO,SAAS,OAAO,QAAS,MAAO,IAAI,CAAC;AAAA,IAC7C,CAAE;AAEF,WAAO,OAAO,YAAa,OAAQ;AAAA,EACpC;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;;;AC7BO,SAAS,OAAO;AACtB,mBAAiB,SAAU,YAAY,sBAAuB;AAC/D;;;ACIA,KAAK;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elementor/editor-styles-repository",
|
|
3
3
|
"description": "Elementor Editor Styles Repository",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": "Elementor Team",
|
|
7
7
|
"homepage": "https://elementor.com/",
|
|
@@ -33,8 +33,11 @@
|
|
|
33
33
|
"dev": "tsup --config=../../tsup.dev.ts"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@elementor/editor-elements": "
|
|
37
|
-
"@elementor/editor-styles": "
|
|
38
|
-
"@elementor/editor-v1-adapters": "
|
|
36
|
+
"@elementor/editor-elements": "0.3.3",
|
|
37
|
+
"@elementor/editor-styles": "0.3.2",
|
|
38
|
+
"@elementor/editor-v1-adapters": "0.8.5"
|
|
39
|
+
},
|
|
40
|
+
"peerDependencies": {
|
|
41
|
+
"react": "^18.3.1"
|
|
39
42
|
}
|
|
40
43
|
}
|
|
@@ -6,8 +6,7 @@ import { elementsStylesProvider } from '../elements-styles-provider';
|
|
|
6
6
|
jest.mock( '@elementor/editor-elements' );
|
|
7
7
|
|
|
8
8
|
describe( 'elementsStylesProvider', () => {
|
|
9
|
-
|
|
10
|
-
// Arrange.
|
|
9
|
+
beforeEach( () => {
|
|
11
10
|
jest.mocked( getElements ).mockReturnValue( [
|
|
12
11
|
createMockElement( {
|
|
13
12
|
model: {
|
|
@@ -27,7 +26,9 @@ describe( 'elementsStylesProvider', () => {
|
|
|
27
26
|
},
|
|
28
27
|
} ),
|
|
29
28
|
] );
|
|
29
|
+
} );
|
|
30
30
|
|
|
31
|
+
it( 'should return all the styles attached to all the document elements', () => {
|
|
31
32
|
// Act.
|
|
32
33
|
const styles = elementsStylesProvider.get();
|
|
33
34
|
|
|
@@ -38,4 +39,15 @@ describe( 'elementsStylesProvider', () => {
|
|
|
38
39
|
's-3': expect.objectContaining( { id: 's-3' } ),
|
|
39
40
|
} );
|
|
40
41
|
} );
|
|
42
|
+
|
|
43
|
+
it( 'should return all styles filtered by element', () => {
|
|
44
|
+
// Act.
|
|
45
|
+
const styles = elementsStylesProvider.get( { elementId: '1' } );
|
|
46
|
+
|
|
47
|
+
// Assert.
|
|
48
|
+
expect( styles ).toEqual( {
|
|
49
|
+
's-1': expect.objectContaining( { id: 's-1' } ),
|
|
50
|
+
's-2': expect.objectContaining( { id: 's-2' } ),
|
|
51
|
+
} );
|
|
52
|
+
} );
|
|
41
53
|
} );
|
|
@@ -3,9 +3,15 @@ import { __privateListenTo as listenTo, commandEndEvent } from '@elementor/edito
|
|
|
3
3
|
|
|
4
4
|
import { type StylesProvider } from './utils/create-styles-repository';
|
|
5
5
|
|
|
6
|
+
export const ELEMENTS_STYLES_PROVIDER_KEY = 'elements';
|
|
7
|
+
|
|
6
8
|
export const elementsStylesProvider: StylesProvider = {
|
|
7
|
-
get: () => {
|
|
8
|
-
|
|
9
|
+
get: ( meta = {} ) => {
|
|
10
|
+
let elements = getElements();
|
|
11
|
+
|
|
12
|
+
if ( 'elementId' in meta && meta.elementId ) {
|
|
13
|
+
elements = elements.filter( ( element ) => element.id === meta.elementId );
|
|
14
|
+
}
|
|
9
15
|
|
|
10
16
|
const entries = elements.flatMap( ( element ) => {
|
|
11
17
|
const styles = element.model.get( 'styles' );
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useEffect, useReducer } from 'react';
|
|
2
|
+
|
|
3
|
+
import { stylesRepository } from '../styles-repository';
|
|
4
|
+
import { type StyleProviderMeta } from '../utils/create-styles-repository';
|
|
5
|
+
|
|
6
|
+
export function useAllStylesByProvider( meta: StyleProviderMeta = {} ) {
|
|
7
|
+
const [ , rerender ] = useReducer( ( prev ) => ! prev, false );
|
|
8
|
+
|
|
9
|
+
useEffect( () => stylesRepository.subscribe( rerender ), [] );
|
|
10
|
+
|
|
11
|
+
return stylesRepository.allByProvider( meta );
|
|
12
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export { type StylesProvider } from './utils/create-styles-repository';
|
|
2
2
|
|
|
3
3
|
export { stylesRepository } from './styles-repository';
|
|
4
|
+
export { useAllStylesByProvider } from './hooks/use-all-styles-by-provider';
|
|
5
|
+
|
|
6
|
+
export { ELEMENTS_STYLES_PROVIDER_KEY } from './elements-styles-provider';
|
|
4
7
|
|
|
5
8
|
import { init } from './init';
|
|
6
9
|
|
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.
|
|
5
|
+
stylesRepository.register( 'elements', elementsStylesProvider );
|
|
6
6
|
}
|
|
@@ -5,20 +5,36 @@ import { createStylesRepository, type StylesProvider } from '../create-styles-re
|
|
|
5
5
|
|
|
6
6
|
const styleDef1 = createMockStyleDefinition( { props: { color: { $$type: 'color', value: '#dddddd' } } } );
|
|
7
7
|
const styleDef2 = createMockStyleDefinition( { props: { color: { $$type: 'color', value: '#eeeeee' } } } );
|
|
8
|
+
const styleDef3 = createMockStyleDefinition( { props: { color: { $$type: 'color', value: '#111111' } } } );
|
|
8
9
|
|
|
9
10
|
describe( 'createStylesRepository', () => {
|
|
10
|
-
it( 'should
|
|
11
|
+
it( 'should get all the style defs from all the providers', () => {
|
|
11
12
|
// Arrange
|
|
12
13
|
const repo = createStylesRepository();
|
|
13
14
|
|
|
14
|
-
repo.
|
|
15
|
-
repo.
|
|
15
|
+
repo.register( 'mock1', createMockProvider( { [ styleDef1.id ]: styleDef1 } ).provider );
|
|
16
|
+
repo.register( 'mock2', createMockProvider( { [ styleDef2.id ]: styleDef2 } ).provider );
|
|
16
17
|
|
|
17
18
|
// Assert
|
|
18
|
-
expect( repo.all() ).toEqual(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
expect( repo.all() ).toEqual( [ styleDef1, styleDef2 ] );
|
|
20
|
+
} );
|
|
21
|
+
|
|
22
|
+
it( 'should get all the style defs grouped by providers', () => {
|
|
23
|
+
// Arrange
|
|
24
|
+
const repo = createStylesRepository();
|
|
25
|
+
|
|
26
|
+
repo.register( 'mock1', createMockProvider( { [ styleDef1.id ]: styleDef1 } ).provider );
|
|
27
|
+
|
|
28
|
+
repo.register(
|
|
29
|
+
'mock2',
|
|
30
|
+
createMockProvider( { [ styleDef2.id ]: styleDef2, [ styleDef3.id ]: styleDef3 } ).provider
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
// Assert
|
|
34
|
+
expect( repo.allByProvider() ).toEqual( [
|
|
35
|
+
[ 'mock1', [ styleDef1 ] ],
|
|
36
|
+
[ 'mock2', [ styleDef2, styleDef3 ] ],
|
|
37
|
+
] );
|
|
22
38
|
} );
|
|
23
39
|
|
|
24
40
|
it( 'should subscribe and unsubscribe to all style providers', () => {
|
|
@@ -33,8 +49,8 @@ describe( 'createStylesRepository', () => {
|
|
|
33
49
|
[ styleDef2.id ]: styleDef2,
|
|
34
50
|
} );
|
|
35
51
|
|
|
36
|
-
repo.
|
|
37
|
-
repo.
|
|
52
|
+
repo.register( 'mock1', mockStylesProvider1 );
|
|
53
|
+
repo.register( 'mock2', mockStylesProvider2 );
|
|
38
54
|
|
|
39
55
|
const cb = jest.fn();
|
|
40
56
|
const unsubscribe = repo.subscribe( cb );
|
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
import { type StyleDefinitionsMap } from '@elementor/editor-styles';
|
|
2
2
|
|
|
3
|
+
export type StyleProviderMeta = Record< string, unknown >;
|
|
4
|
+
|
|
3
5
|
export type StylesProvider = {
|
|
4
|
-
get: () => StyleDefinitionsMap;
|
|
6
|
+
get: ( meta?: StyleProviderMeta ) => StyleDefinitionsMap;
|
|
5
7
|
subscribe: ( callback: () => void ) => () => void;
|
|
6
8
|
};
|
|
7
9
|
|
|
8
10
|
export const createStylesRepository = () => {
|
|
9
11
|
const providers = new Map< string, StylesProvider >();
|
|
10
12
|
|
|
11
|
-
const
|
|
13
|
+
const register = ( key: string, provider: StylesProvider ) => {
|
|
12
14
|
providers.set( key, provider );
|
|
13
15
|
};
|
|
14
16
|
|
|
15
|
-
const
|
|
16
|
-
return Array.from( providers.
|
|
17
|
-
|
|
17
|
+
const allByProvider = ( meta: StyleProviderMeta = {} ) => {
|
|
18
|
+
return Array.from( providers.entries() ).map(
|
|
19
|
+
( [ key, provider ] ) => [ key, Object.values( provider.get( meta ) ) ] as const
|
|
20
|
+
);
|
|
21
|
+
};
|
|
18
22
|
|
|
19
|
-
|
|
20
|
-
|
|
23
|
+
const all = ( meta: StyleProviderMeta = {} ) => {
|
|
24
|
+
return Array.from( providers.values() ).flatMap( ( provider ) => Object.values( provider.get( meta ) ) );
|
|
21
25
|
};
|
|
22
26
|
|
|
23
27
|
const subscribe = ( cb: () => void ) => {
|
|
@@ -31,8 +35,9 @@ export const createStylesRepository = () => {
|
|
|
31
35
|
};
|
|
32
36
|
|
|
33
37
|
return {
|
|
34
|
-
registerProvider,
|
|
35
38
|
all,
|
|
39
|
+
allByProvider,
|
|
40
|
+
register,
|
|
36
41
|
subscribe,
|
|
37
42
|
};
|
|
38
43
|
};
|