@ckeditor/ckeditor5-remove-format 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.
@@ -1,15 +1,15 @@
1
1
  /**
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 { RemoveFormat, RemoveFormatEditing, RemoveFormatUI, RemoveFormatCommand } from './index.js';
6
- declare module '@ckeditor/ckeditor5-core' {
7
- interface PluginsMap {
8
- [RemoveFormat.pluginName]: RemoveFormat;
9
- [RemoveFormatUI.pluginName]: RemoveFormatUI;
10
- [RemoveFormatEditing.pluginName]: RemoveFormatEditing;
11
- }
12
- interface CommandsMap {
13
- removeFormat: RemoveFormatCommand;
14
- }
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 { RemoveFormat, RemoveFormatEditing, RemoveFormatUI, RemoveFormatCommand } from "./index.js";
6
+ declare module "@ckeditor/ckeditor5-core" {
7
+ interface PluginsMap {
8
+ [RemoveFormat.pluginName]: RemoveFormat;
9
+ [RemoveFormatUI.pluginName]: RemoveFormatUI;
10
+ [RemoveFormatEditing.pluginName]: RemoveFormatEditing;
11
+ }
12
+ interface CommandsMap {
13
+ removeFormat: RemoveFormatCommand;
14
+ }
15
15
  }
@@ -2,3 +2,4 @@
2
2
  * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */
5
+
@@ -2,3 +2,4 @@
2
2
  * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */
5
+
package/dist/index.css CHANGED
@@ -3,5 +3,3 @@
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */
5
5
 
6
-
7
- /*# sourceMappingURL=index.css.map */
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  /**
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
- */
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
- * @module remove-format
7
- */
8
- export { RemoveFormat } from './removeformat.js';
9
- export { RemoveFormatEditing } from './removeformatediting.js';
10
- export { RemoveFormatUI } from './removeformatui.js';
11
- export { RemoveFormatCommand, type IsFormattingCallback, type RemoveFormattingCallback } from './removeformatcommand.js';
12
- import './augmentation.js';
6
+ * @module remove-format
7
+ */
8
+ export { RemoveFormat } from "./removeformat.js";
9
+ export { RemoveFormatEditing } from "./removeformatediting.js";
10
+ export { RemoveFormatUI } from "./removeformatui.js";
11
+ export { RemoveFormatCommand, type IsFormattingCallback, type RemoveFormattingCallback } from "./removeformatcommand.js";
12
+ import "./augmentation.js";
package/dist/index.js CHANGED
@@ -2,247 +2,260 @@
2
2
  * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */
5
- import { Plugin, Command } from '@ckeditor/ckeditor5-core/dist/index.js';
6
- import { IconRemoveFormat } from '@ckeditor/ckeditor5-icons/dist/index.js';
7
- import { ButtonView, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui/dist/index.js';
8
- import { first } from '@ckeditor/ckeditor5-utils/dist/index.js';
5
+ import { Command, Plugin } from "@ckeditor/ckeditor5-core";
6
+ import { IconRemoveFormat } from "@ckeditor/ckeditor5-icons";
7
+ import { ButtonView, MenuBarMenuListItemButtonView } from "@ckeditor/ckeditor5-ui";
8
+ import { first } from "@ckeditor/ckeditor5-utils";
9
9
 
10
- const REMOVE_FORMAT = 'removeFormat';
11
10
  /**
12
- * The remove format UI plugin. It registers the `'removeFormat'` button which can be
13
- * used in the toolbar.
14
- */ class RemoveFormatUI extends Plugin {
15
- /**
16
- * @inheritDoc
17
- */ static get pluginName() {
18
- return 'RemoveFormatUI';
19
- }
20
- /**
21
- * @inheritDoc
22
- */ static get isOfficialPlugin() {
23
- return true;
24
- }
25
- /**
26
- * @inheritDoc
27
- */ init() {
28
- const editor = this.editor;
29
- editor.ui.componentFactory.add(REMOVE_FORMAT, ()=>{
30
- const view = this._createButton(ButtonView);
31
- view.set({
32
- tooltip: true
33
- });
34
- return view;
35
- });
36
- editor.ui.componentFactory.add(`menuBar:${REMOVE_FORMAT}`, ()=>this._createButton(MenuBarMenuListItemButtonView));
37
- }
38
- /**
39
- * Creates a button for remove format command to use either in toolbar or in menu bar.
40
- */ _createButton(ButtonClass) {
41
- const editor = this.editor;
42
- const locale = editor.locale;
43
- const command = editor.commands.get(REMOVE_FORMAT);
44
- const view = new ButtonClass(editor.locale);
45
- const t = locale.t;
46
- view.set({
47
- label: t('Remove Format'),
48
- icon: IconRemoveFormat
49
- });
50
- view.bind('isEnabled').to(command, 'isEnabled');
51
- // Execute the command.
52
- this.listenTo(view, 'execute', ()=>{
53
- editor.execute(REMOVE_FORMAT);
54
- editor.editing.view.focus();
55
- });
56
- return view;
57
- }
58
- }
11
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
12
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
13
+ */
14
+ /**
15
+ * @module remove-format/removeformatui
16
+ */
17
+ const REMOVE_FORMAT = "removeFormat";
18
+ /**
19
+ * The remove format UI plugin. It registers the `'removeFormat'` button which can be
20
+ * used in the toolbar.
21
+ */
22
+ var RemoveFormatUI = class extends Plugin {
23
+ /**
24
+ * @inheritDoc
25
+ */
26
+ static get pluginName() {
27
+ return "RemoveFormatUI";
28
+ }
29
+ /**
30
+ * @inheritDoc
31
+ */
32
+ static get isOfficialPlugin() {
33
+ return true;
34
+ }
35
+ /**
36
+ * @inheritDoc
37
+ */
38
+ init() {
39
+ const editor = this.editor;
40
+ editor.ui.componentFactory.add(REMOVE_FORMAT, () => {
41
+ const view = this._createButton(ButtonView);
42
+ view.set({ tooltip: true });
43
+ return view;
44
+ });
45
+ editor.ui.componentFactory.add(`menuBar:${REMOVE_FORMAT}`, () => this._createButton(MenuBarMenuListItemButtonView));
46
+ }
47
+ /**
48
+ * Creates a button for remove format command to use either in toolbar or in menu bar.
49
+ */
50
+ _createButton(ButtonClass) {
51
+ const editor = this.editor;
52
+ const locale = editor.locale;
53
+ const command = editor.commands.get(REMOVE_FORMAT);
54
+ const view = new ButtonClass(editor.locale);
55
+ const t = locale.t;
56
+ view.set({
57
+ label: t("Remove Format"),
58
+ icon: IconRemoveFormat
59
+ });
60
+ view.bind("isEnabled").to(command, "isEnabled");
61
+ this.listenTo(view, "execute", () => {
62
+ editor.execute(REMOVE_FORMAT);
63
+ editor.editing.view.focus();
64
+ });
65
+ return view;
66
+ }
67
+ };
59
68
 
60
69
  /**
61
- * The remove format command.
62
- *
63
- * It is used by the {@link module:remove-format/removeformat~RemoveFormat remove format feature}
64
- * to clear the formatting in the selection.
65
- *
66
- * ```ts
67
- * editor.execute( 'removeFormat' );
68
- * ```
69
- */ class RemoveFormatCommand extends Command {
70
- /**
71
- * List of all registered custom attribute handlers.
72
- */ _customAttributesHandlers = [];
73
- /**
74
- * @inheritDoc
75
- */ refresh() {
76
- const model = this.editor.model;
77
- this.isEnabled = !!first(this._getFormattingItems(model.document.selection));
78
- }
79
- /**
80
- * @inheritDoc
81
- */ execute() {
82
- const model = this.editor.model;
83
- model.change((writer)=>{
84
- for (const item of this._getFormattingItems(model.document.selection)){
85
- if (item.is('selection')) {
86
- for (const attributeName of this._getFormattingAttributes(item)){
87
- writer.removeSelectionAttribute(attributeName);
88
- }
89
- } else {
90
- // Workaround for items with multiple removable attributes. See
91
- // https://github.com/ckeditor/ckeditor5-remove-format/pull/1#pullrequestreview-220515609
92
- const itemRange = writer.createRangeOn(item);
93
- for (const attributeName of this._getFormattingAttributes(item)){
94
- this._removeFormatting(attributeName, item, itemRange, writer);
95
- }
96
- }
97
- }
98
- });
99
- }
100
- /**
101
- * Registers a custom attribute handler that will be used to determine if an attribute is formatting and how to remove it.
102
- *
103
- * @internal
104
- */ registerCustomAttribute(isFormatting, removeFormatting) {
105
- this._customAttributesHandlers.push({
106
- isFormatting,
107
- removeFormatting
108
- });
109
- }
110
- /**
111
- * Helper method that removes a formatting attribute from an item either using custom callbacks or writer remove attribute.
112
- */ _removeFormatting(attributeName, item, itemRange, writer) {
113
- let customHandled = false;
114
- const nonSelectionAttributeName = toNonSelectionAttribute(attributeName);
115
- for (const { isFormatting, removeFormatting } of this._customAttributesHandlers){
116
- if (isFormatting(nonSelectionAttributeName, item)) {
117
- removeFormatting(attributeName, itemRange, writer);
118
- customHandled = true;
119
- }
120
- }
121
- if (!customHandled) {
122
- writer.removeAttribute(attributeName, itemRange);
123
- }
124
- }
125
- /**
126
- * Returns an iterable of items in a selection (including the selection itself) that have formatting model
127
- * attributes to be removed by the feature.
128
- */ *_getFormattingItems(selection) {
129
- const model = this.editor.model;
130
- const schema = model.schema;
131
- const itemHasRemovableFormatting = (item)=>{
132
- return !!first(this._getFormattingAttributes(item));
133
- };
134
- // Check formatting on selected items.
135
- for (const curRange of selection.getRanges()){
136
- for (const item of curRange.getItems()){
137
- // Ignore last block if range ends at the beginning of it.
138
- if (schema.isBlock(item) && curRange.end.isTouching(model.createPositionAt(item, 0))) {
139
- continue;
140
- }
141
- if (itemHasRemovableFormatting(item)) {
142
- yield item;
143
- }
144
- }
145
- }
146
- // Check formatting from selected blocks (to include partly selected blocks).
147
- for (const block of selection.getSelectedBlocks()){
148
- if (itemHasRemovableFormatting(block)) {
149
- yield block;
150
- }
151
- }
152
- // Finally the selection might be formatted as well, so make sure to check it.
153
- if (itemHasRemovableFormatting(selection)) {
154
- yield selection;
155
- }
156
- }
157
- /**
158
- * Returns an iterable of formatting attributes of a given model item.
159
- *
160
- * **Note:** Formatting items have the `isFormatting` property set to `true`.
161
- *
162
- * @returns The names of formatting attributes found in a given item.
163
- */ *_getFormattingAttributes(item) {
164
- const { schema } = this.editor.model;
165
- for (const [attributeName] of item.getAttributes()){
166
- const nonSelectionAttributeName = toNonSelectionAttribute(attributeName);
167
- for (const { isFormatting } of this._customAttributesHandlers){
168
- if (isFormatting(nonSelectionAttributeName, item)) {
169
- yield attributeName;
170
- }
171
- }
172
- const attributeProperties = schema.getAttributeProperties(nonSelectionAttributeName);
173
- if (attributeProperties && attributeProperties.isFormatting) {
174
- yield attributeName;
175
- }
176
- }
177
- }
178
- }
70
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
71
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
72
+ */
179
73
  /**
180
- * Helper function that converts a selection attribute name to a non-selection one. E.g. `selection:bold` to `bold`.
181
- */ function toNonSelectionAttribute(attributeName) {
182
- return attributeName.replace(/^selection:/, '');
74
+ * The remove format command.
75
+ *
76
+ * It is used by the {@link module:remove-format/removeformat~RemoveFormat remove format feature}
77
+ * to clear the formatting in the selection.
78
+ *
79
+ * ```ts
80
+ * editor.execute( 'removeFormat' );
81
+ * ```
82
+ */
83
+ var RemoveFormatCommand = class extends Command {
84
+ /**
85
+ * List of all registered custom attribute handlers.
86
+ */
87
+ _customAttributesHandlers = [];
88
+ /**
89
+ * @inheritDoc
90
+ */
91
+ refresh() {
92
+ const model = this.editor.model;
93
+ this.isEnabled = !!first(this._getFormattingItems(model.document.selection));
94
+ }
95
+ /**
96
+ * @inheritDoc
97
+ */
98
+ execute() {
99
+ const model = this.editor.model;
100
+ model.change((writer) => {
101
+ for (const item of this._getFormattingItems(model.document.selection)) if (item.is("selection")) for (const attributeName of this._getFormattingAttributes(item)) writer.removeSelectionAttribute(attributeName);
102
+ else {
103
+ const itemRange = writer.createRangeOn(item);
104
+ for (const attributeName of this._getFormattingAttributes(item)) this._removeFormatting(attributeName, item, itemRange, writer);
105
+ }
106
+ });
107
+ }
108
+ /**
109
+ * Registers a custom attribute handler that will be used to determine if an attribute is formatting and how to remove it.
110
+ *
111
+ * @internal
112
+ */
113
+ registerCustomAttribute(isFormatting, removeFormatting) {
114
+ this._customAttributesHandlers.push({
115
+ isFormatting,
116
+ removeFormatting
117
+ });
118
+ }
119
+ /**
120
+ * Helper method that removes a formatting attribute from an item either using custom callbacks or writer remove attribute.
121
+ */
122
+ _removeFormatting(attributeName, item, itemRange, writer) {
123
+ let customHandled = false;
124
+ const nonSelectionAttributeName = toNonSelectionAttribute(attributeName);
125
+ for (const { isFormatting, removeFormatting } of this._customAttributesHandlers) if (isFormatting(nonSelectionAttributeName, item)) {
126
+ removeFormatting(attributeName, itemRange, writer);
127
+ customHandled = true;
128
+ }
129
+ if (!customHandled) writer.removeAttribute(attributeName, itemRange);
130
+ }
131
+ /**
132
+ * Returns an iterable of items in a selection (including the selection itself) that have formatting model
133
+ * attributes to be removed by the feature.
134
+ */
135
+ *_getFormattingItems(selection) {
136
+ const model = this.editor.model;
137
+ const schema = model.schema;
138
+ const itemHasRemovableFormatting = (item) => {
139
+ return !!first(this._getFormattingAttributes(item));
140
+ };
141
+ for (const curRange of selection.getRanges()) for (const item of curRange.getItems()) {
142
+ if (schema.isBlock(item) && curRange.end.isTouching(model.createPositionAt(item, 0))) continue;
143
+ if (itemHasRemovableFormatting(item)) yield item;
144
+ }
145
+ for (const block of selection.getSelectedBlocks()) if (itemHasRemovableFormatting(block)) yield block;
146
+ if (itemHasRemovableFormatting(selection)) yield selection;
147
+ }
148
+ /**
149
+ * Returns an iterable of formatting attributes of a given model item.
150
+ *
151
+ * **Note:** Formatting items have the `isFormatting` property set to `true`.
152
+ *
153
+ * @returns The names of formatting attributes found in a given item.
154
+ */
155
+ *_getFormattingAttributes(item) {
156
+ const { schema } = this.editor.model;
157
+ for (const [attributeName] of item.getAttributes()) {
158
+ const nonSelectionAttributeName = toNonSelectionAttribute(attributeName);
159
+ for (const { isFormatting } of this._customAttributesHandlers) if (isFormatting(nonSelectionAttributeName, item)) yield attributeName;
160
+ const attributeProperties = schema.getAttributeProperties(nonSelectionAttributeName);
161
+ if (attributeProperties && attributeProperties.isFormatting) yield attributeName;
162
+ }
163
+ }
164
+ };
165
+ /**
166
+ * Helper function that converts a selection attribute name to a non-selection one. E.g. `selection:bold` to `bold`.
167
+ */
168
+ function toNonSelectionAttribute(attributeName) {
169
+ return attributeName.replace(/^selection:/, "");
183
170
  }
184
171
 
185
172
  /**
186
- * The remove format editing plugin.
187
- *
188
- * It registers the {@link module:remove-format/removeformatcommand~RemoveFormatCommand removeFormat} command.
189
- */ class RemoveFormatEditing extends Plugin {
190
- /**
191
- * @inheritDoc
192
- */ static get pluginName() {
193
- return 'RemoveFormatEditing';
194
- }
195
- /**
196
- * @inheritDoc
197
- * @internal
198
- */ static get licenseFeatureCode() {
199
- return 'RF';
200
- }
201
- /**
202
- * @inheritDoc
203
- */ static get isOfficialPlugin() {
204
- return true;
205
- }
206
- /**
207
- * @inheritDoc
208
- */ static get isPremiumPlugin() {
209
- return true;
210
- }
211
- /**
212
- * @inheritDoc
213
- */ init() {
214
- const editor = this.editor;
215
- editor.commands.add('removeFormat', new RemoveFormatCommand(editor));
216
- }
217
- }
173
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
174
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
175
+ */
176
+ /**
177
+ * @module remove-format/removeformatediting
178
+ */
179
+ /**
180
+ * The remove format editing plugin.
181
+ *
182
+ * It registers the {@link module:remove-format/removeformatcommand~RemoveFormatCommand removeFormat} command.
183
+ */
184
+ var RemoveFormatEditing = class extends Plugin {
185
+ /**
186
+ * @inheritDoc
187
+ */
188
+ static get pluginName() {
189
+ return "RemoveFormatEditing";
190
+ }
191
+ /**
192
+ * @inheritDoc
193
+ * @internal
194
+ */
195
+ static get licenseFeatureCode() {
196
+ return "RF";
197
+ }
198
+ /**
199
+ * @inheritDoc
200
+ */
201
+ static get isOfficialPlugin() {
202
+ return true;
203
+ }
204
+ /**
205
+ * @inheritDoc
206
+ */
207
+ static get isPremiumPlugin() {
208
+ return true;
209
+ }
210
+ /**
211
+ * @inheritDoc
212
+ */
213
+ init() {
214
+ const editor = this.editor;
215
+ editor.commands.add("removeFormat", new RemoveFormatCommand(editor));
216
+ }
217
+ };
218
218
 
219
219
  /**
220
- * The remove format plugin.
221
- *
222
- * This is a "glue" plugin which loads the {@link module:remove-format/removeformatediting~RemoveFormatEditing}
223
- * and {@link module:remove-format/removeformatui~RemoveFormatUI} plugins.
224
- *
225
- * For a detailed overview, check out the {@glink features/remove-format remove format} feature documentation.
226
- */ class RemoveFormat extends Plugin {
227
- /**
228
- * @inheritDoc
229
- */ static get requires() {
230
- return [
231
- RemoveFormatEditing,
232
- RemoveFormatUI
233
- ];
234
- }
235
- /**
236
- * @inheritDoc
237
- */ static get pluginName() {
238
- return 'RemoveFormat';
239
- }
240
- /**
241
- * @inheritDoc
242
- */ static get isOfficialPlugin() {
243
- return true;
244
- }
245
- }
220
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
221
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
222
+ */
223
+ /**
224
+ * @module remove-format/removeformat
225
+ */
226
+ /**
227
+ * The remove format plugin.
228
+ *
229
+ * This is a "glue" plugin which loads the {@link module:remove-format/removeformatediting~RemoveFormatEditing}
230
+ * and {@link module:remove-format/removeformatui~RemoveFormatUI} plugins.
231
+ *
232
+ * For a detailed overview, check out the {@glink features/remove-format remove format} feature documentation.
233
+ */
234
+ var RemoveFormat = class extends Plugin {
235
+ /**
236
+ * @inheritDoc
237
+ */
238
+ static get requires() {
239
+ return [RemoveFormatEditing, RemoveFormatUI];
240
+ }
241
+ /**
242
+ * @inheritDoc
243
+ */
244
+ static get pluginName() {
245
+ return "RemoveFormat";
246
+ }
247
+ /**
248
+ * @inheritDoc
249
+ */
250
+ static get isOfficialPlugin() {
251
+ return true;
252
+ }
253
+ };
254
+
255
+ /**
256
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
257
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
258
+ */
246
259
 
247
260
  export { RemoveFormat, RemoveFormatCommand, RemoveFormatEditing, RemoveFormatUI };
248
- //# sourceMappingURL=index.js.map
261
+ //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.js","../src/removeformatui.ts","../src/removeformatcommand.ts","../src/removeformatediting.ts","../src/removeformat.ts"],"names":["REMOVE_FORMAT","RemoveFormatUI","Plugin","pluginName","isOfficialPlugin","init","editor","ui","componentFactory","add","view","_createButton","ButtonView","set","tooltip","MenuBarMenuListItemButtonView","ButtonClass","locale","command","commands","get","t","label","icon","IconRemoveFormat","bind","to","listenTo","execute","editing","focus","RemoveFormatCommand","Command","_customAttributesHandlers","refresh","model","isEnabled","first","_getFormattingItems","document","selection","change","writer","item","is","attributeName","_getFormattingAttributes","removeSelectionAttribute","itemRange","createRangeOn","_removeFormatting","registerCustomAttribute","isFormatting","removeFormatting","push","customHandled","nonSelectionAttributeName","toNonSelectionAttribute","removeAttribute","schema","itemHasRemovableFormatting","curRange","getRanges","getItems","isBlock","end","isTouching","createPositionAt","block","getSelectedBlocks","getAttributes","attributeProperties","getAttributeProperties","replace","RemoveFormatEditing","licenseFeatureCode","isPremiumPlugin","RemoveFormat","requires"],"mappings":";;;;AAAA,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AACxE,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AAC1E,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AAChG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;;ACY/D,KAAA,CAAMA,aAAAA,CAAAA,CAAAA,CAAgB,CAAA,YAAA,CAAA;AAEtB,CAAA,CAAA;ADVA,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AACnF,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AACtB,CAAC,CAAC,CAAC,CCYI,KAAA,CAAMC,cAAAA,CAAAA,OAAAA,CAAuBC,MAAAA,CAAAA;AACnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADXD,CAAC,CAAC,CAAC,CAAC,CAAC;ACaH,CAAA,CAAA,CAAA,CAAA,CACD,MAAA,CAAA,GAAA,CAAkBC,UAAAA,CAAAA,CAAAA,CAAa;ADZhC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCaL,MAAA,CAAO,CAAA,cAAA,CAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADbD,CAAC,CAAC,CAAC,CAAC,CAAC;ACeH,CAAA,CAAA,CAAA,CAAA,CACD,MAAA,CAAA,GAAA,CAA2BC,gBAAAA,CAAAA,CAAAA,CAAyB;ADdrD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCeL,MAAA,CAAO,IAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADfD,CAAC,CAAC,CAAC,CAAC,CAAC;ACiBH,CAAA,CAAA,CAAA,CAAA,CACD,IAAOC,CAAAA,CAAAA,CAAa;ADhBrB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCiBL,KAAA,CAAMC,MAAAA,CAAAA,CAAAA,CAAS,IAAI,CAACA,MAAM;AAE1BA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOC,EAAE,CAACC,gBAAgB,CAACC,GAAG,CAAET,aAAAA,CAAAA,CAAe,CAAA,CAAA,CAAA,CAAA;AAC9C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMU,IAAAA,CAAAA,CAAAA,CAAO,IAAI,CAACC,aAAa,CAAEC,UAAAA,CAAAA;AAEjCF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAKG,GAAG,CAAE;ADlBb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCmBXC,OAAAA,CAAAA,CAAS;AACV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADlBH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCoBR,MAAA,CAAOJ,IAAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEAJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOC,EAAE,CAACC,gBAAgB,CAACC,GAAG,CAAE,CAAC,OAAA,CAAQ,CAAA,CAAGT,aAAAA,CAAAA,CAAgB,CAAA,CAAE,CAAA,CAAA,CAAA,CAAM,IAAI,CAACW,aAAa,CAAEI,6BAAAA,CAAAA,CAAAA;AACzF,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADrBD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;AACtF,CAAC,CAAC,CAAC,CAAC,CCuBKJ,aAAAA,CAAmFK,WAAc,CAAA,CAAoB;ADtB9H,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCuBL,KAAA,CAAMV,MAAAA,CAAAA,CAAAA,CAAS,IAAI,CAACA,MAAM;ADtB5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCuBL,KAAA,CAAMW,MAAAA,CAAAA,CAAAA,CAASX,MAAAA,CAAOW,MAAM;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,OAAAA,CAAAA,CAAAA,CAA+BZ,MAAAA,CAAOa,QAAQ,CAACC,GAAG,CAAEpB,aAAAA,CAAAA;AAC1D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMU,IAAAA,CAAAA,CAAAA,CAAO,GAAA,CAAIM,WAAAA,CAAaV,MAAAA,CAAOW,MAAM,CAAA;ADtB7C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCuBL,KAAA,CAAMI,CAAAA,CAAAA,CAAAA,CAAIJ,MAAAA,CAAOI,CAAC;AAElBX,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAKG,GAAG,CAAE;AACTS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,CAAAA,CAAOD,CAAAA,CAAG,CAAA,MAAA,CAAA,MAAA,CAAA,CAAA;ADvBb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCwBRE,IAAAA,CAAAA,CAAMC;AACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEAd,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAKe,IAAI,CAAE,CAAA,SAAA,CAAA,CAAA,CAAcC,EAAE,CAAER,OAAAA,CAAAA,CAAS,CAAA,SAAA,CAAA,CAAA;ADxBxC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO;AC2B5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACS,QAAQ,CAAEjB,IAAAA,CAAAA,CAAM,CAAA,OAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA;AAC/BJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOsB,OAAO,CAAE5B,aAAAA,CAAAA;AAChBM,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOuB,OAAO,CAACnB,IAAI,CAACoB,KAAK,CAAA,CAAA;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADzBF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC2BL,MAAA,CAAOpB,IAAAA;AACR,CAAA,CAAA,CAAA,CAAA;AACD;;ACnEA,CAAA,CAAA;AF2CA,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;AAC5B,CAAC;AACD,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;AAChG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS;AAC3C,CAAC;AACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CEzCI,KAAA,CAAMqB,mBAAAA,CAAAA,OAAAA,CAA4BC,OAAAA,CAAAA;AAGxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFwCD,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ;AACpD,CAAC,CAAC,CAAC,CAAC,CEtCKC,yBAAAA,CAAAA,CAAAA,CAGH,CAAA,CAAE;AAEP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFmCD,CAAC,CAAC,CAAC,CAAC,CAAC;AEjCH,CAAA,CAAA,CAAA,CAAA,CACD,OAAgBC,CAAAA,CAAAA,CAAgB;AAC/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,KAAAA,CAAAA,CAAAA,CAAQ,IAAI,CAAC7B,MAAM,CAAC6B,KAAK;AAE/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACC,SAAS,CAAA,CAAA,CAAG,CAAC,CAACC,KAAAA,CAAO,IAAI,CAACC,mBAAmB,CAAEH,KAAAA,CAAMI,QAAQ,CAACC,SAAS,CAAA,CAAA;AAC7E,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFgCD,CAAC,CAAC,CAAC,CAAC,CAAC;AE9BH,CAAA,CAAA,CAAA,CAAA,CACD,OAAgBZ,CAAAA,CAAAA,CAAgB;AAC/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMO,KAAAA,CAAAA,CAAAA,CAAQ,IAAI,CAAC7B,MAAM,CAAC6B,KAAK;AF+BjC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE7BLA,KAAAA,CAAMM,MAAM,CAAEC,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA;AF8BhB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE7BR,GAAA,CAAA,CAAM,KAAA,CAAMC,IAAAA,CAAAA,EAAAA,CAAQ,IAAI,CAACL,mBAAmB,CAAEH,KAAAA,CAAMI,QAAQ,CAACC,SAAS,CAAA,CAAK;AF8B9E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE7BX,EAAA,CAAA,CAAKG,IAAAA,CAAKC,EAAE,CAAE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAgB;AAC7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAM,KAAA,CAAMC,aAAAA,CAAAA,EAAAA,CAAiB,IAAI,CAACC,wBAAwB,CAAEH,IAAAA,CAAAA,CAAS;AACpED,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOK,wBAAwB,CAAEF,aAAAA,CAAAA;AAClC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF8BL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE7BX,CAAA,CAAA,IAAA,CAAO;AF8BX,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAChF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACpG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE7Bd,KAAA,CAAMG,SAAAA,CAAAA,CAAAA,CAAYN,MAAAA,CAAOO,aAAa,CAAEN,IAAAA,CAAAA;AAExC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAM,KAAA,CAAME,aAAAA,CAAAA,EAAAA,CAAiB,IAAI,CAACC,wBAAwB,CAAEH,IAAAA,CAAAA,CAAS;AACpE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACO,iBAAiB,CAAEL,aAAAA,CAAAA,CAAeF,IAAAA,CAAAA,CAAMK,SAAAA,CAAAA,CAAWN,MAAAA,CAAAA;AACzD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF4BD,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AAC1H,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC;AE1BH,CAAA,CAAA,CAAA,CAAA,CACD,uBAAOS,CAAyBC,YAAkC,CAAA,CAAEC,gBAA0C,CAAA,CAAS;AACtH,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACpB,yBAAyB,CAACqB,IAAI,CAAE;AACpCF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,YAAAA;AACAC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF0BD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS;AAC3H,CAAC,CAAC,CAAC,CAAC,CExBKH,iBAAAA,CAAmBL,aAAqB,CAAA,CAAEF,IAAe,CAAA,CAAEK,SAAqB,CAAA,CAAEN,MAAmB,CAAA,CAAG;AAC/G,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAIa,aAAAA,CAAAA,CAAAA,CAAgB,KAAA;AACpB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,yBAAAA,CAAAA,CAAAA,CAA4BC,uBAAAA,CAAyBZ,aAAAA,CAAAA;AFyB7D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEvBL,GAAA,CAAA,CAAM,KAAA,CAAM,CAAA,CAAEO,YAAY,CAAA,CAAEC,gBAAgB,CAAA,CAAE,CAAA,EAAA,CAAI,IAAI,CAACpB,yBAAyB,CAAG;AFwBrF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEvBR,EAAA,CAAA,CAAKmB,YAAAA,CAAcI,yBAAAA,CAAAA,CAA2Bb,IAAAA,CAAAA,CAAAA,CAAS;AACtDU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAAAA,CAAkBR,aAAAA,CAAAA,CAAeG,SAAAA,CAAAA,CAAWN,MAAAA,CAAAA;AFwBhD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEvBXa,aAAAA,CAAAA,CAAAA,CAAgB,IAAA;AACjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,CAACA,aAAAA,CAAAA,CAAgB;AFuBxB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEtBRb,MAAAA,CAAOgB,eAAe,CAAEb,aAAAA,CAAAA,CAAeG,SAAAA,CAAAA;AACxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFsBD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACtG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AAC3C,CAAC,CAAC,CAAC,CAAC,CEpBH,CAASV,mBAAAA,CAAqBE,SAAiC,CAAA,CAAG;AACjE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAML,KAAAA,CAAAA,CAAAA,CAAQ,IAAI,CAAC7B,MAAM,CAAC6B,KAAK;AFqBjC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEpBL,KAAA,CAAMwB,MAAAA,CAAAA,CAAAA,CAASxB,KAAAA,CAAMwB,MAAM;AAE3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,0BAAAA,CAAAA,CAAAA,CAA6B,CAAEjB,IAAAA,CAAAA,CAAAA,CAAAA;AACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,CAAC,CAACN,KAAAA,CAAO,IAAI,CAACS,wBAAwB,CAAEH,IAAAA,CAAAA,CAAAA;AAChD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFoBF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK;AEjB3C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAM,KAAA,CAAMkB,QAAAA,CAAAA,EAAAA,CAAYrB,SAAAA,CAAUsB,SAAS,CAAA,CAAA,CAAK;AAC/C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAM,KAAA,CAAMnB,IAAAA,CAAAA,EAAAA,CAAQkB,QAAAA,CAASE,QAAQ,CAAA,CAAA,CAAK;AFmB7C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;AEjBrE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKJ,MAAAA,CAAOK,OAAO,CAAErB,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUkB,QAAAA,CAASI,GAAG,CAACC,UAAU,CAAE/B,KAAAA,CAAMgC,gBAAgB,CAAExB,IAAAA,CAAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAQ;AAC7F,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,QAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKiB,0BAAAA,CAA4BjB,IAAAA,CAAAA,CAAAA,CAAS;AFkB9C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEjBd,KAAA,CAAMA,IAAAA;AACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFkBF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AEflF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAM,KAAA,CAAMyB,KAAAA,CAAAA,EAAAA,CAAS5B,SAAAA,CAAU6B,iBAAiB,CAAA,CAAA,CAAK;AACpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKT,0BAAAA,CAA4BQ,KAAAA,CAAAA,CAAAA,CAAU;AFiB9C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEhBX,KAAA,CAAMA,KAAAA;AACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFiBF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AEdnF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKR,0BAAAA,CAA4BpB,SAAAA,CAAAA,CAAAA,CAAc;AFgBjD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEfR,KAAA,CAAMA,SAAAA;AACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFeD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;AACtE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;AAC7E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AACrE,CAAC,CAAC,CAAC,CAAC,CEbH,CAASM,wBAAAA,CAA0BH,IAAwC,CAAA,CAAG;AFc/E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEbL,KAAA,CAAM,CAAA,CAAEgB,MAAM,CAAA,CAAE,CAAA,CAAA,CAAG,IAAI,CAACrD,MAAM,CAAC6B,KAAK;AAEpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAM,KAAA,CAAM,CAAEU,aAAAA,CAAe,CAAA,EAAA,CAAIF,IAAAA,CAAK2B,aAAa,CAAA,CAAA,CAAK;AACvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMd,yBAAAA,CAAAA,CAAAA,CAA4BC,uBAAAA,CAAyBZ,aAAAA,CAAAA;AFa9D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEXR,GAAA,CAAA,CAAM,KAAA,CAAM,CAAA,CAAEO,YAAY,CAAA,CAAE,CAAA,EAAA,CAAI,IAAI,CAACnB,yBAAyB,CAAG;AFYpE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEXX,EAAA,CAAA,CAAKmB,YAAAA,CAAcI,yBAAAA,CAAAA,CAA2Bb,IAAAA,CAAAA,CAAAA,CAAS;AFY3D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEXd,KAAA,CAAME,aAAAA;AACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFYH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEVR,KAAA,CAAM0B,mBAAAA,CAAAA,CAAAA,CAAsBZ,MAAAA,CAAOa,sBAAsB,CAAEhB,yBAAAA,CAAAA;AFW9D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CETR,EAAA,CAAA,CAAKe,mBAAAA,CAAAA,CAAAA,CAAAA,CAAuBA,mBAAAA,CAAoBnB,YAAY,CAAA,CAAG;AFUlE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CETX,KAAA,CAAMP,aAAAA;AACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA;AACD;AAEA,CAAA,CAAA;AFSA,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;AACnH,CAAC,CAAC,CAAC,CEPH,QAAA,CAASY,uBAAAA,CAAyBZ,aAAqB,CAAA,CAAA;AFQvD,CAAC,CAAC,CAAC,CEPF,MAAA,CAAOA,aAAAA,CAAc4B,OAAO,CAAE,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAe,CAAA,CAAA,CAAA;AAC9C;;AC9JA,CAAA,CAAA;AHwKA,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;AACnC,CAAC;AACD,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,OAAO;AAC7G,CAAC,CAAC,CAAC,CGtKI,KAAA,CAAMC,mBAAAA,CAAAA,OAAAA,CAA4BxE,MAAAA,CAAAA;AACxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AHuKD,CAAC,CAAC,CAAC,CAAC,CAAC;AGrKH,CAAA,CAAA,CAAA,CAAA,CACD,MAAA,CAAA,GAAA,CAAkBC,UAAAA,CAAAA,CAAAA,CAAa;AHsKhC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CGrKL,MAAA,CAAO,CAAA,mBAAA,CAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AHqKD,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CAAC,CAAC;AGnKH,CAAA,CAAA,CAAA,CAAA,CACD,MAAA,CAAA,GAAA,CAAkBwE,kBAAAA,CAAAA,CAAAA,CAA6B;AHoKhD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CGnKL,MAAA,CAAO,CAAA,EAAA,CAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AHmKD,CAAC,CAAC,CAAC,CAAC,CAAC;AGjKH,CAAA,CAAA,CAAA,CAAA,CACD,MAAA,CAAA,GAAA,CAA2BvE,gBAAAA,CAAAA,CAAAA,CAAyB;AHkKrD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CGjKL,MAAA,CAAO,IAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AHiKD,CAAC,CAAC,CAAC,CAAC,CAAC;AG/JH,CAAA,CAAA,CAAA,CAAA,CACD,MAAA,CAAA,GAAA,CAA2BwE,eAAAA,CAAAA,CAAAA,CAAwB;AHgKpD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG/JL,MAAA,CAAO,IAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AH+JD,CAAC,CAAC,CAAC,CAAC,CAAC;AG7JH,CAAA,CAAA,CAAA,CAAA,CACD,IAAOvE,CAAAA,CAAAA,CAAa;AH8JrB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG7JL,KAAA,CAAMC,MAAAA,CAAAA,CAAAA,CAAS,IAAI,CAACA,MAAM;AAE1BA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOa,QAAQ,CAACV,GAAG,CAAE,CAAA,YAAA,CAAA,CAAA,CAAgB,GAAA,CAAIsB,mBAAAA,CAAqBzB,MAAAA,CAAAA,CAAAA;AAC/D,CAAA,CAAA,CAAA,CAAA;AACD;;AC1CA,CAAA,CAAA;AJyMA,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC3B,CAAC;AACD,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB;AAC9G,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,OAAO;AACzE,CAAC;AACD,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa;AAC7G,CAAC,CAAC,CAAC,CIvMI,KAAA,CAAMuE,YAAAA,CAAAA,OAAAA,CAAqB3E,MAAAA,CAAAA;AACjC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AJwMD,CAAC,CAAC,CAAC,CAAC,CAAC;AItMH,CAAA,CAAA,CAAA,CAAA,CACD,MAAA,CAAA,GAAA,CAAkB4E,QAAAA,CAAAA,CAAAA,CAAW;AJuM9B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CItML,MAAA,CAAO;AAAEJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,mBAAAA;AAAqBzE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC/C,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AJyMD,CAAC,CAAC,CAAC,CAAC,CAAC;AIvMH,CAAA,CAAA,CAAA,CAAA,CACD,MAAA,CAAA,GAAA,CAAkBE,UAAAA,CAAAA,CAAAA,CAAa;AJwMhC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CIvML,MAAA,CAAO,CAAA,YAAA,CAAA;AACR,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AJuMD,CAAC,CAAC,CAAC,CAAC,CAAC;AIrMH,CAAA,CAAA,CAAA,CAAA,CACD,MAAA,CAAA,GAAA,CAA2BC,gBAAAA,CAAAA,CAAAA,CAAyB;AJsMrD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CIrML,MAAA,CAAO,IAAA;AACR,CAAA,CAAA,CAAA,CAAA;AACD;;AJuMA,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,mBAAmB,CAAC,CAAC,mBAAmB,CAAC,CAAC,cAAc,CAAC,CAAC;AACjF,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC","file":"index.js.map","sourcesContent":["import { Plugin, Command } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { IconRemoveFormat } from '@ckeditor/ckeditor5-icons/dist/index.js';\nimport { ButtonView, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui/dist/index.js';\nimport { first } from '@ckeditor/ckeditor5-utils/dist/index.js';\n\nconst REMOVE_FORMAT = 'removeFormat';\n/**\n * The remove format UI plugin. It registers the `'removeFormat'` button which can be\n * used in the toolbar.\n */ class RemoveFormatUI extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'RemoveFormatUI';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n editor.ui.componentFactory.add(REMOVE_FORMAT, ()=>{\n const view = this._createButton(ButtonView);\n view.set({\n tooltip: true\n });\n return view;\n });\n editor.ui.componentFactory.add(`menuBar:${REMOVE_FORMAT}`, ()=>this._createButton(MenuBarMenuListItemButtonView));\n }\n /**\n\t * Creates a button for remove format command to use either in toolbar or in menu bar.\n\t */ _createButton(ButtonClass) {\n const editor = this.editor;\n const locale = editor.locale;\n const command = editor.commands.get(REMOVE_FORMAT);\n const view = new ButtonClass(editor.locale);\n const t = locale.t;\n view.set({\n label: t('Remove Format'),\n icon: IconRemoveFormat\n });\n view.bind('isEnabled').to(command, 'isEnabled');\n // Execute the command.\n this.listenTo(view, 'execute', ()=>{\n editor.execute(REMOVE_FORMAT);\n editor.editing.view.focus();\n });\n return view;\n }\n}\n\n/**\n * The remove format command.\n *\n * It is used by the {@link module:remove-format/removeformat~RemoveFormat remove format feature}\n * to clear the formatting in the selection.\n *\n * ```ts\n * editor.execute( 'removeFormat' );\n * ```\n */ class RemoveFormatCommand extends Command {\n /**\n\t * List of all registered custom attribute handlers.\n\t */ _customAttributesHandlers = [];\n /**\n\t * @inheritDoc\n\t */ refresh() {\n const model = this.editor.model;\n this.isEnabled = !!first(this._getFormattingItems(model.document.selection));\n }\n /**\n\t * @inheritDoc\n\t */ execute() {\n const model = this.editor.model;\n model.change((writer)=>{\n for (const item of this._getFormattingItems(model.document.selection)){\n if (item.is('selection')) {\n for (const attributeName of this._getFormattingAttributes(item)){\n writer.removeSelectionAttribute(attributeName);\n }\n } else {\n // Workaround for items with multiple removable attributes. See\n // https://github.com/ckeditor/ckeditor5-remove-format/pull/1#pullrequestreview-220515609\n const itemRange = writer.createRangeOn(item);\n for (const attributeName of this._getFormattingAttributes(item)){\n this._removeFormatting(attributeName, item, itemRange, writer);\n }\n }\n }\n });\n }\n /**\n\t * Registers a custom attribute handler that will be used to determine if an attribute is formatting and how to remove it.\n\t *\n\t * @internal\n\t */ registerCustomAttribute(isFormatting, removeFormatting) {\n this._customAttributesHandlers.push({\n isFormatting,\n removeFormatting\n });\n }\n /**\n\t * Helper method that removes a formatting attribute from an item either using custom callbacks or writer remove attribute.\n\t */ _removeFormatting(attributeName, item, itemRange, writer) {\n let customHandled = false;\n const nonSelectionAttributeName = toNonSelectionAttribute(attributeName);\n for (const { isFormatting, removeFormatting } of this._customAttributesHandlers){\n if (isFormatting(nonSelectionAttributeName, item)) {\n removeFormatting(attributeName, itemRange, writer);\n customHandled = true;\n }\n }\n if (!customHandled) {\n writer.removeAttribute(attributeName, itemRange);\n }\n }\n /**\n\t * Returns an iterable of items in a selection (including the selection itself) that have formatting model\n\t * attributes to be removed by the feature.\n\t */ *_getFormattingItems(selection) {\n const model = this.editor.model;\n const schema = model.schema;\n const itemHasRemovableFormatting = (item)=>{\n return !!first(this._getFormattingAttributes(item));\n };\n // Check formatting on selected items.\n for (const curRange of selection.getRanges()){\n for (const item of curRange.getItems()){\n // Ignore last block if range ends at the beginning of it.\n if (schema.isBlock(item) && curRange.end.isTouching(model.createPositionAt(item, 0))) {\n continue;\n }\n if (itemHasRemovableFormatting(item)) {\n yield item;\n }\n }\n }\n // Check formatting from selected blocks (to include partly selected blocks).\n for (const block of selection.getSelectedBlocks()){\n if (itemHasRemovableFormatting(block)) {\n yield block;\n }\n }\n // Finally the selection might be formatted as well, so make sure to check it.\n if (itemHasRemovableFormatting(selection)) {\n yield selection;\n }\n }\n /**\n\t * Returns an iterable of formatting attributes of a given model item.\n\t *\n\t * **Note:** Formatting items have the `isFormatting` property set to `true`.\n\t *\n\t * @returns The names of formatting attributes found in a given item.\n\t */ *_getFormattingAttributes(item) {\n const { schema } = this.editor.model;\n for (const [attributeName] of item.getAttributes()){\n const nonSelectionAttributeName = toNonSelectionAttribute(attributeName);\n for (const { isFormatting } of this._customAttributesHandlers){\n if (isFormatting(nonSelectionAttributeName, item)) {\n yield attributeName;\n }\n }\n const attributeProperties = schema.getAttributeProperties(nonSelectionAttributeName);\n if (attributeProperties && attributeProperties.isFormatting) {\n yield attributeName;\n }\n }\n }\n}\n/**\n * Helper function that converts a selection attribute name to a non-selection one. E.g. `selection:bold` to `bold`.\n */ function toNonSelectionAttribute(attributeName) {\n return attributeName.replace(/^selection:/, '');\n}\n\n/**\n * The remove format editing plugin.\n *\n * It registers the {@link module:remove-format/removeformatcommand~RemoveFormatCommand removeFormat} command.\n */ class RemoveFormatEditing extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'RemoveFormatEditing';\n }\n /**\n\t * @inheritDoc\n\t * @internal\n\t */ static get licenseFeatureCode() {\n return 'RF';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ static get isPremiumPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n editor.commands.add('removeFormat', new RemoveFormatCommand(editor));\n }\n}\n\n/**\n * The remove format plugin.\n *\n * This is a \"glue\" plugin which loads the {@link module:remove-format/removeformatediting~RemoveFormatEditing}\n * and {@link module:remove-format/removeformatui~RemoveFormatUI} plugins.\n *\n * For a detailed overview, check out the {@glink features/remove-format remove format} feature documentation.\n */ class RemoveFormat extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n RemoveFormatEditing,\n RemoveFormatUI\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'RemoveFormat';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n}\n\nexport { RemoveFormat, RemoveFormatCommand, RemoveFormatEditing, RemoveFormatUI };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module remove-format/removeformatui\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport { IconRemoveFormat } from '@ckeditor/ckeditor5-icons';\nimport { ButtonView, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui';\n\nimport { type RemoveFormatCommand } from './removeformatcommand.js';\n\nconst REMOVE_FORMAT = 'removeFormat';\n\n/**\n * The remove format UI plugin. It registers the `'removeFormat'` button which can be\n * used in the toolbar.\n */\nexport class RemoveFormatUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'RemoveFormatUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.ui.componentFactory.add( REMOVE_FORMAT, () => {\n\t\t\tconst view = this._createButton( ButtonView );\n\n\t\t\tview.set( {\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\n\t\teditor.ui.componentFactory.add( `menuBar:${ REMOVE_FORMAT }`, () => this._createButton( MenuBarMenuListItemButtonView ) );\n\t}\n\n\t/**\n\t * Creates a button for remove format command to use either in toolbar or in menu bar.\n\t */\n\tprivate _createButton<T extends typeof ButtonView | typeof MenuBarMenuListItemButtonView>( ButtonClass: T ): InstanceType<T> {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst command: RemoveFormatCommand = editor.commands.get( REMOVE_FORMAT )!;\n\t\tconst view = new ButtonClass( editor.locale ) as InstanceType<T>;\n\t\tconst t = locale.t;\n\n\t\tview.set( {\n\t\t\tlabel: t( 'Remove Format' ),\n\t\t\ticon: IconRemoveFormat\n\t\t} );\n\n\t\tview.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\n\t\t// Execute the command.\n\t\tthis.listenTo( view, 'execute', () => {\n\t\t\teditor.execute( REMOVE_FORMAT );\n\t\t\teditor.editing.view.focus();\n\t\t} );\n\n\t\treturn view;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module remove-format/removeformatcommand\n */\n\nimport type { ModelDocumentSelection, ModelItem, ModelRange, ModelWriter } from '@ckeditor/ckeditor5-engine';\nimport { Command } from '@ckeditor/ckeditor5-core';\nimport { first } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The remove format command.\n *\n * It is used by the {@link module:remove-format/removeformat~RemoveFormat remove format feature}\n * to clear the formatting in the selection.\n *\n * ```ts\n * editor.execute( 'removeFormat' );\n * ```\n */\nexport class RemoveFormatCommand extends Command {\n\tdeclare public value: boolean;\n\n\t/**\n\t * List of all registered custom attribute handlers.\n\t */\n\tprivate _customAttributesHandlers: Array<{\n\t\tisFormatting: IsFormattingCallback;\n\t\tremoveFormatting: RemoveFormattingCallback;\n\t}> = [];\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\n\t\tthis.isEnabled = !!first( this._getFormattingItems( model.document.selection ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst model = this.editor.model;\n\n\t\tmodel.change( writer => {\n\t\t\tfor ( const item of this._getFormattingItems( model.document.selection ) ) {\n\t\t\t\tif ( item.is( 'selection' ) ) {\n\t\t\t\t\tfor ( const attributeName of this._getFormattingAttributes( item ) ) {\n\t\t\t\t\t\twriter.removeSelectionAttribute( attributeName );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Workaround for items with multiple removable attributes. See\n\t\t\t\t\t// https://github.com/ckeditor/ckeditor5-remove-format/pull/1#pullrequestreview-220515609\n\t\t\t\t\tconst itemRange = writer.createRangeOn( item );\n\n\t\t\t\t\tfor ( const attributeName of this._getFormattingAttributes( item ) ) {\n\t\t\t\t\t\tthis._removeFormatting( attributeName, item, itemRange, writer );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Registers a custom attribute handler that will be used to determine if an attribute is formatting and how to remove it.\n\t *\n\t * @internal\n\t */\n\tpublic registerCustomAttribute( isFormatting: IsFormattingCallback, removeFormatting: RemoveFormattingCallback ): void {\n\t\tthis._customAttributesHandlers.push( {\n\t\t\tisFormatting,\n\t\t\tremoveFormatting\n\t\t} );\n\t}\n\n\t/**\n\t * Helper method that removes a formatting attribute from an item either using custom callbacks or writer remove attribute.\n\t */\n\tprivate _removeFormatting( attributeName: string, item: ModelItem, itemRange: ModelRange, writer: ModelWriter ) {\n\t\tlet customHandled = false;\n\t\tconst nonSelectionAttributeName = toNonSelectionAttribute( attributeName );\n\n\t\tfor ( const { isFormatting, removeFormatting } of this._customAttributesHandlers ) {\n\t\t\tif ( isFormatting( nonSelectionAttributeName, item ) ) {\n\t\t\t\tremoveFormatting( attributeName, itemRange, writer );\n\t\t\t\tcustomHandled = true;\n\t\t\t}\n\t\t}\n\n\t\tif ( !customHandled ) {\n\t\t\twriter.removeAttribute( attributeName, itemRange );\n\t\t}\n\t}\n\n\t/**\n\t * Returns an iterable of items in a selection (including the selection itself) that have formatting model\n\t * attributes to be removed by the feature.\n\t */\n\tprivate* _getFormattingItems( selection: ModelDocumentSelection ) {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\n\t\tconst itemHasRemovableFormatting = ( item: ModelItem | ModelDocumentSelection ) => {\n\t\t\treturn !!first( this._getFormattingAttributes( item ) );\n\t\t};\n\n\t\t// Check formatting on selected items.\n\t\tfor ( const curRange of selection.getRanges() ) {\n\t\t\tfor ( const item of curRange.getItems() ) {\n\t\t\t\t// Ignore last block if range ends at the beginning of it.\n\t\t\t\tif ( schema.isBlock( item ) && curRange.end.isTouching( model.createPositionAt( item, 0 ) ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( itemHasRemovableFormatting( item ) ) {\n\t\t\t\t\tyield item;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Check formatting from selected blocks (to include partly selected blocks).\n\t\tfor ( const block of selection.getSelectedBlocks() ) {\n\t\t\tif ( itemHasRemovableFormatting( block ) ) {\n\t\t\t\tyield block;\n\t\t\t}\n\t\t}\n\n\t\t// Finally the selection might be formatted as well, so make sure to check it.\n\t\tif ( itemHasRemovableFormatting( selection ) ) {\n\t\t\tyield selection;\n\t\t}\n\t}\n\n\t/**\n\t * Returns an iterable of formatting attributes of a given model item.\n\t *\n\t * **Note:** Formatting items have the `isFormatting` property set to `true`.\n\t *\n\t * @returns The names of formatting attributes found in a given item.\n\t */\n\tprivate* _getFormattingAttributes( item: ModelItem | ModelDocumentSelection ) {\n\t\tconst { schema } = this.editor.model;\n\n\t\tfor ( const [ attributeName ] of item.getAttributes() ) {\n\t\t\tconst nonSelectionAttributeName = toNonSelectionAttribute( attributeName );\n\n\t\t\tfor ( const { isFormatting } of this._customAttributesHandlers ) {\n\t\t\t\tif ( isFormatting( nonSelectionAttributeName, item ) ) {\n\t\t\t\t\tyield attributeName;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst attributeProperties = schema.getAttributeProperties( nonSelectionAttributeName );\n\n\t\t\tif ( attributeProperties && attributeProperties.isFormatting ) {\n\t\t\t\tyield attributeName;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Helper function that converts a selection attribute name to a non-selection one. E.g. `selection:bold` to `bold`.\n */\nfunction toNonSelectionAttribute( attributeName: string ) {\n\treturn attributeName.replace( /^selection:/, '' );\n}\n\n/**\n * Callback that checks if an attribute is a formatting attribute.\n *\n * @internal\n */\nexport type IsFormattingCallback = ( attributeName: string, item: ModelItem | ModelDocumentSelection ) => boolean;\n\n/**\n * Callback that removes formatting from an item.\n *\n * @internal\n */\nexport type RemoveFormattingCallback = ( attributeName: string, range: ModelRange, writer: ModelWriter ) => void;\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module remove-format/removeformatediting\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\nimport { RemoveFormatCommand } from './removeformatcommand.js';\n\n/**\n * The remove format editing plugin.\n *\n * It registers the {@link module:remove-format/removeformatcommand~RemoveFormatCommand removeFormat} command.\n */\nexport class RemoveFormatEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'RemoveFormatEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic static get licenseFeatureCode(): string {\n\t\treturn 'RF';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isPremiumPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.commands.add( 'removeFormat', new RemoveFormatCommand( editor ) );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module remove-format/removeformat\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\nimport { RemoveFormatUI } from './removeformatui.js';\nimport { RemoveFormatEditing } from './removeformatediting.js';\n\n/**\n * The remove format plugin.\n *\n * This is a \"glue\" plugin which loads the {@link module:remove-format/removeformatediting~RemoveFormatEditing}\n * and {@link module:remove-format/removeformatui~RemoveFormatUI} plugins.\n *\n * For a detailed overview, check out the {@glink features/remove-format remove format} feature documentation.\n */\nexport class RemoveFormat extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ RemoveFormatEditing, RemoveFormatUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'RemoveFormat' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["index.js","../src/removeformatui.ts","../src/removeformatcommand.ts","../src/removeformatediting.ts","../src/removeformat.ts"],"names":[],"mappings":"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","file":"index.js.map","sourcesContent":["import { Command, Plugin } from \"@ckeditor/ckeditor5-core\";\nimport { IconRemoveFormat } from \"@ckeditor/ckeditor5-icons\";\nimport { ButtonView, MenuBarMenuListItemButtonView } from \"@ckeditor/ckeditor5-ui\";\nimport { first } from \"@ckeditor/ckeditor5-utils\";\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module remove-format/removeformatui\n*/\nconst REMOVE_FORMAT = \"removeFormat\";\n/**\n* The remove format UI plugin. It registers the `'removeFormat'` button which can be\n* used in the toolbar.\n*/\nvar RemoveFormatUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"RemoveFormatUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\teditor.ui.componentFactory.add(REMOVE_FORMAT, () => {\n\t\t\tconst view = this._createButton(ButtonView);\n\t\t\tview.set({ tooltip: true });\n\t\t\treturn view;\n\t\t});\n\t\teditor.ui.componentFactory.add(`menuBar:${REMOVE_FORMAT}`, () => this._createButton(MenuBarMenuListItemButtonView));\n\t}\n\t/**\n\t* Creates a button for remove format command to use either in toolbar or in menu bar.\n\t*/\n\t_createButton(ButtonClass) {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst command = editor.commands.get(REMOVE_FORMAT);\n\t\tconst view = new ButtonClass(editor.locale);\n\t\tconst t = locale.t;\n\t\tview.set({\n\t\t\tlabel: t(\"Remove Format\"),\n\t\t\ticon: IconRemoveFormat\n\t\t});\n\t\tview.bind(\"isEnabled\").to(command, \"isEnabled\");\n\t\tthis.listenTo(view, \"execute\", () => {\n\t\t\teditor.execute(REMOVE_FORMAT);\n\t\t\teditor.editing.view.focus();\n\t\t});\n\t\treturn view;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* The remove format command.\n*\n* It is used by the {@link module:remove-format/removeformat~RemoveFormat remove format feature}\n* to clear the formatting in the selection.\n*\n* ```ts\n* editor.execute( 'removeFormat' );\n* ```\n*/\nvar RemoveFormatCommand = class extends Command {\n\t/**\n\t* List of all registered custom attribute handlers.\n\t*/\n\t_customAttributesHandlers = [];\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst model = this.editor.model;\n\t\tthis.isEnabled = !!first(this._getFormattingItems(model.document.selection));\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\texecute() {\n\t\tconst model = this.editor.model;\n\t\tmodel.change((writer) => {\n\t\t\tfor (const item of this._getFormattingItems(model.document.selection)) if (item.is(\"selection\")) for (const attributeName of this._getFormattingAttributes(item)) writer.removeSelectionAttribute(attributeName);\n\t\t\telse {\n\t\t\t\tconst itemRange = writer.createRangeOn(item);\n\t\t\t\tfor (const attributeName of this._getFormattingAttributes(item)) this._removeFormatting(attributeName, item, itemRange, writer);\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Registers a custom attribute handler that will be used to determine if an attribute is formatting and how to remove it.\n\t*\n\t* @internal\n\t*/\n\tregisterCustomAttribute(isFormatting, removeFormatting) {\n\t\tthis._customAttributesHandlers.push({\n\t\t\tisFormatting,\n\t\t\tremoveFormatting\n\t\t});\n\t}\n\t/**\n\t* Helper method that removes a formatting attribute from an item either using custom callbacks or writer remove attribute.\n\t*/\n\t_removeFormatting(attributeName, item, itemRange, writer) {\n\t\tlet customHandled = false;\n\t\tconst nonSelectionAttributeName = toNonSelectionAttribute(attributeName);\n\t\tfor (const { isFormatting, removeFormatting } of this._customAttributesHandlers) if (isFormatting(nonSelectionAttributeName, item)) {\n\t\t\tremoveFormatting(attributeName, itemRange, writer);\n\t\t\tcustomHandled = true;\n\t\t}\n\t\tif (!customHandled) writer.removeAttribute(attributeName, itemRange);\n\t}\n\t/**\n\t* Returns an iterable of items in a selection (including the selection itself) that have formatting model\n\t* attributes to be removed by the feature.\n\t*/\n\t*_getFormattingItems(selection) {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst itemHasRemovableFormatting = (item) => {\n\t\t\treturn !!first(this._getFormattingAttributes(item));\n\t\t};\n\t\tfor (const curRange of selection.getRanges()) for (const item of curRange.getItems()) {\n\t\t\tif (schema.isBlock(item) && curRange.end.isTouching(model.createPositionAt(item, 0))) continue;\n\t\t\tif (itemHasRemovableFormatting(item)) yield item;\n\t\t}\n\t\tfor (const block of selection.getSelectedBlocks()) if (itemHasRemovableFormatting(block)) yield block;\n\t\tif (itemHasRemovableFormatting(selection)) yield selection;\n\t}\n\t/**\n\t* Returns an iterable of formatting attributes of a given model item.\n\t*\n\t* **Note:** Formatting items have the `isFormatting` property set to `true`.\n\t*\n\t* @returns The names of formatting attributes found in a given item.\n\t*/\n\t*_getFormattingAttributes(item) {\n\t\tconst { schema } = this.editor.model;\n\t\tfor (const [attributeName] of item.getAttributes()) {\n\t\t\tconst nonSelectionAttributeName = toNonSelectionAttribute(attributeName);\n\t\t\tfor (const { isFormatting } of this._customAttributesHandlers) if (isFormatting(nonSelectionAttributeName, item)) yield attributeName;\n\t\t\tconst attributeProperties = schema.getAttributeProperties(nonSelectionAttributeName);\n\t\t\tif (attributeProperties && attributeProperties.isFormatting) yield attributeName;\n\t\t}\n\t}\n};\n/**\n* Helper function that converts a selection attribute name to a non-selection one. E.g. `selection:bold` to `bold`.\n*/\nfunction toNonSelectionAttribute(attributeName) {\n\treturn attributeName.replace(/^selection:/, \"\");\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module remove-format/removeformatediting\n*/\n/**\n* The remove format editing plugin.\n*\n* It registers the {@link module:remove-format/removeformatcommand~RemoveFormatCommand removeFormat} command.\n*/\nvar RemoveFormatEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"RemoveFormatEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t* @internal\n\t*/\n\tstatic get licenseFeatureCode() {\n\t\treturn \"RF\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isPremiumPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\teditor.commands.add(\"removeFormat\", new RemoveFormatCommand(editor));\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module remove-format/removeformat\n*/\n/**\n* The remove format plugin.\n*\n* This is a \"glue\" plugin which loads the {@link module:remove-format/removeformatediting~RemoveFormatEditing}\n* and {@link module:remove-format/removeformatui~RemoveFormatUI} plugins.\n*\n* For a detailed overview, check out the {@glink features/remove-format remove format} feature documentation.\n*/\nvar RemoveFormat = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [RemoveFormatEditing, RemoveFormatUI];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"RemoveFormat\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n\nexport { RemoveFormat, RemoveFormatCommand, RemoveFormatEditing, RemoveFormatUI };\n//# sourceMappingURL=index.js.map","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module remove-format/removeformatui\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport { IconRemoveFormat } from '@ckeditor/ckeditor5-icons';\nimport { ButtonView, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui';\n\nimport { type RemoveFormatCommand } from './removeformatcommand.js';\n\nconst REMOVE_FORMAT = 'removeFormat';\n\n/**\n * The remove format UI plugin. It registers the `'removeFormat'` button which can be\n * used in the toolbar.\n */\nexport class RemoveFormatUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'RemoveFormatUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.ui.componentFactory.add( REMOVE_FORMAT, () => {\n\t\t\tconst view = this._createButton( ButtonView );\n\n\t\t\tview.set( {\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\n\t\teditor.ui.componentFactory.add( `menuBar:${ REMOVE_FORMAT }`, () => this._createButton( MenuBarMenuListItemButtonView ) );\n\t}\n\n\t/**\n\t * Creates a button for remove format command to use either in toolbar or in menu bar.\n\t */\n\tprivate _createButton<T extends typeof ButtonView | typeof MenuBarMenuListItemButtonView>( ButtonClass: T ): InstanceType<T> {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst command: RemoveFormatCommand = editor.commands.get( REMOVE_FORMAT )!;\n\t\tconst view = new ButtonClass( editor.locale ) as InstanceType<T>;\n\t\tconst t = locale.t;\n\n\t\tview.set( {\n\t\t\tlabel: t( 'Remove Format' ),\n\t\t\ticon: IconRemoveFormat\n\t\t} );\n\n\t\tview.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\n\t\t// Execute the command.\n\t\tthis.listenTo( view, 'execute', () => {\n\t\t\teditor.execute( REMOVE_FORMAT );\n\t\t\teditor.editing.view.focus();\n\t\t} );\n\n\t\treturn view;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module remove-format/removeformatcommand\n */\n\nimport type { ModelDocumentSelection, ModelItem, ModelRange, ModelWriter } from '@ckeditor/ckeditor5-engine';\nimport { Command } from '@ckeditor/ckeditor5-core';\nimport { first } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The remove format command.\n *\n * It is used by the {@link module:remove-format/removeformat~RemoveFormat remove format feature}\n * to clear the formatting in the selection.\n *\n * ```ts\n * editor.execute( 'removeFormat' );\n * ```\n */\nexport class RemoveFormatCommand extends Command {\n\tdeclare public value: boolean;\n\n\t/**\n\t * List of all registered custom attribute handlers.\n\t */\n\tprivate _customAttributesHandlers: Array<{\n\t\tisFormatting: IsFormattingCallback;\n\t\tremoveFormatting: RemoveFormattingCallback;\n\t}> = [];\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\n\t\tthis.isEnabled = !!first( this._getFormattingItems( model.document.selection ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst model = this.editor.model;\n\n\t\tmodel.change( writer => {\n\t\t\tfor ( const item of this._getFormattingItems( model.document.selection ) ) {\n\t\t\t\tif ( item.is( 'selection' ) ) {\n\t\t\t\t\tfor ( const attributeName of this._getFormattingAttributes( item ) ) {\n\t\t\t\t\t\twriter.removeSelectionAttribute( attributeName );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Workaround for items with multiple removable attributes. See\n\t\t\t\t\t// https://github.com/ckeditor/ckeditor5-remove-format/pull/1#pullrequestreview-220515609\n\t\t\t\t\tconst itemRange = writer.createRangeOn( item );\n\n\t\t\t\t\tfor ( const attributeName of this._getFormattingAttributes( item ) ) {\n\t\t\t\t\t\tthis._removeFormatting( attributeName, item, itemRange, writer );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Registers a custom attribute handler that will be used to determine if an attribute is formatting and how to remove it.\n\t *\n\t * @internal\n\t */\n\tpublic registerCustomAttribute( isFormatting: IsFormattingCallback, removeFormatting: RemoveFormattingCallback ): void {\n\t\tthis._customAttributesHandlers.push( {\n\t\t\tisFormatting,\n\t\t\tremoveFormatting\n\t\t} );\n\t}\n\n\t/**\n\t * Helper method that removes a formatting attribute from an item either using custom callbacks or writer remove attribute.\n\t */\n\tprivate _removeFormatting( attributeName: string, item: ModelItem, itemRange: ModelRange, writer: ModelWriter ) {\n\t\tlet customHandled = false;\n\t\tconst nonSelectionAttributeName = toNonSelectionAttribute( attributeName );\n\n\t\tfor ( const { isFormatting, removeFormatting } of this._customAttributesHandlers ) {\n\t\t\tif ( isFormatting( nonSelectionAttributeName, item ) ) {\n\t\t\t\tremoveFormatting( attributeName, itemRange, writer );\n\t\t\t\tcustomHandled = true;\n\t\t\t}\n\t\t}\n\n\t\tif ( !customHandled ) {\n\t\t\twriter.removeAttribute( attributeName, itemRange );\n\t\t}\n\t}\n\n\t/**\n\t * Returns an iterable of items in a selection (including the selection itself) that have formatting model\n\t * attributes to be removed by the feature.\n\t */\n\tprivate* _getFormattingItems( selection: ModelDocumentSelection ) {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\n\t\tconst itemHasRemovableFormatting = ( item: ModelItem | ModelDocumentSelection ) => {\n\t\t\treturn !!first( this._getFormattingAttributes( item ) );\n\t\t};\n\n\t\t// Check formatting on selected items.\n\t\tfor ( const curRange of selection.getRanges() ) {\n\t\t\tfor ( const item of curRange.getItems() ) {\n\t\t\t\t// Ignore last block if range ends at the beginning of it.\n\t\t\t\tif ( schema.isBlock( item ) && curRange.end.isTouching( model.createPositionAt( item, 0 ) ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( itemHasRemovableFormatting( item ) ) {\n\t\t\t\t\tyield item;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Check formatting from selected blocks (to include partly selected blocks).\n\t\tfor ( const block of selection.getSelectedBlocks() ) {\n\t\t\tif ( itemHasRemovableFormatting( block ) ) {\n\t\t\t\tyield block;\n\t\t\t}\n\t\t}\n\n\t\t// Finally the selection might be formatted as well, so make sure to check it.\n\t\tif ( itemHasRemovableFormatting( selection ) ) {\n\t\t\tyield selection;\n\t\t}\n\t}\n\n\t/**\n\t * Returns an iterable of formatting attributes of a given model item.\n\t *\n\t * **Note:** Formatting items have the `isFormatting` property set to `true`.\n\t *\n\t * @returns The names of formatting attributes found in a given item.\n\t */\n\tprivate* _getFormattingAttributes( item: ModelItem | ModelDocumentSelection ) {\n\t\tconst { schema } = this.editor.model;\n\n\t\tfor ( const [ attributeName ] of item.getAttributes() ) {\n\t\t\tconst nonSelectionAttributeName = toNonSelectionAttribute( attributeName );\n\n\t\t\tfor ( const { isFormatting } of this._customAttributesHandlers ) {\n\t\t\t\tif ( isFormatting( nonSelectionAttributeName, item ) ) {\n\t\t\t\t\tyield attributeName;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst attributeProperties = schema.getAttributeProperties( nonSelectionAttributeName );\n\n\t\t\tif ( attributeProperties && attributeProperties.isFormatting ) {\n\t\t\t\tyield attributeName;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Helper function that converts a selection attribute name to a non-selection one. E.g. `selection:bold` to `bold`.\n */\nfunction toNonSelectionAttribute( attributeName: string ) {\n\treturn attributeName.replace( /^selection:/, '' );\n}\n\n/**\n * Callback that checks if an attribute is a formatting attribute.\n *\n * @internal\n */\nexport type IsFormattingCallback = ( attributeName: string, item: ModelItem | ModelDocumentSelection ) => boolean;\n\n/**\n * Callback that removes formatting from an item.\n *\n * @internal\n */\nexport type RemoveFormattingCallback = ( attributeName: string, range: ModelRange, writer: ModelWriter ) => void;\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module remove-format/removeformatediting\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\nimport { RemoveFormatCommand } from './removeformatcommand.js';\n\n/**\n * The remove format editing plugin.\n *\n * It registers the {@link module:remove-format/removeformatcommand~RemoveFormatCommand removeFormat} command.\n */\nexport class RemoveFormatEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'RemoveFormatEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic static get licenseFeatureCode(): string {\n\t\treturn 'RF';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isPremiumPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.commands.add( 'removeFormat', new RemoveFormatCommand( editor ) );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module remove-format/removeformat\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\n\nimport { RemoveFormatUI } from './removeformatui.js';\nimport { RemoveFormatEditing } from './removeformatediting.js';\n\n/**\n * The remove format plugin.\n *\n * This is a \"glue\" plugin which loads the {@link module:remove-format/removeformatediting~RemoveFormatEditing}\n * and {@link module:remove-format/removeformatui~RemoveFormatUI} plugins.\n *\n * For a detailed overview, check out the {@glink features/remove-format remove format} feature documentation.\n */\nexport class RemoveFormat extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ RemoveFormatEditing, RemoveFormatUI ]> {\n\t\treturn [ RemoveFormatEditing, RemoveFormatUI ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'RemoveFormat' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n"]}
@@ -1,32 +1,32 @@
1
1
  /**
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
- */
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
- * @module remove-format/removeformat
7
- */
8
- import { Plugin } from '@ckeditor/ckeditor5-core';
9
- import { RemoveFormatUI } from './removeformatui.js';
10
- import { RemoveFormatEditing } from './removeformatediting.js';
6
+ * @module remove-format/removeformat
7
+ */
8
+ import { Plugin, type PluginDependenciesOf } from "@ckeditor/ckeditor5-core";
9
+ import { RemoveFormatUI } from "./removeformatui.js";
10
+ import { RemoveFormatEditing } from "./removeformatediting.js";
11
11
  /**
12
- * The remove format plugin.
13
- *
14
- * This is a "glue" plugin which loads the {@link module:remove-format/removeformatediting~RemoveFormatEditing}
15
- * and {@link module:remove-format/removeformatui~RemoveFormatUI} plugins.
16
- *
17
- * For a detailed overview, check out the {@glink features/remove-format remove format} feature documentation.
18
- */
12
+ * The remove format plugin.
13
+ *
14
+ * This is a "glue" plugin which loads the {@link module:remove-format/removeformatediting~RemoveFormatEditing}
15
+ * and {@link module:remove-format/removeformatui~RemoveFormatUI} plugins.
16
+ *
17
+ * For a detailed overview, check out the {@glink features/remove-format remove format} feature documentation.
18
+ */
19
19
  export declare class RemoveFormat extends Plugin {
20
- /**
21
- * @inheritDoc
22
- */
23
- static get requires(): readonly [typeof RemoveFormatEditing, typeof RemoveFormatUI];
24
- /**
25
- * @inheritDoc
26
- */
27
- static get pluginName(): "RemoveFormat";
28
- /**
29
- * @inheritDoc
30
- */
31
- static get isOfficialPlugin(): true;
20
+ /**
21
+ * @inheritDoc
22
+ */
23
+ static get requires(): PluginDependenciesOf<[RemoveFormatEditing, RemoveFormatUI]>;
24
+ /**
25
+ * @inheritDoc
26
+ */
27
+ static get pluginName(): "RemoveFormat";
28
+ /**
29
+ * @inheritDoc
30
+ */
31
+ static override get isOfficialPlugin(): true;
32
32
  }
@@ -1,69 +1,69 @@
1
1
  /**
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
- */
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
- * @module remove-format/removeformatcommand
7
- */
8
- import type { ModelDocumentSelection, ModelItem, ModelRange, ModelWriter } from '@ckeditor/ckeditor5-engine';
9
- import { Command } from '@ckeditor/ckeditor5-core';
6
+ * @module remove-format/removeformatcommand
7
+ */
8
+ import type { ModelDocumentSelection, ModelItem, ModelRange, ModelWriter } from "@ckeditor/ckeditor5-engine";
9
+ import { Command } from "@ckeditor/ckeditor5-core";
10
10
  /**
11
- * The remove format command.
12
- *
13
- * It is used by the {@link module:remove-format/removeformat~RemoveFormat remove format feature}
14
- * to clear the formatting in the selection.
15
- *
16
- * ```ts
17
- * editor.execute( 'removeFormat' );
18
- * ```
19
- */
11
+ * The remove format command.
12
+ *
13
+ * It is used by the {@link module:remove-format/removeformat~RemoveFormat remove format feature}
14
+ * to clear the formatting in the selection.
15
+ *
16
+ * ```ts
17
+ * editor.execute( 'removeFormat' );
18
+ * ```
19
+ */
20
20
  export declare class RemoveFormatCommand extends Command {
21
- value: boolean;
22
- /**
23
- * List of all registered custom attribute handlers.
24
- */
25
- private _customAttributesHandlers;
26
- /**
27
- * @inheritDoc
28
- */
29
- refresh(): void;
30
- /**
31
- * @inheritDoc
32
- */
33
- execute(): void;
34
- /**
35
- * Registers a custom attribute handler that will be used to determine if an attribute is formatting and how to remove it.
36
- *
37
- * @internal
38
- */
39
- registerCustomAttribute(isFormatting: IsFormattingCallback, removeFormatting: RemoveFormattingCallback): void;
40
- /**
41
- * Helper method that removes a formatting attribute from an item either using custom callbacks or writer remove attribute.
42
- */
43
- private _removeFormatting;
44
- /**
45
- * Returns an iterable of items in a selection (including the selection itself) that have formatting model
46
- * attributes to be removed by the feature.
47
- */
48
- private _getFormattingItems;
49
- /**
50
- * Returns an iterable of formatting attributes of a given model item.
51
- *
52
- * **Note:** Formatting items have the `isFormatting` property set to `true`.
53
- *
54
- * @returns The names of formatting attributes found in a given item.
55
- */
56
- private _getFormattingAttributes;
21
+ value: boolean;
22
+ /**
23
+ * List of all registered custom attribute handlers.
24
+ */
25
+ private _customAttributesHandlers;
26
+ /**
27
+ * @inheritDoc
28
+ */
29
+ override refresh(): void;
30
+ /**
31
+ * @inheritDoc
32
+ */
33
+ override execute(): void;
34
+ /**
35
+ * Registers a custom attribute handler that will be used to determine if an attribute is formatting and how to remove it.
36
+ *
37
+ * @internal
38
+ */
39
+ registerCustomAttribute(isFormatting: IsFormattingCallback, removeFormatting: RemoveFormattingCallback): void;
40
+ /**
41
+ * Helper method that removes a formatting attribute from an item either using custom callbacks or writer remove attribute.
42
+ */
43
+ private _removeFormatting;
44
+ /**
45
+ * Returns an iterable of items in a selection (including the selection itself) that have formatting model
46
+ * attributes to be removed by the feature.
47
+ */
48
+ private _getFormattingItems;
49
+ /**
50
+ * Returns an iterable of formatting attributes of a given model item.
51
+ *
52
+ * **Note:** Formatting items have the `isFormatting` property set to `true`.
53
+ *
54
+ * @returns The names of formatting attributes found in a given item.
55
+ */
56
+ private _getFormattingAttributes;
57
57
  }
58
58
  /**
59
- * Callback that checks if an attribute is a formatting attribute.
60
- *
61
- * @internal
62
- */
59
+ * Callback that checks if an attribute is a formatting attribute.
60
+ *
61
+ * @internal
62
+ */
63
63
  export type IsFormattingCallback = (attributeName: string, item: ModelItem | ModelDocumentSelection) => boolean;
64
64
  /**
65
- * Callback that removes formatting from an item.
66
- *
67
- * @internal
68
- */
65
+ * Callback that removes formatting from an item.
66
+ *
67
+ * @internal
68
+ */
69
69
  export type RemoveFormattingCallback = (attributeName: string, range: ModelRange, writer: ModelWriter) => void;
@@ -1,36 +1,36 @@
1
1
  /**
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
- */
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
- * @module remove-format/removeformatediting
7
- */
8
- import { Plugin } from '@ckeditor/ckeditor5-core';
6
+ * @module remove-format/removeformatediting
7
+ */
8
+ import { Plugin } from "@ckeditor/ckeditor5-core";
9
9
  /**
10
- * The remove format editing plugin.
11
- *
12
- * It registers the {@link module:remove-format/removeformatcommand~RemoveFormatCommand removeFormat} command.
13
- */
10
+ * The remove format editing plugin.
11
+ *
12
+ * It registers the {@link module:remove-format/removeformatcommand~RemoveFormatCommand removeFormat} command.
13
+ */
14
14
  export declare class RemoveFormatEditing extends Plugin {
15
- /**
16
- * @inheritDoc
17
- */
18
- static get pluginName(): "RemoveFormatEditing";
19
- /**
20
- * @inheritDoc
21
- * @internal
22
- */
23
- static get licenseFeatureCode(): string;
24
- /**
25
- * @inheritDoc
26
- */
27
- static get isOfficialPlugin(): true;
28
- /**
29
- * @inheritDoc
30
- */
31
- static get isPremiumPlugin(): true;
32
- /**
33
- * @inheritDoc
34
- */
35
- init(): void;
15
+ /**
16
+ * @inheritDoc
17
+ */
18
+ static get pluginName(): "RemoveFormatEditing";
19
+ /**
20
+ * @inheritDoc
21
+ * @internal
22
+ */
23
+ static get licenseFeatureCode(): string;
24
+ /**
25
+ * @inheritDoc
26
+ */
27
+ static override get isOfficialPlugin(): true;
28
+ /**
29
+ * @inheritDoc
30
+ */
31
+ static override get isPremiumPlugin(): true;
32
+ /**
33
+ * @inheritDoc
34
+ */
35
+ init(): void;
36
36
  }
@@ -1,30 +1,30 @@
1
1
  /**
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
- */
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
- * @module remove-format/removeformatui
7
- */
8
- import { Plugin } from '@ckeditor/ckeditor5-core';
6
+ * @module remove-format/removeformatui
7
+ */
8
+ import { Plugin } from "@ckeditor/ckeditor5-core";
9
9
  /**
10
- * The remove format UI plugin. It registers the `'removeFormat'` button which can be
11
- * used in the toolbar.
12
- */
10
+ * The remove format UI plugin. It registers the `'removeFormat'` button which can be
11
+ * used in the toolbar.
12
+ */
13
13
  export declare class RemoveFormatUI extends Plugin {
14
- /**
15
- * @inheritDoc
16
- */
17
- static get pluginName(): "RemoveFormatUI";
18
- /**
19
- * @inheritDoc
20
- */
21
- static get isOfficialPlugin(): true;
22
- /**
23
- * @inheritDoc
24
- */
25
- init(): void;
26
- /**
27
- * Creates a button for remove format command to use either in toolbar or in menu bar.
28
- */
29
- private _createButton;
14
+ /**
15
+ * @inheritDoc
16
+ */
17
+ static get pluginName(): "RemoveFormatUI";
18
+ /**
19
+ * @inheritDoc
20
+ */
21
+ static override get isOfficialPlugin(): true;
22
+ /**
23
+ * @inheritDoc
24
+ */
25
+ init(): void;
26
+ /**
27
+ * Creates a button for remove format command to use either in toolbar or in menu bar.
28
+ */
29
+ private _createButton;
30
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ckeditor/ckeditor5-remove-format",
3
- "version": "48.2.0",
3
+ "version": "48.3.0-alpha.1",
4
4
  "description": "Remove format feature for CKEditor 5.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "CKSource (http://cksource.com/)",
@@ -26,11 +26,11 @@
26
26
  "./package.json": "./package.json"
27
27
  },
28
28
  "dependencies": {
29
- "@ckeditor/ckeditor5-core": "48.2.0",
30
- "@ckeditor/ckeditor5-engine": "48.2.0",
31
- "@ckeditor/ckeditor5-icons": "48.2.0",
32
- "@ckeditor/ckeditor5-ui": "48.2.0",
33
- "@ckeditor/ckeditor5-utils": "48.2.0"
29
+ "@ckeditor/ckeditor5-core": "48.3.0-alpha.1",
30
+ "@ckeditor/ckeditor5-engine": "48.3.0-alpha.1",
31
+ "@ckeditor/ckeditor5-icons": "48.3.0-alpha.1",
32
+ "@ckeditor/ckeditor5-ui": "48.3.0-alpha.1",
33
+ "@ckeditor/ckeditor5-utils": "48.3.0-alpha.1"
34
34
  },
35
35
  "files": [
36
36
  "dist",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["index.css"],"names":[],"mappings":";;;;;;AAEA,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC","file":"index.css.map","sourcesContent":["\n\n/*# sourceMappingURL=index.css.map */"]}