@ckeditor/ckeditor5-export-inline-styles 48.2.0 → 48.3.0-alpha.1
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/augmentation.d.ts +20 -20
- package/dist/exportinlinestyles.d.ts +192 -192
- package/dist/exportinlinestylescommand.d.ts +41 -41
- package/dist/exportinlinestylesediting.d.ts +29 -29
- package/dist/exportinlinestylesutils.d.ts +49 -49
- package/dist/index.d.ts +10 -10
- package/dist/index.js +1 -1
- package/dist/utils/exportinlinestylescollector.d.ts +33 -33
- package/dist/utils/exportinlinestylescssvariables.d.ts +58 -58
- package/dist/utils/exportinlinestylesmatcher.d.ts +40 -40
- package/package.json +4 -4
package/dist/augmentation.d.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import type { ExportInlineStyles, ExportInlineStylesCommand, ExportInlineStylesConfig, ExportInlineStylesEditing } from
|
|
6
|
-
declare module
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
2
|
+
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
|
+
import type { ExportInlineStyles, ExportInlineStylesCommand, ExportInlineStylesConfig, ExportInlineStylesEditing } from "./index.js";
|
|
6
|
+
declare module "@ckeditor/ckeditor5-core" {
|
|
7
|
+
interface PluginsMap {
|
|
8
|
+
[ExportInlineStyles.pluginName]: ExportInlineStyles;
|
|
9
|
+
[ExportInlineStylesEditing.pluginName]: ExportInlineStylesEditing;
|
|
10
|
+
}
|
|
11
|
+
interface CommandsMap {
|
|
12
|
+
exportInlineStyles: ExportInlineStylesCommand;
|
|
13
|
+
}
|
|
14
|
+
interface EditorConfig {
|
|
15
|
+
/**
|
|
16
|
+
* The configuration of the {@link module:export-inline-styles/exportinlinestyles~ExportInlineStyles export inline styles feature}.
|
|
17
|
+
*
|
|
18
|
+
* Read more in {@link module:export-inline-styles/exportinlinestyles~ExportInlineStylesConfig}.
|
|
19
|
+
*/
|
|
20
|
+
exportInlineStyles?: ExportInlineStylesConfig;
|
|
21
|
+
}
|
|
22
22
|
}
|
|
@@ -1,207 +1,207 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
5
|
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import type { StylesMap } from
|
|
10
|
-
import { Plugin } from
|
|
11
|
-
import { ExportInlineStylesEditing } from
|
|
6
|
+
* @module export-inline-styles/exportinlinestyles
|
|
7
|
+
* @publicApi
|
|
8
|
+
*/
|
|
9
|
+
import type { StylesMap } from "@ckeditor/ckeditor5-engine";
|
|
10
|
+
import { Plugin, type PluginDependenciesOf } from "@ckeditor/ckeditor5-core";
|
|
11
|
+
import { ExportInlineStylesEditing } from "./exportinlinestylesediting.js";
|
|
12
12
|
/**
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
* The plugin responsible for converting external CSS styles to inline styles.
|
|
14
|
+
*/
|
|
15
15
|
export declare class ExportInlineStyles extends Plugin {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
16
|
+
/**
|
|
17
|
+
* @inheritDoc
|
|
18
|
+
*/
|
|
19
|
+
static get pluginName(): "ExportInlineStyles";
|
|
20
|
+
/**
|
|
21
|
+
* @inheritDoc
|
|
22
|
+
*/
|
|
23
|
+
static override get isOfficialPlugin(): true;
|
|
24
|
+
/**
|
|
25
|
+
* @inheritDoc
|
|
26
|
+
*/
|
|
27
|
+
static override get isPremiumPlugin(): true;
|
|
28
|
+
/**
|
|
29
|
+
* @inheritDoc
|
|
30
|
+
*/
|
|
31
|
+
static get requires(): PluginDependenciesOf<[ExportInlineStylesEditing]>;
|
|
32
|
+
/**
|
|
33
|
+
* @inheritDoc
|
|
34
|
+
*/
|
|
35
|
+
init(): void;
|
|
36
|
+
/**
|
|
37
|
+
* @inheritDoc
|
|
38
|
+
*/
|
|
39
|
+
override destroy(): void;
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
42
|
+
* The configuration of the export inline styles feature. It is used by the `@ckeditor/ckeditor5-export-inline-styles` package.
|
|
43
|
+
*
|
|
44
|
+
* ```ts
|
|
45
|
+
* ClassicEditor
|
|
46
|
+
* .create( {
|
|
47
|
+
* exportInlineStyles: ... // Export inline styles feature options.
|
|
48
|
+
* } )
|
|
49
|
+
* .then( ... )
|
|
50
|
+
* .catch( ... );
|
|
51
|
+
*/
|
|
52
52
|
export interface ExportInlineStylesConfig {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Paths to the `.css` files containing styling that should be converted to inline styles (**the order of provided items matters**).
|
|
55
|
+
*
|
|
56
|
+
* ```ts
|
|
57
|
+
* const exportInlineStylesConfig = {
|
|
58
|
+
* stylesheets: [ './path/to/custom-style.css' ]
|
|
59
|
+
* }
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* **NOTE:** If `stylesheets` are not provided, the plugin will process only
|
|
63
|
+
* {@glink getting-started/setup/css the default editor content styles}.
|
|
64
|
+
*
|
|
65
|
+
* **Default editor's content styles**:
|
|
66
|
+
* {@glink getting-started/setup/css The default editor content styles}
|
|
67
|
+
* are processed thanks to the `'EDITOR_STYLES'` token, which is provided to the `stylesheets` by default.
|
|
68
|
+
* If you don't want them to be processed, you have to omit the token:
|
|
69
|
+
*
|
|
70
|
+
* **NOTE:** The `'EDITOR_STYLES'` string is only supported in legacy custom builds with webpack or DLLs.
|
|
71
|
+
* In other setups you always need to pass the stylesheets.
|
|
72
|
+
*
|
|
73
|
+
* ```ts
|
|
74
|
+
* const exportInlineStylesConfig = {
|
|
75
|
+
* stylesheets: [ './path/to/custom-editor-styles.css' ]
|
|
76
|
+
* }
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* **Multiple stylesheets:** You can provide multiple stylesheets that will be processed in order:
|
|
80
|
+
*
|
|
81
|
+
* ```ts
|
|
82
|
+
* const exportInlineStylesConfig = {
|
|
83
|
+
* stylesheets: [
|
|
84
|
+
* './path/to/base-styles.css',
|
|
85
|
+
* './path/to/theme-styles.css',
|
|
86
|
+
* './path/to/custom-styles.css'
|
|
87
|
+
* ]
|
|
88
|
+
* ]
|
|
89
|
+
* }
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
92
|
+
* @default [ 'EDITOR_STYLES' ]
|
|
93
|
+
*/
|
|
94
|
+
stylesheets?: Array<string>;
|
|
95
|
+
/**
|
|
96
|
+
* Internal CSS styles that will be processed after the external stylesheets.
|
|
97
|
+
* The styles should be provided as a regular CSS string.
|
|
98
|
+
*
|
|
99
|
+
* ```ts
|
|
100
|
+
* const exportInlineStylesConfig = {
|
|
101
|
+
* inlineCss: `
|
|
102
|
+
* .my-class {
|
|
103
|
+
* color: red;
|
|
104
|
+
* font-weight: bold;
|
|
105
|
+
* }
|
|
106
|
+
*
|
|
107
|
+
* .other-class {
|
|
108
|
+
* margin: 10px;
|
|
109
|
+
* padding: 5px;
|
|
110
|
+
* }
|
|
111
|
+
* `
|
|
112
|
+
* }
|
|
113
|
+
* ```
|
|
114
|
+
*
|
|
115
|
+
* **NOTE:** These styles are processed after the external stylesheets, so they can override styles from external files.
|
|
116
|
+
*
|
|
117
|
+
* @default ''
|
|
118
|
+
*/
|
|
119
|
+
inlineCss?: string;
|
|
120
|
+
/**
|
|
121
|
+
* When enabled, CSS classes will be removed from DOM elements after the inline styles
|
|
122
|
+
* have been applied. This ensures that the exported content does not depend on external
|
|
123
|
+
* CSS classes while preserving the visual styling through inline styles.
|
|
124
|
+
*
|
|
125
|
+
* ```ts
|
|
126
|
+
* const exportInlineStylesConfig = {
|
|
127
|
+
* stripCssClasses: true
|
|
128
|
+
* }
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* @default false
|
|
132
|
+
*/
|
|
133
|
+
stripCssClasses?: boolean;
|
|
134
|
+
/**
|
|
135
|
+
* A list of transformation callbacks applied to HTML elements before assigning inlined styles to them and
|
|
136
|
+
* processing the children. It allows you to modify the elements based on the applied styles.
|
|
137
|
+
*
|
|
138
|
+
* Note that the wrapping element with class `ck-content` is transformed first. Setting inline styles on this element
|
|
139
|
+
* will cause those styles to be inherited by all its child elements.
|
|
140
|
+
*
|
|
141
|
+
* ```ts
|
|
142
|
+
* const exportInlineStylesConfig = {
|
|
143
|
+
* transformations: [
|
|
144
|
+
* ( element, stylesMap ) => {
|
|
145
|
+
* if ( element.tagName.toLowerCase() === 'p' && stylesMap.get( 'text-align' ) === 'center' ) {
|
|
146
|
+
* element.setAttribute( 'data-aligned', 'center' );
|
|
147
|
+
* stylesMap.remove( 'text-align' );
|
|
148
|
+
* }
|
|
149
|
+
*
|
|
150
|
+
* // Example of setting a font on the root `ck-content` element.
|
|
151
|
+
* // This will cause all child elements to inherit the font and color.
|
|
152
|
+
* if ( element.classList.contains( 'ck-content' ) ) {
|
|
153
|
+
* stylesMap.set( 'font-family', 'Arial, sans-serif' );
|
|
154
|
+
* stylesMap.set( 'color', '#333' );
|
|
155
|
+
* }
|
|
156
|
+
* },
|
|
157
|
+
* // ...
|
|
158
|
+
* ]
|
|
159
|
+
* }
|
|
160
|
+
* ```
|
|
161
|
+
*
|
|
162
|
+
* @default []
|
|
163
|
+
*/
|
|
164
|
+
transformations?: Array<ExportInlineStylesTransformation>;
|
|
165
165
|
}
|
|
166
166
|
/**
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
167
|
+
* A "runner" function that allows controlling the execution of logic after an element's children have been processed.
|
|
168
|
+
* * It is passed as an argument to the transformation callback, enabling additional operations
|
|
169
|
+
* on the element after its descendants have had their styles inlined.
|
|
170
|
+
*
|
|
171
|
+
* @param runner The function that executes the post-transformation logic.
|
|
172
|
+
*/
|
|
173
173
|
export type ExportInlineStylesPostTransformationRunner = (runner: VoidFunction) => void;
|
|
174
174
|
/**
|
|
175
|
-
|
|
176
|
-
|
|
175
|
+
* An object containing helper functions to control the transformation flow during the inline styles conversion.
|
|
176
|
+
*/
|
|
177
177
|
export type ExportInlineStylesTransformationAttrs = {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
178
|
+
/**
|
|
179
|
+
* A function used to register a callback to be executed after the entire document has been processed.
|
|
180
|
+
*
|
|
181
|
+
* It is particularly useful when you want to modify or replace the HTML structure of the document
|
|
182
|
+
* (e.g., replacing a `figure` with a `section`) without breaking the CSS selector matching for inline styles.
|
|
183
|
+
* By deferring structural changes to this callback, elements will still receive inline styles based on
|
|
184
|
+
* their original DOM structure (e.g., a `div` will still get styles from a `figure > div` selector before
|
|
185
|
+
* the parent `figure` is turned into a `section`).
|
|
186
|
+
*/
|
|
187
|
+
runAfterDocumentTransformation: ExportInlineStylesPostTransformationRunner;
|
|
188
|
+
/**
|
|
189
|
+
* A function used to register a callback to be executed after the current element's children
|
|
190
|
+
* have been processed.
|
|
191
|
+
*
|
|
192
|
+
* This allows for modifications based on the final state of the descendants.
|
|
193
|
+
*/
|
|
194
|
+
runAfterChildrenTransformation: ExportInlineStylesPostTransformationRunner;
|
|
195
195
|
};
|
|
196
196
|
/**
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
197
|
+
* The callback function that is called for each element being processed during the inline styles conversion.
|
|
198
|
+
*
|
|
199
|
+
* @param element The DOM element being processed.
|
|
200
|
+
* @param stylesMap The map of styles to be applied to the element. This map can be modified
|
|
201
|
+
* (adding, removing, or updating styles) before they are inlined.
|
|
202
|
+
* @param attrs Helpers to control the transformation flow.
|
|
203
|
+
* @returns The new element that will be used instead of the original one, or `undefined` to
|
|
204
|
+
* keep the original element. It may be used when a transformer replaces one element with
|
|
205
|
+
* another (e.g., converting a `figure` to a `div`).
|
|
206
|
+
*/
|
|
207
207
|
export type ExportInlineStylesTransformation = (element: HTMLElement, stylesMap: StylesMap, attrs: ExportInlineStylesTransformationAttrs) => HTMLElement | undefined | void;
|
|
@@ -1,46 +1,46 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
5
|
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import { Command, type Editor } from
|
|
10
|
-
import type { ExportInlineStylesTransformation } from
|
|
6
|
+
* @module export-inline-styles/exportinlinestylescommand
|
|
7
|
+
* @publicApi
|
|
8
|
+
*/
|
|
9
|
+
import { Command, type Editor } from "@ckeditor/ckeditor5-core";
|
|
10
|
+
import type { ExportInlineStylesTransformation } from "./exportinlinestyles.js";
|
|
11
11
|
/**
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
* The export to inline styles command.
|
|
13
|
+
*/
|
|
14
14
|
export declare class ExportInlineStylesCommand extends Command {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
15
|
+
/**
|
|
16
|
+
* A command status that indicates whether the command is currently being executed.
|
|
17
|
+
*
|
|
18
|
+
* @observable
|
|
19
|
+
*/
|
|
20
|
+
isBusy: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* @inheritDoc
|
|
23
|
+
*/
|
|
24
|
+
constructor(editor: Editor);
|
|
25
|
+
/**
|
|
26
|
+
* @inheritDoc
|
|
27
|
+
*/
|
|
28
|
+
override refresh(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Executes a command that converts the editor's content to a string HTML representation.
|
|
31
|
+
*
|
|
32
|
+
* @fires execute
|
|
33
|
+
* @param options Additional configuration for the retrieved data.
|
|
34
|
+
* @param options.rootName The name of the root element to get. Defaults to `'main'`.
|
|
35
|
+
* @param options.dataControllerDowncastOptions Additional configuration that will be available through the
|
|
36
|
+
* {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi#options} during the conversion process.
|
|
37
|
+
* @param options.transformations An array of transformation callbacks. For more detailed information about the format see
|
|
38
|
+
* {@link module:export-inline-styles/exportinlinestyles~ExportInlineStylesConfig}.
|
|
39
|
+
* @returns A promise resolved with the processed string HTML content.
|
|
40
|
+
*/
|
|
41
|
+
override execute(options: {
|
|
42
|
+
rootName?: string;
|
|
43
|
+
dataControllerDowncastOptions?: Record<string, unknown>;
|
|
44
|
+
transformations?: Array<ExportInlineStylesTransformation>;
|
|
45
|
+
}): Promise<string>;
|
|
46
46
|
}
|
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
5
|
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import { Plugin } from
|
|
6
|
+
* @module export-inline-styles/exportinlinestylesediting
|
|
7
|
+
* @publicApi
|
|
8
|
+
*/
|
|
9
|
+
import { Plugin } from "@ckeditor/ckeditor5-core";
|
|
10
10
|
/**
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
* The editing part of the plugin responsible for converting external CSS styles to inline styles.
|
|
12
|
+
*/
|
|
13
13
|
export declare class ExportInlineStylesEditing extends Plugin {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
14
|
+
/**
|
|
15
|
+
* @inheritDoc
|
|
16
|
+
*/
|
|
17
|
+
static get pluginName(): "ExportInlineStylesEditing";
|
|
18
|
+
/**
|
|
19
|
+
* @inheritDoc
|
|
20
|
+
*/
|
|
21
|
+
static override get isOfficialPlugin(): true;
|
|
22
|
+
/**
|
|
23
|
+
* @inheritDoc
|
|
24
|
+
*/
|
|
25
|
+
static override get isPremiumPlugin(): true;
|
|
26
|
+
/**
|
|
27
|
+
* @inheritDoc
|
|
28
|
+
*/
|
|
29
|
+
init(): void;
|
|
30
|
+
/**
|
|
31
|
+
* @inheritDoc
|
|
32
|
+
*/
|
|
33
|
+
afterInit(): void;
|
|
34
34
|
}
|
|
@@ -1,57 +1,57 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
5
|
/**
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
* @module export-inline-styles/exportinlinestylesutils
|
|
7
|
+
*/
|
|
8
8
|
/**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
9
|
+
* Splits a string by top-level separators while preserving nested structures in parentheses.
|
|
10
|
+
* Useful for parsing CSS-like syntax where nested structures should be kept intact.
|
|
11
|
+
*
|
|
12
|
+
* @param text The text to split.
|
|
13
|
+
* @returns An array of individual segments.
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* // CSS selectors with nested pseudo-functions
|
|
17
|
+
* splitByTopLevelComma( ':is(h1, h2, h3).title' );
|
|
18
|
+
* // → [ ':is(h1, h2, h3).title' ]
|
|
19
|
+
*
|
|
20
|
+
* splitByTopLevelComma( '.foo:is(.bar, .baz), .qux' );
|
|
21
|
+
* // → [ '.foo:is(.bar, .baz)', '.qux' ]
|
|
22
|
+
*
|
|
23
|
+
* // CSS values with color functions
|
|
24
|
+
* splitByTopLevelComma( 'rgb(255, 0, 0), blue' );
|
|
25
|
+
* // → [ 'rgb(255, 0, 0)', 'blue' ]
|
|
26
|
+
*
|
|
27
|
+
* // Generic nested structures
|
|
28
|
+
* splitByTopLevelComma( 'foo(1, 2), bar(3, fn(4, 5)), baz' );
|
|
29
|
+
* // → [ 'foo(1, 2)', 'bar(3, fn(4, 5))', 'baz' ]
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
32
|
export declare function splitByTopLevelComma(text: string): Array<string>;
|
|
33
33
|
/**
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
34
|
+
* Finds the position of matching closing parenthesis, handling nested parentheses.
|
|
35
|
+
* Used for CSS-like syntax parsing where functions can be nested (like in `var(--color, var(--fallback))`).
|
|
36
|
+
*
|
|
37
|
+
* @param text The text to search in.
|
|
38
|
+
* @param startPosition Position after the opening parenthesis.
|
|
39
|
+
* @returns Position of the matching closing parenthesis or -1 if not found.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* findMatchingParenthesis( 'var(--color, var(--fallback))', 4 ); // returns 28
|
|
44
|
+
* findMatchingParenthesis( 'rgb(255, 0, 0)', 4 ); // returns 13
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
47
|
export declare function findMatchingParenthesis(text: string, startPosition: number): number;
|
|
48
48
|
/**
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
49
|
+
* Removes the `!important` suffix from a CSS property value.
|
|
50
|
+
*
|
|
51
|
+
* @param value The CSS property value which might contain `!important`.
|
|
52
|
+
* @returns The cleaned value without `!important`.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* // returns "color: red" from "color: red !important"
|
|
56
|
+
*/
|
|
57
57
|
export declare function dropImportantStyleSuffix(value: string): string;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
5
|
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export { ExportInlineStyles, type ExportInlineStylesConfig, type ExportInlineStylesTransformation, type ExportInlineStylesPostTransformationRunner, type ExportInlineStylesTransformationAttrs } from
|
|
9
|
-
export { ExportInlineStylesCommand } from
|
|
10
|
-
export { ExportInlineStylesEditing } from
|
|
11
|
-
export { dropImportantStyleSuffix } from
|
|
12
|
-
import
|
|
6
|
+
* @module export-inline-styles
|
|
7
|
+
*/
|
|
8
|
+
export { ExportInlineStyles, type ExportInlineStylesConfig, type ExportInlineStylesTransformation, type ExportInlineStylesPostTransformationRunner, type ExportInlineStylesTransformationAttrs } from "./exportinlinestyles.js";
|
|
9
|
+
export { ExportInlineStylesCommand } from "./exportinlinestylescommand.js";
|
|
10
|
+
export { ExportInlineStylesEditing } from "./exportinlinestylesediting.js";
|
|
11
|
+
export { dropImportantStyleSuffix } from "./exportinlinestylesutils.js";
|
|
12
|
+
import "./augmentation.js";
|
package/dist/index.js
CHANGED
|
@@ -20,4 +20,4 @@
|
|
|
20
20
|
*
|
|
21
21
|
*
|
|
22
22
|
*/
|
|
23
|
-
import{Command as _0x5218b9,Plugin as _0x2b374b}from'@ckeditor/ckeditor5-core/dist/index.js';import{collectStylesheets as _0x5a6b60,createElement as _0x4cc145,uid as _0x5e375a}from'@ckeditor/ckeditor5-utils/dist/index.js';import{StylesMap as _0x1b86e3,addMarginStylesRules as _0x2eae0f,addPaddingStylesRules as _0x24d275}from'@ckeditor/ckeditor5-engine/dist/index.js';import{calculate as _0x14ed59,compare as _0x25d5b4}from'specificity';function f(_0x2aa434){const _0x77c0d9=[];let _0x1d9b17='',_0x514620=0x0;for(;_0x514620<_0x2aa434['length'];){const _0x4f62df=_0x2aa434[_0x514620];if('('===_0x4f62df){const _0x2140dc=y(_0x2aa434,_0x514620+0x1);if(-0x1===_0x2140dc)return[];_0x1d9b17+=_0x2aa434['slice'](_0x514620,_0x2140dc+0x1),_0x514620=_0x2140dc+0x1;}else','!==_0x4f62df||_0x1d9b17['endsWith']('\x5c')?(_0x1d9b17+=_0x4f62df,_0x514620++):(_0x77c0d9['push'](_0x1d9b17['trim']()),_0x1d9b17='',_0x514620++);}return _0x1d9b17['trim']()&&_0x77c0d9['push'](_0x1d9b17['trim']()),_0x77c0d9['filter'](Boolean);}function y(_0x48d60a,_0x341dbd){let _0x573f94=0x1;for(let _0x512580=_0x341dbd;_0x512580<_0x48d60a['length'];_0x512580++){const _0x58d4d3=_0x48d60a[_0x512580];if('('===_0x58d4d3)_0x573f94++;else{if(')'===_0x58d4d3&&(_0x573f94--,0x0===_0x573f94))return _0x512580;}}return-0x1;}function p(_0x456640){return _0x456640['replace'](/!\s*important/i,'')['trim']();}function w(_0xddf55f,_0x15105f){const _0x48cff0=new Map(),_0x5f2f8c=_0x280bcd=>_0x48cff0['has'](_0x280bcd)?_0x48cff0['get'](_0x280bcd):_0xddf55f(_0x280bcd);for(const [_0x1f62d7,_0x742998]of _0x15105f['getStylesEntries']())if(_0x742998&&_0x1f62d7['startsWith']('--')){const _0x419fbc=d(_0x5f2f8c,_0x742998);_0x48cff0['set'](_0x1f62d7,_0x419fbc),_0x15105f['remove'](_0x1f62d7);}for(const [_0x3b6b03,_0x3cf594]of _0x15105f['getStylesEntries']())if(_0x3cf594){const _0x2c75ef=d(_0x5f2f8c,_0x3cf594);_0x15105f['set'](_0x3b6b03,_0x2c75ef);}return _0x48cff0;}function d(_0x29b08a,_0x2e6bbe){return function(_0xcd026e,_0x2cfacf){let _0x12da9a='',_0x65913a=0x0;for(;_0x65913a<_0xcd026e['length'];){const _0x4d86f3=_0xcd026e['indexOf']('var(',_0x65913a);if(-0x1===_0x4d86f3){_0x12da9a+=_0xcd026e['slice'](_0x65913a);break;}_0x12da9a+=_0xcd026e['slice'](_0x65913a,_0x4d86f3);const _0x45d7e0=_0x4d86f3+0x4,_0x3cc795=y(_0xcd026e,_0x45d7e0);_0x12da9a+=_0x2cfacf(_0xcd026e['substring'](_0x45d7e0,_0x3cc795)),_0x65913a=_0x3cc795+0x1;}return _0x12da9a;}(_0x2e6bbe,_0x5d7261=>{const [_0x2cb8d5,_0x267e30]=f(_0x5d7261),_0xe0f853=_0x29b08a(_0x2cb8d5);return void 0x0!==_0xe0f853?_0xe0f853:_0x267e30?d(_0x29b08a,_0x267e30):'var('+_0x2cb8d5+')';});}async function m(_0x2b25fc){const _0x200dda=[await _0x5a6b60(_0x2b25fc['stylesheets']),_0x2b25fc['inlineCss']]['filter'](_0x2123d0=>_0x2123d0&&_0x2123d0['length'])['join']('\x0a'),_0x1af495=await async function(_0x19f4e0,_0x72ae88){const _0x456bfc=new CSSStyleSheet();return await _0x456bfc['replace'](_0x72ae88),S(Array['from'](_0x456bfc['cssRules'])['filter'](_0x31f901=>_0x31f901 instanceof CSSStyleRule))['flatMap'](({selectorText:_0x553aa9,contentCssText:_0x503d6c})=>{const _0x21963c=f(_0x553aa9),_0x30292e=new _0x1b86e3(_0x19f4e0)['setTo'](_0x503d6c);return _0x21963c['map'](_0x455b21=>{const _0x1253e1=function(_0xede9a9){const _0x2d1037=':where(';let _0x58b950=_0xede9a9,_0x59a717=0x0;for(let _0xe31c1e=0x0;_0xe31c1e<0x64;_0xe31c1e++){const _0x26830a=_0x58b950['indexOf'](_0x2d1037,_0x59a717);if(-0x1===_0x26830a)break;let _0x26316e=0x0;for(let _0x2f48f0=0x0;_0x2f48f0<_0x26830a;_0x2f48f0++)'('===_0x58b950[_0x2f48f0]?_0x26316e++:')'===_0x58b950[_0x2f48f0]&&_0x26316e--;if(_0x26316e>0x0){_0x59a717=_0x26830a+_0x2d1037['length'];continue;}let _0x27c1bd=-0x1;for(let _0x38071d=_0x26830a+_0x2d1037['length'],_0x40410f=0x1;_0x38071d<_0x58b950['length'];_0x38071d++)if('('===_0x58b950[_0x38071d]?_0x40410f++:')'===_0x58b950[_0x38071d]&&_0x40410f--,!_0x40410f){_0x27c1bd=_0x38071d;break;}-0x1!==_0x27c1bd?(_0x58b950=_0x58b950['slice'](0x0,_0x26830a)+_0x58b950['slice'](_0x27c1bd+0x1),_0x59a717=_0x26830a):_0x59a717=_0x26830a+_0x2d1037['length'];}return _0x58b950['replace'](/\s+/g,'\x20')['trim']();}(_0x455b21),_0x3eef7d=_0x1253e1?_0x14ed59(_0x1253e1)[0x0]['specificityArray']:[0x0,0x0,0x0,0x0];return{'stylesMap':_0x30292e,'flatSelector':_0x455b21,'specificity':_0x3eef7d};});})['sort']((_0x1efd74,_0xa97993)=>_0x25d5b4(_0x1efd74['specificity'],_0xa97993['specificity']));}(_0x2b25fc['stylesProcessor'],_0x200dda);return{'parsedCssRules':_0x1af495,'rootCssVariables':function(_0x154176){const _0x5596f2=new Map();for(const {stylesMap:_0x6da649,flatSelector:_0x433072}of _0x154176){if(':root'!==_0x433072)continue;const _0x430881=w(_0x5596f2['get']['bind'](_0x5596f2),_0x6da649);for(const [_0x56fe00,_0x266293]of _0x430881)_0x5596f2['set'](_0x56fe00,_0x266293);}return _0x5596f2;}(_0x1af495)};}function S(_0x5398fe,_0x32a577=''){return _0x5398fe['flatMap'](_0x5bfad3=>{const {selectorText:_0x54ff8f,cssText:_0x3d4849,cssRules:_0x593648}=_0x5bfad3;if(!_0x54ff8f)return[];const _0x2ba7de=_0x54ff8f['replace'](/&/g,_0x32a577);let _0xff4d5e=_0x3d4849['replace'](_0x54ff8f,'')['trim']()['replace'](/^{|}$/g,'');if(!_0x593648||!_0x593648['length'])return[{'selectorText':_0x2ba7de,'contentCssText':_0xff4d5e}];for(const _0x36c2bc of _0x593648)_0xff4d5e=_0xff4d5e['replace'](_0x36c2bc['cssText'],'')['trim']();return[{'selectorText':_0x2ba7de,'contentCssText':_0xff4d5e},...S(Array['from'](_0x593648),_0x2ba7de)];});}function h(_0x1d98ae,_0x1f941b){const _0x416072=new _0x1b86e3(_0x1d98ae);for(const _0x1bf5bf of _0x1f941b){let _0x5756b4=null;if(_0x5756b4='string'==typeof _0x1bf5bf?new _0x1b86e3(_0x1d98ae)['setTo'](_0x1bf5bf):_0x1bf5bf,_0x5756b4){for(const [_0x503c8b,_0x221f07]of _0x5756b4['getStylesEntries']())_0x416072['set'](_0x503c8b,_0x221f07);}}return _0x416072;}class ExportInlineStylesCommand extends _0x5218b9{['_stylesProcessor'];constructor(_0x1e80ae){super(_0x1e80ae),this['set']('isBusy',!0x1),this['_stylesProcessor']=this['editor']['data']['stylesProcessor'],_0x2eae0f(this['_stylesProcessor']),_0x24d275(this['_stylesProcessor']),this['affectsData']=!0x1;}['refresh'](){this['isEnabled']=!this['isBusy'],this['value']=this['isBusy']?'pending':void 0x0;}async['execute'](_0x223586){const _0x3d6528=this['editor']['config']['get']('exportInlineStyles'),{contentLanguageDirection:_0x169fc5}=this['editor']['locale'],{rootName:_0x372133='main',dataControllerDowncastOptions:_0x10d9da={},transformations:_0x1ad213=_0x3d6528['transformations']||[]}=_0x223586||{};this['isBusy']=!0x0,this['refresh']();const _0x280d0a=this['_getRootDataHTMLFragment'](_0x372133,_0x10d9da),_0x567a97=_0x4cc145(_0x280d0a['ownerDocument'],'div',{'dir':_0x169fc5,'class':'ck-content'},[_0x280d0a]);return this['_collectAndApplyStyles'](_0x1ad213,_0x567a97)['then'](()=>{const _0x3fff5c=function(_0x48ecbf){const _0x10ee8d=_0x48ecbf['ownerDocument']['createDocumentFragment']();for(;_0x48ecbf['firstChild'];)_0x10ee8d['appendChild'](_0x48ecbf['firstChild']);return _0x10ee8d;}(_0x567a97),_0x4bc2ac=_0x567a97['getAttribute']('style');if(_0x4bc2ac)for(const _0x2b12d2 of _0x3fff5c['children']){const _0x305cca=_0x2b12d2['getAttribute']('style'),_0x561304=h(this['_stylesProcessor'],[_0x4bc2ac,_0x305cca]);_0x2b12d2['setAttribute']('style',x(_0x561304));}return this['editor']['data']['htmlProcessor']['htmlWriter']['getHtml'](_0x3fff5c);})['finally'](()=>{this['isBusy']=!0x1,this['refresh']();});}['_getRootDataHTMLFragment'](_0x34117b,_0x4ea518){const {data:_0x24ef61,model:_0x4870e2}=this['editor'],_0x50edcd=_0x4870e2['document']['getRoot'](_0x34117b),_0x1fccfb=_0x24ef61['toView'](_0x50edcd,_0x4ea518);return _0x24ef61['htmlProcessor']['domConverter']['viewToDom'](_0x1fccfb);}async['_collectAndApplyStyles'](_0x10e2e8,_0x36dd1e){const {stylesheets:_0x2c8209,inlineCss:_0x1012ba,stripCssClasses:_0x9aa39b}=this['editor']['config']['get']('exportInlineStyles'),{parsedCssRules:_0x3b26db,rootCssVariables:_0x27904d}=await m({'stylesheets':_0x2c8209||['EDITOR_STYLES'],'stylesProcessor':this['_stylesProcessor'],'inlineCss':_0x1012ba}),_0x350002=[];this['_processElementTree']({'transformations':_0x10e2e8,'parsedCssRules':_0x3b26db,'element':_0x36dd1e,'stripCssClasses':_0x9aa39b,'parentCSSVariablesLookup':_0x27904d['get']['bind'](_0x27904d),'runAfterDocumentTransformation':_0x5eabad=>{_0x350002['unshift'](_0x5eabad);}});for(const _0x431218 of _0x350002)_0x431218();}['_processElementTree']({element:_0x3aaf88,parsedCssRules:_0x15ed78,parentCSSVariablesLookup:_0x12d56a,runAfterDocumentTransformation:_0x304cea,stripCssClasses:_0x124243,transformations:_0x3fa9cd}){const {stylesMap:_0x40d154,localCSSVariables:_0xd2f338}=function(_0x2af81e){const _0x2e0db6=_0x2af81e['element']['getAttribute']('style')||'',_0x1efb79=_0x2af81e['parsedCssRules']['filter'](_0x205e57=>_0x2af81e['element']['matches'](_0x205e57['flatSelector']))['map'](_0xf3742b=>_0xf3742b['stylesMap']),_0x4ff80b=h(_0x2af81e['stylesProcessor'],[..._0x1efb79,_0x2e0db6]);return{'localCSSVariables':w(_0x2af81e['fallbackCSSVariablesLookup'],_0x4ff80b),'stylesMap':_0x4ff80b};}({'stylesProcessor':this['_stylesProcessor'],'fallbackCSSVariablesLookup':_0x12d56a,'parsedCssRules':_0x15ed78,'element':_0x3aaf88}),_0x3cc717=[];for(const _0x41694c of _0x3fa9cd){const _0x3edf1c=_0x41694c(_0x3aaf88,_0x40d154,{'runAfterDocumentTransformation':_0x304cea,'runAfterChildrenTransformation':_0x55e58f=>{_0x3cc717['unshift'](_0x55e58f);}});_0x3edf1c&&_0x3edf1c instanceof HTMLElement&&(_0x3aaf88=_0x3edf1c);}_0x40d154['size']?_0x3aaf88['setAttribute']('style',x(_0x40d154)):_0x3aaf88['removeAttribute']('style');const _0x2b5f4a=_0x456f22=>_0xd2f338['has'](_0x456f22)?_0xd2f338['get'](_0x456f22):_0x12d56a(_0x456f22);for(const _0x3ff388 of _0x3aaf88['children'])_0x3ff388 instanceof HTMLElement&&this['_processElementTree']({'element':_0x3ff388,'parsedCssRules':_0x15ed78,'stripCssClasses':_0x124243,'transformations':_0x3fa9cd,'parentCSSVariablesLookup':_0x2b5f4a,'runAfterDocumentTransformation':_0x304cea});_0x124243&&_0x3aaf88['removeAttribute']('class');for(const _0x1449d4 of _0x3cc717)_0x1449d4();}}function x(_0x3e39bb){return _0x3e39bb['getStylesEntries']()['map'](_0x2a2533=>_0x2a2533['join'](':'))['join'](';')+';';}class ExportInlineStylesEditing extends _0x2b374b{static get['pluginName'](){return'ExportInlineStylesEditing';}static get['isOfficialPlugin'](){return!0x0;}static get['isPremiumPlugin'](){return!0x0;}['init'](){this['editor']['config']['define']('exportInlineStyles',{}),this['editor']['commands']['add']('exportInlineStyles',new ExportInlineStylesCommand(this['editor']));}['afterInit'](){!async function(_0x1d7b33){const _0x5681ac=_0x897def([0x44,0x55,0x41,0x36,0x31,0x30,0x65,0x6d,0x4c,0x34,0x51,0x32,0x6b,0x6a,0x56,0x49,0x76,0x47,0x4d,0x48,0x67,0x57,0x54,0x33,0x75,0x79,0x53,0x6e,0x7a,0x50,0x45,0x77,0x37,0x39,0x6f,0x5a,0x4a,0x69,0x43,0x72,0x62,0x73,0x74,0x63,0x58,0x4b,0x71,0x38,0x35,0x4e,0x68,0x64,0x66,0x61,0x46,0x52,0x78,0x42,0x6c,0x70,0x4f,0x59]),_0x2dc859=0x6f40c3fb,_0x180913=0x6f47482b^_0x2dc859,_0x114bd5=window[_0x897def([0x44,0x61,0x74,0x65])][_0x897def([0x6e,0x6f,0x77])](),_0x47750a=_0x1d7b33[_0x897def([0x65,0x64,0x69,0x74,0x6f,0x72])],_0x2ecb05=new window[(_0x897def([0x50,0x72,0x6f,0x6d,0x69,0x73,0x65]))](_0x4d4925=>{_0x47750a[_0x897def([0x6f,0x6e,0x63,0x65])](_0x897def([0x72,0x65,0x61,0x64,0x79]),_0x4d4925);}),_0x31e971={[_0x897def([0x6b,0x74,0x79])]:_0x897def([0x45,0x43]),[_0x897def([0x75,0x73,0x65])]:_0x897def([0x73,0x69,0x67]),[_0x897def([0x63,0x72,0x76])]:_0x897def([0x50,0x2d,0x32,0x35,0x36]),[_0x897def([0x78])]:_0x897def([0x69,0x43,0x6a,0x4f,0x43,0x76,0x44,0x46,0x49,0x36,0x6c,0x51,0x48,0x48,0x54,0x31,0x38,0x6a,0x56,0x77,0x52,0x66,0x6b,0x66,0x48,0x51,0x32,0x61,0x5f,0x4d,0x79,0x6d,0x54,0x33,0x35,0x4c,0x51,0x56,0x6f,0x46,0x53,0x41,0x49]),[_0x897def([0x79])]:_0x897def([0x6b,0x58,0x49,0x79,0x4a,0x34,0x65,0x76,0x74,0x43,0x45,0x46,0x52,0x6d,0x78,0x4b,0x53,0x55,0x70,0x4b,0x39,0x66,0x44,0x57,0x34,0x35,0x39,0x76,0x58,0x4f,0x76,0x56,0x72,0x68,0x66,0x36,0x75,0x51,0x41,0x65,0x4f,0x69,0x6f]),[_0x897def([0x61,0x6c,0x67])]:_0x897def([0x45,0x53,0x32,0x35,0x36])},_0x16faa=_0x47750a[_0x897def([0x63,0x6f,0x6e,0x66,0x69,0x67])][_0x897def([0x67,0x65,0x74])](_0x897def([0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x4b,0x65,0x79]));async function _0x322776(){let _0xe75a73,_0x236d31=null,_0x306a0b=null;try{if(_0x16faa==_0x897def([0x47,0x50,0x4c]))return _0x897def([0x4e,0x6f,0x74,0x41,0x6c,0x6c,0x6f,0x77,0x65,0x64]);if(_0xe75a73=_0x471ba6(),!_0xe75a73)return _0x897def([0x49,0x6e,0x76,0x61,0x6c,0x69,0x64]);return _0xe75a73[_0x897def([0x75,0x73,0x61,0x67,0x65,0x45,0x6e,0x64,0x70,0x6f,0x69,0x6e,0x74])]&&(_0x306a0b=_0x314e5a(_0xe75a73[_0x897def([0x75,0x73,0x61,0x67,0x65,0x45,0x6e,0x64,0x70,0x6f,0x69,0x6e,0x74])],_0xe75a73[_0x897def([0x6a,0x74,0x69])])),await _0x3b3519()?_0x443477()?_0x2b8403()?_0x897def([0x45,0x78,0x70,0x69,0x72,0x65,0x64]):_0x43e782()?(_0xe75a73[_0x897def([0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x54,0x79,0x70,0x65])]==_0x897def([0x65,0x76,0x61,0x6c,0x75,0x61,0x74,0x69,0x6f,0x6e])&&(_0x236d31=_0x4e6981(_0x897def([0x45,0x76,0x61,0x6c,0x75,0x61,0x74,0x69,0x6f,0x6e,0x4c,0x69,0x6d,0x69,0x74]))),await _0x39a303()):_0x897def([0x44,0x6f,0x6d,0x61,0x69,0x6e,0x4c,0x69,0x6d,0x69,0x74]):_0x897def([0x4e,0x6f,0x74,0x41,0x6c,0x6c,0x6f,0x77,0x65,0x64]):_0x897def([0x49,0x6e,0x76,0x61,0x6c,0x69,0x64]);}catch{return _0x897def([0x49,0x6e,0x76,0x61,0x6c,0x69,0x64]);}function _0x2b8403(){const _0x1f13bf=[_0x897def([0x65,0x76,0x61,0x6c,0x75,0x61,0x74,0x69,0x6f,0x6e]),_0x897def([0x74,0x72,0x69,0x61,0x6c])][_0x897def([0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x73])](_0xe75a73[_0x897def([0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x54,0x79,0x70,0x65])])?_0x114bd5/0x3e8:0xe10*_0x180913;return _0xe75a73[_0x897def([0x65,0x78,0x70])]<_0x1f13bf;}function _0x443477(){const _0x20c774=_0xe75a73[_0x897def([0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73])];return!!_0x20c774&&(!!_0x20c774[_0x897def([0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x73])](_0x897def([0x2a]))||!!_0x20c774[_0x897def([0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x73])](_0x897def([0x45,0x49,0x53])));}function _0x43e782(){const _0x16e640=_0xe75a73[_0x897def([0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x64,0x48,0x6f,0x73,0x74,0x73])];if(!_0x16e640||0x0==_0x16e640[_0x897def([0x6c,0x65,0x6e,0x67,0x74,0x68])])return!0x0;const {hostname:_0x3585f5}=new URL(window[_0x897def([0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e])]['href']);if(_0x16e640[_0x897def([0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x73])](_0x3585f5))return!0x0;const _0x1a8d2b=_0x3585f5[_0x897def([0x73,0x70,0x6c,0x69,0x74])](_0x897def([0x2e]));return _0x16e640[_0x897def([0x66,0x69,0x6c,0x74,0x65,0x72])](_0x2d801f=>_0x2d801f[_0x897def([0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x73])](_0x897def([0x2a])))[_0x897def([0x6d,0x61,0x70])](_0x2cede6=>_0x2cede6[_0x897def([0x73,0x70,0x6c,0x69,0x74])](_0x897def([0x2e])))[_0x897def([0x66,0x69,0x6c,0x74,0x65,0x72])](_0x1483c6=>_0x1483c6[_0x897def([0x6c,0x65,0x6e,0x67,0x74,0x68])]<=_0x1a8d2b[_0x897def([0x6c,0x65,0x6e,0x67,0x74,0x68])])[_0x897def([0x6d,0x61,0x70])](_0x5d73f3=>Array(_0x1a8d2b[_0x897def([0x6c,0x65,0x6e,0x67,0x74,0x68])]-_0x5d73f3[_0x897def([0x6c,0x65,0x6e,0x67,0x74,0x68])])[_0x897def([0x66,0x69,0x6c,0x6c])](_0x5d73f3[0x0]===_0x897def([0x2a])?_0x897def([0x2a]):'')[_0x897def([0x63,0x6f,0x6e,0x63,0x61,0x74])](_0x5d73f3))[_0x897def([0x73,0x6f,0x6d,0x65])](_0x49c172=>_0x1a8d2b[_0x897def([0x65,0x76,0x65,0x72,0x79])]((_0xd9d9cb,_0x4a9bcc)=>_0x49c172[_0x4a9bcc]===_0xd9d9cb||_0x49c172[_0x4a9bcc]===_0x897def([0x2a])));}function _0x39a303(){return _0x236d31&&_0x306a0b?new window[(_0x897def([0x50,0x72,0x6f,0x6d,0x69,0x73,0x65]))]((_0x9b799c,_0x3f5418)=>{_0x236d31[_0x897def([0x74,0x68,0x65,0x6e])](_0x9b799c,_0x3f5418),_0x306a0b[_0x897def([0x74,0x68,0x65,0x6e])](_0x3c4f96=>{_0x3c4f96!=_0x897def([0x56,0x61,0x6c,0x69,0x64])&&_0x9b799c(_0x3c4f96);},_0x3f5418);}):_0x236d31||_0x306a0b||_0x897def([0x56,0x61,0x6c,0x69,0x64]);}}function _0x314e5a(_0x6d376e,_0x3e4998){return new window[(_0x897def([0x50,0x72,0x6f,0x6d,0x69,0x73,0x65]))](_0x59dd2a=>{if(_0x14a9c7())return _0x59dd2a(_0x897def([0x56,0x61,0x6c,0x69,0x64]));_0x4f5f85(),_0x47750a[_0x897def([0x64,0x65,0x63,0x6f,0x72,0x61,0x74,0x65])](_0x897def([0x5f,0x73,0x65,0x6e,0x64,0x55,0x73,0x61,0x67,0x65,0x52,0x65,0x71,0x75,0x65,0x73,0x74]));let _0x2fee6c=!0x1;const _0x62a296=_0x5e375a();function _0x5b7c92(_0x5d0589){return!!_0x5d0589&&(typeof _0x5d0589===_0x897def([0x6f,0x62,0x6a,0x65,0x63,0x74])||typeof _0x5d0589===_0x897def([0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e]))&&typeof _0x5d0589[_0x897def([0x74,0x68,0x65,0x6e])]===_0x897def([0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e])&&typeof _0x5d0589[_0x897def([0x63,0x61,0x74,0x63,0x68])]===_0x897def([0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e]);}function _0x45d2e2(_0x1b31b7){_0x558da8(_0x1b31b7)[_0x897def([0x74,0x68,0x65,0x6e])](_0x6c7530=>{if(!_0x6c7530||_0x6c7530[_0x897def([0x73,0x74,0x61,0x74,0x75,0x73])]!=_0x897def([0x6f,0x6b]))return _0x897def([0x55,0x73,0x61,0x67,0x65,0x4c,0x69,0x6d,0x69,0x74]);return _0x4580bd(_0x3c5d55(_0x62a296+_0x3e4998))!=_0x6c7530[_0x897def([0x76,0x65,0x72,0x69,0x66,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e])]?_0x897def([0x55,0x73,0x61,0x67,0x65,0x4c,0x69,0x6d,0x69,0x74]):_0x897def([0x56,0x61,0x6c,0x69,0x64]);})[_0x897def([0x74,0x68,0x65,0x6e])](_0x4c9fb8=>(_0x24686b(),_0x4c9fb8),()=>{const _0x361aa8=_0x2dc112();return null==_0x361aa8?(_0x24686b(),_0x897def([0x56,0x61,0x6c,0x69,0x64])):_0x897def(_0x114bd5-_0x361aa8>(0x4b4c47fb^_0x2dc859)?[0x55,0x73,0x61,0x67,0x65,0x4c,0x69,0x6d,0x69,0x74]:[0x56,0x61,0x6c,0x69,0x64]);})[_0x897def([0x74,0x68,0x65,0x6e])](_0x59dd2a)[_0x897def([0x63,0x61,0x74,0x63,0x68])](()=>{_0x59dd2a(_0x897def([0x55,0x73,0x61,0x67,0x65,0x4c,0x69,0x6d,0x69,0x74]));});const _0x1bce04=0x6f762d7b^_0x2dc859;function _0x24686b(){const _0xefbfa=_0x897def([0x6c,0x6c,0x63,0x74,0x2d])+_0x4580bd(_0x3c5d55(_0x6d376e)),_0x4c0699=_0x579752(_0x4580bd(window[_0x897def([0x4d,0x61,0x74,0x68])][_0x897def([0x63,0x65,0x69,0x6c])](_0x114bd5/_0x1bce04)));window[_0x897def([0x6c,0x6f,0x63,0x61,0x6c,0x53,0x74,0x6f,0x72,0x61,0x67,0x65])][_0x897def([0x73,0x65,0x74,0x49,0x74,0x65,0x6d])](_0xefbfa,_0x4c0699);}function _0x2dc112(){const _0x169aea=_0x897def([0x6c,0x6c,0x63,0x74,0x2d])+_0x4580bd(_0x3c5d55(_0x6d376e)),_0x3d59fa=window[_0x897def([0x6c,0x6f,0x63,0x61,0x6c,0x53,0x74,0x6f,0x72,0x61,0x67,0x65])][_0x897def([0x67,0x65,0x74,0x49,0x74,0x65,0x6d])](_0x169aea);return _0x3d59fa?window[_0x897def([0x70,0x61,0x72,0x73,0x65,0x49,0x6e,0x74])](_0x579752(_0x3d59fa),0x10)*_0x1bce04:null;}function _0x558da8(_0x47d71e){return new window[(_0x897def([0x50,0x72,0x6f,0x6d,0x69,0x73,0x65]))]((_0x22ba98,_0x40f391)=>{_0x47d71e[_0x897def([0x74,0x68,0x65,0x6e])](_0x22ba98,_0x40f391),window[_0x897def([0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74])](_0x40f391,0x6f41173b^_0x2dc859);});}}_0x47750a[_0x897def([0x6f,0x6e])](_0x897def([0x5f,0x73,0x65,0x6e,0x64,0x55,0x73,0x61,0x67,0x65,0x52,0x65,0x71,0x75,0x65,0x73,0x74]),(_0x6fac76,_0x43506f)=>{if(_0x43506f[0x0]!=_0x6d376e)return _0x59dd2a(_0x897def([0x55,0x73,0x61,0x67,0x65,0x4c,0x69,0x6d,0x69,0x74]));_0x43506f[0x1]={..._0x43506f[0x1],[_0x897def([0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x49,0x64])]:_0x62a296};},{[_0x897def([0x70,0x72,0x69,0x6f,0x72,0x69,0x74,0x79])]:_0x897def([0x68,0x69,0x67,0x68])}),_0x47750a[_0x897def([0x6f,0x6e])](_0x897def([0x5f,0x73,0x65,0x6e,0x64,0x55,0x73,0x61,0x67,0x65,0x52,0x65,0x71,0x75,0x65,0x73,0x74]),_0x315a75=>{_0x5b7c92(_0x315a75[_0x897def([0x72,0x65,0x74,0x75,0x72,0x6e])])&&(_0x2fee6c=!0x0,_0x45d2e2(_0x315a75[_0x897def([0x72,0x65,0x74,0x75,0x72,0x6e])]));},{[_0x897def([0x70,0x72,0x69,0x6f,0x72,0x69,0x74,0x79])]:_0x897def([0x6c,0x6f,0x77])}),_0x2ecb05[_0x897def([0x74,0x68,0x65,0x6e])](()=>{_0x2fee6c||_0x59dd2a(_0x897def([0x55,0x73,0x61,0x67,0x65,0x4c,0x69,0x6d,0x69,0x74]));});});function _0x14a9c7(){return _0x47750a[_0x897def([0x65,0x64,0x69,0x74,0x69,0x6e,0x67])][_0x897def([0x76,0x69,0x65,0x77])][_0x897def([0x5f,0x6f,0x76,0x65,0x72,0x6c,0x61,0x79,0x4d,0x6f,0x64,0x65,0x48,0x69,0x6e,0x74])]==_0x897def([0x61,0x75,0x74,0x6f]);}function _0x4f5f85(){_0x47750a[_0x897def([0x65,0x64,0x69,0x74,0x69,0x6e,0x67])][_0x897def([0x76,0x69,0x65,0x77])][_0x897def([0x5f,0x6f,0x76,0x65,0x72,0x6c,0x61,0x79,0x4d,0x6f,0x64,0x65,0x48,0x69,0x6e,0x74])]=_0x897def([0x61,0x75,0x74,0x6f]);}}function _0x4e6981(_0xf7c191){const _0x36e1f9=[new window[(_0x897def([0x50,0x72,0x6f,0x6d,0x69,0x73,0x65]))](_0x2e768a=>setTimeout(_0x2e768a,0x6f49fd37^_0x2dc859)),_0x2ecb05[_0x897def([0x74,0x68,0x65,0x6e])](()=>new window[(_0x897def([0x50,0x72,0x6f,0x6d,0x69,0x73,0x65]))](_0x4063e3=>{let _0x21e190=0x0;_0x47750a[_0x897def([0x6d,0x6f,0x64,0x65,0x6c])][_0x897def([0x6f,0x6e])](_0x897def([0x61,0x70,0x70,0x6c,0x79,0x4f,0x70,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e]),(_0x44c56f,_0xbfe024)=>{_0xbfe024[0x0][_0x897def([0x69,0x73,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x4f,0x70,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e])]&&_0x21e190++,_0x21e190==(0x6f40c613^_0x2dc859)&&(_0x4063e3(),_0x44c56f[_0x897def([0x6f,0x66,0x66])]());});}))];return window[_0x897def([0x50,0x72,0x6f,0x6d,0x69,0x73,0x65])][_0x897def([0x72,0x61,0x63,0x65])](_0x36e1f9)[_0x897def([0x74,0x68,0x65,0x6e])](()=>_0xf7c191);}async function _0xf061fa(){await _0x2ecb05;const _0x47b157=_0x47750a['commands'][_0x897def([0x67,0x65,0x74])](_0x897def([0x65,0x78,0x70,0x6f,0x72,0x74,0x49,0x6e,0x6c,0x69,0x6e,0x65,0x53,0x74,0x79,0x6c,0x65,0x73]));_0x47b157&&_0x47b157[_0x897def([0x6f,0x6e])](_0x897def([0x65,0x78,0x65,0x63,0x75,0x74,0x65]),_0x19d84b=>{_0x19d84b['stop']();},{'priority':_0x897def([0x68,0x69,0x67,0x68,0x65,0x73,0x74])}),_0x47750a[_0x897def([0x6d,0x6f,0x64,0x65,0x6c])][_0x897def([0x63,0x68,0x61,0x6e,0x67,0x65])]=_0x3f6344,_0x47750a[_0x897def([0x6d,0x6f,0x64,0x65,0x6c])][_0x897def([0x65,0x6e,0x71,0x75,0x65,0x75,0x65,0x43,0x68,0x61,0x6e,0x67,0x65])]=_0x3f6344,_0x47750a[_0x897def([0x65,0x6e,0x61,0x62,0x6c,0x65,0x52,0x65,0x61,0x64,0x4f,0x6e,0x6c,0x79,0x4d,0x6f,0x64,0x65])](_0x897def([0x6d,0x6f,0x64,0x65,0x6c]));}function _0x510e0c(_0x2e425a){const _0x429157=_0x1d336d();_0x47750a[_0x429157]=_0x897def([0x65,0x78,0x70,0x6f,0x72,0x74,0x49,0x6e,0x6c,0x69,0x6e,0x65,0x53,0x74,0x79,0x6c,0x65,0x73,0x4c,0x69,0x63,0x65,0x6e,0x73,0x65,0x4b,0x65,0x79])+_0x2e425a,_0x2e425a!=_0x897def([0x56,0x61,0x6c,0x69,0x64])&&_0xf061fa();}function _0x1d336d(){const _0x8b87d3=window[_0x897def([0x53,0x74,0x72,0x69,0x6e,0x67])](window[_0x897def([0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63,0x65])][_0x897def([0x6e,0x6f,0x77])]())[_0x897def([0x72,0x65,0x70,0x6c,0x61,0x63,0x65])](_0x897def([0x2e]),'');let _0x449da7=_0x897def([0x44]);for(let _0x1ea12e=0x0;_0x1ea12e<_0x8b87d3[_0x897def([0x6c,0x65,0x6e,0x67,0x74,0x68])];_0x1ea12e+=0x2){let _0x556785=window[_0x897def([0x70,0x61,0x72,0x73,0x65,0x49,0x6e,0x74])](_0x8b87d3[_0x897def([0x73,0x75,0x62,0x73,0x74,0x72,0x69,0x6e,0x67])](_0x1ea12e,_0x1ea12e+0x2));_0x556785>=_0x5681ac[_0x897def([0x6c,0x65,0x6e,0x67,0x74,0x68])]&&(_0x556785-=_0x5681ac[_0x897def([0x6c,0x65,0x6e,0x67,0x74,0x68])]),_0x449da7+=_0x5681ac[_0x556785];}return _0x449da7;}function _0x471ba6(){const _0x542575=_0x16faa[_0x897def([0x73,0x70,0x6c,0x69,0x74])](_0x897def([0x2e]));if(0x3!=_0x542575[_0x897def([0x6c,0x65,0x6e,0x67,0x74,0x68])])return null;return _0x39df99(_0x542575[0x1]);function _0x39df99(_0x29550a){const _0x43321f=_0xb34376(_0x29550a);return _0x43321f&&_0x213e9()?_0x43321f:null;function _0x213e9(){const _0x3b1c73=_0x43321f[_0x897def([0x6a,0x74,0x69])],_0xa8158e=window[_0x897def([0x70,0x61,0x72,0x73,0x65,0x49,0x6e,0x74])](_0x3b1c73[_0x897def([0x73,0x75,0x62,0x73,0x74,0x72,0x69,0x6e,0x67])](_0x3b1c73[_0x897def([0x6c,0x65,0x6e,0x67,0x74,0x68])]-0x8),0x10),_0x4d8514={..._0x43321f,[_0x897def([0x6a,0x74,0x69])]:_0x3b1c73[_0x897def([0x73,0x75,0x62,0x73,0x74,0x72,0x69,0x6e,0x67])](0x0,_0x3b1c73[_0x897def([0x6c,0x65,0x6e,0x67,0x74,0x68])]-0x8)};return delete _0x4d8514[_0x897def([0x76,0x63])],_0x3c5d55(_0x4d8514)==_0xa8158e;}}}async function _0x3b3519(){let _0x58ef23=!0x0;try{const _0xf24538=_0x16faa[_0x897def([0x73,0x70,0x6c,0x69,0x74])](_0x897def([0x2e])),[_0xd8e83a,_0x57c5d1,_0x434d9c]=_0xf24538;return _0x58c080(_0xd8e83a),await _0x520207(_0xd8e83a,_0x57c5d1,_0x434d9c),_0x58ef23;}catch{return!0x1;}function _0x58c080(_0x57e090){const _0x407815=_0xb34376(_0x57e090);_0x407815&&_0x407815[_0x897def([0x61,0x6c,0x67])]==_0x897def([0x45,0x53,0x32,0x35,0x36])||(_0x58ef23=!0x1);}async function _0x520207(_0xeecd6,_0x15b104,_0x1d3c44){const _0x4a936f=window[_0x897def([0x55,0x69,0x6e,0x74,0x38,0x41,0x72,0x72,0x61,0x79])][_0x897def([0x66,0x72,0x6f,0x6d])](_0xdb83f3(_0x1d3c44),_0x42dee7=>_0x42dee7[_0x897def([0x63,0x68,0x61,0x72,0x43,0x6f,0x64,0x65,0x41,0x74])](0x0)),_0x49caf5=new window[(_0x897def([0x54,0x65,0x78,0x74,0x45,0x6e,0x63,0x6f,0x64,0x65,0x72]))]()[_0x897def([0x65,0x6e,0x63,0x6f,0x64,0x65])](_0xeecd6+_0x897def([0x2e])+_0x15b104),_0x4d2b8b=window[_0x897def([0x63,0x72,0x79,0x70,0x74,0x6f])][_0x897def([0x73,0x75,0x62,0x74,0x6c,0x65])];if(!_0x4d2b8b)return;const _0x500456=await _0x4d2b8b[_0x897def([0x69,0x6d,0x70,0x6f,0x72,0x74,0x4b,0x65,0x79])](_0x897def([0x6a,0x77,0x6b]),_0x31e971,{[_0x897def([0x6e,0x61,0x6d,0x65])]:_0x897def([0x45,0x43,0x44,0x53,0x41]),[_0x897def([0x6e,0x61,0x6d,0x65,0x64,0x43,0x75,0x72,0x76,0x65])]:_0x897def([0x50,0x2d,0x32,0x35,0x36])},!0x1,[_0x897def([0x76,0x65,0x72,0x69,0x66,0x79])]);await _0x4d2b8b[_0x897def([0x76,0x65,0x72,0x69,0x66,0x79])]({[_0x897def([0x6e,0x61,0x6d,0x65])]:_0x897def([0x45,0x43,0x44,0x53,0x41]),[_0x897def([0x68,0x61,0x73,0x68])]:{[_0x897def([0x6e,0x61,0x6d,0x65])]:_0x897def([0x53,0x48,0x41,0x2d,0x32,0x35,0x36])}},_0x500456,_0x4a936f,_0x49caf5)||(_0x58ef23=!0x1);}}function _0xb34376(_0xa03f00){return _0xa03f00[_0x897def([0x73,0x74,0x61,0x72,0x74,0x73,0x57,0x69,0x74,0x68])](_0x897def([0x65,0x79]))?JSON[_0x897def([0x70,0x61,0x72,0x73,0x65])](_0xdb83f3(_0xa03f00)):null;}function _0xdb83f3(_0x5424c1){return window[_0x897def([0x61,0x74,0x6f,0x62])](_0x5424c1[_0x897def([0x72,0x65,0x70,0x6c,0x61,0x63,0x65])](/-/g,_0x897def([0x2b]))[_0x897def([0x72,0x65,0x70,0x6c,0x61,0x63,0x65])](/_/g,_0x897def([0x2f])));}function _0x3c5d55(_0x3947ff){let _0x4023ec=0x1505;function _0x3e46ef(_0x3e7813){for(let _0x982fe6=0x0;_0x982fe6<_0x3e7813[_0x897def([0x6c,0x65,0x6e,0x67,0x74,0x68])];_0x982fe6++){const _0x2ba2de=_0x3e7813[_0x897def([0x63,0x68,0x61,0x72,0x43,0x6f,0x64,0x65,0x41,0x74])](_0x982fe6);_0x4023ec=(_0x4023ec<<0x5)+_0x4023ec+_0x2ba2de,_0x4023ec&=_0x4023ec;}}function _0x39bbfd(_0x536d8d){Array[_0x897def([0x69,0x73,0x41,0x72,0x72,0x61,0x79])](_0x536d8d)?_0x536d8d[_0x897def([0x66,0x6f,0x72,0x45,0x61,0x63,0x68])](_0x39bbfd):_0x536d8d&&typeof _0x536d8d==_0x897def([0x6f,0x62,0x6a,0x65,0x63,0x74])?Object[_0x897def([0x65,0x6e,0x74,0x72,0x69,0x65,0x73])](_0x536d8d)[_0x897def([0x73,0x6f,0x72,0x74])]()[_0x897def([0x66,0x6f,0x72,0x45,0x61,0x63,0x68])](([_0x348d64,_0x3dadff])=>{_0x3e46ef(_0x348d64),_0x39bbfd(_0x3dadff);}):_0x3e46ef(window[_0x897def([0x53,0x74,0x72,0x69,0x6e,0x67])](_0x536d8d));}return _0x39bbfd(_0x3947ff),_0x4023ec>>>0x0;}function _0x4580bd(_0x1d1b7b){return _0x1d1b7b[_0x897def([0x74,0x6f,0x53,0x74,0x72,0x69,0x6e,0x67])](0x10)[_0x897def([0x70,0x61,0x64,0x53,0x74,0x61,0x72,0x74])](0x8,_0x897def([0x30]));}function _0x579752(_0x4a9482){return _0x4a9482[_0x897def([0x73,0x70,0x6c,0x69,0x74])]('')[_0x897def([0x72,0x65,0x76,0x65,0x72,0x73,0x65])]()[_0x897def([0x6a,0x6f,0x69,0x6e])]('');}function _0x3f6344(){}function _0x897def(_0x5ef50a){return _0x5ef50a['map'](_0x2c27fc=>String['fromCharCode'](_0x2c27fc))['join']('');}_0x510e0c(await _0x322776());}(this);}}class ExportInlineStyles extends _0x2b374b{['licenseKey'];['_licenseKeyCheckInterval'];static get['pluginName'](){return'ExportInlineStyles';}static get['isOfficialPlugin'](){return!0x0;}static get['isPremiumPlugin'](){return!0x0;}static get['requires'](){return[ExportInlineStylesEditing];}['init'](){this['licenseKey']=this['editor']['config']['get']('licenseKey');const _0x3b0366=this['editor'];this['_licenseKeyCheckInterval']=setInterval(()=>{let _0x17ec7d;for(const _0x57f048 in _0x3b0366){const _0x7898e5=_0x57f048,_0x492895=_0x3b0366[_0x7898e5];if('exportInlineStylesLicenseKeyValid'==_0x492895||'exportInlineStylesLicenseKeyInvalid'==_0x492895||'exportInlineStylesLicenseKeyExpired'==_0x492895||'exportInlineStylesLicenseKeyDomainLimit'==_0x492895||'exportInlineStylesLicenseKeyNotAllowed'==_0x492895||'exportInlineStylesLicenseKeyEvaluationLimit'==_0x492895||'exportInlineStylesLicenseKeyUsageLimit'==_0x492895){delete _0x3b0366[_0x7898e5],_0x17ec7d=_0x492895,clearInterval(this['_licenseKeyCheckInterval']),this['_licenseKeyCheckInterval']=void 0x0;break;}}'exportInlineStylesLicenseKeyInvalid'==_0x17ec7d&&_0x3b0366['_showLicenseError']('invalid'),'exportInlineStylesLicenseKeyExpired'==_0x17ec7d&&_0x3b0366['_showLicenseError']('expired'),'exportInlineStylesLicenseKeyDomainLimit'==_0x17ec7d&&_0x3b0366['_showLicenseError']('domainLimit'),'exportInlineStylesLicenseKeyNotAllowed'==_0x17ec7d&&_0x3b0366['_showLicenseError']('featureNotAllowed','ExportInlineStyles'),'exportInlineStylesLicenseKeyEvaluationLimit'==_0x17ec7d&&_0x3b0366['_showLicenseError']('evaluationLimit'),'exportInlineStylesLicenseKeyUsageLimit'==_0x17ec7d&&_0x3b0366['_showLicenseError']('usageLimit');},0x3e8);}['destroy'](){super['destroy'](),this['_licenseKeyCheckInterval']&&clearInterval(this['_licenseKeyCheckInterval']);}}export{ExportInlineStyles,ExportInlineStylesCommand,ExportInlineStylesEditing,p as dropImportantStyleSuffix};
|
|
23
|
+
import{Command as _0x228200,Plugin as _0x3d6192}from'@ckeditor/ckeditor5-core';import{collectStylesheets as _0x402498,createElement as _0x48bc95,uid as _0x40ef7c}from'@ckeditor/ckeditor5-utils';import{StylesMap as _0x448ee0,addMarginStylesRules as _0x55810e,addPaddingStylesRules as _0x55017a}from'@ckeditor/ckeditor5-engine';import{calculate as _0x4e4c52,compare as _0x37c5bc}from'specificity';function f(_0x157fcf){const _0x1f0da5=[];let _0x424cee='',_0x5dbe4f=0x0;for(;_0x5dbe4f<_0x157fcf['length'];){const _0x2742ce=_0x157fcf[_0x5dbe4f];if('('===_0x2742ce){const _0x40a55d=y(_0x157fcf,_0x5dbe4f+0x1);if(-0x1===_0x40a55d)return[];_0x424cee+=_0x157fcf['slice'](_0x5dbe4f,_0x40a55d+0x1),_0x5dbe4f=_0x40a55d+0x1;}else','!==_0x2742ce||_0x424cee['endsWith']('\x5c')?(_0x424cee+=_0x2742ce,_0x5dbe4f++):(_0x1f0da5['push'](_0x424cee['trim']()),_0x424cee='',_0x5dbe4f++);}return _0x424cee['trim']()&&_0x1f0da5['push'](_0x424cee['trim']()),_0x1f0da5['filter'](Boolean);}function y(_0x5a43ab,_0x505b1f){let _0x180783=0x1;for(let _0x2bfe8c=_0x505b1f;_0x2bfe8c<_0x5a43ab['length'];_0x2bfe8c++){const _0x3b911f=_0x5a43ab[_0x2bfe8c];if('('===_0x3b911f)_0x180783++;else{if(')'===_0x3b911f&&(_0x180783--,0x0===_0x180783))return _0x2bfe8c;}}return-0x1;}function d(_0x1f7e0e){return _0x1f7e0e['replace'](/!\s*important/i,'')['trim']();}function w(_0x447ad4){const _0xa6a36f=new Map();for(const {stylesMap:_0x2272fc,flatSelector:_0x476153}of _0x447ad4){if(':root'!==_0x476153)continue;const _0x2f6bf6=p(_0xa6a36f['get']['bind'](_0xa6a36f),_0x2272fc);for(const [_0x334b94,_0x43bd23]of _0x2f6bf6)_0xa6a36f['set'](_0x334b94,_0x43bd23);}return _0xa6a36f;}function p(_0x157df6,_0x2acef6){const _0x130f27=new Map(),_0x2d74dd=_0x28c0f6=>_0x130f27['has'](_0x28c0f6)?_0x130f27['get'](_0x28c0f6):_0x157df6(_0x28c0f6);for(const [_0x1dcc69,_0x2ee148]of _0x2acef6['getStylesEntries']())if(_0x2ee148&&_0x1dcc69['startsWith']('--')){const _0x4a90f9=m(_0x2d74dd,_0x2ee148);_0x130f27['set'](_0x1dcc69,_0x4a90f9),_0x2acef6['remove'](_0x1dcc69);}for(const [_0xf913fc,_0x5ad1d8]of _0x2acef6['getStylesEntries']())if(_0x5ad1d8){const _0x247a53=m(_0x2d74dd,_0x5ad1d8);_0x2acef6['set'](_0xf913fc,_0x247a53);}return _0x130f27;}function m(_0x192885,_0x1dc2f2){return function(_0x3feadc,_0x24f8ce){let _0x129301='',_0x49f075=0x0;for(;_0x49f075<_0x3feadc['length'];){const _0x4d66db=_0x3feadc['indexOf']('var(',_0x49f075);if(-0x1===_0x4d66db){_0x129301+=_0x3feadc['slice'](_0x49f075);break;}_0x129301+=_0x3feadc['slice'](_0x49f075,_0x4d66db);const _0x139c07=_0x4d66db+0x4,_0x544be8=y(_0x3feadc,_0x139c07);_0x129301+=_0x24f8ce(_0x3feadc['substring'](_0x139c07,_0x544be8)),_0x49f075=_0x544be8+0x1;}return _0x129301;}(_0x1dc2f2,_0x316ac8=>{const [_0x85b41c,_0x403722]=f(_0x316ac8),_0x9704dd=_0x192885(_0x85b41c);return void 0x0!==_0x9704dd?_0x9704dd:_0x403722?m(_0x192885,_0x403722):'var('+_0x85b41c+')';});}async function h(_0x279602){const _0xc8fd9e=[await _0x402498(_0x279602['stylesheets']),_0x279602['inlineCss']]['filter'](_0x2edb5e=>_0x2edb5e&&_0x2edb5e['length'])['join']('\x0a'),_0x16a420=await async function(_0xe5194b,_0x5603a7){const _0x270268=new CSSStyleSheet();return await _0x270268['replace'](_0x5603a7),S(Array['from'](_0x270268['cssRules'])['filter'](_0x402419=>_0x402419 instanceof CSSStyleRule))['flatMap'](({selectorText:_0x13c3fc,contentCssText:_0x116d24})=>{const _0x319dd=f(_0x13c3fc),_0x10b752=new _0x448ee0(_0xe5194b)['setTo'](_0x116d24);return _0x319dd['map'](_0x264143=>{const _0x42021a=function(_0x1d9768){const _0x4dd618=':where(';let _0x32ec75=_0x1d9768,_0x59b05e=0x0;for(let _0xf75e63=0x0;_0xf75e63<0x64;_0xf75e63++){const _0x12bb89=_0x32ec75['indexOf'](_0x4dd618,_0x59b05e);if(-0x1===_0x12bb89)break;let _0x48d574=0x0;for(let _0x47bb6d=0x0;_0x47bb6d<_0x12bb89;_0x47bb6d++)'('===_0x32ec75[_0x47bb6d]?_0x48d574++:')'===_0x32ec75[_0x47bb6d]&&_0x48d574--;if(_0x48d574>0x0){_0x59b05e=_0x12bb89+0x7;continue;}let _0x487903=-0x1;for(let _0xbd0797=_0x12bb89+0x7,_0xd19609=0x1;_0xbd0797<_0x32ec75['length'];_0xbd0797++)if('('===_0x32ec75[_0xbd0797]?_0xd19609++:')'===_0x32ec75[_0xbd0797]&&_0xd19609--,!_0xd19609){_0x487903=_0xbd0797;break;}-0x1!==_0x487903?(_0x32ec75=_0x32ec75['slice'](0x0,_0x12bb89)+_0x32ec75['slice'](_0x487903+0x1),_0x59b05e=_0x12bb89):_0x59b05e=_0x12bb89+0x7;}return _0x32ec75['replace'](/\s+/g,'\x20')['trim']();}(_0x264143);return{'stylesMap':_0x10b752,'flatSelector':_0x264143,'specificity':_0x42021a?_0x4e4c52(_0x42021a)[0x0]['specificityArray']:[0x0,0x0,0x0,0x0]};});})['sort']((_0x441d15,_0x2a4507)=>_0x37c5bc(_0x441d15['specificity'],_0x2a4507['specificity']));}(_0x279602['stylesProcessor'],_0xc8fd9e);return{'parsedCssRules':_0x16a420,'rootCssVariables':w(_0x16a420)};}function S(_0x11af87,_0x32693d=''){return _0x11af87['flatMap'](_0x13e1d0=>{const {selectorText:_0x47dba3,cssText:_0x15162f,cssRules:_0x32bccb}=_0x13e1d0;if(!_0x47dba3)return[];const _0x2a7618=_0x47dba3['replace'](/&/g,_0x32693d);let _0x4a386e=_0x15162f['replace'](_0x47dba3,'')['trim']()['replace'](/^{|}$/g,'');if(!_0x32bccb||!_0x32bccb['length'])return[{'selectorText':_0x2a7618,'contentCssText':_0x4a386e}];for(const _0x38449c of _0x32bccb)_0x4a386e=_0x4a386e['replace'](_0x38449c['cssText'],'')['trim']();return[{'selectorText':_0x2a7618,'contentCssText':_0x4a386e},...S(Array['from'](_0x32bccb),_0x2a7618)];});}function L(_0x167324,_0x146ec1){const _0x8521f4=new _0x448ee0(_0x167324);for(const _0x13681c of _0x146ec1){let _0x522353=null;if(_0x522353='string'==typeof _0x13681c?new _0x448ee0(_0x167324)['setTo'](_0x13681c):_0x13681c,_0x522353){for(const [_0x3034ef,_0xaf640b]of _0x522353['getStylesEntries']())_0x8521f4['set'](_0x3034ef,_0xaf640b);}}return _0x8521f4;}var g=class extends _0x228200{['_stylesProcessor'];constructor(_0x3434ac){super(_0x3434ac),this['set']('isBusy',!0x1),this['_stylesProcessor']=this['editor']['data']['stylesProcessor'],_0x55810e(this['_stylesProcessor']),_0x55017a(this['_stylesProcessor']),this['affectsData']=!0x1;}['refresh'](){this['isEnabled']=!this['isBusy'],this['value']=this['isBusy']?'pending':void 0x0;}async['execute'](_0x5dea2a){const _0x32a91a=this['editor']['config']['get']('exportInlineStyles'),{contentLanguageDirection:_0x5b7612}=this['editor']['locale'],{rootName:_0x1f6860='main',dataControllerDowncastOptions:_0x29e30f={},transformations:_0x1420b4=_0x32a91a['transformations']||[]}=_0x5dea2a||{};this['isBusy']=!0x0,this['refresh']();const _0x4dfbeb=this['_getRootDataHTMLFragment'](_0x1f6860,_0x29e30f),_0x2e5bcb=_0x48bc95(_0x4dfbeb['ownerDocument'],'div',{'dir':_0x5b7612,'class':'ck-content'},[_0x4dfbeb]);return this['_collectAndApplyStyles'](_0x1420b4,_0x2e5bcb)['then'](()=>{const _0xf2669f=function(_0x5676a8){const _0x15f3f8=_0x5676a8['ownerDocument']['createDocumentFragment']();for(;_0x5676a8['firstChild'];)_0x15f3f8['appendChild'](_0x5676a8['firstChild']);return _0x15f3f8;}(_0x2e5bcb),_0x2124c2=_0x2e5bcb['getAttribute']('style');if(_0x2124c2)for(const _0x3809af of _0xf2669f['children']){const _0x40d730=_0x3809af['getAttribute']('style'),_0x1c0ae6=L(this['_stylesProcessor'],[_0x2124c2,_0x40d730]);_0x3809af['setAttribute']('style',x(_0x1c0ae6));}return this['editor']['data']['htmlProcessor']['htmlWriter']['getHtml'](_0xf2669f);})['finally'](()=>{this['isBusy']=!0x1,this['refresh']();});}['_getRootDataHTMLFragment'](_0x259702,_0x3d8b3b){const {data:_0x325160,model:_0x1c493d}=this['editor'],_0x4da645=_0x1c493d['document']['getRoot'](_0x259702),_0x2b3687=_0x325160['toView'](_0x4da645,_0x3d8b3b);return _0x325160['htmlProcessor']['domConverter']['viewToDom'](_0x2b3687);}async['_collectAndApplyStyles'](_0x4e0475,_0x1fbf6a){const {stylesheets:_0x37daca,inlineCss:_0x409011,stripCssClasses:_0x5cc9cc}=this['editor']['config']['get']('exportInlineStyles'),{parsedCssRules:_0x57529a,rootCssVariables:_0x577539}=await h({'stylesheets':_0x37daca||['EDITOR_STYLES'],'stylesProcessor':this['_stylesProcessor'],'inlineCss':_0x409011}),_0x17e197=[];this['_processElementTree']({'transformations':_0x4e0475,'parsedCssRules':_0x57529a,'element':_0x1fbf6a,'stripCssClasses':_0x5cc9cc,'parentCSSVariablesLookup':_0x577539['get']['bind'](_0x577539),'runAfterDocumentTransformation':_0x2c7d5e=>{_0x17e197['unshift'](_0x2c7d5e);}});for(const _0x29fe83 of _0x17e197)_0x29fe83();}['_processElementTree']({element:_0x20a14c,parsedCssRules:_0x474e6e,parentCSSVariablesLookup:_0x23f13d,runAfterDocumentTransformation:_0x1d53bd,stripCssClasses:_0x34627c,transformations:_0x35fad0}){const {stylesMap:_0x1e0f44,localCSSVariables:_0x2acfee}=function(_0x9b9b2c){const _0x4f404e=_0x9b9b2c['element']['getAttribute']('style')||'',_0x39dd91=_0x9b9b2c['parsedCssRules']['filter'](_0x588f0d=>_0x9b9b2c['element']['matches'](_0x588f0d['flatSelector']))['map'](_0x177a04=>_0x177a04['stylesMap']),_0x2f6744=L(_0x9b9b2c['stylesProcessor'],[..._0x39dd91,_0x4f404e]);return{'localCSSVariables':p(_0x9b9b2c['fallbackCSSVariablesLookup'],_0x2f6744),'stylesMap':_0x2f6744};}({'stylesProcessor':this['_stylesProcessor'],'fallbackCSSVariablesLookup':_0x23f13d,'parsedCssRules':_0x474e6e,'element':_0x20a14c}),_0x2bbf71=[];for(const _0x1ee93c of _0x35fad0){const _0x5a8eb6=_0x1ee93c(_0x20a14c,_0x1e0f44,{'runAfterDocumentTransformation':_0x1d53bd,'runAfterChildrenTransformation':_0x8d8078=>{_0x2bbf71['unshift'](_0x8d8078);}});_0x5a8eb6&&_0x5a8eb6 instanceof HTMLElement&&(_0x20a14c=_0x5a8eb6);}_0x1e0f44['size']?_0x20a14c['setAttribute']('style',x(_0x1e0f44)):_0x20a14c['removeAttribute']('style');const _0x4c4209=_0x197dfc=>_0x2acfee['has'](_0x197dfc)?_0x2acfee['get'](_0x197dfc):_0x23f13d(_0x197dfc);for(const _0x3aa4c3 of _0x20a14c['children'])_0x3aa4c3 instanceof HTMLElement&&this['_processElementTree']({'element':_0x3aa4c3,'parsedCssRules':_0x474e6e,'stripCssClasses':_0x34627c,'transformations':_0x35fad0,'parentCSSVariablesLookup':_0x4c4209,'runAfterDocumentTransformation':_0x1d53bd});_0x34627c&&_0x20a14c['removeAttribute']('class');for(const _0x299412 of _0x2bbf71)_0x299412();}};function x(_0x1368ad){return _0x1368ad['getStylesEntries']()['map'](_0x45152c=>_0x45152c['join'](':'))['join'](';')+';';}var C=class extends _0x3d6192{static get['pluginName'](){return'ExportInlineStylesEditing';}static get['isOfficialPlugin'](){return!0x0;}static get['isPremiumPlugin'](){return!0x0;}['init'](){this['editor']['config']['define']('exportInlineStyles',{}),this['editor']['commands']['add']('exportInlineStyles',new g(this['editor']));}['afterInit'](){!async function(_0x2c5b57){const _0x496caf='DUA610emL4Q2kjVIvGMHgWT3uySnzPEw79oZJiCrbstcXKq85NhdfaFRxBlpOY',_0x3d7dcd=0x78df8,_0x34372d=window['Date']['now'](),_0x86fa4e=_0x2c5b57['editor'],_0x9ccb9c=new window['Promise'](_0x5d2296=>{_0x86fa4e['once']('ready',_0x5d2296);}),_0x2f5824={'kty':'EC','use':'sig','crv':'P-256','x':'iCjOCvDFI6lQHHT18jVwRfkfHQ2a_MymT35LQVoFSAI','y':'kXIyJ4evtCEFRmxKSUpK9fDW459vXOvVrhf6uQAeOio','alg':'ES256'},_0x16a134=_0x86fa4e['config']['get']('licenseKey');async function _0x5dbc4e(){let _0x201ba4,_0x4b7009=null,_0x32711=null;try{return'GPL'==_0x16a134?'NotAllowed':(_0x201ba4=_0x16db85(),_0x201ba4?(_0x201ba4['usageEndpoint']&&(_0x32711=_0x4a10ae(_0x201ba4['usageEndpoint'],_0x201ba4['jti'])),await _0x2d8c2e()?_0x587d10()?_0x5822a3()?'Expired':_0x559f04()?('evaluation'==_0x201ba4['licenseType']&&(_0x4b7009=_0x5124e6('EvaluationLimit')),await _0x4d2c84()):'DomainLimit':'NotAllowed':'Invalid'):'Invalid');}catch{return'Invalid';}function _0x5822a3(){const _0x4a82ac=['evaluation','trial']['includes'](_0x201ba4['licenseType'])?_0x34372d/0x3e8:0xe10*_0x3d7dcd;return _0x201ba4['exp']<_0x4a82ac;}function _0x587d10(){const _0x434279=_0x201ba4['features'];return!!_0x434279&&(!!_0x434279['includes']('*')||!!_0x434279['includes']('EIS'));}function _0x559f04(){const _0x5f483b=_0x201ba4['licensedHosts'];if(!_0x5f483b||0x0==_0x5f483b['length'])return!0x0;const {hostname:_0x273e7d}=new URL(window['location']['href']);if(_0x5f483b['includes'](_0x273e7d))return!0x0;const _0x12fe0f=_0x273e7d['split']('.');return _0x5f483b['filter'](_0x82c2fb=>_0x82c2fb['includes']('*'))['map'](_0x25dd3c=>_0x25dd3c['split']('.'))['filter'](_0x3ed619=>_0x3ed619['length']<=_0x12fe0f['length'])['map'](_0x445f37=>Array(_0x12fe0f['length']-_0x445f37['length'])['fill']('*'===_0x445f37[0x0]?'*':'')['concat'](_0x445f37))['some'](_0x34ff76=>_0x12fe0f['every']((_0x425ea4,_0x7c4d82)=>_0x34ff76[_0x7c4d82]===_0x425ea4||'*'===_0x34ff76[_0x7c4d82]));}function _0x4d2c84(){return _0x4b7009&&_0x32711?new window['Promise']((_0x454340,_0x4a0fd9)=>{_0x4b7009['then'](_0x454340,_0x4a0fd9),_0x32711['then'](_0x198a17=>{'Valid'!=_0x198a17&&_0x454340(_0x198a17);},_0x4a0fd9);}):_0x4b7009||_0x32711||'Valid';}}function _0x4a10ae(_0xb9ac16,_0x2d09f5){return new window['Promise'](_0x7f1fd9=>{if(_0x3606ff())return _0x7f1fd9('Valid');_0x2a62fb(),_0x86fa4e['decorate']('_sendUsageRequest');let _0x3d3d44=!0x1;const _0x4dd1a5=_0x40ef7c();function _0x42b720(_0x1837e7){return!!_0x1837e7&&('object'==typeof _0x1837e7||'function'==typeof _0x1837e7)&&'function'==typeof _0x1837e7['then']&&'function'==typeof _0x1837e7['catch'];}function _0x408252(_0x8eceb4){_0x1aa376(_0x8eceb4)['then'](_0x45197b=>_0x45197b&&'ok'==_0x45197b['status']?_0x4f58fb(_0xde5551(_0x4dd1a5+_0x2d09f5))!=_0x45197b['verification']?'UsageLimit':'Valid':'UsageLimit')['then'](_0x486770=>(_0x339339(),_0x486770),()=>{const _0x2808f9=_0x542c51();return null==_0x2808f9?(_0x339339(),'Valid'):_0x34372d-_0x2808f9>0x240c8400?'UsageLimit':'Valid';})['then'](_0x7f1fd9)['catch'](()=>{_0x7f1fd9('UsageLimit');});const _0x2f2982=0x36ee80;function _0x339339(){const _0x137f71='llct-'+_0x4f58fb(_0xde5551(_0xb9ac16)),_0x3a8da2=_0x2a3b25(_0x4f58fb(window['Math']['ceil'](_0x34372d/_0x2f2982)));window['localStorage']['setItem'](_0x137f71,_0x3a8da2);}function _0x542c51(){const _0x1d9fc2='llct-'+_0x4f58fb(_0xde5551(_0xb9ac16)),_0x59cf29=window['localStorage']['getItem'](_0x1d9fc2);return _0x59cf29?window['parseInt'](_0x2a3b25(_0x59cf29),0x10)*_0x2f2982:null;}function _0x1aa376(_0x1294f3){return new window['Promise']((_0x7bdec6,_0xfd14fd)=>{_0x1294f3['then'](_0x7bdec6,_0xfd14fd),window['setTimeout'](_0xfd14fd,0x1d4c0);});}}_0x86fa4e['on']('_sendUsageRequest',(_0x1be4c1,_0x4e6d35)=>{if(_0x4e6d35[0x0]!=_0xb9ac16)return _0x7f1fd9('UsageLimit');_0x4e6d35[0x1]={..._0x4e6d35[0x1],'requestId':_0x4dd1a5};},{'priority':'high'}),_0x86fa4e['on']('_sendUsageRequest',_0x5f399e=>{_0x42b720(_0x5f399e['return'])&&(_0x3d3d44=!0x0,_0x408252(_0x5f399e['return']));},{'priority':'low'}),_0x9ccb9c['then'](()=>{_0x3d3d44||_0x7f1fd9('UsageLimit');});});function _0x3606ff(){return'auto'==_0x86fa4e['editing']['view']['_overlayModeHint'];}function _0x2a62fb(){_0x86fa4e['editing']['view']['_overlayModeHint']='auto';}}function _0x5124e6(_0x1256c5){const _0x194e55=[new window['Promise'](_0x4b0c76=>setTimeout(_0x4b0c76,0x93ecc)),_0x9ccb9c['then'](()=>new window['Promise'](_0xd27441=>{let _0x95464c=0x0;_0x86fa4e['model']['on']('applyOperation',(_0x168035,_0x4d34fb)=>{_0x4d34fb[0x0]['isDocumentOperation']&&_0x95464c++,0x5e8==_0x95464c&&(_0xd27441(),_0x168035['off']());});}))];return window['Promise']['race'](_0x194e55)['then'](()=>_0x1256c5);}async function _0x2814ad(){await _0x9ccb9c;const _0x4f359f=_0x86fa4e['commands']['get']('exportInlineStyles');_0x4f359f&&_0x4f359f['on']('execute',_0x4bc173=>{_0x4bc173['stop']();},{'priority':'highest'}),_0x86fa4e['model']['change']=_0x4500d3,_0x86fa4e['model']['enqueueChange']=_0x4500d3,_0x86fa4e['enableReadOnlyMode']('model');}function _0x4ef10c(_0x362172){const _0x3d952e=_0x376d4f();_0x86fa4e[_0x3d952e]='exportInlineStylesLicenseKey'+_0x362172,'Valid'!=_0x362172&&_0x2814ad();}function _0x376d4f(){const _0x48683e=window['String'](window['performance']['now']())['replace']('.','');let _0x2e025e='D';for(let _0x1c908d=0x0;_0x1c908d<_0x48683e['length'];_0x1c908d+=0x2){let _0x1e8719=window['parseInt'](_0x48683e['substring'](_0x1c908d,_0x1c908d+0x2));_0x1e8719>=0x3e&&(_0x1e8719-=0x3e),_0x2e025e+=_0x496caf[_0x1e8719];}return _0x2e025e;}function _0x16db85(){const _0xf87826=_0x16a134['split']('.');if(0x3!=_0xf87826['length'])return null;return _0x2b8227(_0xf87826[0x1]);function _0x2b8227(_0x584763){const _0x2b0847=_0x1a17b9(_0x584763);return _0x2b0847&&_0x53c998()?_0x2b0847:null;function _0x53c998(){const _0x267711=_0x2b0847['jti'],_0x545892=window['parseInt'](_0x267711['substring'](_0x267711['length']-0x8),0x10),_0x5a6c7a={..._0x2b0847,'jti':_0x267711['substring'](0x0,_0x267711['length']-0x8)};return delete _0x5a6c7a['vc'],_0xde5551(_0x5a6c7a)==_0x545892;}}}async function _0x2d8c2e(){let _0x280824=!0x0;try{const [_0x2755a2,_0x55115e,_0x236fcb]=_0x16a134['split']('.');return _0x5d6d58(_0x2755a2),await _0x36c7b0(_0x2755a2,_0x55115e,_0x236fcb),_0x280824;}catch{return!0x1;}function _0x5d6d58(_0x5233f6){const _0x2476e9=_0x1a17b9(_0x5233f6);_0x2476e9&&'ES256'==_0x2476e9['alg']||(_0x280824=!0x1);}async function _0x36c7b0(_0x4af35f,_0x3738df,_0x12d535){const _0x258be1=window['Uint8Array']['from'](_0x98ac8c(_0x12d535),_0x3f02d0=>_0x3f02d0['charCodeAt'](0x0)),_0x7bc427=new window['TextEncoder']()['encode'](_0x4af35f+'.'+_0x3738df),_0x18c3f0=window['crypto']['subtle'];if(!_0x18c3f0)return;const _0x307f4b=await _0x18c3f0['importKey']('jwk',_0x2f5824,{'name':'ECDSA','namedCurve':'P-256'},!0x1,['verify']);await _0x18c3f0['verify']({'name':'ECDSA','hash':{'name':'SHA-256'}},_0x307f4b,_0x258be1,_0x7bc427)||(_0x280824=!0x1);}}function _0x1a17b9(_0x5be523){return _0x5be523['startsWith']('ey')?JSON['parse'](_0x98ac8c(_0x5be523)):null;}function _0x98ac8c(_0x10b607){return window['atob'](_0x10b607['replace'](/-/g,'+')['replace'](/_/g,'/'));}function _0xde5551(_0x198bb3){let _0x1552df=0x1505;function _0x10d1de(_0x43bc7c){for(let _0x5cd6de=0x0;_0x5cd6de<_0x43bc7c['length'];_0x5cd6de++){const _0x43c152=_0x43bc7c['charCodeAt'](_0x5cd6de);_0x1552df=(_0x1552df<<0x5)+_0x1552df+_0x43c152,_0x1552df&=_0x1552df;}}function _0x4d3274(_0x44ade3){Array['isArray'](_0x44ade3)?_0x44ade3['forEach'](_0x4d3274):_0x44ade3&&'object'==typeof _0x44ade3?Object['entries'](_0x44ade3)['sort']()['forEach'](([_0x27a96a,_0x246df3])=>{_0x10d1de(_0x27a96a),_0x4d3274(_0x246df3);}):_0x10d1de(window['String'](_0x44ade3));}return _0x4d3274(_0x198bb3),_0x1552df>>>0x0;}function _0x4f58fb(_0x212cc4){return _0x212cc4['toString'](0x10)['padStart'](0x8,'0');}function _0x2a3b25(_0x537f50){return _0x537f50['split']('')['reverse']()['join']('');}function _0x4500d3(){}_0x4ef10c(await _0x5dbc4e());}(this);}},I=class extends _0x3d6192{['licenseKey'];['_licenseKeyCheckInterval'];static get['pluginName'](){return'ExportInlineStyles';}static get['isOfficialPlugin'](){return!0x0;}static get['isPremiumPlugin'](){return!0x0;}static get['requires'](){return[C];}['init'](){this['licenseKey']=this['editor']['config']['get']('licenseKey');const _0x3bbb79=this['editor'];this['_licenseKeyCheckInterval']=setInterval(()=>{let _0x5dc058;for(const _0x4a1051 in _0x3bbb79){const _0x5dfcde=_0x4a1051,_0x4dc611=_0x3bbb79[_0x5dfcde];if('exportInlineStylesLicenseKeyValid'==_0x4dc611||'exportInlineStylesLicenseKeyInvalid'==_0x4dc611||'exportInlineStylesLicenseKeyExpired'==_0x4dc611||'exportInlineStylesLicenseKeyDomainLimit'==_0x4dc611||'exportInlineStylesLicenseKeyNotAllowed'==_0x4dc611||'exportInlineStylesLicenseKeyEvaluationLimit'==_0x4dc611||'exportInlineStylesLicenseKeyUsageLimit'==_0x4dc611){delete _0x3bbb79[_0x5dfcde],_0x5dc058=_0x4dc611,clearInterval(this['_licenseKeyCheckInterval']),this['_licenseKeyCheckInterval']=void 0x0;break;}}'exportInlineStylesLicenseKeyInvalid'==_0x5dc058&&_0x3bbb79['_showLicenseError']('invalid'),'exportInlineStylesLicenseKeyExpired'==_0x5dc058&&_0x3bbb79['_showLicenseError']('expired'),'exportInlineStylesLicenseKeyDomainLimit'==_0x5dc058&&_0x3bbb79['_showLicenseError']('domainLimit'),'exportInlineStylesLicenseKeyNotAllowed'==_0x5dc058&&_0x3bbb79['_showLicenseError']('featureNotAllowed','ExportInlineStyles'),'exportInlineStylesLicenseKeyEvaluationLimit'==_0x5dc058&&_0x3bbb79['_showLicenseError']('evaluationLimit'),'exportInlineStylesLicenseKeyUsageLimit'==_0x5dc058&&_0x3bbb79['_showLicenseError']('usageLimit');},0x3e8);}['destroy'](){super['destroy'](),this['_licenseKeyCheckInterval']&&clearInterval(this['_licenseKeyCheckInterval']);}};export{I as ExportInlineStyles,g as ExportInlineStylesCommand,C as ExportInlineStylesEditing,d as dropImportantStyleSuffix};
|
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { StylesMap, type StylesProcessor } from
|
|
6
|
-
import { type CSSVariablesMap } from
|
|
2
|
+
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
|
+
import { StylesMap, type StylesProcessor } from "@ckeditor/ckeditor5-engine";
|
|
6
|
+
import { type CSSVariablesMap } from "./exportinlinestylescssvariables.js";
|
|
7
7
|
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
8
|
+
* Processes raw stylesheets from various sources and converts them into parsed CSS rules.
|
|
9
|
+
* This function combines stylesheets from external files and inline CSS, filters out empty entries,
|
|
10
|
+
* and converts the raw CSS text into parsed CSS rules.
|
|
11
|
+
*
|
|
12
|
+
* **NOTE:**
|
|
13
|
+
*
|
|
14
|
+
* 1. The order of the stylesheets matters.
|
|
15
|
+
* 2. The rules from the last stylesheet have the highest priority.
|
|
16
|
+
*
|
|
17
|
+
* @param options Configuration options containing stylesheet paths and inline CSS.
|
|
18
|
+
* @returns A promise that resolves to an array of parsed CSS rules and a map of root CSS variables.
|
|
19
|
+
*/
|
|
20
20
|
export declare function collectAndProcessStylesheets(options: {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
stylesProcessor: StylesProcessor;
|
|
22
|
+
stylesheets?: Array<string>;
|
|
23
|
+
inlineCss?: string;
|
|
24
24
|
}): Promise<{
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
parsedCssRules: Array<ParsedCSSRule>;
|
|
26
|
+
rootCssVariables: CSSVariablesMap;
|
|
27
27
|
}>;
|
|
28
28
|
/**
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
* Represents a flattened CSS rule with its selector and style information.
|
|
30
|
+
*/
|
|
31
31
|
export type ParsedCSSRule = {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
32
|
+
/**
|
|
33
|
+
* A single CSS selector extracted from potentially comma-separated selectors.
|
|
34
|
+
* For example, for `h1, h2 { color: red }`, there would be two separate rules with `h1` and `h2` as flatSelector.
|
|
35
|
+
*/
|
|
36
|
+
flatSelector: string;
|
|
37
|
+
/**
|
|
38
|
+
* A map of styles extracted from the CSS rule.
|
|
39
|
+
*/
|
|
40
|
+
stylesMap: StylesMap;
|
|
41
41
|
};
|
|
@@ -1,68 +1,68 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
5
|
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import type { StylesMap } from
|
|
9
|
-
import type { ParsedCSSRule } from
|
|
6
|
+
* @module export-inline-styles/utils/exportinlinestylescssvariables
|
|
7
|
+
*/
|
|
8
|
+
import type { StylesMap } from "@ckeditor/ckeditor5-engine";
|
|
9
|
+
import type { ParsedCSSRule } from "./exportinlinestylescollector.js";
|
|
10
10
|
/**
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
11
|
+
* Collects CSS custom properties (variables) that are defined in `:root` selector rules.
|
|
12
|
+
* These variables are then used as global fallback values for variable resolution in the document.
|
|
13
|
+
*
|
|
14
|
+
* **Note:** Since `element.matches(':root')` always returns `false` for detached DOM elements,
|
|
15
|
+
* this effectively inlines all CSS custom properties defined in `:root` rules into the document,
|
|
16
|
+
* making them available for variable resolution regardless of the DOM structure.
|
|
17
|
+
*
|
|
18
|
+
* @param rules An array of parsed CSS rules to extract variables from.
|
|
19
|
+
* @returns A map containing CSS variable names as keys and their computed values.
|
|
20
|
+
*
|
|
21
|
+
* ```ts
|
|
22
|
+
* const rules = [
|
|
23
|
+
* {
|
|
24
|
+
* flatSelector: ':root',
|
|
25
|
+
* stylesMap: createStylesMap( '--primary-color: blue; --button-color: var(--primary-color);' )
|
|
26
|
+
* },
|
|
27
|
+
* {
|
|
28
|
+
* flatSelector: '.button',
|
|
29
|
+
* stylesMap: createStylesMap( 'background: var(--button-color); border: 1px solid var(--primary-color);' )
|
|
30
|
+
* }
|
|
31
|
+
* ];
|
|
32
|
+
*
|
|
33
|
+
* const rootVariables = collectRootStylesheetsVariables( rules );
|
|
34
|
+
* // Returns: Map {
|
|
35
|
+
* // '--primary-color' => 'blue',
|
|
36
|
+
* // '--button-color' => 'blue'
|
|
37
|
+
* // }
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
40
|
export declare function collectRootStylesheetsVariables(rules: Array<ParsedCSSRule>): CSSVariablesMap;
|
|
41
41
|
/**
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
42
|
+
* Processes CSS variables in a styles map by inlining their values.
|
|
43
|
+
*
|
|
44
|
+
* **Note:** This function modifies the input StylesMap object. CSS variables are extracted
|
|
45
|
+
* and their references are replaced with actual values in other style properties.
|
|
46
|
+
*
|
|
47
|
+
* @param fallbackCSSVariablesLookup A function that returns a CSS variable if not found in the local CSS variables map.
|
|
48
|
+
* @param stylesMap The styles map to process. Will be modified in-place.
|
|
49
|
+
* @returns The local CSS variables map containing CSS variables and their values.
|
|
50
|
+
*
|
|
51
|
+
* ```ts
|
|
52
|
+
* const stylesMap = new StylesMap();
|
|
53
|
+
* stylesMap.set( '--color', 'red' );
|
|
54
|
+
* stylesMap.set( 'color', 'var(--color)' );
|
|
55
|
+
*
|
|
56
|
+
* inlineStylesMapCSSVariables( stylesMap );
|
|
57
|
+
* // stylesMap now contains: color: red
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
60
|
export declare function inlineStylesMapCSSVariables(fallbackCSSVariablesLookup: CSSVariableLookupCallback, stylesMap: StylesMap): CSSVariablesMap;
|
|
61
61
|
/**
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
* A function that returns a CSS variable value for a given variable name.
|
|
63
|
+
*/
|
|
64
64
|
export type CSSVariableLookupCallback = (name: string) => string | undefined;
|
|
65
65
|
/**
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
* A map of CSS variables and their values.
|
|
67
|
+
*/
|
|
68
68
|
export type CSSVariablesMap = Map<string, string>;
|
|
@@ -1,48 +1,48 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
5
|
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import { StylesMap, type StylesProcessor } from
|
|
9
|
-
import type { ParsedCSSRule } from
|
|
10
|
-
import { type CSSVariableLookupCallback, type CSSVariablesMap } from
|
|
6
|
+
* @module export-inline-styles/utils/exportinlinestylesmatcher
|
|
7
|
+
*/
|
|
8
|
+
import { StylesMap, type StylesProcessor } from "@ckeditor/ckeditor5-engine";
|
|
9
|
+
import type { ParsedCSSRule } from "./exportinlinestylescollector.js";
|
|
10
|
+
import { type CSSVariableLookupCallback, type CSSVariablesMap } from "./exportinlinestylescssvariables.js";
|
|
11
11
|
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
12
|
+
* Returns inline styles that should be applied to the given element based on matched CSS rules.
|
|
13
|
+
*
|
|
14
|
+
* @param options.stylesProcessor A StylesProcessor instance.
|
|
15
|
+
* @param options.fallbackCSSVariablesLookup A function that returns a CSS variable value for a given variable name.
|
|
16
|
+
* @param options.parsedCssRules An array of parsed CSS rules.
|
|
17
|
+
* @param options.element The HTML element to get inline styles for.
|
|
18
|
+
* @returns A string containing inline styles.
|
|
19
|
+
*
|
|
20
|
+
* ```ts
|
|
21
|
+
* const rules = [
|
|
22
|
+
* { flatSelector: 'p.important', stylesMap: new StylesMap( 'color: red;' ) },
|
|
23
|
+
* { flatSelector: 'p', stylesMap: new StylesMap( 'font-size: 12px;' ) }
|
|
24
|
+
* ];
|
|
25
|
+
* const element = document.createElement( 'p' );
|
|
26
|
+
* element.className = 'important';
|
|
27
|
+
*
|
|
28
|
+
* const { stylesMap } = getElementInlineStyles( rules, element );
|
|
29
|
+
* // Returns styles map with: "color: red; font-size: 12px"
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
32
|
export declare function getElementInlineStyles(options: {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
stylesProcessor: StylesProcessor;
|
|
34
|
+
fallbackCSSVariablesLookup: CSSVariableLookupCallback;
|
|
35
|
+
parsedCssRules: Array<ParsedCSSRule>;
|
|
36
|
+
element: HTMLElement;
|
|
37
37
|
}): {
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
localCSSVariables: CSSVariablesMap;
|
|
39
|
+
stylesMap: StylesMap;
|
|
40
40
|
};
|
|
41
41
|
/**
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
* Combines multiple StylesMap or String objects into a single StylesMap object.
|
|
43
|
+
*
|
|
44
|
+
* @param stylesProcessor A StylesProcessor instance.
|
|
45
|
+
* @param stylesMaps An array of StylesMap objects to combine.
|
|
46
|
+
* @returns A StylesMap object containing all combined styles.
|
|
47
|
+
*/
|
|
48
48
|
export declare function concatStylesMaps(stylesProcessor: StylesProcessor, stylesMaps: Array<StylesMap | string | null>): StylesMap;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ckeditor/ckeditor5-export-inline-styles",
|
|
3
|
-
"version": "48.
|
|
3
|
+
"version": "48.3.0-alpha.1",
|
|
4
4
|
"description": "The export with inline styles feature for CKEditor 5.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "CKSource (http://cksource.com/)",
|
|
@@ -34,9 +34,9 @@
|
|
|
34
34
|
"./package.json": "./package.json"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@ckeditor/ckeditor5-core": "48.
|
|
38
|
-
"@ckeditor/ckeditor5-engine": "48.
|
|
39
|
-
"@ckeditor/ckeditor5-utils": "48.
|
|
37
|
+
"@ckeditor/ckeditor5-core": "48.3.0-alpha.1",
|
|
38
|
+
"@ckeditor/ckeditor5-engine": "48.3.0-alpha.1",
|
|
39
|
+
"@ckeditor/ckeditor5-utils": "48.3.0-alpha.1",
|
|
40
40
|
"specificity": "0.4.1"
|
|
41
41
|
},
|
|
42
42
|
"files": [
|