@ckeditor/ckeditor5-ckfinder 48.2.0 → 48.3.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2,325 +2,349 @@
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 { CKFinderUploadAdapter } from '@ckeditor/ckeditor5-adapter-ckfinder/dist/index.js';
7
- import { LinkEditing, Link } from '@ckeditor/ckeditor5-link/dist/index.js';
8
- import { ButtonView, MenuBarMenuListItemButtonView, Notification } from '@ckeditor/ckeditor5-ui/dist/index.js';
9
- import { IconBrowseFiles, IconImageAssetManager } from '@ckeditor/ckeditor5-icons/dist/index.js';
10
- import { CKEditorError } from '@ckeditor/ckeditor5-utils/dist/index.js';
5
+ import { Command, Plugin } from "@ckeditor/ckeditor5-core";
6
+ import { CKFinderUploadAdapter } from "@ckeditor/ckeditor5-adapter-ckfinder";
7
+ import { Link, LinkEditing } from "@ckeditor/ckeditor5-link";
8
+ import { ButtonView, MenuBarMenuListItemButtonView, Notification } from "@ckeditor/ckeditor5-ui";
9
+ import { IconBrowseFiles, IconImageAssetManager } from "@ckeditor/ckeditor5-icons";
10
+ import { CKEditorError } from "@ckeditor/ckeditor5-utils";
11
11
 
12
12
  /**
13
- * Introduces UI components for `CKFinder` plugin.
14
- *
15
- * The plugin introduces two UI components to the {@link module:ui/componentfactory~ComponentFactory UI component factory}:
16
- *
17
- * * the `'ckfinder'` toolbar button,
18
- * * the `'menuBar:ckfinder'` menu bar component, which is by default added to the `'Insert'` menu.
19
- *
20
- * It also integrates with the `insertImage` toolbar component and `menuBar:insertImage` menu component.
21
- */ class CKFinderUI extends Plugin {
22
- /**
23
- * @inheritDoc
24
- */ static get pluginName() {
25
- return 'CKFinderUI';
26
- }
27
- /**
28
- * @inheritDoc
29
- */ static get isOfficialPlugin() {
30
- return true;
31
- }
32
- /**
33
- * @inheritDoc
34
- */ init() {
35
- const editor = this.editor;
36
- editor.ui.componentFactory.add('ckfinder', ()=>this._createFileToolbarButton());
37
- editor.ui.componentFactory.add('menuBar:ckfinder', ()=>this._createFileMenuBarButton());
38
- if (editor.plugins.has('ImageInsertUI')) {
39
- editor.plugins.get('ImageInsertUI').registerIntegration({
40
- name: 'assetManager',
41
- observable: ()=>editor.commands.get('ckfinder'),
42
- buttonViewCreator: ()=>this._createImageToolbarButton(),
43
- formViewCreator: ()=>this._createImageDropdownButton(),
44
- menuBarButtonViewCreator: (isOnly)=>this._createImageMenuBarButton(isOnly ? 'insertOnly' : 'insertNested')
45
- });
46
- }
47
- }
48
- /**
49
- * Creates the base for various kinds of the button component provided by this feature.
50
- */ _createButton(ButtonClass) {
51
- const editor = this.editor;
52
- const locale = editor.locale;
53
- const view = new ButtonClass(locale);
54
- const command = editor.commands.get('ckfinder');
55
- view.bind('isEnabled').to(command);
56
- view.on('execute', ()=>{
57
- editor.execute('ckfinder');
58
- editor.editing.view.focus();
59
- });
60
- return view;
61
- }
62
- /**
63
- * Creates a simple toolbar button for files management, with an icon and a tooltip.
64
- */ _createFileToolbarButton() {
65
- const t = this.editor.locale.t;
66
- const button = this._createButton(ButtonView);
67
- button.icon = IconBrowseFiles;
68
- button.label = t('Insert image or file');
69
- button.tooltip = true;
70
- return button;
71
- }
72
- /**
73
- * Creates a simple toolbar button for images management, with an icon and a tooltip.
74
- */ _createImageToolbarButton() {
75
- const t = this.editor.locale.t;
76
- const imageInsertUI = this.editor.plugins.get('ImageInsertUI');
77
- const button = this._createButton(ButtonView);
78
- button.icon = IconImageAssetManager;
79
- button.bind('label').to(imageInsertUI, 'isImageSelected', (isImageSelected)=>isImageSelected ? t('Replace image with file manager') : t('Insert image with file manager'));
80
- button.tooltip = true;
81
- return button;
82
- }
83
- /**
84
- * Creates a button for images management for the dropdown view, with an icon, text and no tooltip.
85
- */ _createImageDropdownButton() {
86
- const t = this.editor.locale.t;
87
- const imageInsertUI = this.editor.plugins.get('ImageInsertUI');
88
- const button = this._createButton(ButtonView);
89
- button.icon = IconImageAssetManager;
90
- button.withText = true;
91
- button.bind('label').to(imageInsertUI, 'isImageSelected', (isImageSelected)=>isImageSelected ? t('Replace with file manager') : t('Insert with file manager'));
92
- button.on('execute', ()=>{
93
- imageInsertUI.dropdownView.isOpen = false;
94
- });
95
- return button;
96
- }
97
- /**
98
- * Creates a button for files management for the menu bar.
99
- */ _createFileMenuBarButton() {
100
- const t = this.editor.locale.t;
101
- const button = this._createButton(MenuBarMenuListItemButtonView);
102
- button.icon = IconBrowseFiles;
103
- button.withText = true;
104
- button.label = t('File');
105
- return button;
106
- }
107
- /**
108
- * Creates a button for images management for the menu bar.
109
- */ _createImageMenuBarButton(type) {
110
- // Use t() stored in a variable with a different name to reuse existing translations from another package.
111
- const translateVariableKey = this.editor.locale.t;
112
- const t = this.editor.locale.t;
113
- const button = this._createButton(MenuBarMenuListItemButtonView);
114
- button.icon = IconImageAssetManager;
115
- button.withText = true;
116
- switch(type){
117
- case 'insertOnly':
118
- button.label = translateVariableKey('Image');
119
- break;
120
- case 'insertNested':
121
- button.label = t('With file manager');
122
- break;
123
- }
124
- return button;
125
- }
126
- }
13
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
14
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
15
+ */
16
+ /**
17
+ * @module ckfinder/ckfinderui
18
+ */
19
+ /**
20
+ * Introduces UI components for `CKFinder` plugin.
21
+ *
22
+ * The plugin introduces two UI components to the {@link module:ui/componentfactory~ComponentFactory UI component factory}:
23
+ *
24
+ * * the `'ckfinder'` toolbar button,
25
+ * * the `'menuBar:ckfinder'` menu bar component, which is by default added to the `'Insert'` menu.
26
+ *
27
+ * It also integrates with the `insertImage` toolbar component and `menuBar:insertImage` menu component.
28
+ */
29
+ var CKFinderUI = class extends Plugin {
30
+ /**
31
+ * @inheritDoc
32
+ */
33
+ static get pluginName() {
34
+ return "CKFinderUI";
35
+ }
36
+ /**
37
+ * @inheritDoc
38
+ */
39
+ static get isOfficialPlugin() {
40
+ return true;
41
+ }
42
+ /**
43
+ * @inheritDoc
44
+ */
45
+ init() {
46
+ const editor = this.editor;
47
+ editor.ui.componentFactory.add("ckfinder", () => this._createFileToolbarButton());
48
+ editor.ui.componentFactory.add("menuBar:ckfinder", () => this._createFileMenuBarButton());
49
+ /* v8 ignore else -- @preserve */
50
+ if (editor.plugins.has("ImageInsertUI")) editor.plugins.get("ImageInsertUI").registerIntegration({
51
+ name: "assetManager",
52
+ observable: () => editor.commands.get("ckfinder"),
53
+ buttonViewCreator: () => this._createImageToolbarButton(),
54
+ formViewCreator: () => this._createImageDropdownButton(),
55
+ menuBarButtonViewCreator: (isOnly) => this._createImageMenuBarButton(isOnly ? "insertOnly" : "insertNested")
56
+ });
57
+ }
58
+ /**
59
+ * Creates the base for various kinds of the button component provided by this feature.
60
+ */
61
+ _createButton(ButtonClass) {
62
+ const editor = this.editor;
63
+ const locale = editor.locale;
64
+ const view = new ButtonClass(locale);
65
+ const command = editor.commands.get("ckfinder");
66
+ view.bind("isEnabled").to(command);
67
+ view.on("execute", () => {
68
+ editor.execute("ckfinder");
69
+ editor.editing.view.focus();
70
+ });
71
+ return view;
72
+ }
73
+ /**
74
+ * Creates a simple toolbar button for files management, with an icon and a tooltip.
75
+ */
76
+ _createFileToolbarButton() {
77
+ const t = this.editor.locale.t;
78
+ const button = this._createButton(ButtonView);
79
+ button.icon = IconBrowseFiles;
80
+ button.label = t("Insert image or file");
81
+ button.tooltip = true;
82
+ return button;
83
+ }
84
+ /**
85
+ * Creates a simple toolbar button for images management, with an icon and a tooltip.
86
+ */
87
+ _createImageToolbarButton() {
88
+ const t = this.editor.locale.t;
89
+ const imageInsertUI = this.editor.plugins.get("ImageInsertUI");
90
+ const button = this._createButton(ButtonView);
91
+ button.icon = IconImageAssetManager;
92
+ button.bind("label").to(imageInsertUI, "isImageSelected", (isImageSelected) => isImageSelected ? t("Replace image with file manager") : t("Insert image with file manager"));
93
+ button.tooltip = true;
94
+ return button;
95
+ }
96
+ /**
97
+ * Creates a button for images management for the dropdown view, with an icon, text and no tooltip.
98
+ */
99
+ _createImageDropdownButton() {
100
+ const t = this.editor.locale.t;
101
+ const imageInsertUI = this.editor.plugins.get("ImageInsertUI");
102
+ const button = this._createButton(ButtonView);
103
+ button.icon = IconImageAssetManager;
104
+ button.withText = true;
105
+ button.bind("label").to(imageInsertUI, "isImageSelected", (isImageSelected) => isImageSelected ? t("Replace with file manager") : t("Insert with file manager"));
106
+ button.on("execute", () => {
107
+ imageInsertUI.dropdownView.isOpen = false;
108
+ });
109
+ return button;
110
+ }
111
+ /**
112
+ * Creates a button for files management for the menu bar.
113
+ */
114
+ _createFileMenuBarButton() {
115
+ const t = this.editor.locale.t;
116
+ const button = this._createButton(MenuBarMenuListItemButtonView);
117
+ button.icon = IconBrowseFiles;
118
+ button.withText = true;
119
+ button.label = t("File");
120
+ return button;
121
+ }
122
+ /**
123
+ * Creates a button for images management for the menu bar.
124
+ */
125
+ _createImageMenuBarButton(type) {
126
+ const translateVariableKey = this.editor.locale.t;
127
+ const t = this.editor.locale.t;
128
+ const button = this._createButton(MenuBarMenuListItemButtonView);
129
+ button.icon = IconImageAssetManager;
130
+ button.withText = true;
131
+ switch (type) {
132
+ case "insertOnly":
133
+ button.label = translateVariableKey("Image");
134
+ break;
135
+ case "insertNested":
136
+ button.label = t("With file manager");
137
+ break;
138
+ }
139
+ return button;
140
+ }
141
+ };
127
142
 
128
143
  /**
129
- * The CKFinder command. It is used by the {@link module:ckfinder/ckfinderediting~CKFinderEditing CKFinder editing feature}
130
- * to open the CKFinder file manager to insert an image or a link to a file into the editor content.
131
- *
132
- * ```ts
133
- * editor.execute( 'ckfinder' );
134
- * ```
135
- *
136
- * **Note:** This command uses other features to perform tasks:
137
- * - To insert images the {@link module:image/image/insertimagecommand~InsertImageCommand 'insertImage'} command
138
- * from the {@link module:image/image~Image Image feature}.
139
- * - To insert links to files the {@link module:link/linkcommand~LinkCommand 'link'} command
140
- * from the {@link module:link/link~Link Link feature}.
141
- */ class CKFinderCommand extends Command {
142
- /**
143
- * @inheritDoc
144
- */ constructor(editor){
145
- super(editor);
146
- // The CKFinder command does not affect data by itself.
147
- this.affectsData = false;
148
- // Remove default document listener to lower its priority.
149
- this.stopListening(this.editor.model.document, 'change');
150
- // Lower this command listener priority to be sure that refresh() will be called after link & image refresh.
151
- this.listenTo(this.editor.model.document, 'change', ()=>this.refresh(), {
152
- priority: 'low'
153
- });
154
- }
155
- /**
156
- * @inheritDoc
157
- */ refresh() {
158
- const imageCommand = this.editor.commands.get('insertImage');
159
- const linkCommand = this.editor.commands.get('link');
160
- // The CKFinder command is enabled when one of image or link command is enabled.
161
- this.isEnabled = imageCommand.isEnabled || linkCommand.isEnabled;
162
- }
163
- /**
164
- * @inheritDoc
165
- */ execute() {
166
- const editor = this.editor;
167
- const openerMethod = this.editor.config.get('ckfinder.openerMethod') || 'modal';
168
- if (openerMethod != 'popup' && openerMethod != 'modal') {
169
- /**
170
- * The `ckfinder.openerMethod` must be one of: "popup" or "modal".
171
- *
172
- * @error ckfinder-unknown-openermethod
173
- */ throw new CKEditorError('ckfinder-unknown-openermethod', editor);
174
- }
175
- const options = this.editor.config.get('ckfinder.options') || {};
176
- options.chooseFiles = true;
177
- // Cache the user-defined onInit method
178
- const originalOnInit = options.onInit;
179
- // Pass the lang code to the CKFinder if not defined by user.
180
- if (!options.language) {
181
- options.language = editor.locale.uiLanguage;
182
- }
183
- // The onInit method allows to extend CKFinder's behavior. It is used to attach event listeners to file choosing related events.
184
- options.onInit = (finder)=>{
185
- // Call original options.onInit if it was defined by user.
186
- if (originalOnInit) {
187
- originalOnInit(finder);
188
- }
189
- finder.on('files:choose', (evt)=>{
190
- const files = evt.data.files.toArray();
191
- // Insert links
192
- const links = files.filter((file)=>!file.isImage());
193
- const images = files.filter((file)=>file.isImage());
194
- for (const linkFile of links){
195
- editor.execute('link', linkFile.getUrl());
196
- }
197
- const imagesUrls = [];
198
- for (const image of images){
199
- const url = image.getUrl();
200
- imagesUrls.push(url ? url : finder.request('file:getProxyUrl', {
201
- file: image
202
- }));
203
- }
204
- if (imagesUrls.length) {
205
- insertImages(editor, imagesUrls);
206
- }
207
- });
208
- finder.on('file:choose:resizedImage', (evt)=>{
209
- const resizedUrl = evt.data.resizedUrl;
210
- if (!resizedUrl) {
211
- const notification = editor.plugins.get('Notification');
212
- const t = editor.locale.t;
213
- notification.showWarning(t('Could not obtain resized image URL.'), {
214
- title: t('Selecting resized image failed'),
215
- namespace: 'ckfinder'
216
- });
217
- return;
218
- }
219
- insertImages(editor, [
220
- resizedUrl
221
- ]);
222
- });
223
- };
224
- window.CKFinder[openerMethod](options);
225
- }
226
- }
144
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
145
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
146
+ */
147
+ /**
148
+ * @module ckfinder/ckfindercommand
149
+ */
150
+ /**
151
+ * The CKFinder command. It is used by the {@link module:ckfinder/ckfinderediting~CKFinderEditing CKFinder editing feature}
152
+ * to open the CKFinder file manager to insert an image or a link to a file into the editor content.
153
+ *
154
+ * ```ts
155
+ * editor.execute( 'ckfinder' );
156
+ * ```
157
+ *
158
+ * **Note:** This command uses other features to perform tasks:
159
+ * - To insert images the {@link module:image/image/insertimagecommand~InsertImageCommand 'insertImage'} command
160
+ * from the {@link module:image/image~Image Image feature}.
161
+ * - To insert links to files the {@link module:link/linkcommand~LinkCommand 'link'} command
162
+ * from the {@link module:link/link~Link Link feature}.
163
+ */
164
+ var CKFinderCommand = class extends Command {
165
+ /**
166
+ * @inheritDoc
167
+ */
168
+ constructor(editor) {
169
+ super(editor);
170
+ this.affectsData = false;
171
+ this.stopListening(this.editor.model.document, "change");
172
+ this.listenTo(this.editor.model.document, "change", () => this.refresh(), { priority: "low" });
173
+ }
174
+ /**
175
+ * @inheritDoc
176
+ */
177
+ refresh() {
178
+ const imageCommand = this.editor.commands.get("insertImage");
179
+ const linkCommand = this.editor.commands.get("link");
180
+ this.isEnabled = imageCommand.isEnabled || linkCommand.isEnabled;
181
+ }
182
+ /**
183
+ * @inheritDoc
184
+ */
185
+ execute() {
186
+ const editor = this.editor;
187
+ const openerMethod = this.editor.config.get("ckfinder.openerMethod") || "modal";
188
+ if (openerMethod != "popup" && openerMethod != "modal")
189
+ /**
190
+ * The `ckfinder.openerMethod` must be one of: "popup" or "modal".
191
+ *
192
+ * @error ckfinder-unknown-openermethod
193
+ */
194
+ throw new CKEditorError("ckfinder-unknown-openermethod", editor);
195
+ const options = this.editor.config.get("ckfinder.options") || {};
196
+ options.chooseFiles = true;
197
+ const originalOnInit = options.onInit;
198
+ if (!options.language) options.language = editor.locale.uiLanguage;
199
+ options.onInit = (finder) => {
200
+ if (originalOnInit) originalOnInit(finder);
201
+ finder.on("files:choose", (evt) => {
202
+ const files = evt.data.files.toArray();
203
+ const links = files.filter((file) => !file.isImage());
204
+ const images = files.filter((file) => file.isImage());
205
+ for (const linkFile of links) editor.execute("link", linkFile.getUrl());
206
+ const imagesUrls = [];
207
+ for (const image of images) {
208
+ const url = image.getUrl();
209
+ imagesUrls.push(url ? url : finder.request("file:getProxyUrl", { file: image }));
210
+ }
211
+ if (imagesUrls.length) insertImages(editor, imagesUrls);
212
+ });
213
+ finder.on("file:choose:resizedImage", (evt) => {
214
+ const resizedUrl = evt.data.resizedUrl;
215
+ if (!resizedUrl) {
216
+ const notification = editor.plugins.get("Notification");
217
+ const t = editor.locale.t;
218
+ notification.showWarning(t("Could not obtain resized image URL."), {
219
+ title: t("Selecting resized image failed"),
220
+ namespace: "ckfinder"
221
+ });
222
+ return;
223
+ }
224
+ insertImages(editor, [resizedUrl]);
225
+ });
226
+ };
227
+ window.CKFinder[openerMethod](options);
228
+ }
229
+ };
227
230
  function insertImages(editor, urls) {
228
- const imageCommand = editor.commands.get('insertImage');
229
- // Check if inserting an image is actually possible - it might be possible to only insert a link.
230
- if (!imageCommand.isEnabled) {
231
- const notification = editor.plugins.get('Notification');
232
- const t = editor.locale.t;
233
- notification.showWarning(t('Could not insert image at the current position.'), {
234
- title: t('Inserting image failed'),
235
- namespace: 'ckfinder'
236
- });
237
- return;
238
- }
239
- editor.execute('insertImage', {
240
- source: urls
241
- });
231
+ if (!editor.commands.get("insertImage").isEnabled) {
232
+ const notification = editor.plugins.get("Notification");
233
+ const t = editor.locale.t;
234
+ notification.showWarning(t("Could not insert image at the current position."), {
235
+ title: t("Inserting image failed"),
236
+ namespace: "ckfinder"
237
+ });
238
+ return;
239
+ }
240
+ editor.execute("insertImage", { source: urls });
242
241
  }
243
242
 
244
243
  /**
245
- * The CKFinder editing feature. It introduces the {@link module:ckfinder/ckfindercommand~CKFinderCommand CKFinder command}.
246
- */ class CKFinderEditing extends Plugin {
247
- /**
248
- * @inheritDoc
249
- */ static get pluginName() {
250
- return 'CKFinderEditing';
251
- }
252
- /**
253
- * @inheritDoc
254
- */ static get isOfficialPlugin() {
255
- return true;
256
- }
257
- /**
258
- * @inheritDoc
259
- */ static get requires() {
260
- return [
261
- Notification,
262
- LinkEditing
263
- ];
264
- }
265
- /**
266
- * @inheritDoc
267
- */ init() {
268
- const editor = this.editor;
269
- if (!editor.plugins.has('ImageBlockEditing') && !editor.plugins.has('ImageInlineEditing')) {
270
- /**
271
- * CKFinder requires at least one plugin providing support for images loaded in the editor. Please
272
- * make sure either:
273
- *
274
- * * {@link module:image/image~Image} (which loads both types of images),
275
- * * or {@link module:image/imageblock~ImageBlock},
276
- * * or {@link module:image/imageinline~ImageInline}.
277
- *
278
- * is loaded in your editor configuration.
279
- *
280
- * @error ckfinder-missing-image-plugin
281
- */ throw new CKEditorError('ckfinder-missing-image-plugin', editor);
282
- }
283
- editor.commands.add('ckfinder', new CKFinderCommand(editor));
284
- }
285
- }
244
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
245
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
246
+ */
247
+ /**
248
+ * @module ckfinder/ckfinderediting
249
+ */
250
+ /**
251
+ * The CKFinder editing feature. It introduces the {@link module:ckfinder/ckfindercommand~CKFinderCommand CKFinder command}.
252
+ */
253
+ var CKFinderEditing = class extends Plugin {
254
+ /**
255
+ * @inheritDoc
256
+ */
257
+ static get pluginName() {
258
+ return "CKFinderEditing";
259
+ }
260
+ /**
261
+ * @inheritDoc
262
+ */
263
+ static get isOfficialPlugin() {
264
+ return true;
265
+ }
266
+ /**
267
+ * @inheritDoc
268
+ */
269
+ static get requires() {
270
+ return [Notification, LinkEditing];
271
+ }
272
+ /**
273
+ * @inheritDoc
274
+ */
275
+ init() {
276
+ const editor = this.editor;
277
+ if (!editor.plugins.has("ImageBlockEditing") && !editor.plugins.has("ImageInlineEditing"))
278
+ /**
279
+ * CKFinder requires at least one plugin providing support for images loaded in the editor. Please
280
+ * make sure either:
281
+ *
282
+ * * {@link module:image/image~Image} (which loads both types of images),
283
+ * * or {@link module:image/imageblock~ImageBlock},
284
+ * * or {@link module:image/imageinline~ImageInline}.
285
+ *
286
+ * is loaded in your editor configuration.
287
+ *
288
+ * @error ckfinder-missing-image-plugin
289
+ */
290
+ throw new CKEditorError("ckfinder-missing-image-plugin", editor);
291
+ editor.commands.add("ckfinder", new CKFinderCommand(editor));
292
+ }
293
+ };
286
294
 
287
295
  /**
288
- * The CKFinder feature, a bridge between the CKEditor 5 WYSIWYG editor and the
289
- * [CKFinder](https://ckeditor.com/ckfinder) file manager and uploader.
290
- *
291
- * This is a "glue" plugin which enables:
292
- *
293
- * * {@link module:ckfinder/ckfinderediting~CKFinderEditing},
294
- * * {@link module:ckfinder/ckfinderui~CKFinderUI},
295
- * * {@link module:adapter-ckfinder/uploadadapter~CKFinderUploadAdapter}.
296
- *
297
- * See the {@glink features/file-management/ckfinder "CKFinder integration" guide} to learn how to configure
298
- * and use this feature.
299
- *
300
- * Check out the {@glink features/images/image-upload/image-upload comprehensive "Image upload" guide} to learn about
301
- * other ways to upload images into CKEditor 5.
302
- */ class CKFinder extends Plugin {
303
- /**
304
- * @inheritDoc
305
- */ static get pluginName() {
306
- return 'CKFinder';
307
- }
308
- /**
309
- * @inheritDoc
310
- */ static get isOfficialPlugin() {
311
- return true;
312
- }
313
- /**
314
- * @inheritDoc
315
- */ static get requires() {
316
- return [
317
- Link,
318
- CKFinderUploadAdapter,
319
- CKFinderEditing,
320
- CKFinderUI
321
- ];
322
- }
323
- }
296
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
297
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
298
+ */
299
+ /**
300
+ * @module ckfinder/ckfinder
301
+ */
302
+ /**
303
+ * The CKFinder feature, a bridge between the CKEditor 5 WYSIWYG editor and the
304
+ * [CKFinder](https://ckeditor.com/ckfinder) file manager and uploader.
305
+ *
306
+ * This is a "glue" plugin which enables:
307
+ *
308
+ * * {@link module:ckfinder/ckfinderediting~CKFinderEditing},
309
+ * * {@link module:ckfinder/ckfinderui~CKFinderUI},
310
+ * * {@link module:adapter-ckfinder/uploadadapter~CKFinderUploadAdapter}.
311
+ *
312
+ * See the {@glink features/file-management/ckfinder "CKFinder integration" guide} to learn how to configure
313
+ * and use this feature.
314
+ *
315
+ * Check out the {@glink features/images/image-upload/image-upload comprehensive "Image upload" guide} to learn about
316
+ * other ways to upload images into CKEditor 5.
317
+ */
318
+ var CKFinder = class extends Plugin {
319
+ /**
320
+ * @inheritDoc
321
+ */
322
+ static get pluginName() {
323
+ return "CKFinder";
324
+ }
325
+ /**
326
+ * @inheritDoc
327
+ */
328
+ static get isOfficialPlugin() {
329
+ return true;
330
+ }
331
+ /**
332
+ * @inheritDoc
333
+ */
334
+ static get requires() {
335
+ return [
336
+ Link,
337
+ CKFinderUploadAdapter,
338
+ CKFinderEditing,
339
+ CKFinderUI
340
+ ];
341
+ }
342
+ };
343
+
344
+ /**
345
+ * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
346
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
347
+ */
324
348
 
325
349
  export { CKFinder, CKFinderCommand, CKFinderEditing, CKFinderUI };
326
- //# sourceMappingURL=index.js.map
350
+ //# sourceMappingURL=index.js.map