@ckeditor/ckeditor5-page-break 39.0.1 → 40.0.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/LICENSE.md +1 -1
- package/README.md +3 -3
- package/build/page-break.js.map +1 -0
- package/lang/translations/ar.po +1 -0
- package/lang/translations/az.po +1 -0
- package/lang/translations/bg.po +1 -0
- package/lang/translations/bn.po +1 -0
- package/lang/translations/ca.po +1 -0
- package/lang/translations/cs.po +1 -0
- package/lang/translations/da.po +1 -0
- package/lang/translations/de-ch.po +1 -0
- package/lang/translations/de.po +1 -0
- package/lang/translations/el.po +1 -0
- package/lang/translations/en-au.po +1 -0
- package/lang/translations/en.po +1 -0
- package/lang/translations/es.po +1 -0
- package/lang/translations/et.po +1 -0
- package/lang/translations/fa.po +1 -0
- package/lang/translations/fi.po +1 -0
- package/lang/translations/fr.po +1 -0
- package/lang/translations/gl.po +1 -0
- package/lang/translations/he.po +1 -0
- package/lang/translations/hi.po +1 -0
- package/lang/translations/hr.po +1 -0
- package/lang/translations/hu.po +1 -0
- package/lang/translations/id.po +1 -0
- package/lang/translations/it.po +1 -0
- package/lang/translations/ja.po +1 -0
- package/lang/translations/ko.po +1 -0
- package/lang/translations/ku.po +1 -0
- package/lang/translations/lt.po +1 -0
- package/lang/translations/lv.po +1 -0
- package/lang/translations/ms.po +1 -0
- package/lang/translations/nl.po +1 -0
- package/lang/translations/no.po +1 -0
- package/lang/translations/pl.po +1 -0
- package/lang/translations/pt-br.po +1 -0
- package/lang/translations/pt.po +1 -0
- package/lang/translations/ro.po +1 -0
- package/lang/translations/ru.po +1 -0
- package/lang/translations/sk.po +1 -0
- package/lang/translations/sq.po +1 -0
- package/lang/translations/sr-latn.po +1 -0
- package/lang/translations/sr.po +1 -0
- package/lang/translations/sv.po +1 -0
- package/lang/translations/th.po +1 -0
- package/lang/translations/tk.po +1 -0
- package/lang/translations/tr.po +1 -0
- package/lang/translations/ug.po +1 -0
- package/lang/translations/uk.po +1 -0
- package/lang/translations/ur.po +1 -0
- package/lang/translations/uz.po +1 -0
- package/lang/translations/vi.po +1 -0
- package/lang/translations/zh-cn.po +1 -0
- package/lang/translations/zh.po +1 -0
- package/package.json +2 -6
- package/src/augmentation.d.ts +15 -15
- package/src/augmentation.js +5 -5
- package/src/index.d.ts +12 -12
- package/src/index.js +11 -11
- package/src/pagebreak.d.ts +28 -28
- package/src/pagebreak.js +32 -32
- package/src/pagebreakcommand.d.ts +29 -29
- package/src/pagebreakcommand.js +61 -61
- package/src/pagebreakediting.d.ts +22 -22
- package/src/pagebreakediting.js +102 -102
- package/src/pagebreakui.d.ts +21 -21
- package/src/pagebreakui.js +45 -45
package/src/pagebreakediting.js
CHANGED
|
@@ -1,102 +1,102 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
-
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* @module page-break/pagebreakediting
|
|
7
|
-
*/
|
|
8
|
-
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
-
import { toWidget } from 'ckeditor5/src/widget';
|
|
10
|
-
import PageBreakCommand from './pagebreakcommand';
|
|
11
|
-
import '../theme/pagebreak.css';
|
|
12
|
-
/**
|
|
13
|
-
* The page break editing feature.
|
|
14
|
-
*/
|
|
15
|
-
export default class PageBreakEditing extends Plugin {
|
|
16
|
-
/**
|
|
17
|
-
* @inheritDoc
|
|
18
|
-
*/
|
|
19
|
-
static get pluginName() {
|
|
20
|
-
return 'PageBreakEditing';
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* @inheritDoc
|
|
24
|
-
*/
|
|
25
|
-
init() {
|
|
26
|
-
const editor = this.editor;
|
|
27
|
-
const schema = editor.model.schema;
|
|
28
|
-
const t = editor.t;
|
|
29
|
-
const conversion = editor.conversion;
|
|
30
|
-
schema.register('pageBreak', {
|
|
31
|
-
inheritAllFrom: '$blockObject'
|
|
32
|
-
});
|
|
33
|
-
conversion.for('dataDowncast').elementToStructure({
|
|
34
|
-
model: 'pageBreak',
|
|
35
|
-
view: (modelElement, { writer }) => {
|
|
36
|
-
const divElement = writer.createContainerElement('div', {
|
|
37
|
-
class: 'page-break',
|
|
38
|
-
// If user has no `.ck-content` styles, it should always break a page during print.
|
|
39
|
-
style: 'page-break-after: always'
|
|
40
|
-
},
|
|
41
|
-
// For a rationale of using span inside a div see:
|
|
42
|
-
// https://github.com/ckeditor/ckeditor5-page-break/pull/1#discussion_r328934062.
|
|
43
|
-
writer.createContainerElement('span', {
|
|
44
|
-
style: 'display: none'
|
|
45
|
-
}));
|
|
46
|
-
return divElement;
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
conversion.for('editingDowncast').elementToStructure({
|
|
50
|
-
model: 'pageBreak',
|
|
51
|
-
view: (modelElement, { writer }) => {
|
|
52
|
-
const label = t('Page break');
|
|
53
|
-
const viewWrapper = writer.createContainerElement('div');
|
|
54
|
-
const viewLabelElement = writer.createRawElement('span', { class: 'page-break__label' }, function (domElement) {
|
|
55
|
-
domElement.innerText = t('Page break');
|
|
56
|
-
});
|
|
57
|
-
writer.addClass('page-break', viewWrapper);
|
|
58
|
-
writer.insert(writer.createPositionAt(viewWrapper, 0), viewLabelElement);
|
|
59
|
-
return toPageBreakWidget(viewWrapper, writer, label);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
conversion.for('upcast')
|
|
63
|
-
.elementToElement({
|
|
64
|
-
view: element => {
|
|
65
|
-
// For upcast conversion it's enough if we check for element style and verify if it's empty
|
|
66
|
-
// or contains only hidden span element.
|
|
67
|
-
const hasPageBreakBefore = element.getStyle('page-break-before') == 'always';
|
|
68
|
-
const hasPageBreakAfter = element.getStyle('page-break-after') == 'always';
|
|
69
|
-
if (!hasPageBreakBefore && !hasPageBreakAfter) {
|
|
70
|
-
return null;
|
|
71
|
-
}
|
|
72
|
-
// The "page break" div accepts only single child or no child at all.
|
|
73
|
-
if (element.childCount == 1) {
|
|
74
|
-
const viewSpan = element.getChild(0);
|
|
75
|
-
// The child must be the "span" element that is not displayed.
|
|
76
|
-
if (!viewSpan.is('element', 'span') || viewSpan.getStyle('display') != 'none') {
|
|
77
|
-
return null;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
else if (element.childCount > 1) {
|
|
81
|
-
return null;
|
|
82
|
-
}
|
|
83
|
-
return { name: true };
|
|
84
|
-
},
|
|
85
|
-
model: 'pageBreak',
|
|
86
|
-
// This conversion must be checked before <br> conversion because some editors use
|
|
87
|
-
// <br style="page-break-before:always"> as a page break marker.
|
|
88
|
-
converterPriority: 'high'
|
|
89
|
-
});
|
|
90
|
-
editor.commands.add('pageBreak', new PageBreakCommand(editor));
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Converts a given {@link module:engine/view/element~Element} to a page break widget:
|
|
95
|
-
* * Adds a {@link module:engine/view/element~Element#_setCustomProperty custom property} allowing to
|
|
96
|
-
* recognize the page break widget element.
|
|
97
|
-
* * Calls the {@link module:widget/utils~toWidget} function with the proper element's label creator.
|
|
98
|
-
*/
|
|
99
|
-
function toPageBreakWidget(viewElement, writer, label) {
|
|
100
|
-
writer.setCustomProperty('pageBreak', true, viewElement);
|
|
101
|
-
return toWidget(viewElement, writer, { label });
|
|
102
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module page-break/pagebreakediting
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
+
import { toWidget } from 'ckeditor5/src/widget';
|
|
10
|
+
import PageBreakCommand from './pagebreakcommand';
|
|
11
|
+
import '../theme/pagebreak.css';
|
|
12
|
+
/**
|
|
13
|
+
* The page break editing feature.
|
|
14
|
+
*/
|
|
15
|
+
export default class PageBreakEditing extends Plugin {
|
|
16
|
+
/**
|
|
17
|
+
* @inheritDoc
|
|
18
|
+
*/
|
|
19
|
+
static get pluginName() {
|
|
20
|
+
return 'PageBreakEditing';
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @inheritDoc
|
|
24
|
+
*/
|
|
25
|
+
init() {
|
|
26
|
+
const editor = this.editor;
|
|
27
|
+
const schema = editor.model.schema;
|
|
28
|
+
const t = editor.t;
|
|
29
|
+
const conversion = editor.conversion;
|
|
30
|
+
schema.register('pageBreak', {
|
|
31
|
+
inheritAllFrom: '$blockObject'
|
|
32
|
+
});
|
|
33
|
+
conversion.for('dataDowncast').elementToStructure({
|
|
34
|
+
model: 'pageBreak',
|
|
35
|
+
view: (modelElement, { writer }) => {
|
|
36
|
+
const divElement = writer.createContainerElement('div', {
|
|
37
|
+
class: 'page-break',
|
|
38
|
+
// If user has no `.ck-content` styles, it should always break a page during print.
|
|
39
|
+
style: 'page-break-after: always'
|
|
40
|
+
},
|
|
41
|
+
// For a rationale of using span inside a div see:
|
|
42
|
+
// https://github.com/ckeditor/ckeditor5-page-break/pull/1#discussion_r328934062.
|
|
43
|
+
writer.createContainerElement('span', {
|
|
44
|
+
style: 'display: none'
|
|
45
|
+
}));
|
|
46
|
+
return divElement;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
conversion.for('editingDowncast').elementToStructure({
|
|
50
|
+
model: 'pageBreak',
|
|
51
|
+
view: (modelElement, { writer }) => {
|
|
52
|
+
const label = t('Page break');
|
|
53
|
+
const viewWrapper = writer.createContainerElement('div');
|
|
54
|
+
const viewLabelElement = writer.createRawElement('span', { class: 'page-break__label' }, function (domElement) {
|
|
55
|
+
domElement.innerText = t('Page break');
|
|
56
|
+
});
|
|
57
|
+
writer.addClass('page-break', viewWrapper);
|
|
58
|
+
writer.insert(writer.createPositionAt(viewWrapper, 0), viewLabelElement);
|
|
59
|
+
return toPageBreakWidget(viewWrapper, writer, label);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
conversion.for('upcast')
|
|
63
|
+
.elementToElement({
|
|
64
|
+
view: element => {
|
|
65
|
+
// For upcast conversion it's enough if we check for element style and verify if it's empty
|
|
66
|
+
// or contains only hidden span element.
|
|
67
|
+
const hasPageBreakBefore = element.getStyle('page-break-before') == 'always';
|
|
68
|
+
const hasPageBreakAfter = element.getStyle('page-break-after') == 'always';
|
|
69
|
+
if (!hasPageBreakBefore && !hasPageBreakAfter) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
// The "page break" div accepts only single child or no child at all.
|
|
73
|
+
if (element.childCount == 1) {
|
|
74
|
+
const viewSpan = element.getChild(0);
|
|
75
|
+
// The child must be the "span" element that is not displayed.
|
|
76
|
+
if (!viewSpan.is('element', 'span') || viewSpan.getStyle('display') != 'none') {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else if (element.childCount > 1) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
return { name: true };
|
|
84
|
+
},
|
|
85
|
+
model: 'pageBreak',
|
|
86
|
+
// This conversion must be checked before <br> conversion because some editors use
|
|
87
|
+
// <br style="page-break-before:always"> as a page break marker.
|
|
88
|
+
converterPriority: 'high'
|
|
89
|
+
});
|
|
90
|
+
editor.commands.add('pageBreak', new PageBreakCommand(editor));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Converts a given {@link module:engine/view/element~Element} to a page break widget:
|
|
95
|
+
* * Adds a {@link module:engine/view/element~Element#_setCustomProperty custom property} allowing to
|
|
96
|
+
* recognize the page break widget element.
|
|
97
|
+
* * Calls the {@link module:widget/utils~toWidget} function with the proper element's label creator.
|
|
98
|
+
*/
|
|
99
|
+
function toPageBreakWidget(viewElement, writer, label) {
|
|
100
|
+
writer.setCustomProperty('pageBreak', true, viewElement);
|
|
101
|
+
return toWidget(viewElement, writer, { label });
|
|
102
|
+
}
|
package/src/pagebreakui.d.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
-
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* @module page-break/pagebreakui
|
|
7
|
-
*/
|
|
8
|
-
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
-
/**
|
|
10
|
-
* The page break UI plugin.
|
|
11
|
-
*/
|
|
12
|
-
export default class PageBreakUI extends Plugin {
|
|
13
|
-
/**
|
|
14
|
-
* @inheritDoc
|
|
15
|
-
*/
|
|
16
|
-
static get pluginName(): "PageBreakUI";
|
|
17
|
-
/**
|
|
18
|
-
* @inheritDoc
|
|
19
|
-
*/
|
|
20
|
-
init(): void;
|
|
21
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module page-break/pagebreakui
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
+
/**
|
|
10
|
+
* The page break UI plugin.
|
|
11
|
+
*/
|
|
12
|
+
export default class PageBreakUI extends Plugin {
|
|
13
|
+
/**
|
|
14
|
+
* @inheritDoc
|
|
15
|
+
*/
|
|
16
|
+
static get pluginName(): "PageBreakUI";
|
|
17
|
+
/**
|
|
18
|
+
* @inheritDoc
|
|
19
|
+
*/
|
|
20
|
+
init(): void;
|
|
21
|
+
}
|
package/src/pagebreakui.js
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
-
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* @module page-break/pagebreakui
|
|
7
|
-
*/
|
|
8
|
-
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
-
import { ButtonView } from 'ckeditor5/src/ui';
|
|
10
|
-
import pageBreakIcon from '../theme/icons/pagebreak.svg';
|
|
11
|
-
/**
|
|
12
|
-
* The page break UI plugin.
|
|
13
|
-
*/
|
|
14
|
-
export default class PageBreakUI extends Plugin {
|
|
15
|
-
/**
|
|
16
|
-
* @inheritDoc
|
|
17
|
-
*/
|
|
18
|
-
static get pluginName() {
|
|
19
|
-
return 'PageBreakUI';
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* @inheritDoc
|
|
23
|
-
*/
|
|
24
|
-
init() {
|
|
25
|
-
const editor = this.editor;
|
|
26
|
-
const t = editor.t;
|
|
27
|
-
// Add pageBreak button to feature components.
|
|
28
|
-
editor.ui.componentFactory.add('pageBreak', locale => {
|
|
29
|
-
const command = editor.commands.get('pageBreak');
|
|
30
|
-
const view = new ButtonView(locale);
|
|
31
|
-
view.set({
|
|
32
|
-
label: t('Page break'),
|
|
33
|
-
icon: pageBreakIcon,
|
|
34
|
-
tooltip: true
|
|
35
|
-
});
|
|
36
|
-
view.bind('isEnabled').to(command, 'isEnabled');
|
|
37
|
-
// Execute command.
|
|
38
|
-
this.listenTo(view, 'execute', () => {
|
|
39
|
-
editor.execute('pageBreak');
|
|
40
|
-
editor.editing.view.focus();
|
|
41
|
-
});
|
|
42
|
-
return view;
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module page-break/pagebreakui
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
+
import { ButtonView } from 'ckeditor5/src/ui';
|
|
10
|
+
import pageBreakIcon from '../theme/icons/pagebreak.svg';
|
|
11
|
+
/**
|
|
12
|
+
* The page break UI plugin.
|
|
13
|
+
*/
|
|
14
|
+
export default class PageBreakUI extends Plugin {
|
|
15
|
+
/**
|
|
16
|
+
* @inheritDoc
|
|
17
|
+
*/
|
|
18
|
+
static get pluginName() {
|
|
19
|
+
return 'PageBreakUI';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @inheritDoc
|
|
23
|
+
*/
|
|
24
|
+
init() {
|
|
25
|
+
const editor = this.editor;
|
|
26
|
+
const t = editor.t;
|
|
27
|
+
// Add pageBreak button to feature components.
|
|
28
|
+
editor.ui.componentFactory.add('pageBreak', locale => {
|
|
29
|
+
const command = editor.commands.get('pageBreak');
|
|
30
|
+
const view = new ButtonView(locale);
|
|
31
|
+
view.set({
|
|
32
|
+
label: t('Page break'),
|
|
33
|
+
icon: pageBreakIcon,
|
|
34
|
+
tooltip: true
|
|
35
|
+
});
|
|
36
|
+
view.bind('isEnabled').to(command, 'isEnabled');
|
|
37
|
+
// Execute command.
|
|
38
|
+
this.listenTo(view, 'execute', () => {
|
|
39
|
+
editor.execute('pageBreak');
|
|
40
|
+
editor.editing.view.focus();
|
|
41
|
+
});
|
|
42
|
+
return view;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|