Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import ClassicEditorBase from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
import { builtinPlugins } from './builtin-plugins.js';
import { defaultConfig } from './default-config.js';
import eventBus from '../lib/event-bus.ts';
export default class ClassicEditor extends ClassicEditorBase {}
export { createClassicEditorFromTextarea };
ClassicEditor.builtinPlugins = builtinPlugins;
ClassicEditor.defaultConfig = {
...defaultConfig,
toolbar: {
items: [
'undo',
'redo',
'findAndReplace',
'|',
'bold',
'italic',
'underline',
'strikethrough',
'subscript',
'superscript',
'|',
'removeFormat',
'|',
'bulletedList',
'numberedList',
'|',
'outdent',
'indent',
'|',
'alignment:left',
'alignment:right',
'alignment:center',
'alignment:justify',
'-',
'heading',
'fontColor',
'fontBackgroundColor',
'|',
'link',
'insertTable',
'uploadImage',
'codeBlock',
'math',
'studip-wiki',
'specialCharacters',
'horizontalLine',
'|',
'insertBlockQuote',
'splitBlockQuote',
'removeBlockQuote',
'|',
'sourceEditing',
],
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
},
};
function createClassicEditorFromTextarea(textarea, options) {
return ClassicEditor.create(textarea, options)
.then((editor) => {
const updateOffsetTop = createUpdater(editor);
updateOffsetTop();
eventBus.on('toggle-compact-navigation', updateOffsetTop);
eventBus.on('switch-focus-mode', updateOffsetTop);
editor.on('destroy', () => {
eventBus.off('toggle-compact-navigation', updateOffsetTop);
eventBus.off('switch-focus-mode', updateOffsetTop);
});
return editor;
})
.then((editor) => {
const button = editor.ui.view.toolbar?.items.find((item) => item.class === 'ck-source-editing-button');
if (button) {
button.withText = false;
}
return editor;
});
}
function createUpdater(editor) {
// This needs to be delayed since some events will fire before
// changing the DOM
return () =>
setTimeout(() => {
editor.ui.viewportOffset = { top: getViewportOffsetTop() };
editor.ui.update();
}, 50);
}
function getViewportOffsetTop() {
const topBar = document.getElementById('top-bar');
const responsiveContentbar = document.getElementById('responsive-contentbar');
let top = topBar.clientHeight + topBar.clientTop;
if (responsiveContentbar) {
top += responsiveContentbar?.clientHeight + responsiveContentbar.clientTop;
}
return top;
}