@ckeditor/ckeditor5-page-break 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.
- package/dist/augmentation.d.ts +13 -13
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +10 -10
- package/dist/index.js +246 -236
- package/dist/index.js.map +1 -1
- package/dist/pagebreak.d.ts +27 -27
- package/dist/pagebreakcommand.d.ts +24 -24
- package/dist/pagebreakediting.d.ts +30 -30
- package/dist/pagebreakui.d.ts +24 -24
- package/package.json +7 -7
package/dist/augmentation.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import type { PageBreak, PageBreakEditing, PageBreakUI, PageBreakCommand } from
|
|
6
|
-
declare module
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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 { PageBreak, PageBreakEditing, PageBreakUI, PageBreakCommand } from "./index.js";
|
|
6
|
+
declare module "@ckeditor/ckeditor5-core" {
|
|
7
|
+
interface PluginsMap {
|
|
8
|
+
[PageBreak.pluginName]: PageBreak;
|
|
9
|
+
[PageBreakEditing.pluginName]: PageBreakEditing;
|
|
10
|
+
[PageBreakUI.pluginName]: PageBreakUI;
|
|
11
|
+
}
|
|
12
|
+
interface CommandsMap {
|
|
13
|
+
pageBreak: PageBreakCommand;
|
|
14
|
+
}
|
|
15
15
|
}
|
package/dist/index.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../theme/pagebreak.css","index.css"],"names":[],"mappings":";;;;AAKA,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA,IAAA,CAAA,KAAA,CAAA;ACJA,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI;AACb,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM;AACzB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM;AACrB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI;AACf,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ;AACpB;;ADMC,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA,IAAA,CAAA,KAAA,CAAA,KAAA,CAAA;ACHD,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACb,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM;AACnC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AACb,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ;AACpB;;ADOA,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA,IAAA,CAAA,YAAA,CAAA;ACJA,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACZ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS;AAC3B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AACb,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI;AAC3B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI;AACnB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;AAClB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM;AAC3B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG;AACpB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;AACpB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;AAClB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI;AACnB,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK;AAChB,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ;AACpB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ;AACnC;;ADUA,CAAA,KAAA,CAAA,KAAA,CAAA;ACPA,CAAC,CDQA,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA,IAAA,CAAA,KAAA,CAAA;ACPD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACd,CAAC,CAAC;;AAEF,CAAC,CDOC,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA,IAAA,CAAA,KAAA,CAAA,KAAA,CAAA;ACNF,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI;AACjB,CAAC,CAAC;;AAEF,CAAC,CDcA,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA;ACbD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC;AACF;;AAEA,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC","file":"index.css.map","sourcesContent":["/*\n * 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.ck-content .page-break {\n\tposition: relative;\n\tclear: both;\n\tpadding: 5px 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\t&::after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tborder-bottom: 2px dashed hsl(0, 0%, 77%);\n\t\twidth: 100%;\n\t}\n}\n\n.ck-content .page-break__label {\n\tposition: relative;\n\tz-index: 1;\n\tpadding: .3em .6em;\n\tdisplay: block;\n\ttext-transform: uppercase;\n\tborder: 1px solid hsl(0, 0%, 77%);\n\tborder-radius: 2px;\n\tfont-size: 0.75em;\n\tfont-weight: bold;\n\tcolor: hsl(0, 0%, 20%);\n\tbackground: hsl(0, 0%, 100%);\n\tbox-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15);\n\n\t/* Disable the possibility to select the label text by the user. */\n\t-webkit-user-select: none;\n\tuser-select: none;\n}\n\n/* Do not show the page break element inside the print preview window. */\n@media print {\n\t.ck-content .page-break {\n\t\tpadding: 0;\n\n\t\t&::after {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t/*\n\t * From time to time placing page-break directly after a block element with margin causes appending a new blank page in pagination mode.\n\t * Removing margin-bottom from the block element fixes that issue and the margin is not being moved to the next blank page.\n\t *\n\t * Keep this in sync with the pagination plugins.\n\t */\n\t.ck-content *:has(+ .page-break) {\n\t\tmargin-bottom: 0;\n\t}\n}\n",".ck-content .page-break {\n clear: both;\n justify-content: center;\n align-items: center;\n padding: 5px 0;\n display: flex;\n position: relative;\n}\n\n.ck-content .page-break:after {\n content: \"\";\n border-bottom: 2px dashed #c4c4c4;\n width: 100%;\n position: absolute;\n}\n\n.ck-content .page-break__label {\n z-index: 1;\n text-transform: uppercase;\n color: #333;\n -webkit-user-select: none;\n user-select: none;\n background: #fff;\n border: 1px solid #c4c4c4;\n border-radius: 2px;\n padding: .3em .6em;\n font-size: .75em;\n font-weight: bold;\n display: block;\n position: relative;\n box-shadow: 2px 2px 1px #00000026;\n}\n\n@media print {\n .ck-content .page-break {\n padding: 0;\n }\n\n .ck-content .page-break:after {\n display: none;\n }\n\n .ck-content :has( + .page-break) {\n margin-bottom: 0;\n }\n}\n\n/*# sourceMappingURL=index.css.map */"]}
|
|
1
|
+
{"version":3,"sources":["../theme/pagebreak.css","index.css"],"names":[],"mappings":";;;;AAKA,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA,IAAA,CAAA,KAAA,CAAA;ACJA,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI;AACb,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM;AACzB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM;AACrB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI;AACf,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ;AACpB;;ADMC,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA,IAAA,CAAA,KAAA,CAAA,KAAA,CAAA;ACHD,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACb,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM;AACnC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AACb,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ;AACpB;;ADOA,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA,IAAA,CAAA,YAAA,CAAA;ACJA,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACZ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS;AAC3B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AACb,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI;AAC3B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI;AACnB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;AAClB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM;AAC3B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG;AACpB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;AACpB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;AAClB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI;AACnB,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK;AAChB,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ;AACpB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ;AACnC;;ADUA,CAAA,KAAA,CAAA,KAAA,CAAA;ACPA,CAAC,CDQA,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA,IAAA,CAAA,KAAA,CAAA;ACPD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACd,CAAC,CAAC;;AAEF,CAAC,CDOC,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA,IAAA,CAAA,KAAA,CAAA,KAAA,CAAA;ACNF,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI;AACjB,CAAC,CAAC;;AAEF,CAAC,CDcA,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA;ACbD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC;AACF;;AAEA,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC","file":"index.css.map","sourcesContent":["/*\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.ck-content .page-break {\n\tposition: relative;\n\tclear: both;\n\tpadding: 5px 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\t&::after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tborder-bottom: 2px dashed hsl(0, 0%, 77%);\n\t\twidth: 100%;\n\t}\n}\n\n.ck-content .page-break__label {\n\tposition: relative;\n\tz-index: 1;\n\tpadding: .3em .6em;\n\tdisplay: block;\n\ttext-transform: uppercase;\n\tborder: 1px solid hsl(0, 0%, 77%);\n\tborder-radius: 2px;\n\tfont-size: 0.75em;\n\tfont-weight: bold;\n\tcolor: hsl(0, 0%, 20%);\n\tbackground: hsl(0, 0%, 100%);\n\tbox-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15);\n\n\t/* Disable the possibility to select the label text by the user. */\n\t-webkit-user-select: none;\n\tuser-select: none;\n}\n\n/* Do not show the page break element inside the print preview window. */\n@media print {\n\t.ck-content .page-break {\n\t\tpadding: 0;\n\n\t\t&::after {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t/*\n\t * From time to time placing page-break directly after a block element with margin causes appending a new blank page in pagination mode.\n\t * Removing margin-bottom from the block element fixes that issue and the margin is not being moved to the next blank page.\n\t *\n\t * Keep this in sync with the pagination plugins.\n\t */\n\t.ck-content *:has(+ .page-break) {\n\t\tmargin-bottom: 0;\n\t}\n}\n",".ck-content .page-break {\n clear: both;\n justify-content: center;\n align-items: center;\n padding: 5px 0;\n display: flex;\n position: relative;\n}\n\n.ck-content .page-break:after {\n content: \"\";\n border-bottom: 2px dashed #c4c4c4;\n width: 100%;\n position: absolute;\n}\n\n.ck-content .page-break__label {\n z-index: 1;\n text-transform: uppercase;\n color: #333;\n -webkit-user-select: none;\n user-select: none;\n background: #fff;\n border: 1px solid #c4c4c4;\n border-radius: 2px;\n padding: .3em .6em;\n font-size: .75em;\n font-weight: bold;\n display: block;\n position: relative;\n box-shadow: 2px 2px 1px #00000026;\n}\n\n@media print {\n .ck-content .page-break {\n padding: 0;\n }\n\n .ck-content .page-break:after {\n display: none;\n }\n\n .ck-content :has( + .page-break) {\n margin-bottom: 0;\n }\n}\n\n/*# sourceMappingURL=index.css.map */"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
export { PageBreak } from
|
|
9
|
-
export { PageBreakEditing } from
|
|
10
|
-
export { PageBreakUI } from
|
|
11
|
-
export { PageBreakCommand } from
|
|
12
|
-
import
|
|
6
|
+
* @module page-break
|
|
7
|
+
*/
|
|
8
|
+
export { PageBreak } from "./pagebreak.js";
|
|
9
|
+
export { PageBreakEditing } from "./pagebreakediting.js";
|
|
10
|
+
export { PageBreakUI } from "./pagebreakui.js";
|
|
11
|
+
export { PageBreakCommand } from "./pagebreakcommand.js";
|
|
12
|
+
import "./augmentation.js";
|
package/dist/index.js
CHANGED
|
@@ -2,255 +2,265 @@
|
|
|
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 { Command, Plugin } from
|
|
6
|
-
import { findOptimalInsertionRange, toWidget
|
|
7
|
-
import { IconPageBreak } from
|
|
8
|
-
import { ButtonView, MenuBarMenuListItemButtonView } from
|
|
5
|
+
import { Command, Plugin } from "@ckeditor/ckeditor5-core";
|
|
6
|
+
import { Widget, findOptimalInsertionRange, toWidget } from "@ckeditor/ckeditor5-widget";
|
|
7
|
+
import { IconPageBreak } from "@ckeditor/ckeditor5-icons";
|
|
8
|
+
import { ButtonView, MenuBarMenuListItemButtonView } from "@ckeditor/ckeditor5-ui";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
* editor.execute( 'pageBreak' );
|
|
18
|
-
*/ class PageBreakCommand extends Command {
|
|
19
|
-
/**
|
|
20
|
-
* @inheritDoc
|
|
21
|
-
*/ refresh() {
|
|
22
|
-
const model = this.editor.model;
|
|
23
|
-
const schema = model.schema;
|
|
24
|
-
const selection = model.document.selection;
|
|
25
|
-
this.isEnabled = isPageBreakAllowedInParent(selection, schema, model);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Executes the command.
|
|
29
|
-
*
|
|
30
|
-
* @fires execute
|
|
31
|
-
*/ execute() {
|
|
32
|
-
const model = this.editor.model;
|
|
33
|
-
model.change((writer)=>{
|
|
34
|
-
const pageBreakElement = writer.createElement('pageBreak');
|
|
35
|
-
model.insertObject(pageBreakElement, null, null, {
|
|
36
|
-
setSelection: 'after'
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
}
|
|
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 page-break/pagebreakcommand
|
|
16
|
+
*/
|
|
41
17
|
/**
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
18
|
+
* The page break command.
|
|
19
|
+
*
|
|
20
|
+
* The command is registered by {@link module:page-break/pagebreakediting~PageBreakEditing} as `'pageBreak'`.
|
|
21
|
+
*
|
|
22
|
+
* To insert a page break at the current selection, execute the command:
|
|
23
|
+
*
|
|
24
|
+
* editor.execute( 'pageBreak' );
|
|
25
|
+
*/
|
|
26
|
+
var PageBreakCommand = class extends Command {
|
|
27
|
+
/**
|
|
28
|
+
* @inheritDoc
|
|
29
|
+
*/
|
|
30
|
+
refresh() {
|
|
31
|
+
const model = this.editor.model;
|
|
32
|
+
const schema = model.schema;
|
|
33
|
+
const selection = model.document.selection;
|
|
34
|
+
this.isEnabled = isPageBreakAllowedInParent(selection, schema, model);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Executes the command.
|
|
38
|
+
*
|
|
39
|
+
* @fires execute
|
|
40
|
+
*/
|
|
41
|
+
execute() {
|
|
42
|
+
const model = this.editor.model;
|
|
43
|
+
model.change((writer) => {
|
|
44
|
+
const pageBreakElement = writer.createElement("pageBreak");
|
|
45
|
+
model.insertObject(pageBreakElement, null, null, { setSelection: "after" });
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Checks if a page break is allowed by the schema in the optimal insertion parent.
|
|
51
|
+
*/
|
|
52
|
+
function isPageBreakAllowedInParent(selection, schema, model) {
|
|
53
|
+
const parent = getInsertPageBreakParent(selection, model);
|
|
54
|
+
return schema.checkChild(parent, "pageBreak");
|
|
46
55
|
}
|
|
47
56
|
/**
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
return parent;
|
|
57
|
+
* Returns a node that will be used to insert a page break with `model.insertContent` to check if the page break can be placed there.
|
|
58
|
+
*/
|
|
59
|
+
function getInsertPageBreakParent(selection, model) {
|
|
60
|
+
const parent = findOptimalInsertionRange(selection, model).start.parent;
|
|
61
|
+
if (parent.isEmpty && !parent.is("rootElement")) return parent.parent;
|
|
62
|
+
return parent;
|
|
56
63
|
}
|
|
57
64
|
|
|
58
65
|
/**
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
* @inheritDoc
|
|
63
|
-
*/ static get pluginName() {
|
|
64
|
-
return 'PageBreakEditing';
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* @inheritDoc
|
|
68
|
-
* @internal
|
|
69
|
-
*/ static get licenseFeatureCode() {
|
|
70
|
-
return 'PB';
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* @inheritDoc
|
|
74
|
-
*/ static get isOfficialPlugin() {
|
|
75
|
-
return true;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* @inheritDoc
|
|
79
|
-
*/ static get isPremiumPlugin() {
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* @inheritDoc
|
|
84
|
-
*/ init() {
|
|
85
|
-
const editor = this.editor;
|
|
86
|
-
const schema = editor.model.schema;
|
|
87
|
-
const t = editor.t;
|
|
88
|
-
const conversion = editor.conversion;
|
|
89
|
-
schema.register('pageBreak', {
|
|
90
|
-
inheritAllFrom: '$blockObject'
|
|
91
|
-
});
|
|
92
|
-
conversion.for('dataDowncast').elementToStructure({
|
|
93
|
-
model: 'pageBreak',
|
|
94
|
-
view: (modelElement, { writer })=>{
|
|
95
|
-
const divElement = writer.createContainerElement('div', {
|
|
96
|
-
class: 'page-break',
|
|
97
|
-
// If user has no `.ck-content` styles, it should always break a page during print.
|
|
98
|
-
style: 'page-break-after: always'
|
|
99
|
-
}, // For a rationale of using span inside a div see:
|
|
100
|
-
// https://github.com/ckeditor/ckeditor5-page-break/pull/1#discussion_r328934062.
|
|
101
|
-
writer.createContainerElement('span', {
|
|
102
|
-
style: 'display: none'
|
|
103
|
-
}));
|
|
104
|
-
return divElement;
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
conversion.for('editingDowncast').elementToStructure({
|
|
108
|
-
model: 'pageBreak',
|
|
109
|
-
view: (modelElement, { writer })=>{
|
|
110
|
-
const label = t('Page break');
|
|
111
|
-
const viewWrapper = writer.createContainerElement('div');
|
|
112
|
-
const viewLabelElement = writer.createRawElement('span', {
|
|
113
|
-
class: 'page-break__label'
|
|
114
|
-
}, function(domElement) {
|
|
115
|
-
domElement.innerText = t('Page break');
|
|
116
|
-
});
|
|
117
|
-
writer.addClass('page-break', viewWrapper);
|
|
118
|
-
writer.insert(writer.createPositionAt(viewWrapper, 0), viewLabelElement);
|
|
119
|
-
return toPageBreakWidget(viewWrapper, writer, label);
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
conversion.for('upcast').elementToElement({
|
|
123
|
-
view: (element)=>{
|
|
124
|
-
// For upcast conversion it's enough if we check for element style and verify if it's empty
|
|
125
|
-
// or contains only hidden span element.
|
|
126
|
-
const hasPageBreakBefore = element.getStyle('page-break-before') == 'always';
|
|
127
|
-
const hasPageBreakAfter = element.getStyle('page-break-after') == 'always';
|
|
128
|
-
if (!hasPageBreakBefore && !hasPageBreakAfter) {
|
|
129
|
-
return null;
|
|
130
|
-
}
|
|
131
|
-
// The "page break" div accepts only single child or no child at all.
|
|
132
|
-
if (element.childCount == 1) {
|
|
133
|
-
const viewSpan = element.getChild(0);
|
|
134
|
-
// The child must be the "span" element that is not displayed.
|
|
135
|
-
if (!viewSpan.is('element', 'span') || viewSpan.getStyle('display') != 'none') {
|
|
136
|
-
return null;
|
|
137
|
-
}
|
|
138
|
-
} else if (element.childCount > 1) {
|
|
139
|
-
return null;
|
|
140
|
-
}
|
|
141
|
-
return {
|
|
142
|
-
name: true,
|
|
143
|
-
styles: [
|
|
144
|
-
...hasPageBreakBefore ? [
|
|
145
|
-
'page-break-before'
|
|
146
|
-
] : [],
|
|
147
|
-
...hasPageBreakAfter ? [
|
|
148
|
-
'page-break-after'
|
|
149
|
-
] : []
|
|
150
|
-
],
|
|
151
|
-
...element.hasClass('page-break') && {
|
|
152
|
-
classes: [
|
|
153
|
-
'page-break'
|
|
154
|
-
]
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
},
|
|
158
|
-
model: 'pageBreak',
|
|
159
|
-
// This conversion must be checked before <br> conversion because some editors use
|
|
160
|
-
// <br style="page-break-before:always"> as a page break marker.
|
|
161
|
-
converterPriority: 'high'
|
|
162
|
-
});
|
|
163
|
-
editor.commands.add('pageBreak', new PageBreakCommand(editor));
|
|
164
|
-
}
|
|
165
|
-
}
|
|
66
|
+
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
67
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
68
|
+
*/
|
|
166
69
|
/**
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
70
|
+
* @module page-break/pagebreakediting
|
|
71
|
+
*/
|
|
72
|
+
/**
|
|
73
|
+
* The page break editing feature.
|
|
74
|
+
*/
|
|
75
|
+
var PageBreakEditing = class extends Plugin {
|
|
76
|
+
/**
|
|
77
|
+
* @inheritDoc
|
|
78
|
+
*/
|
|
79
|
+
static get pluginName() {
|
|
80
|
+
return "PageBreakEditing";
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* @inheritDoc
|
|
84
|
+
* @internal
|
|
85
|
+
*/
|
|
86
|
+
static get licenseFeatureCode() {
|
|
87
|
+
return "PB";
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* @inheritDoc
|
|
91
|
+
*/
|
|
92
|
+
static get isOfficialPlugin() {
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* @inheritDoc
|
|
97
|
+
*/
|
|
98
|
+
static get isPremiumPlugin() {
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* @inheritDoc
|
|
103
|
+
*/
|
|
104
|
+
init() {
|
|
105
|
+
const editor = this.editor;
|
|
106
|
+
const schema = editor.model.schema;
|
|
107
|
+
const t = editor.t;
|
|
108
|
+
const conversion = editor.conversion;
|
|
109
|
+
schema.register("pageBreak", { inheritAllFrom: "$blockObject" });
|
|
110
|
+
conversion.for("dataDowncast").elementToStructure({
|
|
111
|
+
model: "pageBreak",
|
|
112
|
+
view: (modelElement, { writer }) => {
|
|
113
|
+
return writer.createContainerElement("div", {
|
|
114
|
+
class: "page-break",
|
|
115
|
+
style: "page-break-after: always"
|
|
116
|
+
}, writer.createContainerElement("span", { style: "display: none" }));
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
conversion.for("editingDowncast").elementToStructure({
|
|
120
|
+
model: "pageBreak",
|
|
121
|
+
view: (modelElement, { writer }) => {
|
|
122
|
+
const label = t("Page break");
|
|
123
|
+
const viewWrapper = writer.createContainerElement("div");
|
|
124
|
+
const viewLabelElement = writer.createRawElement("span", { class: "page-break__label" }, function(domElement) {
|
|
125
|
+
domElement.innerText = t("Page break");
|
|
126
|
+
});
|
|
127
|
+
writer.addClass("page-break", viewWrapper);
|
|
128
|
+
writer.insert(writer.createPositionAt(viewWrapper, 0), viewLabelElement);
|
|
129
|
+
return toPageBreakWidget(viewWrapper, writer, label);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
conversion.for("upcast").elementToElement({
|
|
133
|
+
view: (element) => {
|
|
134
|
+
const hasPageBreakBefore = element.getStyle("page-break-before") == "always";
|
|
135
|
+
const hasPageBreakAfter = element.getStyle("page-break-after") == "always";
|
|
136
|
+
if (!hasPageBreakBefore && !hasPageBreakAfter) return null;
|
|
137
|
+
if (element.childCount == 1) {
|
|
138
|
+
const viewSpan = element.getChild(0);
|
|
139
|
+
if (!viewSpan.is("element", "span") || viewSpan.getStyle("display") != "none") return null;
|
|
140
|
+
} else if (element.childCount > 1) return null;
|
|
141
|
+
return {
|
|
142
|
+
name: true,
|
|
143
|
+
styles: [...hasPageBreakBefore ? ["page-break-before"] : [], ...hasPageBreakAfter ? ["page-break-after"] : []],
|
|
144
|
+
...element.hasClass("page-break") && { classes: ["page-break"] }
|
|
145
|
+
};
|
|
146
|
+
},
|
|
147
|
+
model: "pageBreak",
|
|
148
|
+
converterPriority: "high"
|
|
149
|
+
});
|
|
150
|
+
editor.commands.add("pageBreak", new PageBreakCommand(editor));
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* Converts a given {@link module:engine/view/element~ViewElement} to a page break widget:
|
|
155
|
+
* * Adds a {@link module:engine/view/element~ViewElement#_setCustomProperty custom property} allowing to
|
|
156
|
+
* recognize the page break widget element.
|
|
157
|
+
* * Calls the {@link module:widget/utils~toWidget} function with the proper element's label creator.
|
|
158
|
+
*/
|
|
159
|
+
function toPageBreakWidget(viewElement, writer, label) {
|
|
160
|
+
writer.setCustomProperty("pageBreak", true, viewElement);
|
|
161
|
+
return toWidget(viewElement, writer, { label });
|
|
176
162
|
}
|
|
177
163
|
|
|
178
164
|
/**
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
}
|
|
165
|
+
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
166
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
167
|
+
*/
|
|
168
|
+
/**
|
|
169
|
+
* @module page-break/pagebreakui
|
|
170
|
+
*/
|
|
171
|
+
/**
|
|
172
|
+
* The page break UI plugin.
|
|
173
|
+
*/
|
|
174
|
+
var PageBreakUI = class extends Plugin {
|
|
175
|
+
/**
|
|
176
|
+
* @inheritDoc
|
|
177
|
+
*/
|
|
178
|
+
static get pluginName() {
|
|
179
|
+
return "PageBreakUI";
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* @inheritDoc
|
|
183
|
+
*/
|
|
184
|
+
static get isOfficialPlugin() {
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* @inheritDoc
|
|
189
|
+
*/
|
|
190
|
+
init() {
|
|
191
|
+
const editor = this.editor;
|
|
192
|
+
editor.ui.componentFactory.add("pageBreak", () => {
|
|
193
|
+
const view = this._createButton(ButtonView);
|
|
194
|
+
view.set({ tooltip: true });
|
|
195
|
+
return view;
|
|
196
|
+
});
|
|
197
|
+
editor.ui.componentFactory.add("menuBar:pageBreak", () => this._createButton(MenuBarMenuListItemButtonView));
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Creates a button for page break command to use either in toolbar or in menu bar.
|
|
201
|
+
*/
|
|
202
|
+
_createButton(ButtonClass) {
|
|
203
|
+
const editor = this.editor;
|
|
204
|
+
const locale = editor.locale;
|
|
205
|
+
const command = editor.commands.get("pageBreak");
|
|
206
|
+
const view = new ButtonClass(editor.locale);
|
|
207
|
+
const t = locale.t;
|
|
208
|
+
view.set({
|
|
209
|
+
label: t("Page break"),
|
|
210
|
+
icon: IconPageBreak
|
|
211
|
+
});
|
|
212
|
+
view.bind("isEnabled").to(command, "isEnabled");
|
|
213
|
+
this.listenTo(view, "execute", () => {
|
|
214
|
+
editor.execute("pageBreak");
|
|
215
|
+
editor.editing.view.focus();
|
|
216
|
+
});
|
|
217
|
+
return view;
|
|
218
|
+
}
|
|
219
|
+
};
|
|
226
220
|
|
|
227
221
|
/**
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
222
|
+
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
223
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
224
|
+
*/
|
|
225
|
+
/**
|
|
226
|
+
* @module page-break/pagebreak
|
|
227
|
+
*/
|
|
228
|
+
/**
|
|
229
|
+
* The page break feature.
|
|
230
|
+
*
|
|
231
|
+
* It provides the possibility to insert a page break into the rich-text editor.
|
|
232
|
+
*
|
|
233
|
+
* For a detailed overview, check the {@glink features/page-break Page break feature} documentation.
|
|
234
|
+
*/
|
|
235
|
+
var PageBreak = class extends Plugin {
|
|
236
|
+
/**
|
|
237
|
+
* @inheritDoc
|
|
238
|
+
*/
|
|
239
|
+
static get requires() {
|
|
240
|
+
return [
|
|
241
|
+
PageBreakEditing,
|
|
242
|
+
PageBreakUI,
|
|
243
|
+
Widget
|
|
244
|
+
];
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* @inheritDoc
|
|
248
|
+
*/
|
|
249
|
+
static get pluginName() {
|
|
250
|
+
return "PageBreak";
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* @inheritDoc
|
|
254
|
+
*/
|
|
255
|
+
static get isOfficialPlugin() {
|
|
256
|
+
return true;
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
262
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
263
|
+
*/
|
|
254
264
|
|
|
255
265
|
export { PageBreak, PageBreakCommand, PageBreakEditing, PageBreakUI };
|
|
256
|
-
//# sourceMappingURL=index.js.map
|
|
266
|
+
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.js","../src/pagebreakcommand.ts","../src/pagebreakediting.ts","../src/pagebreakui.ts","../src/pagebreak.ts"],"names":["PageBreakCommand","Command","refresh","model","editor","schema","selection","document","isEnabled","isPageBreakAllowedInParent","execute","change","writer","pageBreakElement","createElement","insertObject","setSelection","parent","getInsertPageBreakParent","checkChild","insertionRange","findOptimalInsertionRange","start","isEmpty","is","PageBreakEditing","Plugin","pluginName","licenseFeatureCode","isOfficialPlugin","isPremiumPlugin","init","t","conversion","register","inheritAllFrom","for","elementToStructure","view","modelElement","divElement","createContainerElement","class","style","label","viewWrapper","viewLabelElement","createRawElement","domElement","innerText","addClass","insert","createPositionAt","toPageBreakWidget","elementToElement","element","hasPageBreakBefore","getStyle","hasPageBreakAfter","childCount","viewSpan","getChild","name","styles","hasClass","classes","converterPriority","commands","add","viewElement","setCustomProperty","toWidget","PageBreakUI","ui","componentFactory","_createButton","ButtonView","set","tooltip","MenuBarMenuListItemButtonView","ButtonClass","locale","command","get","icon","IconPageBreak","bind","to","listenTo","editing","focus","PageBreak","requires","Widget"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Command, Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { findOptimalInsertionRange, toWidget, Widget } from '@ckeditor/ckeditor5-widget/dist/index.js';\nimport { IconPageBreak } from '@ckeditor/ckeditor5-icons/dist/index.js';\nimport { ButtonView, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui/dist/index.js';\n\n/**\n * The page break command.\n *\n * The command is registered by {@link module:page-break/pagebreakediting~PageBreakEditing} as `'pageBreak'`.\n *\n * To insert a page break at the current selection, execute the command:\n *\n *\t\teditor.execute( 'pageBreak' );\n */ class PageBreakCommand extends Command {\n /**\n\t * @inheritDoc\n\t */ refresh() {\n const model = this.editor.model;\n const schema = model.schema;\n const selection = model.document.selection;\n this.isEnabled = isPageBreakAllowedInParent(selection, schema, model);\n }\n /**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t */ execute() {\n const model = this.editor.model;\n model.change((writer)=>{\n const pageBreakElement = writer.createElement('pageBreak');\n model.insertObject(pageBreakElement, null, null, {\n setSelection: 'after'\n });\n });\n }\n}\n/**\n * Checks if a page break is allowed by the schema in the optimal insertion parent.\n */ function isPageBreakAllowedInParent(selection, schema, model) {\n const parent = getInsertPageBreakParent(selection, model);\n return schema.checkChild(parent, 'pageBreak');\n}\n/**\n * Returns a node that will be used to insert a page break with `model.insertContent` to check if the page break can be placed there.\n */ function getInsertPageBreakParent(selection, model) {\n const insertionRange = findOptimalInsertionRange(selection, model);\n const parent = insertionRange.start.parent;\n if (parent.isEmpty && !parent.is('rootElement')) {\n return parent.parent;\n }\n return parent;\n}\n\n/**\n * The page break editing feature.\n */ class PageBreakEditing extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'PageBreakEditing';\n }\n /**\n\t * @inheritDoc\n\t * @internal\n\t */ static get licenseFeatureCode() {\n return 'PB';\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 const schema = editor.model.schema;\n const t = editor.t;\n const conversion = editor.conversion;\n schema.register('pageBreak', {\n inheritAllFrom: '$blockObject'\n });\n conversion.for('dataDowncast').elementToStructure({\n model: 'pageBreak',\n view: (modelElement, { writer })=>{\n const divElement = writer.createContainerElement('div', {\n class: 'page-break',\n // If user has no `.ck-content` styles, it should always break a page during print.\n style: 'page-break-after: always'\n }, // For a rationale of using span inside a div see:\n // https://github.com/ckeditor/ckeditor5-page-break/pull/1#discussion_r328934062.\n writer.createContainerElement('span', {\n style: 'display: none'\n }));\n return divElement;\n }\n });\n conversion.for('editingDowncast').elementToStructure({\n model: 'pageBreak',\n view: (modelElement, { writer })=>{\n const label = t('Page break');\n const viewWrapper = writer.createContainerElement('div');\n const viewLabelElement = writer.createRawElement('span', {\n class: 'page-break__label'\n }, function(domElement) {\n domElement.innerText = t('Page break');\n });\n writer.addClass('page-break', viewWrapper);\n writer.insert(writer.createPositionAt(viewWrapper, 0), viewLabelElement);\n return toPageBreakWidget(viewWrapper, writer, label);\n }\n });\n conversion.for('upcast').elementToElement({\n view: (element)=>{\n // For upcast conversion it's enough if we check for element style and verify if it's empty\n // or contains only hidden span element.\n const hasPageBreakBefore = element.getStyle('page-break-before') == 'always';\n const hasPageBreakAfter = element.getStyle('page-break-after') == 'always';\n if (!hasPageBreakBefore && !hasPageBreakAfter) {\n return null;\n }\n // The \"page break\" div accepts only single child or no child at all.\n if (element.childCount == 1) {\n const viewSpan = element.getChild(0);\n // The child must be the \"span\" element that is not displayed.\n if (!viewSpan.is('element', 'span') || viewSpan.getStyle('display') != 'none') {\n return null;\n }\n } else if (element.childCount > 1) {\n return null;\n }\n return {\n name: true,\n styles: [\n ...hasPageBreakBefore ? [\n 'page-break-before'\n ] : [],\n ...hasPageBreakAfter ? [\n 'page-break-after'\n ] : []\n ],\n ...element.hasClass('page-break') && {\n classes: [\n 'page-break'\n ]\n }\n };\n },\n model: 'pageBreak',\n // This conversion must be checked before <br> conversion because some editors use\n // <br style=\"page-break-before:always\"> as a page break marker.\n converterPriority: 'high'\n });\n editor.commands.add('pageBreak', new PageBreakCommand(editor));\n }\n}\n/**\n * Converts a given {@link module:engine/view/element~ViewElement} to a page break widget:\n * * Adds a {@link module:engine/view/element~ViewElement#_setCustomProperty custom property} allowing to\n * recognize the page break widget element.\n * * Calls the {@link module:widget/utils~toWidget} function with the proper element's label creator.\n */ function toPageBreakWidget(viewElement, writer, label) {\n writer.setCustomProperty('pageBreak', true, viewElement);\n return toWidget(viewElement, writer, {\n label\n });\n}\n\n/**\n * The page break UI plugin.\n */ class PageBreakUI extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'PageBreakUI';\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 // Add pageBreak button to feature components.\n editor.ui.componentFactory.add('pageBreak', ()=>{\n const view = this._createButton(ButtonView);\n view.set({\n tooltip: true\n });\n return view;\n });\n editor.ui.componentFactory.add('menuBar:pageBreak', ()=>this._createButton(MenuBarMenuListItemButtonView));\n }\n /**\n\t * Creates a button for page break 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('pageBreak');\n const view = new ButtonClass(editor.locale);\n const t = locale.t;\n view.set({\n label: t('Page break'),\n icon: IconPageBreak\n });\n view.bind('isEnabled').to(command, 'isEnabled');\n // Execute the command.\n this.listenTo(view, 'execute', ()=>{\n editor.execute('pageBreak');\n editor.editing.view.focus();\n });\n return view;\n }\n}\n\n/**\n * The page break feature.\n *\n * It provides the possibility to insert a page break into the rich-text editor.\n *\n * For a detailed overview, check the {@glink features/page-break Page break feature} documentation.\n */ class PageBreak extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n PageBreakEditing,\n PageBreakUI,\n Widget\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'PageBreak';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n}\n\nexport { PageBreak, PageBreakCommand, PageBreakEditing, PageBreakUI };\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 page-break/pagebreakcommand\n */\n\nimport { Command } from '@ckeditor/ckeditor5-core';\nimport { findOptimalInsertionRange } from '@ckeditor/ckeditor5-widget';\nimport type { ModelDocumentSelection, ModelElement, Model, ModelSchema } from '@ckeditor/ckeditor5-engine';\n\n/**\n * The page break command.\n *\n * The command is registered by {@link module:page-break/pagebreakediting~PageBreakEditing} as `'pageBreak'`.\n *\n * To insert a page break at the current selection, execute the command:\n *\n *\t\teditor.execute( 'pageBreak' );\n */\nexport class PageBreakCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst selection = model.document.selection;\n\n\t\tthis.isEnabled = isPageBreakAllowedInParent( selection, schema, model );\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute(): void {\n\t\tconst model = this.editor.model;\n\n\t\tmodel.change( writer => {\n\t\t\tconst pageBreakElement = writer.createElement( 'pageBreak' );\n\n\t\t\tmodel.insertObject( pageBreakElement, null, null, {\n\t\t\t\tsetSelection: 'after'\n\t\t\t} );\n\t\t} );\n\t}\n}\n\n/**\n * Checks if a page break is allowed by the schema in the optimal insertion parent.\n */\nfunction isPageBreakAllowedInParent( selection: ModelDocumentSelection, schema: ModelSchema, model: Model ): boolean {\n\tconst parent = getInsertPageBreakParent( selection, model );\n\n\treturn schema.checkChild( parent, 'pageBreak' );\n}\n\n/**\n * Returns a node that will be used to insert a page break with `model.insertContent` to check if the page break can be placed there.\n */\nfunction getInsertPageBreakParent( selection: ModelDocumentSelection, model: Model ): ModelElement {\n\tconst insertionRange = findOptimalInsertionRange( selection, model );\n\tconst parent = insertionRange.start.parent;\n\n\tif ( parent.isEmpty && !parent.is( 'rootElement' ) ) {\n\t\treturn parent.parent as ModelElement;\n\t}\n\n\treturn parent as ModelElement;\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 page-break/pagebreakediting\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport { toWidget } from '@ckeditor/ckeditor5-widget';\nimport type { ViewDowncastWriter, ViewElement } from '@ckeditor/ckeditor5-engine';\n\nimport { PageBreakCommand } from './pagebreakcommand.js';\n\nimport '../theme/pagebreak.css';\n\n/**\n * The page break editing feature.\n */\nexport class PageBreakEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'PageBreakEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic static get licenseFeatureCode(): string {\n\t\treturn 'PB';\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\t\tconst schema = editor.model.schema;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\n\t\tschema.register( 'pageBreak', {\n\t\t\tinheritAllFrom: '$blockObject'\n\t\t} );\n\n\t\tconversion.for( 'dataDowncast' ).elementToStructure( {\n\t\t\tmodel: 'pageBreak',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tconst divElement = writer.createContainerElement( 'div',\n\t\t\t\t\t{\n\t\t\t\t\t\tclass: 'page-break',\n\t\t\t\t\t\t// If user has no `.ck-content` styles, it should always break a page during print.\n\t\t\t\t\t\tstyle: 'page-break-after: always'\n\t\t\t\t\t},\n\t\t\t\t\t// For a rationale of using span inside a div see:\n\t\t\t\t\t// https://github.com/ckeditor/ckeditor5-page-break/pull/1#discussion_r328934062.\n\t\t\t\t\twriter.createContainerElement( 'span', {\n\t\t\t\t\t\tstyle: 'display: none'\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\treturn divElement;\n\t\t\t}\n\t\t} );\n\n\t\tconversion.for( 'editingDowncast' ).elementToStructure( {\n\t\t\tmodel: 'pageBreak',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tconst label = t( 'Page break' );\n\t\t\t\tconst viewWrapper = writer.createContainerElement( 'div' );\n\t\t\t\tconst viewLabelElement = writer.createRawElement(\n\t\t\t\t\t'span',\n\t\t\t\t\t{ class: 'page-break__label' },\n\t\t\t\t\tfunction( domElement ) {\n\t\t\t\t\t\tdomElement.innerText = t( 'Page break' );\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\twriter.addClass( 'page-break', viewWrapper );\n\t\t\t\twriter.insert( writer.createPositionAt( viewWrapper, 0 ), viewLabelElement );\n\n\t\t\t\treturn toPageBreakWidget( viewWrapper, writer, label );\n\t\t\t}\n\t\t} );\n\n\t\tconversion.for( 'upcast' )\n\t\t\t.elementToElement( {\n\t\t\t\tview: element => {\n\t\t\t\t\t// For upcast conversion it's enough if we check for element style and verify if it's empty\n\t\t\t\t\t// or contains only hidden span element.\n\n\t\t\t\t\tconst hasPageBreakBefore = element.getStyle( 'page-break-before' ) == 'always';\n\t\t\t\t\tconst hasPageBreakAfter = element.getStyle( 'page-break-after' ) == 'always';\n\n\t\t\t\t\tif ( !hasPageBreakBefore && !hasPageBreakAfter ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// The \"page break\" div accepts only single child or no child at all.\n\t\t\t\t\tif ( element.childCount == 1 ) {\n\t\t\t\t\t\tconst viewSpan = element.getChild( 0 );\n\n\t\t\t\t\t\t// The child must be the \"span\" element that is not displayed.\n\t\t\t\t\t\tif ( !viewSpan!.is( 'element', 'span' ) || viewSpan.getStyle( 'display' ) != 'none' ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( element.childCount > 1 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: true,\n\n\t\t\t\t\t\tstyles: [\n\t\t\t\t\t\t\t...( hasPageBreakBefore ? [ 'page-break-before' ] : [] ),\n\t\t\t\t\t\t\t...( hasPageBreakAfter ? [ 'page-break-after' ] : [] )\n\t\t\t\t\t\t],\n\n\t\t\t\t\t\t...element.hasClass( 'page-break' ) && {\n\t\t\t\t\t\t\tclasses: [ 'page-break' ]\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tmodel: 'pageBreak',\n\n\t\t\t\t// This conversion must be checked before <br> conversion because some editors use\n\t\t\t\t// <br style=\"page-break-before:always\"> as a page break marker.\n\t\t\t\tconverterPriority: 'high'\n\t\t\t} );\n\n\t\teditor.commands.add( 'pageBreak', new PageBreakCommand( editor ) );\n\t}\n}\n\n/**\n * Converts a given {@link module:engine/view/element~ViewElement} to a page break widget:\n * * Adds a {@link module:engine/view/element~ViewElement#_setCustomProperty custom property} allowing to\n * recognize the page break widget element.\n * * Calls the {@link module:widget/utils~toWidget} function with the proper element's label creator.\n */\nfunction toPageBreakWidget( viewElement: ViewElement, writer: ViewDowncastWriter, label: string ): ViewElement {\n\twriter.setCustomProperty( 'pageBreak', true, viewElement );\n\n\treturn toWidget( viewElement, writer, { label } );\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 page-break/pagebreakui\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport { IconPageBreak } from '@ckeditor/ckeditor5-icons';\nimport { ButtonView, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui';\n\n/**\n * The page break UI plugin.\n */\nexport class PageBreakUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'PageBreakUI' 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\t// Add pageBreak button to feature components.\n\t\teditor.ui.componentFactory.add( 'pageBreak', () => {\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:pageBreak', () => this._createButton( MenuBarMenuListItemButtonView ) );\n\t}\n\n\t/**\n\t * Creates a button for page break 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 = editor.commands.get( 'pageBreak' )!;\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( 'Page break' ),\n\t\t\ticon: IconPageBreak\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( 'pageBreak' );\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 page-break/pagebreak\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport { Widget } from '@ckeditor/ckeditor5-widget';\n\nimport { PageBreakEditing } from './pagebreakediting.js';\nimport { PageBreakUI } from './pagebreakui.js';\n\n/**\n * The page break feature.\n *\n * It provides the possibility to insert a page break into the rich-text editor.\n *\n * For a detailed overview, check the {@glink features/page-break Page break feature} documentation.\n */\nexport class PageBreak extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ PageBreakEditing, PageBreakUI, Widget ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'PageBreak' 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/pagebreakcommand.ts","../src/pagebreakediting.ts","../src/pagebreakui.ts","../src/pagebreak.ts"],"names":[],"mappings":"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","file":"index.js.map","sourcesContent":["import { Command, Plugin } from \"@ckeditor/ckeditor5-core\";\nimport { Widget, findOptimalInsertionRange, toWidget } from \"@ckeditor/ckeditor5-widget\";\nimport { IconPageBreak } from \"@ckeditor/ckeditor5-icons\";\nimport { ButtonView, MenuBarMenuListItemButtonView } from \"@ckeditor/ckeditor5-ui\";\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 page-break/pagebreakcommand\n*/\n/**\n* The page break command.\n*\n* The command is registered by {@link module:page-break/pagebreakediting~PageBreakEditing} as `'pageBreak'`.\n*\n* To insert a page break at the current selection, execute the command:\n*\n*\t\teditor.execute( 'pageBreak' );\n*/\nvar PageBreakCommand = class extends Command {\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst selection = model.document.selection;\n\t\tthis.isEnabled = isPageBreakAllowedInParent(selection, schema, model);\n\t}\n\t/**\n\t* Executes the command.\n\t*\n\t* @fires execute\n\t*/\n\texecute() {\n\t\tconst model = this.editor.model;\n\t\tmodel.change((writer) => {\n\t\t\tconst pageBreakElement = writer.createElement(\"pageBreak\");\n\t\t\tmodel.insertObject(pageBreakElement, null, null, { setSelection: \"after\" });\n\t\t});\n\t}\n};\n/**\n* Checks if a page break is allowed by the schema in the optimal insertion parent.\n*/\nfunction isPageBreakAllowedInParent(selection, schema, model) {\n\tconst parent = getInsertPageBreakParent(selection, model);\n\treturn schema.checkChild(parent, \"pageBreak\");\n}\n/**\n* Returns a node that will be used to insert a page break with `model.insertContent` to check if the page break can be placed there.\n*/\nfunction getInsertPageBreakParent(selection, model) {\n\tconst parent = findOptimalInsertionRange(selection, model).start.parent;\n\tif (parent.isEmpty && !parent.is(\"rootElement\")) return parent.parent;\n\treturn parent;\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 page-break/pagebreakediting\n*/\n/**\n* The page break editing feature.\n*/\nvar PageBreakEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"PageBreakEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t* @internal\n\t*/\n\tstatic get licenseFeatureCode() {\n\t\treturn \"PB\";\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\tconst schema = editor.model.schema;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\t\tschema.register(\"pageBreak\", { inheritAllFrom: \"$blockObject\" });\n\t\tconversion.for(\"dataDowncast\").elementToStructure({\n\t\t\tmodel: \"pageBreak\",\n\t\t\tview: (modelElement, { writer }) => {\n\t\t\t\treturn writer.createContainerElement(\"div\", {\n\t\t\t\t\tclass: \"page-break\",\n\t\t\t\t\tstyle: \"page-break-after: always\"\n\t\t\t\t}, writer.createContainerElement(\"span\", { style: \"display: none\" }));\n\t\t\t}\n\t\t});\n\t\tconversion.for(\"editingDowncast\").elementToStructure({\n\t\t\tmodel: \"pageBreak\",\n\t\t\tview: (modelElement, { writer }) => {\n\t\t\t\tconst label = t(\"Page break\");\n\t\t\t\tconst viewWrapper = writer.createContainerElement(\"div\");\n\t\t\t\tconst viewLabelElement = writer.createRawElement(\"span\", { class: \"page-break__label\" }, function(domElement) {\n\t\t\t\t\tdomElement.innerText = t(\"Page break\");\n\t\t\t\t});\n\t\t\t\twriter.addClass(\"page-break\", viewWrapper);\n\t\t\t\twriter.insert(writer.createPositionAt(viewWrapper, 0), viewLabelElement);\n\t\t\t\treturn toPageBreakWidget(viewWrapper, writer, label);\n\t\t\t}\n\t\t});\n\t\tconversion.for(\"upcast\").elementToElement({\n\t\t\tview: (element) => {\n\t\t\t\tconst hasPageBreakBefore = element.getStyle(\"page-break-before\") == \"always\";\n\t\t\t\tconst hasPageBreakAfter = element.getStyle(\"page-break-after\") == \"always\";\n\t\t\t\tif (!hasPageBreakBefore && !hasPageBreakAfter) return null;\n\t\t\t\tif (element.childCount == 1) {\n\t\t\t\t\tconst viewSpan = element.getChild(0);\n\t\t\t\t\tif (!viewSpan.is(\"element\", \"span\") || viewSpan.getStyle(\"display\") != \"none\") return null;\n\t\t\t\t} else if (element.childCount > 1) return null;\n\t\t\t\treturn {\n\t\t\t\t\tname: true,\n\t\t\t\t\tstyles: [...hasPageBreakBefore ? [\"page-break-before\"] : [], ...hasPageBreakAfter ? [\"page-break-after\"] : []],\n\t\t\t\t\t...element.hasClass(\"page-break\") && { classes: [\"page-break\"] }\n\t\t\t\t};\n\t\t\t},\n\t\t\tmodel: \"pageBreak\",\n\t\t\tconverterPriority: \"high\"\n\t\t});\n\t\teditor.commands.add(\"pageBreak\", new PageBreakCommand(editor));\n\t}\n};\n/**\n* Converts a given {@link module:engine/view/element~ViewElement} to a page break widget:\n* * Adds a {@link module:engine/view/element~ViewElement#_setCustomProperty custom property} allowing to\n* recognize the page break widget element.\n* * Calls the {@link module:widget/utils~toWidget} function with the proper element's label creator.\n*/\nfunction toPageBreakWidget(viewElement, writer, label) {\n\twriter.setCustomProperty(\"pageBreak\", true, viewElement);\n\treturn toWidget(viewElement, writer, { label });\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 page-break/pagebreakui\n*/\n/**\n* The page break UI plugin.\n*/\nvar PageBreakUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"PageBreakUI\";\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(\"pageBreak\", () => {\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:pageBreak\", () => this._createButton(MenuBarMenuListItemButtonView));\n\t}\n\t/**\n\t* Creates a button for page break 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(\"pageBreak\");\n\t\tconst view = new ButtonClass(editor.locale);\n\t\tconst t = locale.t;\n\t\tview.set({\n\t\t\tlabel: t(\"Page break\"),\n\t\t\ticon: IconPageBreak\n\t\t});\n\t\tview.bind(\"isEnabled\").to(command, \"isEnabled\");\n\t\tthis.listenTo(view, \"execute\", () => {\n\t\t\teditor.execute(\"pageBreak\");\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* @module page-break/pagebreak\n*/\n/**\n* The page break feature.\n*\n* It provides the possibility to insert a page break into the rich-text editor.\n*\n* For a detailed overview, check the {@glink features/page-break Page break feature} documentation.\n*/\nvar PageBreak = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tPageBreakEditing,\n\t\t\tPageBreakUI,\n\t\t\tWidget\n\t\t];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"PageBreak\";\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 { PageBreak, PageBreakCommand, PageBreakEditing, PageBreakUI };\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 page-break/pagebreakcommand\n */\n\nimport { Command } from '@ckeditor/ckeditor5-core';\nimport { findOptimalInsertionRange } from '@ckeditor/ckeditor5-widget';\nimport type { ModelDocumentSelection, ModelElement, Model, ModelSchema } from '@ckeditor/ckeditor5-engine';\n\n/**\n * The page break command.\n *\n * The command is registered by {@link module:page-break/pagebreakediting~PageBreakEditing} as `'pageBreak'`.\n *\n * To insert a page break at the current selection, execute the command:\n *\n *\t\teditor.execute( 'pageBreak' );\n */\nexport class PageBreakCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst selection = model.document.selection;\n\n\t\tthis.isEnabled = isPageBreakAllowedInParent( selection, schema, model );\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute(): void {\n\t\tconst model = this.editor.model;\n\n\t\tmodel.change( writer => {\n\t\t\tconst pageBreakElement = writer.createElement( 'pageBreak' );\n\n\t\t\tmodel.insertObject( pageBreakElement, null, null, {\n\t\t\t\tsetSelection: 'after'\n\t\t\t} );\n\t\t} );\n\t}\n}\n\n/**\n * Checks if a page break is allowed by the schema in the optimal insertion parent.\n */\nfunction isPageBreakAllowedInParent( selection: ModelDocumentSelection, schema: ModelSchema, model: Model ): boolean {\n\tconst parent = getInsertPageBreakParent( selection, model );\n\n\treturn schema.checkChild( parent, 'pageBreak' );\n}\n\n/**\n * Returns a node that will be used to insert a page break with `model.insertContent` to check if the page break can be placed there.\n */\nfunction getInsertPageBreakParent( selection: ModelDocumentSelection, model: Model ): ModelElement {\n\tconst insertionRange = findOptimalInsertionRange( selection, model );\n\tconst parent = insertionRange.start.parent;\n\n\tif ( parent.isEmpty && !parent.is( 'rootElement' ) ) {\n\t\treturn parent.parent as ModelElement;\n\t}\n\n\treturn parent as ModelElement;\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 page-break/pagebreakediting\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport { toWidget } from '@ckeditor/ckeditor5-widget';\nimport type { ViewDowncastWriter, ViewElement } from '@ckeditor/ckeditor5-engine';\n\nimport { PageBreakCommand } from './pagebreakcommand.js';\n\nimport '../theme/pagebreak.css';\n\n/**\n * The page break editing feature.\n */\nexport class PageBreakEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'PageBreakEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic static get licenseFeatureCode(): string {\n\t\treturn 'PB';\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\t\tconst schema = editor.model.schema;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\n\t\tschema.register( 'pageBreak', {\n\t\t\tinheritAllFrom: '$blockObject'\n\t\t} );\n\n\t\tconversion.for( 'dataDowncast' ).elementToStructure( {\n\t\t\tmodel: 'pageBreak',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tconst divElement = writer.createContainerElement( 'div',\n\t\t\t\t\t{\n\t\t\t\t\t\tclass: 'page-break',\n\t\t\t\t\t\t// If user has no `.ck-content` styles, it should always break a page during print.\n\t\t\t\t\t\tstyle: 'page-break-after: always'\n\t\t\t\t\t},\n\t\t\t\t\t// For a rationale of using span inside a div see:\n\t\t\t\t\t// https://github.com/ckeditor/ckeditor5-page-break/pull/1#discussion_r328934062.\n\t\t\t\t\twriter.createContainerElement( 'span', {\n\t\t\t\t\t\tstyle: 'display: none'\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\treturn divElement;\n\t\t\t}\n\t\t} );\n\n\t\tconversion.for( 'editingDowncast' ).elementToStructure( {\n\t\t\tmodel: 'pageBreak',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tconst label = t( 'Page break' );\n\t\t\t\tconst viewWrapper = writer.createContainerElement( 'div' );\n\t\t\t\tconst viewLabelElement = writer.createRawElement(\n\t\t\t\t\t'span',\n\t\t\t\t\t{ class: 'page-break__label' },\n\t\t\t\t\tfunction( domElement ) {\n\t\t\t\t\t\tdomElement.innerText = t( 'Page break' );\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\twriter.addClass( 'page-break', viewWrapper );\n\t\t\t\twriter.insert( writer.createPositionAt( viewWrapper, 0 ), viewLabelElement );\n\n\t\t\t\treturn toPageBreakWidget( viewWrapper, writer, label );\n\t\t\t}\n\t\t} );\n\n\t\tconversion.for( 'upcast' )\n\t\t\t.elementToElement( {\n\t\t\t\tview: element => {\n\t\t\t\t\t// For upcast conversion it's enough if we check for element style and verify if it's empty\n\t\t\t\t\t// or contains only hidden span element.\n\n\t\t\t\t\tconst hasPageBreakBefore = element.getStyle( 'page-break-before' ) == 'always';\n\t\t\t\t\tconst hasPageBreakAfter = element.getStyle( 'page-break-after' ) == 'always';\n\n\t\t\t\t\tif ( !hasPageBreakBefore && !hasPageBreakAfter ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// The \"page break\" div accepts only single child or no child at all.\n\t\t\t\t\tif ( element.childCount == 1 ) {\n\t\t\t\t\t\tconst viewSpan = element.getChild( 0 );\n\n\t\t\t\t\t\t// The child must be the \"span\" element that is not displayed.\n\t\t\t\t\t\tif ( !viewSpan!.is( 'element', 'span' ) || viewSpan.getStyle( 'display' ) != 'none' ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( element.childCount > 1 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: true,\n\n\t\t\t\t\t\tstyles: [\n\t\t\t\t\t\t\t...( hasPageBreakBefore ? [ 'page-break-before' ] : [] ),\n\t\t\t\t\t\t\t...( hasPageBreakAfter ? [ 'page-break-after' ] : [] )\n\t\t\t\t\t\t],\n\n\t\t\t\t\t\t...element.hasClass( 'page-break' ) && {\n\t\t\t\t\t\t\tclasses: [ 'page-break' ]\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tmodel: 'pageBreak',\n\n\t\t\t\t// This conversion must be checked before <br> conversion because some editors use\n\t\t\t\t// <br style=\"page-break-before:always\"> as a page break marker.\n\t\t\t\tconverterPriority: 'high'\n\t\t\t} );\n\n\t\teditor.commands.add( 'pageBreak', new PageBreakCommand( editor ) );\n\t}\n}\n\n/**\n * Converts a given {@link module:engine/view/element~ViewElement} to a page break widget:\n * * Adds a {@link module:engine/view/element~ViewElement#_setCustomProperty custom property} allowing to\n * recognize the page break widget element.\n * * Calls the {@link module:widget/utils~toWidget} function with the proper element's label creator.\n */\nfunction toPageBreakWidget( viewElement: ViewElement, writer: ViewDowncastWriter, label: string ): ViewElement {\n\twriter.setCustomProperty( 'pageBreak', true, viewElement );\n\n\treturn toWidget( viewElement, writer, { label } );\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 page-break/pagebreakui\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport { IconPageBreak } from '@ckeditor/ckeditor5-icons';\nimport { ButtonView, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui';\n\n/**\n * The page break UI plugin.\n */\nexport class PageBreakUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'PageBreakUI' 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\t// Add pageBreak button to feature components.\n\t\teditor.ui.componentFactory.add( 'pageBreak', () => {\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:pageBreak', () => this._createButton( MenuBarMenuListItemButtonView ) );\n\t}\n\n\t/**\n\t * Creates a button for page break 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 = editor.commands.get( 'pageBreak' )!;\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( 'Page break' ),\n\t\t\ticon: IconPageBreak\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( 'pageBreak' );\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 page-break/pagebreak\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { Widget } from '@ckeditor/ckeditor5-widget';\n\nimport { PageBreakEditing } from './pagebreakediting.js';\nimport { PageBreakUI } from './pagebreakui.js';\n\n/**\n * The page break feature.\n *\n * It provides the possibility to insert a page break into the rich-text editor.\n *\n * For a detailed overview, check the {@glink features/page-break Page break feature} documentation.\n */\nexport class PageBreak extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ PageBreakEditing, PageBreakUI, Widget ]> {\n\t\treturn [ PageBreakEditing, PageBreakUI, Widget ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'PageBreak' 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"]}
|
package/dist/pagebreak.d.ts
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
import { Plugin } from
|
|
9
|
-
import { Widget } from
|
|
10
|
-
import { PageBreakEditing } from
|
|
11
|
-
import { PageBreakUI } from
|
|
6
|
+
* @module page-break/pagebreak
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin, type PluginDependenciesOf } from "@ckeditor/ckeditor5-core";
|
|
9
|
+
import { Widget } from "@ckeditor/ckeditor5-widget";
|
|
10
|
+
import { PageBreakEditing } from "./pagebreakediting.js";
|
|
11
|
+
import { PageBreakUI } from "./pagebreakui.js";
|
|
12
12
|
/**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
* The page break feature.
|
|
14
|
+
*
|
|
15
|
+
* It provides the possibility to insert a page break into the rich-text editor.
|
|
16
|
+
*
|
|
17
|
+
* For a detailed overview, check the {@glink features/page-break Page break feature} documentation.
|
|
18
|
+
*/
|
|
19
19
|
export declare class PageBreak extends Plugin {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
20
|
+
/**
|
|
21
|
+
* @inheritDoc
|
|
22
|
+
*/
|
|
23
|
+
static get requires(): PluginDependenciesOf<[PageBreakEditing, PageBreakUI, Widget]>;
|
|
24
|
+
/**
|
|
25
|
+
* @inheritDoc
|
|
26
|
+
*/
|
|
27
|
+
static get pluginName(): "PageBreak";
|
|
28
|
+
/**
|
|
29
|
+
* @inheritDoc
|
|
30
|
+
*/
|
|
31
|
+
static override get isOfficialPlugin(): true;
|
|
32
32
|
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
import { Command } from
|
|
6
|
+
* @module page-break/pagebreakcommand
|
|
7
|
+
*/
|
|
8
|
+
import { Command } from "@ckeditor/ckeditor5-core";
|
|
9
9
|
/**
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
* The page break command.
|
|
11
|
+
*
|
|
12
|
+
* The command is registered by {@link module:page-break/pagebreakediting~PageBreakEditing} as `'pageBreak'`.
|
|
13
|
+
*
|
|
14
|
+
* To insert a page break at the current selection, execute the command:
|
|
15
|
+
*
|
|
16
|
+
* editor.execute( 'pageBreak' );
|
|
17
|
+
*/
|
|
18
18
|
export declare class PageBreakCommand extends Command {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
19
|
+
/**
|
|
20
|
+
* @inheritDoc
|
|
21
|
+
*/
|
|
22
|
+
override refresh(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Executes the command.
|
|
25
|
+
*
|
|
26
|
+
* @fires execute
|
|
27
|
+
*/
|
|
28
|
+
override execute(): void;
|
|
29
29
|
}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
import { Plugin } from
|
|
9
|
-
import
|
|
6
|
+
* @module page-break/pagebreakediting
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin } from "@ckeditor/ckeditor5-core";
|
|
9
|
+
import "../theme/pagebreak.css";
|
|
10
10
|
/**
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
* The page break editing feature.
|
|
12
|
+
*/
|
|
13
13
|
export declare class PageBreakEditing extends Plugin {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
14
|
+
/**
|
|
15
|
+
* @inheritDoc
|
|
16
|
+
*/
|
|
17
|
+
static get pluginName(): "PageBreakEditing";
|
|
18
|
+
/**
|
|
19
|
+
* @inheritDoc
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
static get licenseFeatureCode(): string;
|
|
23
|
+
/**
|
|
24
|
+
* @inheritDoc
|
|
25
|
+
*/
|
|
26
|
+
static override get isOfficialPlugin(): true;
|
|
27
|
+
/**
|
|
28
|
+
* @inheritDoc
|
|
29
|
+
*/
|
|
30
|
+
static override get isPremiumPlugin(): true;
|
|
31
|
+
/**
|
|
32
|
+
* @inheritDoc
|
|
33
|
+
*/
|
|
34
|
+
init(): void;
|
|
35
35
|
}
|
package/dist/pagebreakui.d.ts
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
import { Plugin } from
|
|
6
|
+
* @module page-break/pagebreakui
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin } from "@ckeditor/ckeditor5-core";
|
|
9
9
|
/**
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
* The page break UI plugin.
|
|
11
|
+
*/
|
|
12
12
|
export declare class PageBreakUI extends Plugin {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
13
|
+
/**
|
|
14
|
+
* @inheritDoc
|
|
15
|
+
*/
|
|
16
|
+
static get pluginName(): "PageBreakUI";
|
|
17
|
+
/**
|
|
18
|
+
* @inheritDoc
|
|
19
|
+
*/
|
|
20
|
+
static override get isOfficialPlugin(): true;
|
|
21
|
+
/**
|
|
22
|
+
* @inheritDoc
|
|
23
|
+
*/
|
|
24
|
+
init(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Creates a button for page break command to use either in toolbar or in menu bar.
|
|
27
|
+
*/
|
|
28
|
+
private _createButton;
|
|
29
29
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ckeditor/ckeditor5-page-break",
|
|
3
|
-
"version": "48.
|
|
3
|
+
"version": "48.3.0-alpha.1",
|
|
4
4
|
"description": "Page break feature for CKEditor 5.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "CKSource (http://cksource.com/)",
|
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
"./package.json": "./package.json"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@ckeditor/ckeditor5-core": "48.
|
|
30
|
-
"@ckeditor/ckeditor5-engine": "48.
|
|
31
|
-
"@ckeditor/ckeditor5-icons": "48.
|
|
32
|
-
"@ckeditor/ckeditor5-ui": "48.
|
|
33
|
-
"@ckeditor/ckeditor5-utils": "48.
|
|
34
|
-
"@ckeditor/ckeditor5-widget": "48.
|
|
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
|
+
"@ckeditor/ckeditor5-widget": "48.3.0-alpha.1"
|
|
35
35
|
},
|
|
36
36
|
"files": [
|
|
37
37
|
"dist",
|