@ckeditor/ckeditor5-page-break 41.2.0 → 41.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/content-index.css +37 -0
- package/dist/editor-index.css +4 -0
- package/dist/index.css +59 -0
- package/dist/index.css.map +1 -0
- package/dist/index.js +243 -0
- package/dist/index.js.map +1 -0
- package/dist/types/augmentation.d.ts +15 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/pagebreak.d.ts +28 -0
- package/dist/types/pagebreakcommand.d.ts +29 -0
- package/dist/types/pagebreakediting.d.ts +22 -0
- package/dist/types/pagebreakui.d.ts +21 -0
- package/package.json +3 -2
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, 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
|
+
.ck-content .page-break {
|
|
6
|
+
position: relative;
|
|
7
|
+
clear: both;
|
|
8
|
+
padding: 5px 0;
|
|
9
|
+
display: flex;
|
|
10
|
+
align-items: center;
|
|
11
|
+
justify-content: center;
|
|
12
|
+
}
|
|
13
|
+
.ck-content .page-break::after {
|
|
14
|
+
content: '';
|
|
15
|
+
position: absolute;
|
|
16
|
+
border-bottom: 2px dashed hsl(0, 0%, 77%);
|
|
17
|
+
width: 100%;
|
|
18
|
+
}
|
|
19
|
+
.ck-content .page-break__label {
|
|
20
|
+
position: relative;
|
|
21
|
+
z-index: 1;
|
|
22
|
+
padding: .3em .6em;
|
|
23
|
+
display: block;
|
|
24
|
+
text-transform: uppercase;
|
|
25
|
+
border: 1px solid hsl(0, 0%, 77%);
|
|
26
|
+
border-radius: 2px;
|
|
27
|
+
font-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;
|
|
28
|
+
font-size: 0.75em;
|
|
29
|
+
font-weight: bold;
|
|
30
|
+
color: hsl(0, 0%, 20%);
|
|
31
|
+
background: hsl(0, 0%, 100%);
|
|
32
|
+
box-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15);
|
|
33
|
+
-webkit-user-select: none;
|
|
34
|
+
-moz-user-select: none;
|
|
35
|
+
-ms-user-select: none;
|
|
36
|
+
user-select: none;
|
|
37
|
+
}
|
package/dist/index.css
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, 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
|
+
* Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
.ck-content .page-break {
|
|
11
|
+
position: relative;
|
|
12
|
+
clear: both;
|
|
13
|
+
padding: 5px 0;
|
|
14
|
+
display: flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
justify-content: center;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.ck-content .page-break::after {
|
|
20
|
+
content: '';
|
|
21
|
+
position: absolute;
|
|
22
|
+
border-bottom: 2px dashed hsl(0, 0%, 77%);
|
|
23
|
+
width: 100%;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.ck-content .page-break__label {
|
|
27
|
+
position: relative;
|
|
28
|
+
z-index: 1;
|
|
29
|
+
padding: .3em .6em;
|
|
30
|
+
display: block;
|
|
31
|
+
text-transform: uppercase;
|
|
32
|
+
border: 1px solid hsl(0, 0%, 77%);
|
|
33
|
+
border-radius: 2px;
|
|
34
|
+
font-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;
|
|
35
|
+
font-size: 0.75em;
|
|
36
|
+
font-weight: bold;
|
|
37
|
+
color: hsl(0, 0%, 20%);
|
|
38
|
+
background: hsl(0, 0%, 100%);
|
|
39
|
+
box-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15);
|
|
40
|
+
|
|
41
|
+
/* Disable the possibility to select the label text by the user. */
|
|
42
|
+
-webkit-user-select: none;
|
|
43
|
+
-moz-user-select: none;
|
|
44
|
+
-ms-user-select: none;
|
|
45
|
+
user-select: none;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* Do not show the page break element inside the print preview window. */
|
|
49
|
+
@media print {
|
|
50
|
+
.ck-content .page-break {
|
|
51
|
+
padding: 0;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.ck-content .page-break::after {
|
|
55
|
+
display: none;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/*# sourceMappingURL=index.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../theme/pagebreak.css","index.css"],"names":[],"mappings":"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","file":"index.css.map","sourcesContent":["/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\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-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;\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\t-moz-user-select: none;\n\t-ms-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","/*\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\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\n.ck-content .page-break::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.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-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;\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\t-moz-user-select: none;\n\t-ms-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\t}\n\n\t\t.ck-content .page-break::after {\n\t\t\tdisplay: none;\n\t\t}\n}\n\n/*# sourceMappingURL=index.css.map */"]}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, 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
|
+
import { Command, Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';
|
|
6
|
+
import { findOptimalInsertionRange, toWidget, Widget } from '@ckeditor/ckeditor5-widget/dist/index.js';
|
|
7
|
+
import { ButtonView } from '@ckeditor/ckeditor5-ui/dist/index.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
11
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* @module page-break/pagebreakcommand
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* The page break command.
|
|
18
|
+
*
|
|
19
|
+
* The command is registered by {@link module:page-break/pagebreakediting~PageBreakEditing} as `'pageBreak'`.
|
|
20
|
+
*
|
|
21
|
+
* To insert a page break at the current selection, execute the command:
|
|
22
|
+
*
|
|
23
|
+
* editor.execute( 'pageBreak' );
|
|
24
|
+
*/
|
|
25
|
+
class PageBreakCommand extends Command {
|
|
26
|
+
/**
|
|
27
|
+
* @inheritDoc
|
|
28
|
+
*/
|
|
29
|
+
refresh() {
|
|
30
|
+
const model = this.editor.model;
|
|
31
|
+
const schema = model.schema;
|
|
32
|
+
const selection = model.document.selection;
|
|
33
|
+
this.isEnabled = isPageBreakAllowedInParent(selection, schema, model);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Executes the command.
|
|
37
|
+
*
|
|
38
|
+
* @fires execute
|
|
39
|
+
*/
|
|
40
|
+
execute() {
|
|
41
|
+
const model = this.editor.model;
|
|
42
|
+
model.change(writer => {
|
|
43
|
+
const pageBreakElement = writer.createElement('pageBreak');
|
|
44
|
+
model.insertObject(pageBreakElement, null, null, {
|
|
45
|
+
setSelection: 'after'
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Checks if a page break is allowed by the schema in the optimal insertion parent.
|
|
52
|
+
*/
|
|
53
|
+
function isPageBreakAllowedInParent(selection, schema, model) {
|
|
54
|
+
const parent = getInsertPageBreakParent(selection, model);
|
|
55
|
+
return schema.checkChild(parent, 'pageBreak');
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 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.
|
|
59
|
+
*/
|
|
60
|
+
function getInsertPageBreakParent(selection, model) {
|
|
61
|
+
const insertionRange = findOptimalInsertionRange(selection, model);
|
|
62
|
+
const parent = insertionRange.start.parent;
|
|
63
|
+
if (parent.isEmpty && !parent.is('element', '$root')) {
|
|
64
|
+
return parent.parent;
|
|
65
|
+
}
|
|
66
|
+
return parent;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
71
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
72
|
+
*/
|
|
73
|
+
/**
|
|
74
|
+
* @module page-break/pagebreakediting
|
|
75
|
+
*/
|
|
76
|
+
/**
|
|
77
|
+
* The page break editing feature.
|
|
78
|
+
*/
|
|
79
|
+
class PageBreakEditing extends Plugin {
|
|
80
|
+
/**
|
|
81
|
+
* @inheritDoc
|
|
82
|
+
*/
|
|
83
|
+
static get pluginName() {
|
|
84
|
+
return 'PageBreakEditing';
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* @inheritDoc
|
|
88
|
+
*/
|
|
89
|
+
init() {
|
|
90
|
+
const editor = this.editor;
|
|
91
|
+
const schema = editor.model.schema;
|
|
92
|
+
const t = editor.t;
|
|
93
|
+
const conversion = editor.conversion;
|
|
94
|
+
schema.register('pageBreak', {
|
|
95
|
+
inheritAllFrom: '$blockObject'
|
|
96
|
+
});
|
|
97
|
+
conversion.for('dataDowncast').elementToStructure({
|
|
98
|
+
model: 'pageBreak',
|
|
99
|
+
view: (modelElement, { writer }) => {
|
|
100
|
+
const divElement = writer.createContainerElement('div', {
|
|
101
|
+
class: 'page-break',
|
|
102
|
+
// If user has no `.ck-content` styles, it should always break a page during print.
|
|
103
|
+
style: 'page-break-after: always'
|
|
104
|
+
},
|
|
105
|
+
// For a rationale of using span inside a div see:
|
|
106
|
+
// https://github.com/ckeditor/ckeditor5-page-break/pull/1#discussion_r328934062.
|
|
107
|
+
writer.createContainerElement('span', {
|
|
108
|
+
style: 'display: none'
|
|
109
|
+
}));
|
|
110
|
+
return divElement;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
conversion.for('editingDowncast').elementToStructure({
|
|
114
|
+
model: 'pageBreak',
|
|
115
|
+
view: (modelElement, { writer }) => {
|
|
116
|
+
const label = t('Page break');
|
|
117
|
+
const viewWrapper = writer.createContainerElement('div');
|
|
118
|
+
const viewLabelElement = writer.createRawElement('span', { class: 'page-break__label' }, function (domElement) {
|
|
119
|
+
domElement.innerText = t('Page break');
|
|
120
|
+
});
|
|
121
|
+
writer.addClass('page-break', viewWrapper);
|
|
122
|
+
writer.insert(writer.createPositionAt(viewWrapper, 0), viewLabelElement);
|
|
123
|
+
return toPageBreakWidget(viewWrapper, writer, label);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
conversion.for('upcast')
|
|
127
|
+
.elementToElement({
|
|
128
|
+
view: element => {
|
|
129
|
+
// For upcast conversion it's enough if we check for element style and verify if it's empty
|
|
130
|
+
// or contains only hidden span element.
|
|
131
|
+
const hasPageBreakBefore = element.getStyle('page-break-before') == 'always';
|
|
132
|
+
const hasPageBreakAfter = element.getStyle('page-break-after') == 'always';
|
|
133
|
+
if (!hasPageBreakBefore && !hasPageBreakAfter) {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
// The "page break" div accepts only single child or no child at all.
|
|
137
|
+
if (element.childCount == 1) {
|
|
138
|
+
const viewSpan = element.getChild(0);
|
|
139
|
+
// The child must be the "span" element that is not displayed.
|
|
140
|
+
if (!viewSpan.is('element', 'span') || viewSpan.getStyle('display') != 'none') {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else if (element.childCount > 1) {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
return { name: true };
|
|
148
|
+
},
|
|
149
|
+
model: 'pageBreak',
|
|
150
|
+
// This conversion must be checked before <br> conversion because some editors use
|
|
151
|
+
// <br style="page-break-before:always"> as a page break marker.
|
|
152
|
+
converterPriority: 'high'
|
|
153
|
+
});
|
|
154
|
+
editor.commands.add('pageBreak', new PageBreakCommand(editor));
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Converts a given {@link module:engine/view/element~Element} to a page break widget:
|
|
159
|
+
* * Adds a {@link module:engine/view/element~Element#_setCustomProperty custom property} allowing to
|
|
160
|
+
* recognize the page break widget element.
|
|
161
|
+
* * Calls the {@link module:widget/utils~toWidget} function with the proper element's label creator.
|
|
162
|
+
*/
|
|
163
|
+
function toPageBreakWidget(viewElement, writer, label) {
|
|
164
|
+
writer.setCustomProperty('pageBreak', true, viewElement);
|
|
165
|
+
return toWidget(viewElement, writer, { label });
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
var pageBreakIcon = "<svg viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.598.687h1.5v5h-1.5zm14.5 0h1.5v5h-1.5z\"/><path d=\"M19.598 4.187v1.5h-16v-1.5zm-16 14.569h1.5v-5h-1.5zm14.5 0h1.5v-5h-1.5z\"/><path d=\"M19.598 15.256v-1.5h-16v1.5zM5.081 9h6v2h-6zm8 0h6v2h-6zm-9.483 1L0 12.5v-5z\"/></svg>";
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
172
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
173
|
+
*/
|
|
174
|
+
/**
|
|
175
|
+
* @module page-break/pagebreakui
|
|
176
|
+
*/
|
|
177
|
+
/**
|
|
178
|
+
* The page break UI plugin.
|
|
179
|
+
*/
|
|
180
|
+
class PageBreakUI extends Plugin {
|
|
181
|
+
/**
|
|
182
|
+
* @inheritDoc
|
|
183
|
+
*/
|
|
184
|
+
static get pluginName() {
|
|
185
|
+
return 'PageBreakUI';
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* @inheritDoc
|
|
189
|
+
*/
|
|
190
|
+
init() {
|
|
191
|
+
const editor = this.editor;
|
|
192
|
+
const t = editor.t;
|
|
193
|
+
// Add pageBreak button to feature components.
|
|
194
|
+
editor.ui.componentFactory.add('pageBreak', locale => {
|
|
195
|
+
const command = editor.commands.get('pageBreak');
|
|
196
|
+
const view = new ButtonView(locale);
|
|
197
|
+
view.set({
|
|
198
|
+
label: t('Page break'),
|
|
199
|
+
icon: pageBreakIcon,
|
|
200
|
+
tooltip: true
|
|
201
|
+
});
|
|
202
|
+
view.bind('isEnabled').to(command, 'isEnabled');
|
|
203
|
+
// Execute command.
|
|
204
|
+
this.listenTo(view, 'execute', () => {
|
|
205
|
+
editor.execute('pageBreak');
|
|
206
|
+
editor.editing.view.focus();
|
|
207
|
+
});
|
|
208
|
+
return view;
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
215
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
216
|
+
*/
|
|
217
|
+
/**
|
|
218
|
+
* @module page-break/pagebreak
|
|
219
|
+
*/
|
|
220
|
+
/**
|
|
221
|
+
* The page break feature.
|
|
222
|
+
*
|
|
223
|
+
* It provides the possibility to insert a page break into the rich-text editor.
|
|
224
|
+
*
|
|
225
|
+
* For a detailed overview, check the {@glink features/page-break Page break feature} documentation.
|
|
226
|
+
*/
|
|
227
|
+
class PageBreak extends Plugin {
|
|
228
|
+
/**
|
|
229
|
+
* @inheritDoc
|
|
230
|
+
*/
|
|
231
|
+
static get requires() {
|
|
232
|
+
return [PageBreakEditing, PageBreakUI, Widget];
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* @inheritDoc
|
|
236
|
+
*/
|
|
237
|
+
static get pluginName() {
|
|
238
|
+
return 'PageBreak';
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export { PageBreak, PageBreakEditing, PageBreakUI };
|
|
243
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.js","../src/pagebreakcommand.ts","../src/pagebreakediting.ts","../src/pagebreakui.ts","../src/pagebreak.ts"],"names":[],"mappings":";;;;AAAA,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACzE,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACvG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClE;ACHA,CAAA,CAAA,CAAA;ADKA,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AACrF,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO;ACHhF,CAAA,CAAA,CAAA;AAEH,CAAA,CAAA,CAAA;ADIA,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB;ACFnC,CAAA,CAAA,CAAA;AAMH,CAAA,CAAA,CAAA;ADDA,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC7G,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AACxE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;ACG/B,CAAA,CAAA,CAAA;AACkB,KAAA,CAAA,gBAAiB,CAAQ,OAAA,CAAA,OAAO,CAAA,CAAA;AACpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADDD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;ACGd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADDJ,CAAC,CAAC,CAAC,CCEc,OAAO,CAAA,CAAA,CAAA,CAAA;AACtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,KAAK,CAAG,CAAA,CAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA,CAAG,KAAK,CAAC,MAAM,CAAC;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,SAAS,CAAG,CAAA,CAAA,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;ADD7C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCGL,IAAI,CAAC,SAAS,CAAA,CAAA,CAAG,0BAA0B,CAAE,SAAS,CAAA,CAAE,MAAM,CAAA,CAAE,KAAK,CAAE,CAAC;ADF1E,CCGE,CAAA,CAAA,CAAA,CAAA;AAED,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADHD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;ACKjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADHJ,CAAC,CAAC,CAAC,CCIc,OAAO,CAAA,CAAA,CAAA,CAAA;AACtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,KAAK,CAAG,CAAA,CAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAEhC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAAC,MAAM,CAAE,MAAM,CAAG,CAAA,CAAA,CAAA,CAAA;ADJzB,CCKG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,gBAAgB,CAAG,CAAA,CAAA,MAAM,CAAC,aAAa,CAAE,CAAW,SAAA,CAAA,CAAE,CAAC;ADJhE,CCMG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAAC,YAAY,CAAE,gBAAgB,CAAE,CAAA,IAAI,CAAE,CAAA,IAAI,CAAE,CAAA,CAAA;AACjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,YAAY,CAAA,CAAE,CAAO,KAAA,CAAA;AACrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAC;AACL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAE,CAAC;ADLN,CCME,CAAA,CAAA,CAAA,CAAA;AACD,CAAA;AAED,CAAA,CAAA,CAAA;ADNA,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;ACQhF,CAAA,CAAA,CAAA;AACH,QAAA,CAAS,0BAA0B,CAAE,SAA4B,CAAA,CAAE,MAAc,CAAA,CAAE,KAAY,CAAA,CAAA,CAAA;ADN/F,CCOC,CAAA,CAAA,CAAA,KAAA,CAAM,MAAM,CAAG,CAAA,CAAA,wBAAwB,CAAE,SAAS,CAAA,CAAE,KAAK,CAAE,CAAC;ADN7D,CCQC,CAAA,CAAA,CAAA,MAAA,CAAO,MAAM,CAAC,UAAU,CAAE,MAAM,CAAA,CAAE,CAAW,SAAA,CAAA,CAAE,CAAC;AACjD,CAAC;AAED,CAAA,CAAA,CAAA;ADRA,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;ACUlI,CAAA,CAAA,CAAA;AACH,QAAA,CAAS,wBAAwB,CAAE,SAA4B,CAAA,CAAE,KAAY,CAAA,CAAA,CAAA;ADR7E,CCSC,CAAA,CAAA,CAAA,KAAA,CAAM,cAAc,CAAG,CAAA,CAAA,yBAAyB,CAAE,SAAS,CAAA,CAAE,KAAK,CAAE,CAAC;AACrE,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,MAAM,CAAG,CAAA,CAAA,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC;AAE3C,CAAA,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA,MAAM,CAAC,OAAO,CAAA,CAAA,CAAA,CAAI,CAAC,MAAM,CAAC,EAAE,CAAE,CAAA,OAAA,CAAS,CAAE,CAAA,CAAA,CAAA,IAAA,CAAO,CAAE,CAAG,CAAA,CAAA;ADT3D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCUL,MAAO,CAAA,MAAM,CAAC,MAAiB,CAAC;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA;AAED,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,MAAiB,CAAC;AAC1B,CAAA;ADVA;AE/DA,CAAA,CAAA,CAAA;AFiEA,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AACrF,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO;AE/DhF,CAAA,CAAA,CAAA;AAEH,CAAA,CAAA,CAAA;AFgEA,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB;AE9DnC,CAAA,CAAA,CAAA;AAUH,CAAA,CAAA,CAAA;AFuDA,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AErD/B,CAAA,CAAA,CAAA;AACkB,KAAA,CAAA,gBAAiB,CAAQ,OAAA,CAAA,MAAM,CAAA,CAAA;AACnD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFuDD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;AErDd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACI,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAW,UAAU,CAAA,CAAA,CAAA,CAAA;AAC3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,CAAA,gBAAA,CAA2B,CAAC;AFuDrC,CEtDE,CAAA,CAAA,CAAA,CAAA;AAED,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFsDD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;AEpDd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFsDJ,CAAC,CAAC,CAAC,CErDK,IAAI,CAAA,CAAA,CAAA,CAAA;AACV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA,CAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,MAAM,CAAG,CAAA,CAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AACnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,CAAC,CAAA,CAAA,CAAG,MAAM,CAAC,CAAC,CAAC;AACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,UAAU,CAAA,CAAA,CAAG,MAAM,CAAC,UAAU,CAAC;AAErC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAM,CAAC,QAAQ,CAAE,CAAA,SAAA,CAAW,CAAE,CAAA,CAAA;AAC7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,cAAc,CAAA,CAAE,CAAc,CAAA,WAAA,CAAA;AAC9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAC;AAEJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAU,CAAC,GAAG,CAAE,CAAA,YAAA,CAAc,CAAE,CAAC,kBAAkB,CAAE,CAAA;AACpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAAA,CAAE,CAAW,SAAA,CAAA,CAAA;AFoDrB,CEnDG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAAA,CAAE,CAAE,YAAY,CAAA,CAAE,CAAE,CAAA,MAAM,CAAA,CAAE,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA;AACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,UAAU,CAAG,CAAA,CAAA,MAAM,CAAC,sBAAsB,CAAE,CAAA,GAAA,CAAK,CACtD,CAAA,CAAA;AACC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAAA,CAAE,CAAY,IAAA,CAAA,KAAA,CAAA,CAAA;AFmDzB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AEjDjG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAAA,CAAE,CAA0B,IAAA,CAAA,KAAA,CAAA,KAAA,CAAA,CAAA,MAAA,CAAA;AACjC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFmDN,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAClE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC;AEjD5F,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAM,CAAC,sBAAsB,CAAE,CAAA,IAAA,CAAM,CAAE,CAAA,CAAA;AACtC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAAA,CAAE,CAAe,OAAA,CAAA,CAAA,IAAA,CAAA;AACtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CACH,CAAC;AAEF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,UAAU,CAAC;AFiDtB,CEhDI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAC;AAEJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAU,CAAC,GAAG,CAAE,CAAA,eAAA,CAAiB,CAAE,CAAC,kBAAkB,CAAE,CAAA;AACvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAAA,CAAE,CAAW,SAAA,CAAA,CAAA;AFgDrB,CE/CG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAAA,CAAE,CAAE,YAAY,CAAA,CAAE,CAAE,CAAA,MAAM,CAAA,CAAE,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA;AACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,KAAK,CAAA,CAAA,CAAG,CAAC,CAAE,CAAA,IAAA,CAAA,KAAA,CAAY,CAAE,CAAC;AFgDpC,CE/CI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,WAAW,CAAG,CAAA,CAAA,MAAM,CAAC,sBAAsB,CAAE,CAAK,GAAA,CAAA,CAAE,CAAC;AAC3D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,gBAAgB,CAAA,CAAA,CAAG,MAAM,CAAC,gBAAgB,CAC/C,CAAA,IAAA,CAAM,CACN,CAAA,CAAA,CAAE,KAAK,CAAE,CAAA,CAAA,IAAA,CAAA,YAAA,CAAmB,CAAA,CAAE,CAC9B,CAAA,QAAA,CAAA,CAAU,UAAU,CAAA,CAAA,CAAA;AACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAU,CAAC,SAAS,CAAA,CAAA,CAAG,CAAC,CAAE,CAAA,IAAA,CAAA,KAAA,CAAY,CAAE,CAAC;AAC1C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CACD,CAAC;AAEF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAM,CAAC,QAAQ,CAAE,CAAA,IAAA,CAAA,KAAA,CAAY,CAAE,CAAA,WAAW,CAAE,CAAC;AAC7C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAM,CAAC,MAAM,CAAE,MAAM,CAAC,gBAAgB,CAAE,WAAW,CAAA,CAAE,CAAC,CAAE,CAAE,CAAA,gBAAgB,CAAE,CAAC;AF2CjF,CEzCI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,iBAAiB,CAAE,WAAW,CAAA,CAAE,MAAM,CAAA,CAAE,KAAK,CAAE,CAAC;AF0C3D,CEzCI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAC;AAEJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAU,CAAC,GAAG,CAAE,CAAA,MAAA,CAAQ,CAAE;AACxB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,gBAAgB,CAAE,CAAA;AFyCtB,CExCI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAAE,CAAA,OAAO,CAAG,CAAA,CAAA,CAAA,CAAA;AFyCpB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;AAC3G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACxD,CEvCK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,kBAAkB,CAAA,CAAA,CAAG,OAAO,CAAC,QAAQ,CAAE,CAAmB,IAAA,CAAA,KAAA,CAAA,MAAA,CAAA,CAAE,CAAI,CAAA,CAAA,CAAA,CAAA,MAAA,CAAQ,CAAC;AFwCpF,CEvCK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,iBAAiB,CAAA,CAAA,CAAG,OAAO,CAAC,QAAQ,CAAE,CAAkB,IAAA,CAAA,KAAA,CAAA,KAAA,CAAA,CAAE,CAAI,CAAA,CAAA,CAAA,CAAA,MAAA,CAAQ,CAAC;AAE7E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,CAAC,kBAAkB,CAAI,CAAA,CAAA,CAAA,CAAC,iBAAiB,CAAG,CAAA,CAAA;AAChD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,IAAI,CAAC;AACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFuCN,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;AEpChF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,OAAO,CAAC,UAAU,CAAA,CAAA,CAAA,CAAI,CAAC,CAAG,CAAA,CAAA;AFsCpC,CErCM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,QAAQ,CAAG,CAAA,CAAA,OAAO,CAAC,QAAQ,CAAE,CAAC,CAAE,CAAC;AFsC7C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;AEnC5E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAK,CAAC,QAAS,CAAC,EAAE,CAAE,CAAA,OAAA,CAAS,CAAE,CAAA,CAAA,IAAA,CAAM,CAAE,CAAI,CAAA,CAAA,CAAA,QAAQ,CAAC,QAAQ,CAAE,CAAA,OAAA,CAAS,CAAE,CAAA,CAAA,CAAA,CAAI,CAAA,IAAA,CAAM,CAAG,CAAA,CAAA;AACrF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,IAAI,CAAC;AACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAK,OAAO,CAAC,UAAU,CAAA,CAAA,CAAG,CAAC,CAAG,CAAA,CAAA;AACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,IAAI,CAAC;AACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAED,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,CAAE,CAAA,IAAI,CAAE,CAAA,IAAI,CAAA,CAAE,CAAC;AFqC3B,CEpCK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAAA,CAAE,CAAW,SAAA,CAAA,CAAA;AFqCtB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG;AAC9F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AElCxE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,iBAAiB,CAAA,CAAE,CAAM,IAAA,CAAA;AACzB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAC;AAEL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,CAAA,SAAA,CAAW,CAAE,CAAA,GAAA,CAAI,gBAAgB,CAAE,MAAM,CAAE,CAAE,CAAC;AFmCrE,CElCE,CAAA,CAAA,CAAA,CAAA;AACD,CAAA;AAED,CAAA,CAAA,CAAA;AFkCA,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACtF,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE;AACrG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;AAC7C,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AEhClG,CAAA,CAAA,CAAA;AACH,QAAA,CAAS,iBAAiB,CAAE,WAAwB,CAAA,CAAE,MAAsB,CAAA,CAAE,KAAa,CAAA,CAAA,CAAA;AFkC3F,CEjCC,CAAA,CAAA,CAAA,MAAM,CAAC,iBAAiB,CAAE,CAAA,SAAA,CAAW,CAAA,CAAE,IAAI,CAAA,CAAE,WAAW,CAAE,CAAC;AFkC5D,CEhCC,CAAA,CAAA,CAAA,MAAA,CAAO,QAAQ,CAAE,WAAW,CAAA,CAAE,MAAM,CAAA,CAAE,CAAE,CAAA,KAAK,CAAE,CAAA,CAAE,CAAC;AACnD,CAAA;AFiCA;AACA,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACnU;AGpKA,CAAA,CAAA,CAAA;AHsKA,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AACrF,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO;AGpKhF,CAAA,CAAA,CAAA;AAEH,CAAA,CAAA,CAAA;AHqKA,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW;AGnK9B,CAAA,CAAA,CAAA;AAOH,CAAA,CAAA,CAAA;AH+JA,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC;AG7JzB,CAAA,CAAA,CAAA;AACkB,KAAA,CAAA,WAAY,CAAQ,OAAA,CAAA,MAAM,CAAA,CAAA;AAC9C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AH+JD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;AG7Jd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACI,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAW,UAAU,CAAA,CAAA,CAAA,CAAA;AAC3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,CAAA,WAAA,CAAsB,CAAC;AH+JhC,CG9JE,CAAA,CAAA,CAAA,CAAA;AAED,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AH8JD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;AG5Jd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AH8JJ,CAAC,CAAC,CAAC,CG7JK,IAAI,CAAA,CAAA,CAAA,CAAA;AACV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA,CAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,CAAC,CAAA,CAAA,CAAG,MAAM,CAAC,CAAC,CAAC;AH8JrB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;AACtD,CG5JE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAE,CAAA,SAAA,CAAW,CAAE,CAAA,MAAM,CAAG,CAAA,CAAA,CAAA,CAAA;AH6JxD,CG5JG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA,CAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,CAAW,SAAA,CAAA,CAAG,CAAC;AACpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,IAAI,CAAG,CAAA,CAAA,GAAA,CAAI,UAAU,CAAE,MAAM,CAAE,CAAC;AH6JzC,CG3JG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAAC,GAAG,CAAE,CAAA;AACT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAAA,CAAE,CAAC,CAAE,CAAA,IAAA,CAAA,KAAA,CAAY,CAAE,CAAA;AACxB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAAA,CAAE,aAAa,CAAA;AACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAO,CAAA,CAAE,IAAI;AACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAC;AAEJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAAC,IAAI,CAAE,CAAW,SAAA,CAAA,CAAE,CAAC,EAAE,CAAE,OAAO,CAAE,CAAA,CAAA,SAAA,CAAW,CAAE,CAAC;AH2JvD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAC/B,CGzJG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAAC,QAAQ,CAAE,IAAI,CAAE,CAAA,CAAA,OAAA,CAAS,CAAA,CAAE,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAM,CAAC,OAAO,CAAE,CAAA,SAAA,CAAW,CAAE,CAAC;AAC9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC;AAC7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAE,CAAC;AAEJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,IAAI,CAAC;AACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAE,CAAC;AHyJN,CGxJE,CAAA,CAAA,CAAA,CAAA;AACD,CAAA;AHyJD;AI/MA,CAAA,CAAA,CAAA;AJiNA,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AACrF,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO;AI/MhF,CAAA,CAAA,CAAA;AAEH,CAAA,CAAA,CAAA;AJgNA,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS;AI9M5B,CAAA,CAAA,CAAA;AAQH,CAAA,CAAA,CAAA;AJyMA,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAChF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;AIvMjG,CAAA,CAAA,CAAA;AACkB,KAAA,CAAA,SAAU,CAAQ,OAAA,CAAA,MAAM,CAAA,CAAA;AAC5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AJyMD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;AIvMd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACI,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAW,QAAQ,CAAA,CAAA,CAAA,CAAA;AACzB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,CAAE,gBAAgB,CAAA,CAAE,WAAW,CAAE,CAAA,MAAM,CAAW,CAAC;AJyM5D,CIxME,CAAA,CAAA,CAAA,CAAA;AAED,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AJwMD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;AItMd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACI,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAW,UAAU,CAAA,CAAA,CAAA,CAAA;AAC3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,CAAA,SAAA,CAAoB,CAAC;AJwM9B,CIvME,CAAA,CAAA,CAAA,CAAA;AACD,CAAA;AJwMD;AACA,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG","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 { ButtonView } from '@ckeditor/ckeditor5-ui/dist/index.js';\n\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\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 */\nclass PageBreakCommand extends Command {\n /**\n * @inheritDoc\n */\n 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 * Executes the command.\n *\n * @fires execute\n */\n 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 */\nfunction 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 */\nfunction getInsertPageBreakParent(selection, model) {\n const insertionRange = findOptimalInsertionRange(selection, model);\n const parent = insertionRange.start.parent;\n if (parent.isEmpty && !parent.is('element', '$root')) {\n return parent.parent;\n }\n return parent;\n}\n\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n/**\n * @module page-break/pagebreakediting\n */\n/**\n * The page break editing feature.\n */\nclass PageBreakEditing extends Plugin {\n /**\n * @inheritDoc\n */\n static get pluginName() {\n return 'PageBreakEditing';\n }\n /**\n * @inheritDoc\n */\n 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 }, \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', { class: 'page-break__label' }, 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')\n .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 }\n else if (element.childCount > 1) {\n return null;\n }\n return { name: true };\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~Element} to a page break widget:\n * * Adds a {@link module:engine/view/element~Element#_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 writer.setCustomProperty('pageBreak', true, viewElement);\n return toWidget(viewElement, writer, { label });\n}\n\nvar pageBreakIcon = \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M3.598.687h1.5v5h-1.5zm14.5 0h1.5v5h-1.5z\\\"/><path d=\\\"M19.598 4.187v1.5h-16v-1.5zm-16 14.569h1.5v-5h-1.5zm14.5 0h1.5v-5h-1.5z\\\"/><path d=\\\"M19.598 15.256v-1.5h-16v1.5zM5.081 9h6v2h-6zm8 0h6v2h-6zm-9.483 1L0 12.5v-5z\\\"/></svg>\";\n\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n/**\n * @module page-break/pagebreakui\n */\n/**\n * The page break UI plugin.\n */\nclass PageBreakUI extends Plugin {\n /**\n * @inheritDoc\n */\n static get pluginName() {\n return 'PageBreakUI';\n }\n /**\n * @inheritDoc\n */\n init() {\n const editor = this.editor;\n const t = editor.t;\n // Add pageBreak button to feature components.\n editor.ui.componentFactory.add('pageBreak', locale => {\n const command = editor.commands.get('pageBreak');\n const view = new ButtonView(locale);\n view.set({\n label: t('Page break'),\n icon: pageBreakIcon,\n tooltip: true\n });\n view.bind('isEnabled').to(command, 'isEnabled');\n // Execute command.\n this.listenTo(view, 'execute', () => {\n editor.execute('pageBreak');\n editor.editing.view.focus();\n });\n return view;\n });\n }\n}\n\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\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 */\nclass PageBreak extends Plugin {\n /**\n * @inheritDoc\n */\n static get requires() {\n return [PageBreakEditing, PageBreakUI, Widget];\n }\n /**\n * @inheritDoc\n */\n static get pluginName() {\n return 'PageBreak';\n }\n}\n\nexport { PageBreak, PageBreakEditing, PageBreakUI };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module page-break/pagebreakcommand\n */\n\nimport { Command } from 'ckeditor5/src/core.js';\nimport { findOptimalInsertionRange } from 'ckeditor5/src/widget.js';\nimport type { DocumentSelection, Element, Model, Schema } from 'ckeditor5/src/engine.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 */\nexport default 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: DocumentSelection, schema: Schema, 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: DocumentSelection, model: Model ): Element {\n\tconst insertionRange = findOptimalInsertionRange( selection, model );\n\tconst parent = insertionRange.start.parent;\n\n\tif ( parent.isEmpty && !parent.is( 'element', '$root' ) ) {\n\t\treturn parent.parent as Element;\n\t}\n\n\treturn parent as Element;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module page-break/pagebreakediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport { toWidget } from 'ckeditor5/src/widget.js';\nimport type { DowncastWriter, ViewElement } from 'ckeditor5/src/engine.js';\n\nimport PageBreakCommand from './pagebreakcommand.js';\n\nimport '../theme/pagebreak.css';\n\n/**\n * The page break editing feature.\n */\nexport default 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 */\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 { name: true };\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~Element} to a page break widget:\n * * Adds a {@link module:engine/view/element~Element#_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: DowncastWriter, label: string ): ViewElement {\n\twriter.setCustomProperty( 'pageBreak', true, viewElement );\n\n\treturn toWidget( viewElement, writer, { label } );\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module page-break/pagebreakui\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport { ButtonView } from 'ckeditor5/src/ui.js';\n\nimport pageBreakIcon from '../theme/icons/pagebreak.svg';\n\n/**\n * The page break UI plugin.\n */\nexport default 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 init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\t// Add pageBreak button to feature components.\n\t\teditor.ui.componentFactory.add( 'pageBreak', locale => {\n\t\t\tconst command = editor.commands.get( 'pageBreak' )!;\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\tlabel: t( 'Page break' ),\n\t\t\t\ticon: pageBreakIcon,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tview.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\n\t\t\t// Execute command.\n\t\t\tthis.listenTo( view, 'execute', () => {\n\t\t\t\teditor.execute( 'pageBreak' );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module page-break/pagebreak\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport { Widget } from 'ckeditor5/src/widget.js';\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 default 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"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, 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
|
+
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
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, 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
|
|
7
|
+
*/
|
|
8
|
+
export { default as PageBreak } from './pagebreak.js';
|
|
9
|
+
export { default as PageBreakEditing } from './pagebreakediting.js';
|
|
10
|
+
export { default as PageBreakUI } from './pagebreakui.js';
|
|
11
|
+
export type { default as PageBreakCommand } from './pagebreakcommand.js';
|
|
12
|
+
import './augmentation.js';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, 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/pagebreak
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin } from 'ckeditor5/src/core.js';
|
|
9
|
+
import { Widget } from 'ckeditor5/src/widget.js';
|
|
10
|
+
import PageBreakEditing from './pagebreakediting.js';
|
|
11
|
+
import PageBreakUI from './pagebreakui.js';
|
|
12
|
+
/**
|
|
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
|
+
export default class PageBreak extends Plugin {
|
|
20
|
+
/**
|
|
21
|
+
* @inheritDoc
|
|
22
|
+
*/
|
|
23
|
+
static get requires(): readonly [typeof PageBreakEditing, typeof PageBreakUI, typeof Widget];
|
|
24
|
+
/**
|
|
25
|
+
* @inheritDoc
|
|
26
|
+
*/
|
|
27
|
+
static get pluginName(): "PageBreak";
|
|
28
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, 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/pagebreakcommand
|
|
7
|
+
*/
|
|
8
|
+
import { Command } from 'ckeditor5/src/core.js';
|
|
9
|
+
/**
|
|
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
|
+
export default class PageBreakCommand extends Command {
|
|
19
|
+
/**
|
|
20
|
+
* @inheritDoc
|
|
21
|
+
*/
|
|
22
|
+
refresh(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Executes the command.
|
|
25
|
+
*
|
|
26
|
+
* @fires execute
|
|
27
|
+
*/
|
|
28
|
+
execute(): void;
|
|
29
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, 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.js';
|
|
9
|
+
import '../theme/pagebreak.css';
|
|
10
|
+
/**
|
|
11
|
+
* The page break editing feature.
|
|
12
|
+
*/
|
|
13
|
+
export default class PageBreakEditing extends Plugin {
|
|
14
|
+
/**
|
|
15
|
+
* @inheritDoc
|
|
16
|
+
*/
|
|
17
|
+
static get pluginName(): "PageBreakEditing";
|
|
18
|
+
/**
|
|
19
|
+
* @inheritDoc
|
|
20
|
+
*/
|
|
21
|
+
init(): void;
|
|
22
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, 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.js';
|
|
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ckeditor/ckeditor5-page-break",
|
|
3
|
-
"version": "41.
|
|
3
|
+
"version": "41.3.0-alpha.1",
|
|
4
4
|
"description": "Page break feature for CKEditor 5.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ckeditor",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"type": "module",
|
|
14
14
|
"main": "src/index.js",
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"ckeditor5": "41.
|
|
16
|
+
"ckeditor5": "41.3.0-alpha.1"
|
|
17
17
|
},
|
|
18
18
|
"author": "CKSource (http://cksource.com/)",
|
|
19
19
|
"license": "GPL-2.0-or-later",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"directory": "packages/ckeditor5-page-break"
|
|
26
26
|
},
|
|
27
27
|
"files": [
|
|
28
|
+
"dist",
|
|
28
29
|
"lang",
|
|
29
30
|
"src/**/*.js",
|
|
30
31
|
"src/**/*.d.ts",
|