1 |
|
2 |
|
3 |
|
4 |
|
5 | import { LabeledFieldView, createLabeledInputText } from 'ckeditor5/src/ui';
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 | export function prepareIntegrations(editor) {
|
15 | const panelItems = editor.config.get('image.insert.integrations');
|
16 | const imageInsertUIPlugin = editor.plugins.get('ImageInsertUI');
|
17 | const PREDEFINED_INTEGRATIONS = {
|
18 | 'insertImageViaUrl': createLabeledInputView(editor.locale)
|
19 | };
|
20 | if (!panelItems) {
|
21 | return PREDEFINED_INTEGRATIONS;
|
22 | }
|
23 |
|
24 | if (panelItems.find(item => item === 'openCKFinder') && editor.ui.componentFactory.has('ckfinder')) {
|
25 | const ckFinderButton = editor.ui.componentFactory.create('ckfinder');
|
26 | ckFinderButton.set({
|
27 | withText: true,
|
28 | class: 'ck-image-insert__ck-finder-button'
|
29 | });
|
30 |
|
31 | ckFinderButton.delegate('execute').to(imageInsertUIPlugin, 'cancel');
|
32 | PREDEFINED_INTEGRATIONS.openCKFinder = ckFinderButton;
|
33 | }
|
34 |
|
35 | return panelItems.reduce((object, key) => {
|
36 | if (PREDEFINED_INTEGRATIONS[key]) {
|
37 | object[key] = PREDEFINED_INTEGRATIONS[key];
|
38 | }
|
39 | else if (editor.ui.componentFactory.has(key)) {
|
40 | object[key] = editor.ui.componentFactory.create(key);
|
41 | }
|
42 | return object;
|
43 | }, {});
|
44 | }
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 | export function createLabeledInputView(locale) {
|
51 | const t = locale.t;
|
52 | const labeledInputView = new LabeledFieldView(locale, createLabeledInputText);
|
53 | labeledInputView.set({
|
54 | label: t('Insert image via URL')
|
55 | });
|
56 | labeledInputView.fieldView.placeholder = 'https://example.com/image.png';
|
57 | return labeledInputView;
|
58 | }
|