@ckeditor/ckeditor5-minimap 41.4.2 → 42.0.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/README.md +6 -0
- package/dist/index.js +166 -128
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/minimapiframeview.js +1 -1
- package/src/minimappositiontrackerview.js +1 -1
package/README.md
CHANGED
|
@@ -15,6 +15,12 @@ Check out the demo in the [content minimap feature guide](https://ckeditor.com/d
|
|
|
15
15
|
|
|
16
16
|
See the [`@ckeditor/ckeditor5-minimap` package](https://ckeditor.com/docs/ckeditor5/latest/api/minimap.html) page as well as the [Content minimap feature](https://ckeditor.com/docs/ckeditor5/latest/features/minimap.html) guide in [CKEditor 5 documentation](https://ckeditor.com/docs/ckeditor5/latest/).
|
|
17
17
|
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install ckeditor5
|
|
22
|
+
```
|
|
23
|
+
|
|
18
24
|
## License
|
|
19
25
|
|
|
20
26
|
Licensed under the terms of [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/gpl.html). For full details about the license, please check the `LICENSE.md` file or [https://ckeditor.com/legal/ckeditor-oss-license](https://ckeditor.com/legal/ckeditor-oss-license).
|
package/dist/index.js
CHANGED
|
@@ -7,29 +7,58 @@ import { toUnit, global, Rect, findClosestScrollableAncestor } from '@ckeditor/c
|
|
|
7
7
|
import { IframeView, View } from '@ckeditor/ckeditor5-ui/dist/index.js';
|
|
8
8
|
import { DomConverter, Renderer } from '@ckeditor/ckeditor5-engine/dist/index.js';
|
|
9
9
|
|
|
10
|
-
const toPx$1 = toUnit('px');
|
|
11
|
-
|
|
10
|
+
const toPx$1 = /* #__PURE__ */ toUnit('px');
|
|
11
|
+
/**
|
|
12
|
+
* The internal `<iframe>` view that hosts the minimap content.
|
|
13
|
+
*
|
|
14
|
+
* @internal
|
|
15
|
+
*/ class MinimapIframeView extends IframeView {
|
|
12
16
|
/**
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
* Cached view constructor options for re-use in other methods.
|
|
18
|
+
*/ _options;
|
|
19
|
+
/**
|
|
20
|
+
* Creates an instance of the internal minimap iframe.
|
|
21
|
+
*/ constructor(locale, options){
|
|
22
|
+
super(locale);
|
|
23
|
+
const bind = this.bindTemplate;
|
|
24
|
+
this.set('top', 0);
|
|
25
|
+
this.set('height', 0);
|
|
26
|
+
this._options = options;
|
|
27
|
+
this.extendTemplate({
|
|
28
|
+
attributes: {
|
|
29
|
+
tabindex: -1,
|
|
30
|
+
'aria-hidden': 'true',
|
|
31
|
+
class: [
|
|
32
|
+
'ck-minimap__iframe'
|
|
33
|
+
],
|
|
34
|
+
style: {
|
|
35
|
+
top: bind.to('top', (top)=>toPx$1(top)),
|
|
36
|
+
height: bind.to('height', (height)=>toPx$1(height))
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @inheritDoc
|
|
43
|
+
*/ render() {
|
|
15
44
|
return super.render().then(()=>{
|
|
16
45
|
this._prepareDocument();
|
|
17
46
|
});
|
|
18
47
|
}
|
|
19
48
|
/**
|
|
20
|
-
|
|
21
|
-
|
|
49
|
+
* Sets the new height of the iframe.
|
|
50
|
+
*/ setHeight(newHeight) {
|
|
22
51
|
this.height = newHeight;
|
|
23
52
|
}
|
|
24
53
|
/**
|
|
25
|
-
|
|
26
|
-
|
|
54
|
+
* Sets the top offset of the iframe to move it around vertically.
|
|
55
|
+
*/ setTopOffset(newOffset) {
|
|
27
56
|
this.top = newOffset;
|
|
28
57
|
}
|
|
29
58
|
/**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
59
|
+
* Sets the internal structure of the `<iframe>` readying it to display the
|
|
60
|
+
* minimap element.
|
|
61
|
+
*/ _prepareDocument() {
|
|
33
62
|
const iframeDocument = this.element.contentWindow.document;
|
|
34
63
|
const domRootClone = iframeDocument.adoptNode(this._options.domRootClone);
|
|
35
64
|
const boxStyles = this._options.useSimplePreview ? `
|
|
@@ -96,35 +125,45 @@ class MinimapIframeView extends IframeView {
|
|
|
96
125
|
iframeDocument.close();
|
|
97
126
|
iframeDocument.body.appendChild(domRootClone);
|
|
98
127
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const toPx = /* #__PURE__ */ toUnit('px');
|
|
131
|
+
/**
|
|
132
|
+
* The position tracker visualizing the visible subset of the content. Displayed over the minimap.
|
|
133
|
+
*
|
|
134
|
+
* @internal
|
|
135
|
+
*/ class MinimapPositionTrackerView extends View {
|
|
136
|
+
constructor(locale){
|
|
102
137
|
super(locale);
|
|
103
138
|
const bind = this.bindTemplate;
|
|
104
|
-
this.set('top', 0);
|
|
105
139
|
this.set('height', 0);
|
|
106
|
-
this.
|
|
107
|
-
this.
|
|
140
|
+
this.set('top', 0);
|
|
141
|
+
this.set('scrollProgress', 0);
|
|
142
|
+
this.set('_isDragging', false);
|
|
143
|
+
this.setTemplate({
|
|
144
|
+
tag: 'div',
|
|
108
145
|
attributes: {
|
|
109
|
-
tabindex: -1,
|
|
110
|
-
'aria-hidden': 'true',
|
|
111
146
|
class: [
|
|
112
|
-
'ck
|
|
147
|
+
'ck',
|
|
148
|
+
'ck-minimap__position-tracker',
|
|
149
|
+
bind.if('_isDragging', 'ck-minimap__position-tracker_dragging')
|
|
113
150
|
],
|
|
114
151
|
style: {
|
|
115
|
-
top: bind.to('top', (top)=>toPx
|
|
116
|
-
height: bind.to('height', (height)=>toPx
|
|
117
|
-
}
|
|
152
|
+
top: bind.to('top', (top)=>toPx(top)),
|
|
153
|
+
height: bind.to('height', (height)=>toPx(height))
|
|
154
|
+
},
|
|
155
|
+
'data-progress': bind.to('scrollProgress')
|
|
156
|
+
},
|
|
157
|
+
on: {
|
|
158
|
+
mousedown: bind.to(()=>{
|
|
159
|
+
this._isDragging = true;
|
|
160
|
+
})
|
|
118
161
|
}
|
|
119
162
|
});
|
|
120
163
|
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
const toPx = toUnit('px');
|
|
124
|
-
class MinimapPositionTrackerView extends View {
|
|
125
164
|
/**
|
|
126
|
-
|
|
127
|
-
|
|
165
|
+
* @inheritDoc
|
|
166
|
+
*/ render() {
|
|
128
167
|
super.render();
|
|
129
168
|
this.listenTo(global.document, 'mousemove', (evt, data)=>{
|
|
130
169
|
if (!this._isDragging) {
|
|
@@ -141,91 +180,109 @@ class MinimapPositionTrackerView extends View {
|
|
|
141
180
|
});
|
|
142
181
|
}
|
|
143
182
|
/**
|
|
144
|
-
|
|
145
|
-
|
|
183
|
+
* Sets the new height of the tracker to visualize the subset of the content visible to the user.
|
|
184
|
+
*/ setHeight(newHeight) {
|
|
146
185
|
this.height = newHeight;
|
|
147
186
|
}
|
|
148
187
|
/**
|
|
149
|
-
|
|
150
|
-
|
|
188
|
+
* Sets the top offset of the tracker to move it around vertically.
|
|
189
|
+
*/ setTopOffset(newOffset) {
|
|
151
190
|
this.top = newOffset;
|
|
152
191
|
}
|
|
153
192
|
/**
|
|
154
|
-
|
|
155
|
-
|
|
193
|
+
* Sets the scroll progress (in %) to inform the user using a label when the tracker is being dragged.
|
|
194
|
+
*/ setScrollProgress(newProgress) {
|
|
156
195
|
this.scrollProgress = newProgress;
|
|
157
196
|
}
|
|
158
|
-
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* The main view of the minimap. It renders the original content but scaled down with a tracker element
|
|
201
|
+
* visualizing the subset of the content visible to the user and allowing interactions (scrolling, dragging).
|
|
202
|
+
*
|
|
203
|
+
* @internal
|
|
204
|
+
*/ class MinimapView extends View {
|
|
205
|
+
/**
|
|
206
|
+
* An instance of the tracker view displayed over the minimap.
|
|
207
|
+
*/ _positionTrackerView;
|
|
208
|
+
/**
|
|
209
|
+
* The scale ratio of the minimap relative to the original editing DOM root with the content.
|
|
210
|
+
*/ _scaleRatio;
|
|
211
|
+
/**
|
|
212
|
+
* An instance of the iframe view that hosts the minimap.
|
|
213
|
+
*/ _minimapIframeView;
|
|
214
|
+
/**
|
|
215
|
+
* Creates an instance of the minimap view.
|
|
216
|
+
*/ constructor({ locale, scaleRatio, pageStyles, extraClasses, useSimplePreview, domRootClone }){
|
|
159
217
|
super(locale);
|
|
160
218
|
const bind = this.bindTemplate;
|
|
161
|
-
this.
|
|
162
|
-
this.
|
|
163
|
-
this.
|
|
164
|
-
this.
|
|
219
|
+
this._positionTrackerView = new MinimapPositionTrackerView(locale);
|
|
220
|
+
this._positionTrackerView.delegate('drag').to(this);
|
|
221
|
+
this._scaleRatio = scaleRatio;
|
|
222
|
+
this._minimapIframeView = new MinimapIframeView(locale, {
|
|
223
|
+
useSimplePreview,
|
|
224
|
+
pageStyles,
|
|
225
|
+
extraClasses,
|
|
226
|
+
scaleRatio,
|
|
227
|
+
domRootClone
|
|
228
|
+
});
|
|
165
229
|
this.setTemplate({
|
|
166
230
|
tag: 'div',
|
|
167
231
|
attributes: {
|
|
168
232
|
class: [
|
|
169
233
|
'ck',
|
|
170
|
-
'ck-
|
|
171
|
-
|
|
172
|
-
],
|
|
173
|
-
style: {
|
|
174
|
-
top: bind.to('top', (top)=>toPx(top)),
|
|
175
|
-
height: bind.to('height', (height)=>toPx(height))
|
|
176
|
-
},
|
|
177
|
-
'data-progress': bind.to('scrollProgress')
|
|
234
|
+
'ck-minimap'
|
|
235
|
+
]
|
|
178
236
|
},
|
|
237
|
+
children: [
|
|
238
|
+
this._positionTrackerView
|
|
239
|
+
],
|
|
179
240
|
on: {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
})
|
|
241
|
+
click: bind.to(this._handleMinimapClick.bind(this)),
|
|
242
|
+
wheel: bind.to(this._handleMinimapMouseWheel.bind(this))
|
|
183
243
|
}
|
|
184
244
|
});
|
|
185
245
|
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
class MinimapView extends View {
|
|
189
246
|
/**
|
|
190
|
-
|
|
191
|
-
|
|
247
|
+
* @inheritDoc
|
|
248
|
+
*/ destroy() {
|
|
192
249
|
this._minimapIframeView.destroy();
|
|
193
250
|
super.destroy();
|
|
194
251
|
}
|
|
195
252
|
/**
|
|
196
|
-
|
|
197
|
-
|
|
253
|
+
* Returns the DOM {@link module:utils/dom/rect~Rect} height of the minimap.
|
|
254
|
+
*/ get height() {
|
|
198
255
|
return new Rect(this.element).height;
|
|
199
256
|
}
|
|
200
257
|
/**
|
|
201
|
-
|
|
202
|
-
|
|
258
|
+
* Returns the number of available space (pixels) the position tracker (visible subset of the content) can use to scroll vertically.
|
|
259
|
+
*/ get scrollHeight() {
|
|
203
260
|
return Math.max(0, Math.min(this.height, this._minimapIframeView.height) - this._positionTrackerView.height);
|
|
204
261
|
}
|
|
205
262
|
/**
|
|
206
|
-
|
|
207
|
-
|
|
263
|
+
* @inheritDoc
|
|
264
|
+
*/ render() {
|
|
208
265
|
super.render();
|
|
209
266
|
this._minimapIframeView.render();
|
|
210
267
|
this.element.appendChild(this._minimapIframeView.element);
|
|
211
268
|
}
|
|
212
269
|
/**
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
270
|
+
* Sets the new height of the minimap (in px) to respond to the changes in the original editing DOM root.
|
|
271
|
+
*
|
|
272
|
+
* **Note**:The provided value should be the `offsetHeight` of the original editing DOM root.
|
|
273
|
+
*/ setContentHeight(newHeight) {
|
|
217
274
|
this._minimapIframeView.setHeight(newHeight * this._scaleRatio);
|
|
218
275
|
}
|
|
219
276
|
/**
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
277
|
+
* Sets the minimap scroll progress.
|
|
278
|
+
*
|
|
279
|
+
* The minimap scroll progress is linked to the original editing DOM root and its scrollable container (ancestor).
|
|
280
|
+
* Changing the progress will alter the vertical position of the minimap (and its position tracker) and give the user an accurate
|
|
281
|
+
* overview of the visible document.
|
|
282
|
+
*
|
|
283
|
+
* **Note**: The value should be between 0 and 1. 0 when the DOM root has not been scrolled, 1 when the
|
|
284
|
+
* scrolling has reached the end.
|
|
285
|
+
*/ setScrollProgress(newScrollProgress) {
|
|
229
286
|
const iframeView = this._minimapIframeView;
|
|
230
287
|
const positionTrackerView = this._positionTrackerView;
|
|
231
288
|
// The scrolling should end when the bottom edge of the iframe touches the bottom edge of the minimap.
|
|
@@ -240,13 +297,13 @@ class MinimapView extends View {
|
|
|
240
297
|
positionTrackerView.setScrollProgress(Math.round(newScrollProgress * 100));
|
|
241
298
|
}
|
|
242
299
|
/**
|
|
243
|
-
|
|
244
|
-
|
|
300
|
+
* Sets the new height of the tracker (in px) to visualize the subset of the content visible to the user.
|
|
301
|
+
*/ setPositionTrackerHeight(trackerHeight) {
|
|
245
302
|
this._positionTrackerView.setHeight(trackerHeight * this._scaleRatio);
|
|
246
303
|
}
|
|
247
304
|
/**
|
|
248
|
-
|
|
249
|
-
|
|
305
|
+
* @param data DOM event data
|
|
306
|
+
*/ _handleMinimapClick(data) {
|
|
250
307
|
const positionTrackerView = this._positionTrackerView;
|
|
251
308
|
if (data.target === positionTrackerView.element) {
|
|
252
309
|
return;
|
|
@@ -257,42 +314,10 @@ class MinimapView extends View {
|
|
|
257
314
|
this.fire('click', percentage);
|
|
258
315
|
}
|
|
259
316
|
/**
|
|
260
|
-
|
|
261
|
-
|
|
317
|
+
* @param data DOM event data
|
|
318
|
+
*/ _handleMinimapMouseWheel(data) {
|
|
262
319
|
this.fire('drag', data.deltaY * this._scaleRatio);
|
|
263
320
|
}
|
|
264
|
-
/**
|
|
265
|
-
* Creates an instance of the minimap view.
|
|
266
|
-
*/ constructor({ locale, scaleRatio, pageStyles, extraClasses, useSimplePreview, domRootClone }){
|
|
267
|
-
super(locale);
|
|
268
|
-
const bind = this.bindTemplate;
|
|
269
|
-
this._positionTrackerView = new MinimapPositionTrackerView(locale);
|
|
270
|
-
this._positionTrackerView.delegate('drag').to(this);
|
|
271
|
-
this._scaleRatio = scaleRatio;
|
|
272
|
-
this._minimapIframeView = new MinimapIframeView(locale, {
|
|
273
|
-
useSimplePreview,
|
|
274
|
-
pageStyles,
|
|
275
|
-
extraClasses,
|
|
276
|
-
scaleRatio,
|
|
277
|
-
domRootClone
|
|
278
|
-
});
|
|
279
|
-
this.setTemplate({
|
|
280
|
-
tag: 'div',
|
|
281
|
-
attributes: {
|
|
282
|
-
class: [
|
|
283
|
-
'ck',
|
|
284
|
-
'ck-minimap'
|
|
285
|
-
]
|
|
286
|
-
},
|
|
287
|
-
children: [
|
|
288
|
-
this._positionTrackerView
|
|
289
|
-
],
|
|
290
|
-
on: {
|
|
291
|
-
click: bind.to(this._handleMinimapClick.bind(this)),
|
|
292
|
-
wheel: bind.to(this._handleMinimapMouseWheel.bind(this))
|
|
293
|
-
}
|
|
294
|
-
});
|
|
295
|
-
}
|
|
296
321
|
}
|
|
297
322
|
|
|
298
323
|
/**
|
|
@@ -376,31 +401,44 @@ class MinimapView extends View {
|
|
|
376
401
|
return domElement === global.document.body ? global.window : domElement;
|
|
377
402
|
}
|
|
378
403
|
|
|
379
|
-
|
|
404
|
+
/**
|
|
405
|
+
* The content minimap feature.
|
|
406
|
+
*/ class Minimap extends Plugin {
|
|
380
407
|
/**
|
|
381
|
-
|
|
382
|
-
|
|
408
|
+
* @inheritDoc
|
|
409
|
+
*/ static get pluginName() {
|
|
383
410
|
return 'Minimap';
|
|
384
411
|
}
|
|
385
412
|
/**
|
|
386
|
-
|
|
387
|
-
|
|
413
|
+
* The reference to the view of the minimap.
|
|
414
|
+
*/ _minimapView;
|
|
415
|
+
/**
|
|
416
|
+
* The DOM element closest to the editable element of the editor as returned
|
|
417
|
+
* by {@link module:ui/editorui/editorui~EditorUI#getEditableElement}.
|
|
418
|
+
*/ _scrollableRootAncestor;
|
|
419
|
+
/**
|
|
420
|
+
* The DOM element closest to the editable element of the editor as returned
|
|
421
|
+
* by {@link module:ui/editorui/editorui~EditorUI#getEditableElement}.
|
|
422
|
+
*/ _editingRootElement;
|
|
423
|
+
/**
|
|
424
|
+
* @inheritDoc
|
|
425
|
+
*/ init() {
|
|
388
426
|
const editor = this.editor;
|
|
389
427
|
this._minimapView = null;
|
|
390
428
|
this._scrollableRootAncestor = null;
|
|
391
429
|
this.listenTo(editor.ui, 'ready', this._onUiReady.bind(this));
|
|
392
430
|
}
|
|
393
431
|
/**
|
|
394
|
-
|
|
395
|
-
|
|
432
|
+
* @inheritDoc
|
|
433
|
+
*/ destroy() {
|
|
396
434
|
super.destroy();
|
|
397
435
|
this._minimapView.destroy();
|
|
398
436
|
this._minimapView.element.remove();
|
|
399
437
|
}
|
|
400
438
|
/**
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
439
|
+
* Initializes the minimap view element and starts the layout synchronization
|
|
440
|
+
* on the editing view `render` event.
|
|
441
|
+
*/ _onUiReady() {
|
|
404
442
|
const editor = this.editor;
|
|
405
443
|
// TODO: This will not work with the multi-root editor.
|
|
406
444
|
const editingRootElement = this._editingRootElement = editor.ui.getEditableElement();
|
|
@@ -420,9 +458,9 @@ class Minimap extends Plugin {
|
|
|
420
458
|
this._syncMinimapToEditingRootScrollPosition();
|
|
421
459
|
}
|
|
422
460
|
/**
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
461
|
+
* Initializes the minimap view and attaches listeners that make it responsive to the environment (document)
|
|
462
|
+
* but also allow the minimap to control the document (scroll position).
|
|
463
|
+
*/ _initializeMinimapView() {
|
|
426
464
|
const editor = this.editor;
|
|
427
465
|
const locale = editor.locale;
|
|
428
466
|
const useSimplePreview = editor.config.get('minimap.useSimplePreview');
|
|
@@ -481,8 +519,8 @@ class Minimap extends Plugin {
|
|
|
481
519
|
minimapContainerElement.appendChild(minimapView.element);
|
|
482
520
|
}
|
|
483
521
|
/**
|
|
484
|
-
|
|
485
|
-
|
|
522
|
+
* @private
|
|
523
|
+
*/ _syncMinimapToEditingRootScrollPosition() {
|
|
486
524
|
const editingRootElement = this._editingRootElement;
|
|
487
525
|
const minimapView = this._minimapView;
|
|
488
526
|
minimapView.setContentHeight(editingRootElement.offsetHeight);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.js","../src/minimapiframeview.ts","../src/minimappositiontrackerview.ts","../src/minimapview.ts","../src/utils.ts","../src/minimap.ts"],"names":["toPx","toUnit","MinimapIframeView","IframeView","render","then","_prepareDocument","setHeight","newHeight","height","setTopOffset","newOffset","top","iframeDocument","element","contentWindow","document","domRootClone","adoptNode","_options","boxStyles","useSimplePreview","pageStyles","map","definition","href","join","html","scaleRatio","extraClasses","open","write","close","body","appendChild","constructor","locale","options","bind","bindTemplate","set","extendTemplate","attributes","tabindex","class","style","to","MinimapPositionTrackerView","View","listenTo","global","evt","data","_isDragging","fire","movementY","useCapture","setScrollProgress","newProgress","scrollProgress","setTemplate","tag","if","on","mousedown","MinimapView","destroy","_minimapIframeView","Rect","scrollHeight","Math","max","min","_positionTrackerView","setContentHeight","_scaleRatio","newScrollProgress","iframeView","positionTrackerView","totalOffset","round","setPositionTrackerHeight","trackerHeight","_handleMinimapClick","target","trackerViewRect","diff","clientY","percentage","_handleMinimapMouseWheel","deltaY","delegate","children","click","wheel","cloneEditingViewDomRoot","editor","rootName","viewDocument","editing","view","viewRoot","getRoot","domConverter","DomConverter","renderer","Renderer","selection","getDomRoot","cloneNode","bindElements","markToSync","node","unbindDomElement","getPageStyles","Array","from","styleSheets","styleSheet","startsWith","window","location","origin","cssRules","filter","rule","CSSMediaRule","cssText","getDomElementRect","domElement","getClientHeight","innerHeight","clientHeight","getScrollable","Minimap","Plugin","pluginName","init","_minimapView","_scrollableRootAncestor","ui","_onUiReady","remove","editingRootElement","_editingRootElement","getEditableElement","findClosestScrollableAncestor","ownerDocument","contains","once","_initializeMinimapView","state","_syncMinimapToEditingRootScrollPosition","config","get","minimapContainerElement","scrollableRootAncestor","editingRootElementWidth","width","minimapContainerWidth","minimapScaleRatio","minimapView","usePassive","movementYPercentage","absoluteScrollProgress","scrollable","scrollBy","offsetHeight","editingRootRect","scrollableRootAncestorRect","getIntersection"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { toUnit, global, Rect, findClosestScrollableAncestor } from '@ckeditor/ckeditor5-utils/dist/index.js';\nimport { IframeView, View } from '@ckeditor/ckeditor5-ui/dist/index.js';\nimport { DomConverter, Renderer } from '@ckeditor/ckeditor5-engine/dist/index.js';\n\nconst toPx$1 = toUnit('px');\nclass MinimapIframeView extends IframeView {\n /**\n * @inheritDoc\n */ render() {\n return super.render().then(()=>{\n this._prepareDocument();\n });\n }\n /**\n * Sets the new height of the iframe.\n */ setHeight(newHeight) {\n this.height = newHeight;\n }\n /**\n * Sets the top offset of the iframe to move it around vertically.\n */ setTopOffset(newOffset) {\n this.top = newOffset;\n }\n /**\n * Sets the internal structure of the `<iframe>` readying it to display the\n * minimap element.\n */ _prepareDocument() {\n const iframeDocument = this.element.contentWindow.document;\n const domRootClone = iframeDocument.adoptNode(this._options.domRootClone);\n const boxStyles = this._options.useSimplePreview ? `\n\t\t\t.ck.ck-editor__editable_inline img {\n\t\t\t\tfilter: contrast( 0 );\n\t\t\t}\n\n\t\t\tp, li, a, figcaption, span {\n\t\t\t\tbackground: hsl(0, 0%, 80%) !important;\n\t\t\t\tcolor: hsl(0, 0%, 80%) !important;\n\t\t\t}\n\n\t\t\th1, h2, h3, h4 {\n\t\t\t\tbackground: hsl(0, 0%, 60%) !important;\n\t\t\t\tcolor: hsl(0, 0%, 60%) !important;\n\t\t\t}\n\t\t` : '';\n const pageStyles = this._options.pageStyles.map((definition)=>{\n if (typeof definition === 'string') {\n return `<style>${definition}</style>`;\n } else {\n return `<link rel=\"stylesheet\" type=\"text/css\" href=\"${definition.href}\">`;\n }\n }).join('\\n');\n const html = `<!DOCTYPE html><html lang=\"en\">\n\t\t\t<head>\n\t\t\t\t<meta charset=\"utf-8\">\n\t\t\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\t\t\t\t${pageStyles}\n\t\t\t\t<style>\n\t\t\t\t\thtml, body {\n\t\t\t\t\t\tmargin: 0 !important;\n\t\t\t\t\t\tpadding: 0 !important;\n\t\t\t\t\t}\n\n\t\t\t\t\thtml {\n\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t}\n\n\t\t\t\t\tbody {\n\t\t\t\t\t\ttransform: scale( ${this._options.scaleRatio} );\n\t\t\t\t\t\ttransform-origin: 0 0;\n\t\t\t\t\t\toverflow: visible;\n\t\t\t\t\t}\n\n\t\t\t\t\t.ck.ck-editor__editable_inline {\n\t\t\t\t\t\tmargin: 0 !important;\n\t\t\t\t\t\tborder-color: transparent !important;\n\t\t\t\t\t\toutline-color: transparent !important;\n\t\t\t\t\t\tbox-shadow: none !important;\n\t\t\t\t\t}\n\n\t\t\t\t\t.ck.ck-content {\n\t\t\t\t\t\tbackground: white;\n\t\t\t\t\t}\n\n\t\t\t\t\t${boxStyles}\n\t\t\t\t</style>\n\t\t\t</head>\n\t\t\t<body class=\"${this._options.extraClasses || ''}\"></body>\n\t\t</html>`;\n iframeDocument.open();\n iframeDocument.write(html);\n iframeDocument.close();\n iframeDocument.body.appendChild(domRootClone);\n }\n /**\n * Creates an instance of the internal minimap iframe.\n */ constructor(locale, options){\n super(locale);\n const bind = this.bindTemplate;\n this.set('top', 0);\n this.set('height', 0);\n this._options = options;\n this.extendTemplate({\n attributes: {\n tabindex: -1,\n 'aria-hidden': 'true',\n class: [\n 'ck-minimap__iframe'\n ],\n style: {\n top: bind.to('top', (top)=>toPx$1(top)),\n height: bind.to('height', (height)=>toPx$1(height))\n }\n }\n });\n }\n}\n\nconst toPx = toUnit('px');\nclass MinimapPositionTrackerView extends View {\n /**\n * @inheritDoc\n */ render() {\n super.render();\n this.listenTo(global.document, 'mousemove', (evt, data)=>{\n if (!this._isDragging) {\n return;\n }\n this.fire('drag', data.movementY);\n }, {\n useCapture: true\n });\n this.listenTo(global.document, 'mouseup', ()=>{\n this._isDragging = false;\n }, {\n useCapture: true\n });\n }\n /**\n * Sets the new height of the tracker to visualize the subset of the content visible to the user.\n */ setHeight(newHeight) {\n this.height = newHeight;\n }\n /**\n * Sets the top offset of the tracker to move it around vertically.\n */ setTopOffset(newOffset) {\n this.top = newOffset;\n }\n /**\n * Sets the scroll progress (in %) to inform the user using a label when the tracker is being dragged.\n */ setScrollProgress(newProgress) {\n this.scrollProgress = newProgress;\n }\n constructor(locale){\n super(locale);\n const bind = this.bindTemplate;\n this.set('height', 0);\n this.set('top', 0);\n this.set('scrollProgress', 0);\n this.set('_isDragging', false);\n this.setTemplate({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-minimap__position-tracker',\n bind.if('_isDragging', 'ck-minimap__position-tracker_dragging')\n ],\n style: {\n top: bind.to('top', (top)=>toPx(top)),\n height: bind.to('height', (height)=>toPx(height))\n },\n 'data-progress': bind.to('scrollProgress')\n },\n on: {\n mousedown: bind.to(()=>{\n this._isDragging = true;\n })\n }\n });\n }\n}\n\nclass MinimapView extends View {\n /**\n * @inheritDoc\n */ destroy() {\n this._minimapIframeView.destroy();\n super.destroy();\n }\n /**\n * Returns the DOM {@link module:utils/dom/rect~Rect} height of the minimap.\n */ get height() {\n return new Rect(this.element).height;\n }\n /**\n * Returns the number of available space (pixels) the position tracker (visible subset of the content) can use to scroll vertically.\n */ get scrollHeight() {\n return Math.max(0, Math.min(this.height, this._minimapIframeView.height) - this._positionTrackerView.height);\n }\n /**\n * @inheritDoc\n */ render() {\n super.render();\n this._minimapIframeView.render();\n this.element.appendChild(this._minimapIframeView.element);\n }\n /**\n * Sets the new height of the minimap (in px) to respond to the changes in the original editing DOM root.\n *\n * **Note**:The provided value should be the `offsetHeight` of the original editing DOM root.\n */ setContentHeight(newHeight) {\n this._minimapIframeView.setHeight(newHeight * this._scaleRatio);\n }\n /**\n * Sets the minimap scroll progress.\n *\n * The minimap scroll progress is linked to the original editing DOM root and its scrollable container (ancestor).\n * Changing the progress will alter the vertical position of the minimap (and its position tracker) and give the user an accurate\n * overview of the visible document.\n *\n * **Note**: The value should be between 0 and 1. 0 when the DOM root has not been scrolled, 1 when the\n * scrolling has reached the end.\n */ setScrollProgress(newScrollProgress) {\n const iframeView = this._minimapIframeView;\n const positionTrackerView = this._positionTrackerView;\n // The scrolling should end when the bottom edge of the iframe touches the bottom edge of the minimap.\n if (iframeView.height < this.height) {\n iframeView.setTopOffset(0);\n positionTrackerView.setTopOffset((iframeView.height - positionTrackerView.height) * newScrollProgress);\n } else {\n const totalOffset = iframeView.height - this.height;\n iframeView.setTopOffset(-totalOffset * newScrollProgress);\n positionTrackerView.setTopOffset((this.height - positionTrackerView.height) * newScrollProgress);\n }\n positionTrackerView.setScrollProgress(Math.round(newScrollProgress * 100));\n }\n /**\n * Sets the new height of the tracker (in px) to visualize the subset of the content visible to the user.\n */ setPositionTrackerHeight(trackerHeight) {\n this._positionTrackerView.setHeight(trackerHeight * this._scaleRatio);\n }\n /**\n * @param data DOM event data\n */ _handleMinimapClick(data) {\n const positionTrackerView = this._positionTrackerView;\n if (data.target === positionTrackerView.element) {\n return;\n }\n const trackerViewRect = new Rect(positionTrackerView.element);\n const diff = data.clientY - trackerViewRect.top - trackerViewRect.height / 2;\n const percentage = diff / this._minimapIframeView.height;\n this.fire('click', percentage);\n }\n /**\n * @param data DOM event data\n */ _handleMinimapMouseWheel(data) {\n this.fire('drag', data.deltaY * this._scaleRatio);\n }\n /**\n * Creates an instance of the minimap view.\n */ constructor({ locale, scaleRatio, pageStyles, extraClasses, useSimplePreview, domRootClone }){\n super(locale);\n const bind = this.bindTemplate;\n this._positionTrackerView = new MinimapPositionTrackerView(locale);\n this._positionTrackerView.delegate('drag').to(this);\n this._scaleRatio = scaleRatio;\n this._minimapIframeView = new MinimapIframeView(locale, {\n useSimplePreview,\n pageStyles,\n extraClasses,\n scaleRatio,\n domRootClone\n });\n this.setTemplate({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-minimap'\n ]\n },\n children: [\n this._positionTrackerView\n ],\n on: {\n click: bind.to(this._handleMinimapClick.bind(this)),\n wheel: bind.to(this._handleMinimapMouseWheel.bind(this))\n }\n });\n }\n}\n\n/**\n * Clones the editing view DOM root by using a dedicated pair of {@link module:engine/view/renderer~Renderer} and\n * {@link module:engine/view/domconverter~DomConverter}. The DOM root clone updates incrementally to stay in sync with the\n * source root.\n *\n * @internal\n * @param editor The editor instance the original editing root belongs to.\n * @param rootName The name of the root to clone.\n * @returns The editing root DOM clone element.\n */ function cloneEditingViewDomRoot(editor, rootName) {\n const viewDocument = editor.editing.view.document;\n const viewRoot = viewDocument.getRoot(rootName);\n const domConverter = new DomConverter(viewDocument);\n const renderer = new Renderer(domConverter, viewDocument.selection);\n const domRootClone = editor.editing.view.getDomRoot().cloneNode();\n domConverter.bindElements(domRootClone, viewRoot);\n renderer.markToSync('children', viewRoot);\n renderer.markToSync('attributes', viewRoot);\n viewRoot.on('change:children', (evt, node)=>renderer.markToSync('children', node));\n viewRoot.on('change:attributes', (evt, node)=>renderer.markToSync('attributes', node));\n viewRoot.on('change:text', (evt, node)=>renderer.markToSync('text', node));\n renderer.render();\n editor.editing.view.on('render', ()=>renderer.render());\n // TODO: Cleanup after destruction.\n editor.on('destroy', ()=>{\n domConverter.unbindDomElement(domRootClone);\n });\n return domRootClone;\n}\n/**\n * Harvests all web page styles, for instance, to allow re-using them in an `<iframe>` preserving the look of the content.\n *\n * The returned data format is as follows:\n *\n * ```ts\n * [\n * \t'p { color: red; ... } h2 { font-size: 2em; ... } ...',\n * \t'.spacing { padding: 1em; ... }; ...',\n * \t'...',\n * \t{ href: 'http://link.to.external.stylesheet' },\n * \t{ href: '...' }\n * ]\n * ```\n *\n * **Note**: For stylesheets with `href` different than window origin, an object is returned because\n * accessing rules of these styles may cause CORS errors (depending on the configuration of the web page).\n *\n * @internal\n */ function getPageStyles() {\n return Array.from(global.document.styleSheets).map((styleSheet)=>{\n // CORS\n if (styleSheet.href && !styleSheet.href.startsWith(global.window.location.origin)) {\n return {\n href: styleSheet.href\n };\n }\n return Array.from(styleSheet.cssRules).filter((rule)=>!(rule instanceof CSSMediaRule)).map((rule)=>rule.cssText).join(' \\n');\n });\n}\n/**\n * Gets dimensions rectangle according to passed DOM element. Returns whole window's size for `body` element.\n *\n * @internal\n */ function getDomElementRect(domElement) {\n return new Rect(domElement === global.document.body ? global.window : domElement);\n}\n/**\n * Gets client height according to passed DOM element. Returns window's height for `body` element.\n *\n * @internal\n */ function getClientHeight(domElement) {\n return domElement === global.document.body ? global.window.innerHeight : domElement.clientHeight;\n}\n/**\n * Returns the DOM element itself if it's not a `body` element, whole window otherwise.\n *\n * @internal\n */ function getScrollable(domElement) {\n return domElement === global.document.body ? global.window : domElement;\n}\n\nclass Minimap extends Plugin {\n /**\n * @inheritDoc\n */ static get pluginName() {\n return 'Minimap';\n }\n /**\n * @inheritDoc\n */ init() {\n const editor = this.editor;\n this._minimapView = null;\n this._scrollableRootAncestor = null;\n this.listenTo(editor.ui, 'ready', this._onUiReady.bind(this));\n }\n /**\n * @inheritDoc\n */ destroy() {\n super.destroy();\n this._minimapView.destroy();\n this._minimapView.element.remove();\n }\n /**\n * Initializes the minimap view element and starts the layout synchronization\n * on the editing view `render` event.\n */ _onUiReady() {\n const editor = this.editor;\n // TODO: This will not work with the multi-root editor.\n const editingRootElement = this._editingRootElement = editor.ui.getEditableElement();\n this._scrollableRootAncestor = findClosestScrollableAncestor(editingRootElement);\n // DOM root element is not yet attached to the document.\n if (!editingRootElement.ownerDocument.body.contains(editingRootElement)) {\n editor.ui.once('update', this._onUiReady.bind(this));\n return;\n }\n this._initializeMinimapView();\n this.listenTo(editor.editing.view, 'render', ()=>{\n if (editor.state !== 'ready') {\n return;\n }\n this._syncMinimapToEditingRootScrollPosition();\n });\n this._syncMinimapToEditingRootScrollPosition();\n }\n /**\n * Initializes the minimap view and attaches listeners that make it responsive to the environment (document)\n * but also allow the minimap to control the document (scroll position).\n */ _initializeMinimapView() {\n const editor = this.editor;\n const locale = editor.locale;\n const useSimplePreview = editor.config.get('minimap.useSimplePreview');\n // TODO: Throw an error if there is no `minimap` in config.\n const minimapContainerElement = editor.config.get('minimap.container');\n const scrollableRootAncestor = this._scrollableRootAncestor;\n // TODO: This should be dynamic, the root width could change as the viewport scales if not fixed unit.\n const editingRootElementWidth = getDomElementRect(this._editingRootElement).width;\n const minimapContainerWidth = getDomElementRect(minimapContainerElement).width;\n const minimapScaleRatio = minimapContainerWidth / editingRootElementWidth;\n const minimapView = this._minimapView = new MinimapView({\n locale,\n scaleRatio: minimapScaleRatio,\n pageStyles: getPageStyles(),\n extraClasses: editor.config.get('minimap.extraClasses'),\n useSimplePreview,\n domRootClone: cloneEditingViewDomRoot(editor)\n });\n minimapView.render();\n // Scrollable ancestor scroll -> minimap position update.\n minimapView.listenTo(global.document, 'scroll', (evt, data)=>{\n if (scrollableRootAncestor === global.document.body) {\n if (data.target !== global.document) {\n return;\n }\n } else if (data.target !== scrollableRootAncestor) {\n return;\n }\n this._syncMinimapToEditingRootScrollPosition();\n }, {\n useCapture: true,\n usePassive: true\n });\n // Viewport resize -> minimap position update.\n minimapView.listenTo(global.window, 'resize', ()=>{\n this._syncMinimapToEditingRootScrollPosition();\n });\n // Dragging the visible content area -> document (scrollable) position update.\n minimapView.on('drag', (evt, movementY)=>{\n let movementYPercentage;\n if (minimapView.scrollHeight === 0) {\n movementYPercentage = 0;\n } else {\n movementYPercentage = movementY / minimapView.scrollHeight;\n }\n const absoluteScrollProgress = movementYPercentage * (scrollableRootAncestor.scrollHeight - getClientHeight(scrollableRootAncestor));\n const scrollable = getScrollable(scrollableRootAncestor);\n scrollable.scrollBy(0, Math.round(absoluteScrollProgress));\n });\n // Clicking the minimap -> center the document (scrollable) to the corresponding position.\n minimapView.on('click', (evt, percentage)=>{\n const absoluteScrollProgress = percentage * scrollableRootAncestor.scrollHeight;\n const scrollable = getScrollable(scrollableRootAncestor);\n scrollable.scrollBy(0, Math.round(absoluteScrollProgress));\n });\n minimapContainerElement.appendChild(minimapView.element);\n }\n /**\n * @private\n */ _syncMinimapToEditingRootScrollPosition() {\n const editingRootElement = this._editingRootElement;\n const minimapView = this._minimapView;\n minimapView.setContentHeight(editingRootElement.offsetHeight);\n const editingRootRect = getDomElementRect(editingRootElement);\n const scrollableRootAncestorRect = getDomElementRect(this._scrollableRootAncestor);\n let scrollProgress;\n // @if CK_DEBUG_MINIMAP // RectDrawer.clear();\n // @if CK_DEBUG_MINIMAP // RectDrawer.draw( scrollableRootAncestorRect, { outlineColor: 'red' }, 'scrollableRootAncestor' );\n // @if CK_DEBUG_MINIMAP // RectDrawer.draw( editingRootRect, { outlineColor: 'green' }, 'editingRoot' );\n // The root is completely visible in the scrollable ancestor.\n if (scrollableRootAncestorRect.contains(editingRootRect)) {\n scrollProgress = 0;\n } else {\n if (editingRootRect.top > scrollableRootAncestorRect.top) {\n scrollProgress = 0;\n } else {\n scrollProgress = (editingRootRect.top - scrollableRootAncestorRect.top) / (scrollableRootAncestorRect.height - editingRootRect.height);\n scrollProgress = Math.max(0, Math.min(scrollProgress, 1));\n }\n }\n // The intersection helps to change the tracker height when there is a lot of padding around the root.\n // Note: It is **essential** that the height is set first because the progress depends on the correct tracker height.\n minimapView.setPositionTrackerHeight(scrollableRootAncestorRect.getIntersection(editingRootRect).height);\n minimapView.setScrollProgress(scrollProgress);\n }\n}\n\nexport { Minimap };\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 minimap/minimapiframeview\n */\n\nimport { IframeView } from 'ckeditor5/src/ui.js';\nimport { toUnit, type Locale } from 'ckeditor5/src/utils.js';\nimport type { MinimapViewOptions } from './minimapview.js';\n\nconst toPx = toUnit( 'px' );\n\n/**\n * The internal `<iframe>` view that hosts the minimap content.\n *\n * @internal\n */\nexport default class MinimapIframeView extends IframeView {\n\t/**\n\t * The CSS `top` used to scroll the minimap.\n\t *\n\t * @readonly\n\t */\n\tdeclare public top: number;\n\n\t/**\n\t * The CSS `height` of the iframe.\n\t *\n\t * @readonly\n\t */\n\tdeclare public height: number;\n\n\t/**\n\t * Cached view constructor options for re-use in other methods.\n\t */\n\tprivate readonly _options: MinimapViewOptions;\n\n\t/**\n\t * Creates an instance of the internal minimap iframe.\n\t */\n\tconstructor( locale: Locale, options: MinimapViewOptions ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.set( 'top', 0 );\n\n\t\tthis.set( 'height', 0 );\n\n\t\tthis._options = options;\n\n\t\tthis.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\ttabindex: -1,\n\t\t\t\t'aria-hidden': 'true',\n\t\t\t\tclass: [\n\t\t\t\t\t'ck-minimap__iframe'\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\ttop: bind.to( 'top', top => toPx( top ) ),\n\t\t\t\t\theight: bind.to( 'height', height => toPx( height ) )\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): Promise<unknown> {\n\t\treturn super.render().then( () => {\n\t\t\tthis._prepareDocument();\n\t\t} );\n\t}\n\n\t/**\n\t * Sets the new height of the iframe.\n\t */\n\tpublic setHeight( newHeight: number ): void {\n\t\tthis.height = newHeight;\n\t}\n\n\t/**\n\t * Sets the top offset of the iframe to move it around vertically.\n\t */\n\tpublic setTopOffset( newOffset: number ): void {\n\t\tthis.top = newOffset;\n\t}\n\n\t/**\n\t * Sets the internal structure of the `<iframe>` readying it to display the\n\t * minimap element.\n\t */\n\tprivate _prepareDocument(): void {\n\t\tconst iframeDocument = this.element!.contentWindow!.document;\n\t\tconst domRootClone = iframeDocument.adoptNode( this._options.domRootClone );\n\n\t\tconst boxStyles = this._options.useSimplePreview ? `\n\t\t\t.ck.ck-editor__editable_inline img {\n\t\t\t\tfilter: contrast( 0 );\n\t\t\t}\n\n\t\t\tp, li, a, figcaption, span {\n\t\t\t\tbackground: hsl(0, 0%, 80%) !important;\n\t\t\t\tcolor: hsl(0, 0%, 80%) !important;\n\t\t\t}\n\n\t\t\th1, h2, h3, h4 {\n\t\t\t\tbackground: hsl(0, 0%, 60%) !important;\n\t\t\t\tcolor: hsl(0, 0%, 60%) !important;\n\t\t\t}\n\t\t` : '';\n\n\t\tconst pageStyles = this._options.pageStyles.map( definition => {\n\t\t\tif ( typeof definition === 'string' ) {\n\t\t\t\treturn `<style>${ definition }</style>`;\n\t\t\t} else {\n\t\t\t\treturn `<link rel=\"stylesheet\" type=\"text/css\" href=\"${ definition.href }\">`;\n\t\t\t}\n\t\t} ).join( '\\n' );\n\n\t\tconst html = `<!DOCTYPE html><html lang=\"en\">\n\t\t\t<head>\n\t\t\t\t<meta charset=\"utf-8\">\n\t\t\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\t\t\t\t${ pageStyles }\n\t\t\t\t<style>\n\t\t\t\t\thtml, body {\n\t\t\t\t\t\tmargin: 0 !important;\n\t\t\t\t\t\tpadding: 0 !important;\n\t\t\t\t\t}\n\n\t\t\t\t\thtml {\n\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t}\n\n\t\t\t\t\tbody {\n\t\t\t\t\t\ttransform: scale( ${ this._options.scaleRatio } );\n\t\t\t\t\t\ttransform-origin: 0 0;\n\t\t\t\t\t\toverflow: visible;\n\t\t\t\t\t}\n\n\t\t\t\t\t.ck.ck-editor__editable_inline {\n\t\t\t\t\t\tmargin: 0 !important;\n\t\t\t\t\t\tborder-color: transparent !important;\n\t\t\t\t\t\toutline-color: transparent !important;\n\t\t\t\t\t\tbox-shadow: none !important;\n\t\t\t\t\t}\n\n\t\t\t\t\t.ck.ck-content {\n\t\t\t\t\t\tbackground: white;\n\t\t\t\t\t}\n\n\t\t\t\t\t${ boxStyles }\n\t\t\t\t</style>\n\t\t\t</head>\n\t\t\t<body class=\"${ this._options.extraClasses || '' }\"></body>\n\t\t</html>`;\n\n\t\tiframeDocument.open();\n\t\tiframeDocument.write( html );\n\t\tiframeDocument.close();\n\t\tiframeDocument.body.appendChild( domRootClone );\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 minimap/minimappositiontrackerview\n */\n\nimport { View } from 'ckeditor5/src/ui.js';\nimport { toUnit, global, type Locale } from 'ckeditor5/src/utils.js';\nimport type { MinimapDragEvent } from './minimapview.js';\n\nconst toPx = toUnit( 'px' );\n\n/**\n * The position tracker visualizing the visible subset of the content. Displayed over the minimap.\n *\n * @internal\n */\nexport default class MinimapPositionTrackerView extends View {\n\t/**\n\t * The CSS `height` of the tracker visualizing the subset of the content visible to the user.\n\t *\n\t * @readonly\n\t */\n\tdeclare public height: number;\n\n\t/**\n\t * The CSS `top` of the tracker, used to move it vertically over the minimap.\n\t *\n\t * @readonly\n\t */\n\tdeclare public top: number;\n\n\t/**\n\t * The scroll progress (in %) displayed over the tracker when being dragged by the user.\n\t *\n\t * @readonly\n\t */\n\tdeclare public scrollProgress: number;\n\n\t/**\n\t * Indicates whether the tracker is being dragged by the user (e.g. using the mouse).\n\t *\n\t * @internal\n\t * @readonly\n\t */\n\tdeclare public _isDragging: boolean;\n\n\tconstructor( locale: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.set( 'height', 0 );\n\t\tthis.set( 'top', 0 );\n\t\tthis.set( 'scrollProgress', 0 );\n\t\tthis.set( '_isDragging', false );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-minimap__position-tracker',\n\t\t\t\t\tbind.if( '_isDragging', 'ck-minimap__position-tracker_dragging' )\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\ttop: bind.to( 'top', top => toPx( top ) ),\n\t\t\t\t\theight: bind.to( 'height', height => toPx( height ) )\n\t\t\t\t},\n\t\t\t\t'data-progress': bind.to( 'scrollProgress' )\n\t\t\t},\n\t\t\ton: {\n\t\t\t\tmousedown: bind.to( () => {\n\t\t\t\t\tthis._isDragging = true;\n\t\t\t\t} )\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis.listenTo( global.document, 'mousemove', ( evt, data ) => {\n\t\t\tif ( !this._isDragging ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.fire<MinimapDragEvent>( 'drag', data.movementY );\n\t\t}, { useCapture: true } );\n\n\t\tthis.listenTo( global.document, 'mouseup', () => {\n\t\t\tthis._isDragging = false;\n\t\t}, { useCapture: true } );\n\t}\n\n\t/**\n\t * Sets the new height of the tracker to visualize the subset of the content visible to the user.\n\t */\n\tpublic setHeight( newHeight: number ): void {\n\t\tthis.height = newHeight;\n\t}\n\n\t/**\n\t * Sets the top offset of the tracker to move it around vertically.\n\t */\n\tpublic setTopOffset( newOffset: number ): void {\n\t\tthis.top = newOffset;\n\t}\n\n\t/**\n\t * Sets the scroll progress (in %) to inform the user using a label when the tracker is being dragged.\n\t */\n\tpublic setScrollProgress( newProgress: number ): void {\n\t\tthis.scrollProgress = newProgress;\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 minimap/minimapview\n */\n\nimport { View } from 'ckeditor5/src/ui.js';\nimport { Rect, type Locale } from 'ckeditor5/src/utils.js';\n\nimport MinimapIframeView from './minimapiframeview.js';\nimport MinimapPositionTrackerView from './minimappositiontrackerview.js';\n\nexport type MinimapViewOptions = {\n\tdomRootClone: HTMLElement;\n\tpageStyles: Array<string | { href: string }>;\n\tscaleRatio: number;\n\tuseSimplePreview?: boolean;\n\textraClasses?: string;\n};\n\n/**\n * The main view of the minimap. It renders the original content but scaled down with a tracker element\n * visualizing the subset of the content visible to the user and allowing interactions (scrolling, dragging).\n *\n * @internal\n */\nexport default class MinimapView extends View {\n\t/**\n\t * An instance of the tracker view displayed over the minimap.\n\t */\n\tprivate readonly _positionTrackerView: MinimapPositionTrackerView;\n\n\t/**\n\t * The scale ratio of the minimap relative to the original editing DOM root with the content.\n\t */\n\tprivate readonly _scaleRatio: number;\n\n\t/**\n\t * An instance of the iframe view that hosts the minimap.\n\t */\n\tprivate readonly _minimapIframeView: MinimapIframeView;\n\n\t/**\n\t * Creates an instance of the minimap view.\n\t */\n\tconstructor(\n\t\t{ locale, scaleRatio, pageStyles, extraClasses, useSimplePreview, domRootClone }: { locale: Locale } & MinimapViewOptions\n\t) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis._positionTrackerView = new MinimapPositionTrackerView( locale );\n\t\tthis._positionTrackerView.delegate( 'drag' ).to( this );\n\n\t\tthis._scaleRatio = scaleRatio;\n\n\t\tthis._minimapIframeView = new MinimapIframeView( locale, {\n\t\t\tuseSimplePreview,\n\t\t\tpageStyles,\n\t\t\textraClasses,\n\t\t\tscaleRatio,\n\t\t\tdomRootClone\n\t\t} );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-minimap'\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\tthis._positionTrackerView\n\t\t\t],\n\t\t\ton: {\n\t\t\t\tclick: bind.to( this._handleMinimapClick.bind( this ) ),\n\t\t\t\twheel: bind.to( this._handleMinimapMouseWheel.bind( this ) )\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tthis._minimapIframeView.destroy();\n\n\t\tsuper.destroy();\n\t}\n\n\t/**\n\t * Returns the DOM {@link module:utils/dom/rect~Rect} height of the minimap.\n\t */\n\tpublic get height(): number {\n\t\treturn new Rect( this.element! ).height;\n\t}\n\n\t/**\n\t * Returns the number of available space (pixels) the position tracker (visible subset of the content) can use to scroll vertically.\n\t */\n\tpublic get scrollHeight(): number {\n\t\treturn Math.max( 0, Math.min( this.height, this._minimapIframeView.height ) - this._positionTrackerView.height );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis._minimapIframeView.render();\n\n\t\tthis.element!.appendChild( this._minimapIframeView.element! );\n\t}\n\n\t/**\n\t * Sets the new height of the minimap (in px) to respond to the changes in the original editing DOM root.\n\t *\n\t * **Note**:The provided value should be the `offsetHeight` of the original editing DOM root.\n\t */\n\tpublic setContentHeight( newHeight: number ): void {\n\t\tthis._minimapIframeView.setHeight( newHeight * this._scaleRatio );\n\t}\n\n\t/**\n\t * Sets the minimap scroll progress.\n\t *\n\t * The minimap scroll progress is linked to the original editing DOM root and its scrollable container (ancestor).\n\t * Changing the progress will alter the vertical position of the minimap (and its position tracker) and give the user an accurate\n\t * overview of the visible document.\n\t *\n\t * **Note**: The value should be between 0 and 1. 0 when the DOM root has not been scrolled, 1 when the\n\t * scrolling has reached the end.\n\t */\n\tpublic setScrollProgress( newScrollProgress: number ): void {\n\t\tconst iframeView = this._minimapIframeView;\n\t\tconst positionTrackerView = this._positionTrackerView;\n\n\t\t// The scrolling should end when the bottom edge of the iframe touches the bottom edge of the minimap.\n\t\tif ( iframeView.height < this.height ) {\n\t\t\tiframeView.setTopOffset( 0 );\n\t\t\tpositionTrackerView.setTopOffset( ( iframeView.height - positionTrackerView.height ) * newScrollProgress );\n\t\t} else {\n\t\t\tconst totalOffset = iframeView.height - this.height;\n\n\t\t\tiframeView.setTopOffset( -totalOffset * newScrollProgress );\n\t\t\tpositionTrackerView.setTopOffset( ( this.height - positionTrackerView.height ) * newScrollProgress );\n\t\t}\n\n\t\tpositionTrackerView.setScrollProgress( Math.round( newScrollProgress * 100 ) );\n\t}\n\n\t/**\n\t * Sets the new height of the tracker (in px) to visualize the subset of the content visible to the user.\n\t */\n\tpublic setPositionTrackerHeight( trackerHeight: number ): void {\n\t\tthis._positionTrackerView.setHeight( trackerHeight * this._scaleRatio );\n\t}\n\n\t/**\n\t * @param data DOM event data\n\t */\n\tprivate _handleMinimapClick( data: Event ) {\n\t\tconst positionTrackerView = this._positionTrackerView;\n\n\t\tif ( data.target === positionTrackerView.element ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst trackerViewRect = new Rect( positionTrackerView.element! );\n\t\tconst diff = ( data as MouseEvent ).clientY - trackerViewRect.top - trackerViewRect.height / 2;\n\t\tconst percentage = diff / this._minimapIframeView.height;\n\n\t\tthis.fire<MinimapClickEvent>( 'click', percentage );\n\t}\n\n\t/**\n\t * @param data DOM event data\n\t */\n\tprivate _handleMinimapMouseWheel( data: Event ) {\n\t\tthis.fire<MinimapDragEvent>( 'drag', ( data as WheelEvent ).deltaY * this._scaleRatio );\n\t}\n}\n\n/**\n * Fired when the minimap view is clicked.\n *\n * @eventName ~MinimapView#click\n * @param percentage The number between 0 and 1 representing a place in the minimap (its height) that was clicked.\n */\nexport type MinimapClickEvent = {\n\tname: 'click';\n\targs: [ percentage: number ];\n};\n\n/**\n * Fired when the position tracker is dragged or the minimap is scrolled via mouse wheel.\n *\n * @eventName ~MinimapView#drag\n * @param movementY The vertical movement of the minimap as a result of dragging or scrolling.\n */\nexport type MinimapDragEvent = {\n\tname: 'drag';\n\targs: [ movementY: number ];\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/* global CSSMediaRule */\n\n/**\n * @module minimap/utils\n */\n\nimport { Rect, global } from 'ckeditor5/src/utils.js';\nimport { DomConverter, Renderer } from 'ckeditor5/src/engine.js';\nimport type { Editor } from 'ckeditor5/src/core.js';\n\n/**\n * Clones the editing view DOM root by using a dedicated pair of {@link module:engine/view/renderer~Renderer} and\n * {@link module:engine/view/domconverter~DomConverter}. The DOM root clone updates incrementally to stay in sync with the\n * source root.\n *\n * @internal\n * @param editor The editor instance the original editing root belongs to.\n * @param rootName The name of the root to clone.\n * @returns The editing root DOM clone element.\n */\nexport function cloneEditingViewDomRoot( editor: Editor, rootName?: string ): HTMLElement {\n\tconst viewDocument = editor.editing.view.document;\n\tconst viewRoot = viewDocument.getRoot( rootName )!;\n\tconst domConverter = new DomConverter( viewDocument );\n\tconst renderer = new Renderer( domConverter, viewDocument.selection );\n\tconst domRootClone = editor.editing.view.getDomRoot()!.cloneNode() as HTMLElement;\n\n\tdomConverter.bindElements( domRootClone, viewRoot );\n\n\trenderer.markToSync( 'children', viewRoot );\n\trenderer.markToSync( 'attributes', viewRoot );\n\n\tviewRoot.on( 'change:children', ( evt, node ) => renderer.markToSync( 'children', node ) );\n\tviewRoot.on( 'change:attributes', ( evt, node ) => renderer.markToSync( 'attributes', node ) );\n\tviewRoot.on( 'change:text', ( evt, node ) => renderer.markToSync( 'text', node ) );\n\n\trenderer.render();\n\n\teditor.editing.view.on( 'render', () => renderer.render() );\n\n\t// TODO: Cleanup after destruction.\n\teditor.on( 'destroy', () => {\n\t\tdomConverter.unbindDomElement( domRootClone );\n\t} );\n\n\treturn domRootClone;\n}\n\n/**\n * Harvests all web page styles, for instance, to allow re-using them in an `<iframe>` preserving the look of the content.\n *\n * The returned data format is as follows:\n *\n * ```ts\n * [\n * \t'p { color: red; ... } h2 { font-size: 2em; ... } ...',\n * \t'.spacing { padding: 1em; ... }; ...',\n * \t'...',\n * \t{ href: 'http://link.to.external.stylesheet' },\n * \t{ href: '...' }\n * ]\n * ```\n *\n * **Note**: For stylesheets with `href` different than window origin, an object is returned because\n * accessing rules of these styles may cause CORS errors (depending on the configuration of the web page).\n *\n * @internal\n */\nexport function getPageStyles(): Array<string | { href: string }> {\n\treturn Array.from( global.document.styleSheets )\n\t\t.map( styleSheet => {\n\t\t\t// CORS\n\t\t\tif ( styleSheet.href && !styleSheet.href.startsWith( global.window.location.origin ) ) {\n\t\t\t\treturn { href: styleSheet.href };\n\t\t\t}\n\n\t\t\treturn Array.from( styleSheet.cssRules )\n\t\t\t\t.filter( rule => !( rule instanceof CSSMediaRule ) )\n\t\t\t\t.map( rule => rule.cssText )\n\t\t\t\t.join( ' \\n' );\n\t\t} );\n}\n\n/**\n * Gets dimensions rectangle according to passed DOM element. Returns whole window's size for `body` element.\n *\n * @internal\n */\nexport function getDomElementRect( domElement: HTMLElement ): Rect {\n\treturn new Rect( domElement === global.document.body ? global.window : domElement );\n}\n\n/**\n * Gets client height according to passed DOM element. Returns window's height for `body` element.\n *\n * @internal\n */\nexport function getClientHeight( domElement: HTMLElement ): number {\n\treturn domElement === global.document.body ? global.window.innerHeight : domElement.clientHeight;\n}\n\n/**\n * Returns the DOM element itself if it's not a `body` element, whole window otherwise.\n *\n * @internal\n */\nexport function getScrollable( domElement: HTMLElement ): Window | HTMLElement {\n\treturn domElement === global.document.body ? global.window : domElement;\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 minimap/minimap\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport { findClosestScrollableAncestor, global } from 'ckeditor5/src/utils.js';\nimport MinimapView, { type MinimapDragEvent, type MinimapClickEvent } from './minimapview.js';\nimport {\n\tcloneEditingViewDomRoot,\n\tgetClientHeight,\n\tgetDomElementRect,\n\tgetPageStyles,\n\tgetScrollable\n} from './utils.js';\n\n// @if CK_DEBUG_MINIMAP // const RectDrawer = require( '@ckeditor/ckeditor5-utils/tests/_utils/rectdrawer' ).default;\n\nimport '../theme/minimap.css';\n\n/**\n * The content minimap feature.\n */\nexport default class Minimap extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Minimap' as const;\n\t}\n\n\t/**\n\t * The reference to the view of the minimap.\n\t */\n\tprivate _minimapView!: MinimapView | null;\n\n\t/**\n\t * The DOM element closest to the editable element of the editor as returned\n\t * by {@link module:ui/editorui/editorui~EditorUI#getEditableElement}.\n\t */\n\tprivate _scrollableRootAncestor!: HTMLElement | null;\n\n\t/**\n\t * The DOM element closest to the editable element of the editor as returned\n\t * by {@link module:ui/editorui/editorui~EditorUI#getEditableElement}.\n\t */\n\tprivate _editingRootElement?: HTMLElement;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tthis._minimapView = null;\n\t\tthis._scrollableRootAncestor = null;\n\n\t\tthis.listenTo( editor.ui, 'ready', this._onUiReady.bind( this ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._minimapView!.destroy();\n\t\tthis._minimapView!.element!.remove();\n\t}\n\n\t/**\n\t * Initializes the minimap view element and starts the layout synchronization\n\t * on the editing view `render` event.\n\t */\n\tprivate _onUiReady(): void {\n\t\tconst editor = this.editor;\n\n\t\t// TODO: This will not work with the multi-root editor.\n\t\tconst editingRootElement = this._editingRootElement = editor.ui.getEditableElement()!;\n\n\t\tthis._scrollableRootAncestor = findClosestScrollableAncestor( editingRootElement );\n\n\t\t// DOM root element is not yet attached to the document.\n\t\tif ( !editingRootElement.ownerDocument.body.contains( editingRootElement ) ) {\n\t\t\teditor.ui.once( 'update', this._onUiReady.bind( this ) );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis._initializeMinimapView();\n\n\t\tthis.listenTo( editor.editing.view, 'render', () => {\n\t\t\tif ( editor.state !== 'ready' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._syncMinimapToEditingRootScrollPosition();\n\t\t} );\n\n\t\tthis._syncMinimapToEditingRootScrollPosition();\n\t}\n\n\t/**\n\t * Initializes the minimap view and attaches listeners that make it responsive to the environment (document)\n\t * but also allow the minimap to control the document (scroll position).\n\t */\n\tprivate _initializeMinimapView(): void {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst useSimplePreview = editor.config.get( 'minimap.useSimplePreview' );\n\n\t\t// TODO: Throw an error if there is no `minimap` in config.\n\t\tconst minimapContainerElement = editor.config.get( 'minimap.container' )!;\n\t\tconst scrollableRootAncestor = this._scrollableRootAncestor!;\n\n\t\t// TODO: This should be dynamic, the root width could change as the viewport scales if not fixed unit.\n\t\tconst editingRootElementWidth = getDomElementRect( this._editingRootElement! ).width;\n\t\tconst minimapContainerWidth = getDomElementRect( minimapContainerElement ).width;\n\t\tconst minimapScaleRatio = minimapContainerWidth / editingRootElementWidth;\n\n\t\tconst minimapView = this._minimapView = new MinimapView( {\n\t\t\tlocale,\n\t\t\tscaleRatio: minimapScaleRatio,\n\t\t\tpageStyles: getPageStyles(),\n\t\t\textraClasses: editor.config.get( 'minimap.extraClasses' ),\n\t\t\tuseSimplePreview,\n\t\t\tdomRootClone: cloneEditingViewDomRoot( editor )\n\t\t} );\n\n\t\tminimapView.render();\n\n\t\t// Scrollable ancestor scroll -> minimap position update.\n\t\tminimapView.listenTo( global.document, 'scroll', ( evt, data ) => {\n\t\t\tif ( scrollableRootAncestor === global.document.body ) {\n\t\t\t\tif ( data.target !== global.document ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else if ( data.target !== scrollableRootAncestor ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._syncMinimapToEditingRootScrollPosition();\n\t\t}, { useCapture: true, usePassive: true } );\n\n\t\t// Viewport resize -> minimap position update.\n\t\tminimapView.listenTo( global.window, 'resize', () => {\n\t\t\tthis._syncMinimapToEditingRootScrollPosition();\n\t\t} );\n\n\t\t// Dragging the visible content area -> document (scrollable) position update.\n\t\tminimapView.on<MinimapDragEvent>( 'drag', ( evt, movementY ) => {\n\t\t\tlet movementYPercentage;\n\n\t\t\tif ( minimapView.scrollHeight === 0 ) {\n\t\t\t\tmovementYPercentage = 0;\n\t\t\t} else {\n\t\t\t\tmovementYPercentage = movementY / minimapView.scrollHeight;\n\t\t\t}\n\n\t\t\tconst absoluteScrollProgress = movementYPercentage *\n\t\t\t\t( scrollableRootAncestor.scrollHeight - getClientHeight( scrollableRootAncestor ) );\n\t\t\tconst scrollable = getScrollable( scrollableRootAncestor );\n\n\t\t\tscrollable.scrollBy( 0, Math.round( absoluteScrollProgress ) );\n\t\t} );\n\n\t\t// Clicking the minimap -> center the document (scrollable) to the corresponding position.\n\t\tminimapView.on<MinimapClickEvent>( 'click', ( evt, percentage ) => {\n\t\t\tconst absoluteScrollProgress = percentage * scrollableRootAncestor.scrollHeight;\n\t\t\tconst scrollable = getScrollable( scrollableRootAncestor );\n\n\t\t\tscrollable.scrollBy( 0, Math.round( absoluteScrollProgress ) );\n\t\t} );\n\n\t\tminimapContainerElement.appendChild( minimapView.element! );\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate _syncMinimapToEditingRootScrollPosition(): void {\n\t\tconst editingRootElement = this._editingRootElement!;\n\t\tconst minimapView = this._minimapView!;\n\n\t\tminimapView.setContentHeight( editingRootElement.offsetHeight );\n\n\t\tconst editingRootRect = getDomElementRect( editingRootElement );\n\t\tconst scrollableRootAncestorRect = getDomElementRect( this._scrollableRootAncestor! );\n\t\tlet scrollProgress;\n\n\t\t// @if CK_DEBUG_MINIMAP // RectDrawer.clear();\n\t\t// @if CK_DEBUG_MINIMAP // RectDrawer.draw( scrollableRootAncestorRect, { outlineColor: 'red' }, 'scrollableRootAncestor' );\n\t\t// @if CK_DEBUG_MINIMAP // RectDrawer.draw( editingRootRect, { outlineColor: 'green' }, 'editingRoot' );\n\n\t\t// The root is completely visible in the scrollable ancestor.\n\t\tif ( scrollableRootAncestorRect.contains( editingRootRect ) ) {\n\t\t\tscrollProgress = 0;\n\t\t} else {\n\t\t\tif ( editingRootRect.top > scrollableRootAncestorRect.top ) {\n\t\t\t\tscrollProgress = 0;\n\t\t\t} else {\n\t\t\t\tscrollProgress = ( editingRootRect.top - scrollableRootAncestorRect.top ) /\n\t\t\t\t\t( scrollableRootAncestorRect.height - editingRootRect.height );\n\n\t\t\t\tscrollProgress = Math.max( 0, Math.min( scrollProgress, 1 ) );\n\t\t\t}\n\t\t}\n\n\t\t// The intersection helps to change the tracker height when there is a lot of padding around the root.\n\t\t// Note: It is **essential** that the height is set first because the progress depends on the correct tracker height.\n\t\tminimapView.setPositionTrackerHeight( scrollableRootAncestorRect.getIntersection( editingRootRect )!.height );\n\t\tminimapView.setScrollProgress( scrollProgress );\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["index.js","../src/minimapiframeview.ts","../src/minimappositiontrackerview.ts","../src/minimapview.ts","../src/utils.ts","../src/minimap.ts"],"names":["toPx","toUnit","MinimapIframeView","IframeView","constructor","locale","options","bind","bindTemplate","set","_options","extendTemplate","attributes","tabindex","class","style","top","to","height","render","then","_prepareDocument","setHeight","newHeight","setTopOffset","newOffset","iframeDocument","element","contentWindow","document","domRootClone","adoptNode","boxStyles","useSimplePreview","pageStyles","map","definition","href","join","html","scaleRatio","extraClasses","open","write","close","body","appendChild","MinimapPositionTrackerView","View","setTemplate","tag","if","on","mousedown","_isDragging","listenTo","global","evt","data","fire","movementY","useCapture","setScrollProgress","newProgress","scrollProgress","MinimapView","_positionTrackerView","delegate","_scaleRatio","_minimapIframeView","children","click","_handleMinimapClick","wheel","_handleMinimapMouseWheel","destroy","Rect","scrollHeight","Math","max","min","setContentHeight","newScrollProgress","iframeView","positionTrackerView","totalOffset","round","setPositionTrackerHeight","trackerHeight","target","trackerViewRect","diff","clientY","percentage","deltaY","cloneEditingViewDomRoot","editor","rootName","viewDocument","editing","view","viewRoot","getRoot","domConverter","DomConverter","renderer","Renderer","selection","getDomRoot","cloneNode","bindElements","markToSync","node","unbindDomElement","getPageStyles","Array","from","styleSheets","styleSheet","startsWith","window","location","origin","cssRules","filter","rule","CSSMediaRule","cssText","getDomElementRect","domElement","getClientHeight","innerHeight","clientHeight","getScrollable","Minimap","Plugin","pluginName","_minimapView","_scrollableRootAncestor","ui","_onUiReady","remove","editingRootElement","_editingRootElement","getEditableElement","findClosestScrollableAncestor","ownerDocument","contains","once","_initializeMinimapView","state","_syncMinimapToEditingRootScrollPosition","config","get","minimapContainerElement","scrollableRootAncestor","editingRootElementWidth","width","minimapContainerWidth","minimapScaleRatio","minimapView","usePassive","movementYPercentage","absoluteScrollProgress","scrollable","scrollBy","offsetHeight","editingRootRect","scrollableRootAncestorRect","getIntersection"],"mappings":";;;;AAAA,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAChE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9G,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACxE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClF;ACSA,KAAA,CAAMA,IAAAA,CAAAA,CAAAA,CAAuBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAQ,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAErC,CAAA,CAAA,CAAA;ADRA,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;AAC/D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CCUY,KAAMC,CAAAA,iBAA0BC,CAAAA,OAAAA,CAAAA,UAAAA,CAAAA,CAAAA;AAe9C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADvBD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;ACyB9D,CAAA,CAAA,CAAA,CAAA,CACD,QAA8C,CAAA;AAE9C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADzBD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;AC2BrD,CAAA,CAAA,CAAA,CAAA,CACDC,WAAaC,CAAAA,MAAc,CAAA,CAAEC,OAA2B,CAAG,CAAA;AAC1D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAAED,MAAAA,CAAAA,CAAAA;AD1BT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC4BL,KAAA,CAAME,IAAAA,CAAAA,CAAAA,CAAO,IAAI,CAACC,YAAY,CAAA;AD3BhC,CC6BE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACC,GAAG,CAAE,CAAA,GAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA;AD5BnB,CC8BE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACA,GAAG,CAAE,CAAA,MAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA;AD7BtB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC+BL,IAAI,CAACC,QAAQ,CAAA,CAAA,CAAGJ,OAAAA,CAAAA;AD9BlB,CCgCE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACK,cAAc,CAAE,CAAA;AD/BvB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCgCRC,UAAY,CAAA,CAAA,CAAA;AACXC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAU,CAAA,CAAC,CAAA,CAAA;AD/Bf,CCgCI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,MAAA,CAAe,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA;AD/BnB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCgCXC,KAAO,CAAA,CAAA,CAAA;AACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,eAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AD/BL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCgCXC,KAAO,CAAA,CAAA,CAAA;AACNC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,CAAKT,IAAAA,CAAKU,EAAE,CAAE,CAAA,GAAA,CAAOD,CAAAA,CAAAA,CAAAA,GAAAA,CAAOhB,CAAAA,CAAAA,IAAAA,CAAAA,CAAMgB,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA;AAClCE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAAA,CAAQX,IAAAA,CAAKU,EAAE,CAAE,CAAA,MAAA,CAAUC,CAAAA,CAAAA,CAAAA,MAAAA,CAAUlB,CAAAA,CAAAA,IAAAA,CAAAA,CAAMkB,CAAAA,MAAAA,CAAAA,CAAAA;AAC5C,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;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADhCD,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;ACkCb,CAAA,CAAA,CAAA,CAAA,CACD,MAA2C,CAAA,CAAA,CAAA,CAAA;AAC1C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,KAAK,CAACC,MAASC,CAAAA,CAAAA,CAAAA,IAAI,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA;AAC3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACC,gBAAgB,CAAA,CAAA,CAAA;AACtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADlCD,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AACtC,CCoCQC,CAAAA,CAAAA,CAAAA,CAAAA,SAAWC,CAAAA,SAAiB,CAAS,CAAA,CAAA;ADnC7C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCoCL,IAAI,CAACL,MAAM,CAAA,CAAA,CAAGK,SAAAA,CAAAA;AACf,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADpCD,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;AACnE,CCsCQC,CAAAA,CAAAA,CAAAA,CAAAA,YAAcC,CAAAA,SAAiB,CAAS,CAAA,CAAA;ADrChD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCsCL,IAAI,CAACT,GAAG,CAAA,CAAA,CAAGS,SAAAA,CAAAA;AACZ,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ADtCD,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG;AAC5E,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;ACwClB,CAAA,CAAA,CAAA,CAAA,CACD,gBAAiC,CAAA,CAAA,CAAA,CAAA;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,cAAAA,CAAAA,CAAAA,CAAiB,IAAI,CAACC,OAAO,CAAEC,aAAa,CAAEC,QAAQ,CAAA;ADvC9D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CCwCL,KAAMC,CAAAA,YAAAA,CAAeJ,CAAAA,CAAAA,cAAAA,CAAeK,SAAS,CAAE,IAAI,CAACrB,QAAQ,CAACoB,YAAY,CAAA,CAAA;AAEzE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAME,SAAAA,CAAY,CAAA,CAAA,IAAI,CAACtB,QAAQ,CAACuB,gBAAgB,CAAA,CAAA,CAAG,CAAC;ADxCtD,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC,CAAC;AACJ;AACA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3C,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtC,CAAC,CAAC,CAAC,CAAC;AACJ;AACA,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3C,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtC,CAAC,CAAC,CAAC,CAAC;AC0CF,CAAA,CAAA,CAAC,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA;ADxCN,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC0CL,KAAMC,CAAAA,UAAAA,CAAa,CAAA,CAAA,IAAI,CAACxB,QAAQ,CAACwB,UAAU,CAACC,GAAG,CAAEC,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA;ADzCnD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC0CR,EAAK,CAAA,CAAA,MAAA,CAAOA,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAe,CAAA,MAAA,CAAW,CAAA,CAAA,CAAA;AACrC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,CAAC,CAAO,KAAA,CAAA,CAAA,CAAGA,UAAAA,CAAY,CAAA,CAAA,KAAA,CAAQ,CAAC,CAAA;ADzC3C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CC0CF,CAAA,IAAA,CAAA,CAAA;AACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,CAAC,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,UAAA,CAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,IAAA,CAAA,CAA6C,CAAGA,CAAAA,UAAAA,CAAWC,IAAI,CAAE,CAAE,CAAA,CAAC,CAAA;AAC7E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAIC,IAAI,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,IAAAA,CAAAA,CAAAA,CAAO,CAAC,CAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AD1ChB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACT,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AC4CpE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAGL,UAAY,CAAA;AD1CnB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACX,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN;AACA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACX,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AACvB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN;AACA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AC4Ca,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAG,IAAI,CAACxB,QAAQ,CAAC8B,UAAU,CAAE,CAAA,CAAA,CAAA;AD1CrD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;AACxB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN;AACA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC;AAC3C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AAClC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN;AACA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;AACxB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN;AC4CK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAGR,SAAW,CAAA;AD1CnB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AC4CM,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAG,IAAI,CAACtB,QAAQ,CAAC+B,YAAY,CAAA,CAAA,CAAA,CAAI,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA;AD1CrD,CAAC,CAAC,CAAC,CAAC,IAAI,CC2CC,CAAC,CAAA;AAERf,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,cAAAA,CAAegB,IAAI,CAAA,CAAA,CAAA;AACnBhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,cAAAA,CAAeiB,KAAK,CAAEJ,IAAAA,CAAAA,CAAAA;AACtBb,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,cAAAA,CAAekB,KAAK,CAAA,CAAA,CAAA;AD3CtB,CC4CElB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,cAAemB,CAAAA,IAAI,CAACC,WAAW,CAAEhB,YAAAA,CAAAA,CAAAA;AAClC,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA;AD3CA;AE/GA,KAAA,CAAM9B,IAAAA,CAAuBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAQ,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAErC,CAAA,CAAA,CAAA;AFgHA,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AAClG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CE9GY,KAAM8C,CAAAA,0BAAmCC,CAAAA,OAAAA,CAAAA,IAAAA,CAAAA,CAAAA;AA8BvD5C,CAAAA,CAAAA,CAAAA,CAAAA,WAAAA,CAAaC,MAAc,CAAG,CAAA;AAC7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAAEA,MAAAA,CAAAA,CAAAA;AFkFT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEhFL,KAAA,CAAME,IAAAA,CAAAA,CAAAA,CAAO,IAAI,CAACC,YAAY,CAAA;AFiFhC,CE/EE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACC,GAAG,CAAE,CAAA,MAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA;AFgFtB,CE/EE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACA,GAAG,CAAE,CAAA,GAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA;AFgFnB,CE/EE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACA,GAAG,CAAE,CAAA,cAAA,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAA;AFgF9B,CE/EE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACA,GAAG,CAAE,CAAA,WAAA,CAAe,CAAA,CAAA,KAAA,CAAA,CAAA;AFgF3B,CE9EE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACwC,WAAW,CAAE,CAAA;AF+EpB,CE9EGC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAK,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;AF+ER,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE9ERtC,UAAY,CAAA,CAAA,CAAA;AF+Ef,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE9EXE,KAAO,CAAA,CAAA,CAAA;AACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,iBAAA,CAAA,OAAA,CAAA,CAAA;AF+EL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE9EdP,IAAK4C,CAAAA,EAAE,CAAE,CAAe,WAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,iBAAA,CAAA,gBAAA,CAAA,CAAA;AACxB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF+EL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE9EXpC,KAAO,CAAA,CAAA,CAAA;AACNC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,CAAKT,IAAAA,CAAKU,EAAE,CAAE,CAAA,GAAA,CAAOD,CAAAA,CAAAA,CAAAA,GAAAA,CAAOhB,CAAAA,CAAAA,IAAMgB,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA;AAClCE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAAA,CAAQX,IAAAA,CAAKU,EAAE,CAAE,CAAA,MAAA,CAAUC,CAAAA,CAAAA,CAAAA,MAAAA,CAAUlB,CAAAA,CAAAA,IAAMkB,CAAAA,MAAAA,CAAAA,CAAAA;AAC5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF+EJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE9EX,CAAA,IAAA,CAAA,QAAA,CAAiBX,CAAAA,CAAAA,IAAAA,CAAKU,EAAE,CAAE,CAAA,cAAA,CAAA,CAAA;AAC3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF+EH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE9ERmC,EAAI,CAAA,CAAA,CAAA;AF+EP,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE9EXC,SAAW9C,CAAAA,CAAAA,IAAAA,CAAKU,EAAE,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA;AF+ExB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE9Ed,IAAI,CAACqC,WAAW,CAAA,CAAA,CAAG,IAAA,CAAA;AACpB,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;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF8ED,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;AE5Eb,CAAA,CAAA,CAAA,CAAA,CACD,MAA+B,CAAA,CAAA,CAAA,CAAA;AAC9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAACnC,MAAAA,CAAAA,CAAAA,CAAAA;AF6ER,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE3EL,IAAI,CAACoC,QAAQ,CAAEC,MAAAA,CAAO3B,QAAQ,CAAE,CAAA,CAAA,SAAA,CAAA,CAAa,CAAA,CAAE4B,GAAKC,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACnD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA,CAAC,IAAI,CAACJ,WAAW,CAAG,CAAA,CAAA;AACxB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACK,IAAI,CAAoB,CAAA,IAAA,CAAA,CAAA,CAAQD,IAAAA,CAAKE,SAAS,CAAA,CAAA;AF2EtD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE1EH,CAAA,CAAA,CAAA;AF2EL,CE3EOC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAY,CAAA,CAAA,IAAA;AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACN,QAAQ,CAAEC,MAAO3B,CAAAA,QAAQ,CAAA,CAAE,CAAW,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF4E7C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE3ER,IAAI,CAACyB,WAAW,CAAA,CAAA,CAAG,KAAA,CAAA;AF4EtB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE3EH,CAAA,CAAA,CAAA;AF4EL,CE5EOO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAY,CAAA,CAAA,IAAA;AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACvB,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF6ED,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AAClG,CE3EQvC,CAAAA,CAAAA,CAAAA,CAAAA,SAAWC,CAAAA,SAAiB,CAAS,CAAA,CAAA;AF4E7C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CE3EL,IAAI,CAACL,MAAM,CAAA,CAAA,CAAGK,SAAAA,CAAAA;AACf,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AF2ED,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;AACpE,CEzEQC,CAAAA,CAAAA,CAAAA,CAAAA,YAAcC,CAAAA,SAAiB,CAAS,CAAA,CAAA;AF0EhD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEzEL,IAAI,CAACT,GAAG,CAAA,CAAA,CAAGS,SAAAA,CAAAA;AACZ,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AFyED,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;AACvG,CEvEQqC,CAAAA,CAAAA,CAAAA,CAAAA,iBAAmBC,CAAAA,WAAmB,CAAS,CAAA,CAAA;AFwEvD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CEvEL,IAAI,CAACC,cAAc,CAAA,CAAA,CAAGD,WAAAA,CAAAA;AACvB,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA;AFwEA;AG1KA,CAAA,CAAA,CAAA;AH4KA,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO;AACvG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7G,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CG1KY,KAAME,CAAAA,WAAoBjB,CAAAA,OAAAA,CAAAA,IAAAA,CAAAA,CAAAA;AACxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AH2KD,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AGzK7D,CAAA,CAAA,CAAA,CAAA,CACD,oBAAkE,CAAA;AAElE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AHyKD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AGvK5F,CAAA,CAAA,CAAA,CAAA,CACD,WAAqC,CAAA;AAErC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AHuKD,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AGrKxD,CAAA,CAAA,CAAA,CAAA,CACD,kBAAuD,CAAA;AAEvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AHqKD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AGnK1C,CAAA,CAAA,CAAA,CAAA,CACD5C,WACC,CAAA,CAAEC,CAAAA,MAAM,CAAA,CAAEmC,UAAU,CAAA,CAAEN,UAAU,CAAA,CAAEO,YAAY,CAAER,CAAAA,gBAAgB,CAAEH,CAAAA,YAAY,CAAA,CAA2C,CACxH,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAAEzB,MAAAA,CAAAA,CAAAA;AHkKT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CGhKL,KAAA,CAAME,IAAAA,CAAAA,CAAAA,CAAO,IAAI,CAACC,YAAY,CAAA;AAE9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAAC0D,oBAAoB,CAAA,CAAA,CAAG,GAAA,CAAInB,0BAA4B1C,CAAAA,MAAAA,CAAAA,CAAAA;AHgK9D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG/JL,IAAI,CAAC6D,oBAAoB,CAACC,QAAQ,CAAE,CAASlD,IAAAA,CAAAA,CAAAA,CAAAA,EAAE,CAAE,IAAI,CAAA,CAAA;AHgKvD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG9JL,IAAI,CAACmD,WAAW,CAAA,CAAA,CAAG5B,UAAAA,CAAAA;AAEnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAAC6B,kBAAkB,CAAA,CAAA,CAAG,GAAA,CAAInE,iBAAAA,CAAmBG,MAAQ,CAAA,CAAA,CAAA;AACxD4B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAAAA,CAAAA;AACAC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAAA,CAAAA;AACAO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,YAAAA,CAAAA;AACAD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAAA,CAAAA;AACAV,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,YAAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AH8JF,CG5JE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACmB,WAAW,CAAE,CAAA;AH6JpB,CG5JGC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAK,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;AH6JR,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG5JRtC,UAAY,CAAA,CAAA,CAAA;AH6Jf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG5JXE,KAAO,CAAA,CAAA,CAAA;AACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AH6JH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG5JRwD,QAAU,CAAA,CAAA,CAAA;AACT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACJ,oBAAoB;AACzB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AH6JJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG5JRd,EAAI,CAAA,CAAA,CAAA;AH6JP,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG5JXmB,KAAOhE,CAAAA,CAAAA,IAAAA,CAAKU,EAAE,CAAE,IAAI,CAACuD,mBAAmB,CAACjE,IAAI,CAAE,IAAI,CAAA,CAAA,CAAA;AH6JvD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG5JXkE,KAAOlE,CAAAA,CAAAA,IAAAA,CAAKU,EAAE,CAAE,IAAI,CAACyD,wBAAwB,CAACnE,IAAI,CAAE,IAAI,CAAA,CAAA;AACzD,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;AACD,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AH4JD,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;AG1Jb,CAAA,CAAA,CAAA,CAAA,CACD,OAAgC,CAAA,CAAA,CAAA,CAAA;AH2JjC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG1JL,IAAI,CAAC8D,kBAAkB,CAACM,OAAO,CAAA,CAAA,CAAA;AAE/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAACA,OAAAA,CAAAA,CAAAA,CAAAA;AACP,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AHyJD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;AGvJ3E,CACD,CAAA,CAAA,CAAA,CAAA,GAAA,CAAWzD,MAAiB,CAAA,CAAA,CAAA,CAAA;AAC3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,GAAI0D,CAAAA,IAAM,CAAA,IAAI,CAACjD,OAAO,CAAA,CAAIT,MAAM,CAAA;AACxC,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AHuJD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;AGrJnI,CACD,CAAA,CAAA,CAAA,CAAA,GAAA,CAAW2D,YAAuB,CAAA,CAAA,CAAA,CAAA;AHsJnC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CGrJL,MAAOC,CAAAA,IAAAA,CAAKC,GAAG,CAAE,CAAA,CAAGD,CAAAA,IAAAA,CAAKE,GAAG,CAAE,IAAI,CAAC9D,MAAM,CAAE,CAAA,IAAI,CAACmD,kBAAkB,CAACnD,MAAM,CAAA,CAAA,CAAA,CAAK,IAAI,CAACgD,oBAAoB,CAAChD,MAAM,CAAA,CAAA;AAC/G,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AHqJD,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;AGnJb,CAAA,CAAA,CAAA,CAAA,CACD,MAA+B,CAAA,CAAA,CAAA,CAAA;AAC9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAACC,MAAAA,CAAAA,CAAAA,CAAAA;AHoJR,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CGlJL,IAAI,CAACkD,kBAAkB,CAAClD,MAAM,CAAA,CAAA,CAAA;AHmJhC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CGjJL,IAAI,CAACQ,OAAO,CAAEmB,WAAW,CAAE,IAAI,CAACuB,kBAAkB,CAAC1C,OAAO,CAAA,CAAA;AAC3D,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AHiJD,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1G,CAAC,CAAC,CAAC;AACH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9F,CG/IQsD,CAAAA,CAAAA,CAAAA,CAAAA,gBAAkB1D,CAAAA,SAAiB,CAAS,CAAA,CAAA;AHgJpD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG/IL,IAAI,CAAC8C,kBAAkB,CAAC/C,SAAS,CAAEC,SAAY,CAAA,CAAA,CAAA,IAAI,CAAC6C,WAAW,CAAA,CAAA;AAChE,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AH+ID,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AACrC,CAAC,CAAC,CAAC;AACH,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AACnH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ;AAClI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;AACrC,CAAC,CAAC,CAAC;AACH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;AACxG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAClC,CG7IQN,CAAAA,CAAAA,CAAAA,CAAAA,iBAAmBoB,CAAAA,iBAAyB,CAAS,CAAA,CAAA;AH8I7D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG7IL,KAAA,CAAMC,UAAAA,CAAAA,CAAAA,CAAa,IAAI,CAACd,kBAAkB,CAAA;AH8I5C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG7IL,KAAA,CAAMe,mBAAAA,CAAAA,CAAAA,CAAsB,IAAI,CAAClB,oBAAoB,CAAA;AH8IvD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;AG3I5G,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKiB,UAAAA,CAAWjE,MAAM,CAAA,CAAA,CAAG,IAAI,CAACA,MAAM,CAAG,CAAA,CAAA;AACtCiE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAAA,CAAW3D,YAAY,CAAE,CAAA,CAAA,CAAA;AH6I5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG5IR4D,mBAAoB5D,CAAAA,YAAY,CAAI2D,CAAAA,UAAAA,CAAWjE,MAAM,CAAA,CAAA,CAAGkE,mBAAAA,CAAoBlE,MAAK,CAAMgE,CAAAA,CAAAA,CAAAA,iBAAAA,CAAAA,CAAAA;AH6I1F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG5IC,CAAA,IAAA,CAAA,CAAA;AACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMG,WAAAA,CAAAA,CAAAA,CAAcF,UAAWjE,CAAAA,MAAM,CAAG,CAAA,CAAA,IAAI,CAACA,MAAM,CAAA;AH6ItD,CG3IGiE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAW3D,CAAAA,YAAY,CAAE,CAAC6D,WAAcH,CAAAA,CAAAA,CAAAA,iBAAAA,CAAAA,CAAAA;AH4I3C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CG3IRE,mBAAoB5D,CAAAA,YAAY,CAAI,CAAA,IAAI,CAACN,MAAM,CAAA,CAAA,CAAGkE,mBAAAA,CAAoBlE,MAAK,CAAMgE,CAAAA,CAAAA,CAAAA,iBAAAA,CAAAA,CAAAA;AAClF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEAE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,mBAAAA,CAAoBtB,iBAAiB,CAAEgB,IAAKQ,CAAAA,KAAK,CAAEJ,iBAAoB,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA;AACxE,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AH0ID,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1G,CGxIQK,CAAAA,CAAAA,CAAAA,CAAAA,wBAA0BC,CAAAA,aAAqB,CAAS,CAAA,CAAA;AHyIhE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CGxIL,IAAI,CAACtB,oBAAoB,CAAC5C,SAAS,CAAEkE,aAAgB,CAAA,CAAA,CAAA,IAAI,CAACpB,WAAW,CAAA,CAAA;AACtE,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AHwID,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;AAC9B,CGtISI,CAAAA,CAAAA,CAAAA,CAAAA,mBAAqBd,CAAAA,IAAW,CAAG,CAAA,CAAA;AHuI5C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CGtIL,KAAA,CAAM0B,mBAAAA,CAAAA,CAAAA,CAAsB,IAAI,CAAClB,oBAAoB,CAAA;AAErD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKR,IAAK+B,CAAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAKL,mBAAAA,CAAoBzD,OAAO,CAAG,CAAA,CAAA;AAClD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM+D,eAAkB,CAAA,CAAA,CAAA,GAAId,CAAAA,IAAMQ,CAAAA,mBAAAA,CAAoBzD,OAAO,CAAA,CAAA;AHqI/D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CGpIL,KAAA,CAAMgE,IAAAA,CAAAA,CAAAA,CAAO,IAAEjC,CAAqBkC,OAAO,CAAGF,CAAAA,CAAAA,eAAAA,CAAgB1E,GAAG,CAAA,CAAA,CAAG0E,eAAgBxE,CAAAA,MAAM,CAAA,CAAA,CAAG,CAAA,CAAA;AAC7F,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM2E,UAAAA,CAAAA,CAAAA,CAAaF,IAAO,CAAA,CAAA,CAAA,IAAI,CAACtB,kBAAkB,CAACnD,MAAM,CAAA;AHqI1D,CGnIE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACyC,IAAI,CAAqB,CAAA,KAAA,CAASkC,CAAAA,CAAAA,UAAAA,CAAAA,CAAAA;AACxC,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AHmID,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;AAC9B,CGjISnB,CAAAA,CAAAA,CAAAA,CAAAA,wBAA0BhB,CAAAA,IAAW,CAAG,CAAA,CAAA;AHkIjD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CGjIL,IAAI,CAACC,IAAI,CAAoB,CAAA,IAAA,CAAQ,CAAED,CAAAA,IAAAA,CAAqBoC,MAAM,CAAG,CAAA,CAAA,IAAI,CAAC1B,WAAW,CAAA,CAAA;AACtF,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA;AHkIA;AI9SA,CAAA,CAAA,CAAA;AJgTA,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG;AACjH,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AAC1H,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;AAC1E,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACjD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AI9S9C,CAAA,CAAA,CAAA,CACM,QAAA,CAAS2B,uBAAyBC,CAAAA,MAAc,CAAA,CAAEC,QAAiB,CAAA,CAAA,CAAA;AACzE,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,YAAAA,CAAAA,CAAAA,CAAeF,MAAOG,CAAAA,OAAO,CAACC,IAAI,CAACvE,QAAQ,CAAA;AJ+SlD,CI9SC,CAAA,CAAA,CAAA,KAAA,CAAMwE,QAAAA,CAAWH,CAAAA,CAAAA,YAAaI,CAAAA,OAAO,CAAEL,QAAAA,CAAAA,CAAAA;AJ+SxC,CI9SC,CAAA,CAAA,CAAA,KAAA,CAAMM,YAAAA,CAAe,CAAA,CAAA,GAAA,CAAIC,YAAcN,CAAAA,YAAAA,CAAAA,CAAAA;AACvC,CAAA,CAAA,CAAA,CAAA,KAAMO,CAAAA,QAAW,CAAA,CAAA,CAAA,GAAA,CAAIC,QAAUH,CAAAA,YAAAA,CAAAA,CAAcL,YAAAA,CAAaS,SAAS,CAAA,CAAA;AJ+SpE,CAAC,CAAC,CAAC,CI9SF,KAAM7E,CAAAA,YAAAA,CAAekE,CAAAA,CAAAA,MAAAA,CAAOG,OAAO,CAACC,IAAI,CAACQ,UAAU,CAAA,CAAA,CAAIC,SAAS,CAAA,CAAA,CAAA;AJ+SjE,CI7SCN,CAAAA,CAAAA,CAAAA,YAAaO,CAAAA,YAAY,CAAEhF,YAAcuE,CAAAA,CAAAA,QAAAA,CAAAA,CAAAA;AJ8S1C,CI5SCI,CAAAA,CAAAA,CAAAA,QAASM,CAAAA,UAAU,CAAE,CAAA,QAAA,CAAYV,CAAAA,CAAAA,QAAAA,CAAAA,CAAAA;AJ6SlC,CI5SCI,CAAAA,CAAAA,CAAAA,QAASM,CAAAA,UAAU,CAAE,CAAA,UAAA,CAAcV,CAAAA,CAAAA,QAAAA,CAAAA,CAAAA;AJ6SpC,CI3SCA,CAAAA,CAAAA,CAAAA,QAASjD,CAAAA,EAAE,CAAE,CAAA,MAAA,CAAA,QAAA,CAAmB,CAAA,CAAA,CAAEK,GAAAA,CAAKuD,CAAAA,IAAUP,CAAAA,CAAAA,CAAAA,QAAAA,CAASM,UAAU,CAAE,CAAA,QAAA,CAAYC,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AJ4SnF,CI3SCX,CAAAA,CAAAA,CAAAA,QAASjD,CAAAA,EAAE,CAAE,CAAA,MAAA,CAAA,UAAA,CAAqB,CAAA,CAAA,CAAEK,GAAAA,CAAKuD,CAAAA,IAAUP,CAAAA,CAAAA,CAAAA,QAAAA,CAASM,UAAU,CAAE,CAAA,UAAA,CAAcC,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AJ4SvF,CI3SCX,CAAAA,CAAAA,CAAAA,QAASjD,CAAAA,EAAE,CAAE,CAAA,MAAA,CAAA,IAAA,CAAe,CAAA,CAAA,CAAEK,GAAAA,CAAKuD,CAAAA,IAAUP,CAAAA,CAAAA,CAAAA,QAAAA,CAASM,UAAU,CAAE,CAAA,IAAA,CAAQC,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAE1EP,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAStF,MAAM,CAAA,CAAA,CAAA;AJ2ShB,CAAC,CAAC,CAAC,CIzSF6E,MAAOG,CAAAA,OAAO,CAACC,IAAI,CAAChD,EAAE,CAAE,CAAA,MAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAMqD,QAAAA,CAAStF,MAAM,CAAA,CAAA,CAAA,CAAA;AJ0SxD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;AACvC,CAAC,CAAC,CAAC,CIxSF6E,MAAO5C,CAAAA,EAAE,CAAE,CAAA,OAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACrBmD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,YAAAA,CAAaU,gBAAgB,CAAEnF,YAAAA,CAAAA,CAAAA;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AJySD,CIvSC,CAAA,CAAA,CAAA,MAAA,CAAOA,YAAAA,CAAAA;AACR,CAAA;AAEA,CAAA,CAAA,CAAA;AJuSA,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;AAC1H,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;AAC1C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACR,CAAC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO;AACpG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1G,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AIrSX,CACM,CAAA,CAAA,CAAA,QAAA,CAASoF,aAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AJsShB,CAAC,CAAC,CAAC,CIrSF,MAAA,CAAOC,KAAAA,CAAMC,IAAI,CAAE5D,MAAO3B,CAAAA,QAAQ,CAACwF,WAAW,CAAA,CAC5ClF,GAAG,CAAEmF,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AJqSR,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AInSZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKA,UAAWjF,CAAAA,IAAI,CAAA,CAAA,CAAA,CAAI,CAACiF,UAAAA,CAAWjF,IAAI,CAACkF,UAAU,CAAE/D,MAAAA,CAAOgE,MAAM,CAACC,QAAQ,CAACC,MAAM,CAAK,CAAA,CAAA,CAAA;AJqS1F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CIpSP,MAAO,CAAA,CAAA;AAAErF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAAA,CAAMiF,UAAAA,CAAWjF,IAAI;AAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AJuSH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CIrSJ,MAAA,CAAO8E,KAAAA,CAAMC,IAAI,CAAEE,UAAAA,CAAWK,QAAQ,CACpCC,CAAAA,MAAM,CAAEC,CAAAA,IAAQ,CAAA,CAAA,CAAA,CAAA,CAAGA,IAAgBC,CAAAA,UAAAA,CAAAA,YAAW,CAC9C3F,CAAAA,CAAAA,GAAG,CAAE0F,CAAAA,IAAAA,CAAQA,CAAAA,CAAAA,IAAKE,CAAAA,OAAO,CACzBzF,CAAAA,IAAI,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACF,CAAA;AAEA,CAAA,CAAA,CAAA;AJkSA,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAC7G,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CIhSI,QAAS0F,CAAAA,iBAAAA,CAAmBC,UAAuB,CAAA,CAAA,CAAA;AJiS1D,CAAC,CAAC,CAAC,CIhSF,MAAA,CAAO,GAAIrD,CAAAA,IAAMqD,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAezE,MAAO3B,CAAAA,QAAQ,CAACgB,IAAI,CAAA,CAAA,CAAGW,MAAOgE,CAAAA,MAAM,CAAGS,CAAAA,CAAAA,UAAAA,CAAAA,CAAAA;AACxE,CAAA;AAEA,CAAA,CAAA,CAAA;AJgSA,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAClG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CI9RI,QAASC,CAAAA,eAAAA,CAAiBD,UAAuB,CAAA,CAAA,CAAA;AACvD,CAAA,CAAA,CAAA,CAAA,MAAA,CAAOA,UAAezE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAO3B,QAAQ,CAACgB,IAAI,CAAA,CAAA,CAAGW,MAAOgE,CAAAA,MAAM,CAACW,WAAW,CAAA,CAAA,CAAGF,UAAAA,CAAWG,YAAY,CAAA;AACjG,CAAA;AAEA,CAAA,CAAA,CAAA;AJ8RA,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;AACvF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CI5RI,QAASC,CAAAA,aAAAA,CAAeJ,UAAuB,CAAA,CAAA,CAAA;AJ6RtD,CAAC,CAAC,CAAC,CI5RF,MAAOA,CAAAA,UAAAA,CAAezE,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAO3B,QAAQ,CAACgB,IAAI,CAAA,CAAA,CAAGW,MAAAA,CAAOgE,MAAM,CAAA,CAAA,CAAGS,UAAAA,CAAAA;AAC9D,CAAA;AJ6RA;AKtXA,CAAA,CAAA,CAAA;ALwXA,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AAC/B,CAAC,CAAC,CAAC,CKtXY,KAAMK,CAAAA,OAAgBC,CAAAA,OAAAA,CAAAA,MAAAA,CAAAA,CAAAA;AACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ALuXD,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;AKrXb,CACD,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAkBC,UAAa,CAAA,CAAA,CAAA,CAAA;ALsXhC,CKrXE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAO,CAAA,OAAA,CAAA,CAAA;AACR,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ALqXD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;AKnX3C,CAAA,CAAA,CAAA,CAAA,CACD,YAA0C,CAAA;AAE1C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ALmXD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AAC7E,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AKjXrE,CAAA,CAAA,CAAA,CAAA,CACD,uBAAqD,CAAA;AAErD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ALiXD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AAC7E,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AK/WrE,CAAA,CAAA,CAAA,CAAA,CACD,mBAA0C,CAAA;AAE1C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AL+WD,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;AK7Wb,CAAA,CAAA,CAAA,CAAA,CACD,IAAoB,CAAA,CAAA,CAAA,CAAA;AL8WrB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK7WL,KAAA,CAAMxC,MAAAA,CAAAA,CAAAA,CAAS,IAAI,CAACA,MAAM,CAAA;AL8W5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK7WL,IAAI,CAACyC,YAAY,CAAA,CAAA,CAAG,IAAA,CAAA;AL8WtB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK7WL,IAAI,CAACC,uBAAuB,CAAA,CAAA,CAAG,IAAA,CAAA;AAE/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACnF,QAAQ,CAAEyC,MAAAA,CAAO2C,EAAE,CAAE,CAAA,CAAA,KAAA,CAAS,CAAA,CAAA,IAAI,CAACC,UAAU,CAACrI,IAAI,CAAE,IAAI,CAAA,CAAA,CAAA;AAC9D,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AL4WD,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;AK1Wb,CAAA,CAAA,CAAA,CAAA,CACD,OAAgC,CAAA,CAAA,CAAA,CAAA;AAC/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAK,CAACoE,OAAAA,CAAAA,CAAAA,CAAAA;AL2WR,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKzWL,IAAI,CAAC8D,YAAY,CAAE9D,OAAO,CAAA,CAAA,CAAA;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAAC8D,YAAY,CAAE9G,OAAO,CAAEkH,MAAM,CAAA,CAAA,CAAA;AACnC,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ALyWD,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe;AAC9E,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;AKvWrC,CAAA,CAAA,CAAA,CAAA,CACD,UAA2B,CAAA,CAAA,CAAA,CAAA;ALwW5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKvWL,KAAA,CAAM7C,MAAAA,CAAAA,CAAAA,CAAS,IAAI,CAACA,MAAM,CAAA;ALwW5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC/D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKtWL,KAAM8C,CAAAA,kBAAAA,CAAqB,CAAA,CAAA,IAAI,CAACC,mBAAmB,CAAG/C,CAAAA,CAAAA,MAAO2C,CAAAA,EAAE,CAACK,kBAAkB,CAAA,CAAA,CAAA;ALuWpF,CKrWE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACN,uBAAuB,CAAA,CAAA,CAAGO,6BAA+BH,CAAAA,kBAAAA,CAAAA,CAAAA;ALsWhE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKpWL,EAAK,CAAA,CAAA,CAACA,kBAAAA,CAAmBI,aAAa,CAACrG,IAAI,CAACsG,QAAQ,CAAEL,kBAAuB,CAAA,CAAA,CAAA,CAAA;ALqW/E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKpWR9C,MAAO2C,CAAAA,EAAE,CAACS,IAAI,CAAE,CAAA,MAAA,CAAA,CAAA,CAAU,IAAI,CAACR,UAAU,CAACrI,IAAI,CAAE,IAAI,CAAA,CAAA,CAAA;AAEpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAAC8I,sBAAsB,CAAA,CAAA,CAAA;ALmW7B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKjWL,IAAI,CAAC9F,QAAQ,CAAEyC,MAAAA,CAAOG,OAAO,CAACC,IAAI,CAAA,CAAE,CAAU,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ALkWhD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKjWR,EAAA,CAAA,CAAKJ,MAAAA,CAAOsD,KAAK,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,KAAA,CAAU,CAAA,CAAA,CAAA;AAC/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACC,uCAAuC,CAAA,CAAA,CAAA;AAC7C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACA,uCAAuC,CAAA,CAAA,CAAA;AAC7C,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AL+VD,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC;AAC7G,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AK7VvE,CAAA,CAAA,CAAA,CAAA,CACD,sBAAuC,CAAA,CAAA,CAAA,CAAA;AL8VxC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK7VL,KAAA,CAAMvD,MAAAA,CAAAA,CAAAA,CAAS,IAAI,CAACA,MAAM,CAAA;AL8V5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK7VL,KAAA,CAAM3F,MAAAA,CAAAA,CAAAA,CAAS2F,MAAAA,CAAO3F,MAAM,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM4B,gBAAmB+D,CAAAA,CAAAA,CAAAA,MAAAA,CAAOwD,MAAM,CAACC,GAAG,CAAE,CAAA,OAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;AL8V9C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;AK3VjE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,uBAA0B1D,CAAAA,CAAAA,CAAAA,MAAAA,CAAOwD,MAAM,CAACC,GAAG,CAAE,CAAA,OAAA,CAAA,SAAA,CAAA,CAAA,CAAA;AL6VrD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK5VL,KAAA,CAAME,sBAAAA,CAAAA,CAAAA,CAAyB,IAAI,CAACjB,uBAAuB,CAAA;AL6V7D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AK1V5G,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMkB,uBAAAA,CAAAA,CAAAA,CAA0B5B,iBAAmB,CAAA,IAAI,CAACe,mBAAmB,CAAA,CAAIc,KAAK,CAAA;AL4VtF,CK3VE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,qBAAAA,CAAwB9B,CAAAA,CAAAA,iBAAmB0B,CAAAA,uBAAAA,CAAAA,CAA0BG,KAAK,CAAA;AAChF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAME,iBAAAA,CAAAA,CAAAA,CAAoBD,qBAAwBF,CAAAA,CAAAA,CAAAA,uBAAAA,CAAAA;AAElD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMI,WAAAA,CAAc,CAAA,CAAA,IAAI,CAACvB,YAAY,CAAA,CAAA,CAAG,GAAIxE,CAAAA,WAAa,CAAA,CAAA;AACxD5D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAAA;AL2VH,CK1VGmC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAYuH,CAAAA,CAAAA,iBAAAA,CAAAA;AL2Vf,CK1VG7H,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAYgF,CAAAA,CAAAA,aAAAA,CAAAA,CAAAA,CAAAA;AACZzE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,YAAAA,CAAAA,CAAcuD,MAAOwD,CAAAA,MAAM,CAACC,GAAG,CAAE,CAAA,OAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AACjCxH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAAAA,CAAAA;AACAH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,YAAAA,CAAAA,CAAciE,uBAAyBC,CAAAA,MAAAA,CAAAA;AACxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEAgE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,WAAAA,CAAY7I,MAAM,CAAA,CAAA,CAAA;AL0VpB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;AKvV/D6I,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,WAAAA,CAAYzG,QAAQ,CAAEC,MAAAA,CAAO3B,QAAQ,CAAE,CAAA,CAAA,MAAA,CAAA,CAAU,CAAA,CAAE4B,GAAKC,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKiG,sBAA2BnG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAO3B,QAAQ,CAACgB,IAAI,CAAG,CAAA,CAAA;AACtD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKa,IAAK+B,CAAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAKjC,MAAAA,CAAO3B,QAAQ,CAAG,CAAA,CAAA;AACtC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA;AACD,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,IAAA,CAAO,EAAK6B,CAAAA,CAAAA,IAAAA,CAAK+B,MAAM,CAAA,CAAA,CAAA,CAAA,CAAKkE,sBAAyB,CAAA,CAAA,CAAA;AACpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAACJ,uCAAuC,CAAA,CAAA,CAAA;ALwV/C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKvVH,CAAA,CAAA,CAAA;ALwVL,CKxVO1F,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAY,CAAA,CAAA,IAAA,CAAA;ALyVnB,CKzVyBoG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAY,CAAA,CAAA,IAAA;AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AL2V1C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;AKxVpDD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,WAAAA,CAAYzG,QAAQ,CAAEC,MAAOgE,CAAAA,MAAM,CAAA,CAAE,CAAU,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC9C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAI,CAAC+B,uCAAuC,CAAA,CAAA,CAAA;AAC7C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AL0VF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AKvVpFS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,WAAAA,CAAY5G,EAAE,CAAoB,CAAA,IAAA,CAAQ,CAAA,CAAA,CAAEK,GAAKG,CAAAA,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA,CAAAA;ALyVnD,CKxVG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAIsG,mBAAAA,CAAAA;ALyVP,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKvVR,EAAA,CAAA,CAAKF,WAAAA,CAAYnF,YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAI,CAAA,CAAA,CAAA;ALwVzC,CKvVIqF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,mBAAsB,CAAA,CAAA,CAAA,CAAA,CAAA;ALwV1B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKvVF,CAAA,IAAA,CAAA,CAAA;ALwVV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CKvVXA,mBAAsBtG,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,CAAAA,CAAYoG,WAAAA,CAAYnF,YAAY,CAAA;AAC3D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAMsF,CAAAA,sBAAAA,CAAyBD,CAAAA,CAAAA,mBAC5BP,CAAAA,CAAAA,CAAAA,CAAAA,sBAAAA,CAAuB9E,YAAY,CAAA,CAAA,CAAGqD,eAAAA,CAAiByB,sBAAuB,CAAA,CAAA,CAAA;AACjF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMS,UAAAA,CAAAA,CAAAA,CAAa/B,aAAesB,CAAAA,sBAAAA,CAAAA,CAAAA;AAElCS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAAA,CAAWC,QAAQ,CAAE,CAAGvF,CAAAA,CAAAA,IAAAA,CAAKQ,KAAK,CAAE6E,sBAAAA,CAAAA,CAAAA,CAAAA;AACrC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ALqVF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC;AKlVhGH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,WAAAA,CAAY5G,EAAE,CAAqB,CAAA,KAAA,CAAS,CAAA,CAAA,CAAEK,GAAKoC,CAAAA,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA;ALoVrD,CKnVG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMsE,sBAAAA,CAAyBtE,CAAAA,CAAAA,UAAa8D,CAAAA,CAAAA,CAAAA,sBAAAA,CAAuB9E,YAAY,CAAA;AAC/E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMuF,UAAAA,CAAAA,CAAAA,CAAa/B,aAAesB,CAAAA,sBAAAA,CAAAA,CAAAA;AAElCS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAAA,CAAWC,QAAQ,CAAE,CAAGvF,CAAAA,CAAAA,IAAAA,CAAKQ,KAAK,CAAE6E,sBAAAA,CAAAA,CAAAA,CAAAA;AACrC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ALmVF,CKjVET,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,uBAAwB5G,CAAAA,WAAW,CAAEkH,WAAAA,CAAYrI,OAAO,CAAA,CAAA;AACzD,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;ALiVD,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO;AK/UV,CAAA,CAAA,CAAA,CAAA,CACD,uCAAwD,CAAA,CAAA,CAAA,CAAA;ALgVzD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK/UL,KAAA,CAAMmH,kBAAAA,CAAAA,CAAAA,CAAqB,IAAI,CAACC,mBAAmB,CAAA;ALgVrD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK/UL,KAAA,CAAMiB,WAAAA,CAAAA,CAAAA,CAAc,IAAI,CAACvB,YAAY,CAAA;ALgVvC,CK9UEuB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,WAAY/E,CAAAA,gBAAgB,CAAE6D,kBAAAA,CAAmBwB,YAAY,CAAA,CAAA;AAE7D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAMC,eAAAA,CAAAA,CAAAA,CAAkBvC,iBAAmBc,CAAAA,kBAAAA,CAAAA,CAAAA;AAC3C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM0B,0BAA6BxC,CAAAA,CAAAA,CAAAA,iBAAAA,CAAmB,IAAI,CAACU,uBAAuB,CAAA,CAAA;AL8UpF,CK7UE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAI1E,cAAAA,CAAAA;AL8UN,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;AACpI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAChH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;AACrE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK3UL,EAAA,CAAA,CAAKwG,0BAAAA,CAA2BrB,QAAQ,CAAEoB,eAAoB,CAAA,CAAA,CAAA,CAAA;AL4UhE,CK3UGvG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,cAAiB,CAAA,CAAA,CAAA,CAAA,CAAA;AL4UpB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK3UC,CAAA,IAAA,CAAA,CAAA;AACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAKuG,eAAgBvJ,CAAAA,GAAG,CAAA,CAAA,CAAGwJ,0BAAAA,CAA2BxJ,GAAG,CAAG,CAAA,CAAA;AL4U/D,CK3UIgD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,cAAiB,CAAA,CAAA,CAAA,CAAA,CAAA;AL4UrB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CK3UF,CAAA,IAAA,CAAA,CAAA;AACNA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,cAAAA,CAAiB,CAAA,CAAA,CAAEuG,eAAgBvJ,CAAAA,GAAG,CAAA,CAAA,CAAGwJ,0BAA2BxJ,CAAAA,GAAG,CACpEwJ,CAAAA,CAAAA,CAAAA,CAAAA,0BAA2BtJ,CAAAA,MAAM,CAAA,CAAA,CAAGqJ,eAAAA,CAAgBrJ,MAAM,CAAD,CAAA;AAE5D8C,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,cAAAA,CAAiBc,CAAAA,CAAAA,IAAAA,CAAKC,GAAG,CAAE,CAAA,CAAA,CAAGD,IAAKE,CAAAA,GAAG,CAAEhB,cAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACzD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AL0UF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;AKvU3HgG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,WAAAA,CAAYzE,wBAAwB,CAAEiF,0BAAAA,CAA2BC,eAAe,CAAEF,eAAAA,CAAAA,CAAmBrJ,MAAM,CAAA,CAAA;AAC3G8I,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,WAAAA,CAAYlG,iBAAiB,CAAEE,cAAAA,CAAAA,CAAAA;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA;AACD,CAAA;ALyUA;AACA,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG","file":"index.js.map","sourcesContent":["import { Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { toUnit, global, Rect, findClosestScrollableAncestor } from '@ckeditor/ckeditor5-utils/dist/index.js';\nimport { IframeView, View } from '@ckeditor/ckeditor5-ui/dist/index.js';\nimport { DomConverter, Renderer } from '@ckeditor/ckeditor5-engine/dist/index.js';\n\nconst toPx$1 = /* #__PURE__ */ toUnit('px');\n/**\n * The internal `<iframe>` view that hosts the minimap content.\n *\n * @internal\n */ class MinimapIframeView extends IframeView {\n /**\n\t * Cached view constructor options for re-use in other methods.\n\t */ _options;\n /**\n\t * Creates an instance of the internal minimap iframe.\n\t */ constructor(locale, options){\n super(locale);\n const bind = this.bindTemplate;\n this.set('top', 0);\n this.set('height', 0);\n this._options = options;\n this.extendTemplate({\n attributes: {\n tabindex: -1,\n 'aria-hidden': 'true',\n class: [\n 'ck-minimap__iframe'\n ],\n style: {\n top: bind.to('top', (top)=>toPx$1(top)),\n height: bind.to('height', (height)=>toPx$1(height))\n }\n }\n });\n }\n /**\n\t * @inheritDoc\n\t */ render() {\n return super.render().then(()=>{\n this._prepareDocument();\n });\n }\n /**\n\t * Sets the new height of the iframe.\n\t */ setHeight(newHeight) {\n this.height = newHeight;\n }\n /**\n\t * Sets the top offset of the iframe to move it around vertically.\n\t */ setTopOffset(newOffset) {\n this.top = newOffset;\n }\n /**\n\t * Sets the internal structure of the `<iframe>` readying it to display the\n\t * minimap element.\n\t */ _prepareDocument() {\n const iframeDocument = this.element.contentWindow.document;\n const domRootClone = iframeDocument.adoptNode(this._options.domRootClone);\n const boxStyles = this._options.useSimplePreview ? `\n\t\t\t.ck.ck-editor__editable_inline img {\n\t\t\t\tfilter: contrast( 0 );\n\t\t\t}\n\n\t\t\tp, li, a, figcaption, span {\n\t\t\t\tbackground: hsl(0, 0%, 80%) !important;\n\t\t\t\tcolor: hsl(0, 0%, 80%) !important;\n\t\t\t}\n\n\t\t\th1, h2, h3, h4 {\n\t\t\t\tbackground: hsl(0, 0%, 60%) !important;\n\t\t\t\tcolor: hsl(0, 0%, 60%) !important;\n\t\t\t}\n\t\t` : '';\n const pageStyles = this._options.pageStyles.map((definition)=>{\n if (typeof definition === 'string') {\n return `<style>${definition}</style>`;\n } else {\n return `<link rel=\"stylesheet\" type=\"text/css\" href=\"${definition.href}\">`;\n }\n }).join('\\n');\n const html = `<!DOCTYPE html><html lang=\"en\">\n\t\t\t<head>\n\t\t\t\t<meta charset=\"utf-8\">\n\t\t\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\t\t\t\t${pageStyles}\n\t\t\t\t<style>\n\t\t\t\t\thtml, body {\n\t\t\t\t\t\tmargin: 0 !important;\n\t\t\t\t\t\tpadding: 0 !important;\n\t\t\t\t\t}\n\n\t\t\t\t\thtml {\n\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t}\n\n\t\t\t\t\tbody {\n\t\t\t\t\t\ttransform: scale( ${this._options.scaleRatio} );\n\t\t\t\t\t\ttransform-origin: 0 0;\n\t\t\t\t\t\toverflow: visible;\n\t\t\t\t\t}\n\n\t\t\t\t\t.ck.ck-editor__editable_inline {\n\t\t\t\t\t\tmargin: 0 !important;\n\t\t\t\t\t\tborder-color: transparent !important;\n\t\t\t\t\t\toutline-color: transparent !important;\n\t\t\t\t\t\tbox-shadow: none !important;\n\t\t\t\t\t}\n\n\t\t\t\t\t.ck.ck-content {\n\t\t\t\t\t\tbackground: white;\n\t\t\t\t\t}\n\n\t\t\t\t\t${boxStyles}\n\t\t\t\t</style>\n\t\t\t</head>\n\t\t\t<body class=\"${this._options.extraClasses || ''}\"></body>\n\t\t</html>`;\n iframeDocument.open();\n iframeDocument.write(html);\n iframeDocument.close();\n iframeDocument.body.appendChild(domRootClone);\n }\n}\n\nconst toPx = /* #__PURE__ */ toUnit('px');\n/**\n * The position tracker visualizing the visible subset of the content. Displayed over the minimap.\n *\n * @internal\n */ class MinimapPositionTrackerView extends View {\n constructor(locale){\n super(locale);\n const bind = this.bindTemplate;\n this.set('height', 0);\n this.set('top', 0);\n this.set('scrollProgress', 0);\n this.set('_isDragging', false);\n this.setTemplate({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-minimap__position-tracker',\n bind.if('_isDragging', 'ck-minimap__position-tracker_dragging')\n ],\n style: {\n top: bind.to('top', (top)=>toPx(top)),\n height: bind.to('height', (height)=>toPx(height))\n },\n 'data-progress': bind.to('scrollProgress')\n },\n on: {\n mousedown: bind.to(()=>{\n this._isDragging = true;\n })\n }\n });\n }\n /**\n\t * @inheritDoc\n\t */ render() {\n super.render();\n this.listenTo(global.document, 'mousemove', (evt, data)=>{\n if (!this._isDragging) {\n return;\n }\n this.fire('drag', data.movementY);\n }, {\n useCapture: true\n });\n this.listenTo(global.document, 'mouseup', ()=>{\n this._isDragging = false;\n }, {\n useCapture: true\n });\n }\n /**\n\t * Sets the new height of the tracker to visualize the subset of the content visible to the user.\n\t */ setHeight(newHeight) {\n this.height = newHeight;\n }\n /**\n\t * Sets the top offset of the tracker to move it around vertically.\n\t */ setTopOffset(newOffset) {\n this.top = newOffset;\n }\n /**\n\t * Sets the scroll progress (in %) to inform the user using a label when the tracker is being dragged.\n\t */ setScrollProgress(newProgress) {\n this.scrollProgress = newProgress;\n }\n}\n\n/**\n * The main view of the minimap. It renders the original content but scaled down with a tracker element\n * visualizing the subset of the content visible to the user and allowing interactions (scrolling, dragging).\n *\n * @internal\n */ class MinimapView extends View {\n /**\n\t * An instance of the tracker view displayed over the minimap.\n\t */ _positionTrackerView;\n /**\n\t * The scale ratio of the minimap relative to the original editing DOM root with the content.\n\t */ _scaleRatio;\n /**\n\t * An instance of the iframe view that hosts the minimap.\n\t */ _minimapIframeView;\n /**\n\t * Creates an instance of the minimap view.\n\t */ constructor({ locale, scaleRatio, pageStyles, extraClasses, useSimplePreview, domRootClone }){\n super(locale);\n const bind = this.bindTemplate;\n this._positionTrackerView = new MinimapPositionTrackerView(locale);\n this._positionTrackerView.delegate('drag').to(this);\n this._scaleRatio = scaleRatio;\n this._minimapIframeView = new MinimapIframeView(locale, {\n useSimplePreview,\n pageStyles,\n extraClasses,\n scaleRatio,\n domRootClone\n });\n this.setTemplate({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-minimap'\n ]\n },\n children: [\n this._positionTrackerView\n ],\n on: {\n click: bind.to(this._handleMinimapClick.bind(this)),\n wheel: bind.to(this._handleMinimapMouseWheel.bind(this))\n }\n });\n }\n /**\n\t * @inheritDoc\n\t */ destroy() {\n this._minimapIframeView.destroy();\n super.destroy();\n }\n /**\n\t * Returns the DOM {@link module:utils/dom/rect~Rect} height of the minimap.\n\t */ get height() {\n return new Rect(this.element).height;\n }\n /**\n\t * Returns the number of available space (pixels) the position tracker (visible subset of the content) can use to scroll vertically.\n\t */ get scrollHeight() {\n return Math.max(0, Math.min(this.height, this._minimapIframeView.height) - this._positionTrackerView.height);\n }\n /**\n\t * @inheritDoc\n\t */ render() {\n super.render();\n this._minimapIframeView.render();\n this.element.appendChild(this._minimapIframeView.element);\n }\n /**\n\t * Sets the new height of the minimap (in px) to respond to the changes in the original editing DOM root.\n\t *\n\t * **Note**:The provided value should be the `offsetHeight` of the original editing DOM root.\n\t */ setContentHeight(newHeight) {\n this._minimapIframeView.setHeight(newHeight * this._scaleRatio);\n }\n /**\n\t * Sets the minimap scroll progress.\n\t *\n\t * The minimap scroll progress is linked to the original editing DOM root and its scrollable container (ancestor).\n\t * Changing the progress will alter the vertical position of the minimap (and its position tracker) and give the user an accurate\n\t * overview of the visible document.\n\t *\n\t * **Note**: The value should be between 0 and 1. 0 when the DOM root has not been scrolled, 1 when the\n\t * scrolling has reached the end.\n\t */ setScrollProgress(newScrollProgress) {\n const iframeView = this._minimapIframeView;\n const positionTrackerView = this._positionTrackerView;\n // The scrolling should end when the bottom edge of the iframe touches the bottom edge of the minimap.\n if (iframeView.height < this.height) {\n iframeView.setTopOffset(0);\n positionTrackerView.setTopOffset((iframeView.height - positionTrackerView.height) * newScrollProgress);\n } else {\n const totalOffset = iframeView.height - this.height;\n iframeView.setTopOffset(-totalOffset * newScrollProgress);\n positionTrackerView.setTopOffset((this.height - positionTrackerView.height) * newScrollProgress);\n }\n positionTrackerView.setScrollProgress(Math.round(newScrollProgress * 100));\n }\n /**\n\t * Sets the new height of the tracker (in px) to visualize the subset of the content visible to the user.\n\t */ setPositionTrackerHeight(trackerHeight) {\n this._positionTrackerView.setHeight(trackerHeight * this._scaleRatio);\n }\n /**\n\t * @param data DOM event data\n\t */ _handleMinimapClick(data) {\n const positionTrackerView = this._positionTrackerView;\n if (data.target === positionTrackerView.element) {\n return;\n }\n const trackerViewRect = new Rect(positionTrackerView.element);\n const diff = data.clientY - trackerViewRect.top - trackerViewRect.height / 2;\n const percentage = diff / this._minimapIframeView.height;\n this.fire('click', percentage);\n }\n /**\n\t * @param data DOM event data\n\t */ _handleMinimapMouseWheel(data) {\n this.fire('drag', data.deltaY * this._scaleRatio);\n }\n}\n\n/**\n * Clones the editing view DOM root by using a dedicated pair of {@link module:engine/view/renderer~Renderer} and\n * {@link module:engine/view/domconverter~DomConverter}. The DOM root clone updates incrementally to stay in sync with the\n * source root.\n *\n * @internal\n * @param editor The editor instance the original editing root belongs to.\n * @param rootName The name of the root to clone.\n * @returns The editing root DOM clone element.\n */ function cloneEditingViewDomRoot(editor, rootName) {\n const viewDocument = editor.editing.view.document;\n const viewRoot = viewDocument.getRoot(rootName);\n const domConverter = new DomConverter(viewDocument);\n const renderer = new Renderer(domConverter, viewDocument.selection);\n const domRootClone = editor.editing.view.getDomRoot().cloneNode();\n domConverter.bindElements(domRootClone, viewRoot);\n renderer.markToSync('children', viewRoot);\n renderer.markToSync('attributes', viewRoot);\n viewRoot.on('change:children', (evt, node)=>renderer.markToSync('children', node));\n viewRoot.on('change:attributes', (evt, node)=>renderer.markToSync('attributes', node));\n viewRoot.on('change:text', (evt, node)=>renderer.markToSync('text', node));\n renderer.render();\n editor.editing.view.on('render', ()=>renderer.render());\n // TODO: Cleanup after destruction.\n editor.on('destroy', ()=>{\n domConverter.unbindDomElement(domRootClone);\n });\n return domRootClone;\n}\n/**\n * Harvests all web page styles, for instance, to allow re-using them in an `<iframe>` preserving the look of the content.\n *\n * The returned data format is as follows:\n *\n * ```ts\n * [\n * \t'p { color: red; ... } h2 { font-size: 2em; ... } ...',\n * \t'.spacing { padding: 1em; ... }; ...',\n * \t'...',\n * \t{ href: 'http://link.to.external.stylesheet' },\n * \t{ href: '...' }\n * ]\n * ```\n *\n * **Note**: For stylesheets with `href` different than window origin, an object is returned because\n * accessing rules of these styles may cause CORS errors (depending on the configuration of the web page).\n *\n * @internal\n */ function getPageStyles() {\n return Array.from(global.document.styleSheets).map((styleSheet)=>{\n // CORS\n if (styleSheet.href && !styleSheet.href.startsWith(global.window.location.origin)) {\n return {\n href: styleSheet.href\n };\n }\n return Array.from(styleSheet.cssRules).filter((rule)=>!(rule instanceof CSSMediaRule)).map((rule)=>rule.cssText).join(' \\n');\n });\n}\n/**\n * Gets dimensions rectangle according to passed DOM element. Returns whole window's size for `body` element.\n *\n * @internal\n */ function getDomElementRect(domElement) {\n return new Rect(domElement === global.document.body ? global.window : domElement);\n}\n/**\n * Gets client height according to passed DOM element. Returns window's height for `body` element.\n *\n * @internal\n */ function getClientHeight(domElement) {\n return domElement === global.document.body ? global.window.innerHeight : domElement.clientHeight;\n}\n/**\n * Returns the DOM element itself if it's not a `body` element, whole window otherwise.\n *\n * @internal\n */ function getScrollable(domElement) {\n return domElement === global.document.body ? global.window : domElement;\n}\n\n/**\n * The content minimap feature.\n */ class Minimap extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'Minimap';\n }\n /**\n\t * The reference to the view of the minimap.\n\t */ _minimapView;\n /**\n\t * The DOM element closest to the editable element of the editor as returned\n\t * by {@link module:ui/editorui/editorui~EditorUI#getEditableElement}.\n\t */ _scrollableRootAncestor;\n /**\n\t * The DOM element closest to the editable element of the editor as returned\n\t * by {@link module:ui/editorui/editorui~EditorUI#getEditableElement}.\n\t */ _editingRootElement;\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n this._minimapView = null;\n this._scrollableRootAncestor = null;\n this.listenTo(editor.ui, 'ready', this._onUiReady.bind(this));\n }\n /**\n\t * @inheritDoc\n\t */ destroy() {\n super.destroy();\n this._minimapView.destroy();\n this._minimapView.element.remove();\n }\n /**\n\t * Initializes the minimap view element and starts the layout synchronization\n\t * on the editing view `render` event.\n\t */ _onUiReady() {\n const editor = this.editor;\n // TODO: This will not work with the multi-root editor.\n const editingRootElement = this._editingRootElement = editor.ui.getEditableElement();\n this._scrollableRootAncestor = findClosestScrollableAncestor(editingRootElement);\n // DOM root element is not yet attached to the document.\n if (!editingRootElement.ownerDocument.body.contains(editingRootElement)) {\n editor.ui.once('update', this._onUiReady.bind(this));\n return;\n }\n this._initializeMinimapView();\n this.listenTo(editor.editing.view, 'render', ()=>{\n if (editor.state !== 'ready') {\n return;\n }\n this._syncMinimapToEditingRootScrollPosition();\n });\n this._syncMinimapToEditingRootScrollPosition();\n }\n /**\n\t * Initializes the minimap view and attaches listeners that make it responsive to the environment (document)\n\t * but also allow the minimap to control the document (scroll position).\n\t */ _initializeMinimapView() {\n const editor = this.editor;\n const locale = editor.locale;\n const useSimplePreview = editor.config.get('minimap.useSimplePreview');\n // TODO: Throw an error if there is no `minimap` in config.\n const minimapContainerElement = editor.config.get('minimap.container');\n const scrollableRootAncestor = this._scrollableRootAncestor;\n // TODO: This should be dynamic, the root width could change as the viewport scales if not fixed unit.\n const editingRootElementWidth = getDomElementRect(this._editingRootElement).width;\n const minimapContainerWidth = getDomElementRect(minimapContainerElement).width;\n const minimapScaleRatio = minimapContainerWidth / editingRootElementWidth;\n const minimapView = this._minimapView = new MinimapView({\n locale,\n scaleRatio: minimapScaleRatio,\n pageStyles: getPageStyles(),\n extraClasses: editor.config.get('minimap.extraClasses'),\n useSimplePreview,\n domRootClone: cloneEditingViewDomRoot(editor)\n });\n minimapView.render();\n // Scrollable ancestor scroll -> minimap position update.\n minimapView.listenTo(global.document, 'scroll', (evt, data)=>{\n if (scrollableRootAncestor === global.document.body) {\n if (data.target !== global.document) {\n return;\n }\n } else if (data.target !== scrollableRootAncestor) {\n return;\n }\n this._syncMinimapToEditingRootScrollPosition();\n }, {\n useCapture: true,\n usePassive: true\n });\n // Viewport resize -> minimap position update.\n minimapView.listenTo(global.window, 'resize', ()=>{\n this._syncMinimapToEditingRootScrollPosition();\n });\n // Dragging the visible content area -> document (scrollable) position update.\n minimapView.on('drag', (evt, movementY)=>{\n let movementYPercentage;\n if (minimapView.scrollHeight === 0) {\n movementYPercentage = 0;\n } else {\n movementYPercentage = movementY / minimapView.scrollHeight;\n }\n const absoluteScrollProgress = movementYPercentage * (scrollableRootAncestor.scrollHeight - getClientHeight(scrollableRootAncestor));\n const scrollable = getScrollable(scrollableRootAncestor);\n scrollable.scrollBy(0, Math.round(absoluteScrollProgress));\n });\n // Clicking the minimap -> center the document (scrollable) to the corresponding position.\n minimapView.on('click', (evt, percentage)=>{\n const absoluteScrollProgress = percentage * scrollableRootAncestor.scrollHeight;\n const scrollable = getScrollable(scrollableRootAncestor);\n scrollable.scrollBy(0, Math.round(absoluteScrollProgress));\n });\n minimapContainerElement.appendChild(minimapView.element);\n }\n /**\n\t * @private\n\t */ _syncMinimapToEditingRootScrollPosition() {\n const editingRootElement = this._editingRootElement;\n const minimapView = this._minimapView;\n minimapView.setContentHeight(editingRootElement.offsetHeight);\n const editingRootRect = getDomElementRect(editingRootElement);\n const scrollableRootAncestorRect = getDomElementRect(this._scrollableRootAncestor);\n let scrollProgress;\n // @if CK_DEBUG_MINIMAP // RectDrawer.clear();\n // @if CK_DEBUG_MINIMAP // RectDrawer.draw( scrollableRootAncestorRect, { outlineColor: 'red' }, 'scrollableRootAncestor' );\n // @if CK_DEBUG_MINIMAP // RectDrawer.draw( editingRootRect, { outlineColor: 'green' }, 'editingRoot' );\n // The root is completely visible in the scrollable ancestor.\n if (scrollableRootAncestorRect.contains(editingRootRect)) {\n scrollProgress = 0;\n } else {\n if (editingRootRect.top > scrollableRootAncestorRect.top) {\n scrollProgress = 0;\n } else {\n scrollProgress = (editingRootRect.top - scrollableRootAncestorRect.top) / (scrollableRootAncestorRect.height - editingRootRect.height);\n scrollProgress = Math.max(0, Math.min(scrollProgress, 1));\n }\n }\n // The intersection helps to change the tracker height when there is a lot of padding around the root.\n // Note: It is **essential** that the height is set first because the progress depends on the correct tracker height.\n minimapView.setPositionTrackerHeight(scrollableRootAncestorRect.getIntersection(editingRootRect).height);\n minimapView.setScrollProgress(scrollProgress);\n }\n}\n\nexport { Minimap };\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 minimap/minimapiframeview\n */\n\nimport { IframeView } from 'ckeditor5/src/ui.js';\nimport { toUnit, type Locale } from 'ckeditor5/src/utils.js';\nimport type { MinimapViewOptions } from './minimapview.js';\n\nconst toPx = /* #__PURE__ */ toUnit( 'px' );\n\n/**\n * The internal `<iframe>` view that hosts the minimap content.\n *\n * @internal\n */\nexport default class MinimapIframeView extends IframeView {\n\t/**\n\t * The CSS `top` used to scroll the minimap.\n\t *\n\t * @readonly\n\t */\n\tdeclare public top: number;\n\n\t/**\n\t * The CSS `height` of the iframe.\n\t *\n\t * @readonly\n\t */\n\tdeclare public height: number;\n\n\t/**\n\t * Cached view constructor options for re-use in other methods.\n\t */\n\tprivate readonly _options: MinimapViewOptions;\n\n\t/**\n\t * Creates an instance of the internal minimap iframe.\n\t */\n\tconstructor( locale: Locale, options: MinimapViewOptions ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.set( 'top', 0 );\n\n\t\tthis.set( 'height', 0 );\n\n\t\tthis._options = options;\n\n\t\tthis.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\ttabindex: -1,\n\t\t\t\t'aria-hidden': 'true',\n\t\t\t\tclass: [\n\t\t\t\t\t'ck-minimap__iframe'\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\ttop: bind.to( 'top', top => toPx( top ) ),\n\t\t\t\t\theight: bind.to( 'height', height => toPx( height ) )\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): Promise<unknown> {\n\t\treturn super.render().then( () => {\n\t\t\tthis._prepareDocument();\n\t\t} );\n\t}\n\n\t/**\n\t * Sets the new height of the iframe.\n\t */\n\tpublic setHeight( newHeight: number ): void {\n\t\tthis.height = newHeight;\n\t}\n\n\t/**\n\t * Sets the top offset of the iframe to move it around vertically.\n\t */\n\tpublic setTopOffset( newOffset: number ): void {\n\t\tthis.top = newOffset;\n\t}\n\n\t/**\n\t * Sets the internal structure of the `<iframe>` readying it to display the\n\t * minimap element.\n\t */\n\tprivate _prepareDocument(): void {\n\t\tconst iframeDocument = this.element!.contentWindow!.document;\n\t\tconst domRootClone = iframeDocument.adoptNode( this._options.domRootClone );\n\n\t\tconst boxStyles = this._options.useSimplePreview ? `\n\t\t\t.ck.ck-editor__editable_inline img {\n\t\t\t\tfilter: contrast( 0 );\n\t\t\t}\n\n\t\t\tp, li, a, figcaption, span {\n\t\t\t\tbackground: hsl(0, 0%, 80%) !important;\n\t\t\t\tcolor: hsl(0, 0%, 80%) !important;\n\t\t\t}\n\n\t\t\th1, h2, h3, h4 {\n\t\t\t\tbackground: hsl(0, 0%, 60%) !important;\n\t\t\t\tcolor: hsl(0, 0%, 60%) !important;\n\t\t\t}\n\t\t` : '';\n\n\t\tconst pageStyles = this._options.pageStyles.map( definition => {\n\t\t\tif ( typeof definition === 'string' ) {\n\t\t\t\treturn `<style>${ definition }</style>`;\n\t\t\t} else {\n\t\t\t\treturn `<link rel=\"stylesheet\" type=\"text/css\" href=\"${ definition.href }\">`;\n\t\t\t}\n\t\t} ).join( '\\n' );\n\n\t\tconst html = `<!DOCTYPE html><html lang=\"en\">\n\t\t\t<head>\n\t\t\t\t<meta charset=\"utf-8\">\n\t\t\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\t\t\t\t${ pageStyles }\n\t\t\t\t<style>\n\t\t\t\t\thtml, body {\n\t\t\t\t\t\tmargin: 0 !important;\n\t\t\t\t\t\tpadding: 0 !important;\n\t\t\t\t\t}\n\n\t\t\t\t\thtml {\n\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t}\n\n\t\t\t\t\tbody {\n\t\t\t\t\t\ttransform: scale( ${ this._options.scaleRatio } );\n\t\t\t\t\t\ttransform-origin: 0 0;\n\t\t\t\t\t\toverflow: visible;\n\t\t\t\t\t}\n\n\t\t\t\t\t.ck.ck-editor__editable_inline {\n\t\t\t\t\t\tmargin: 0 !important;\n\t\t\t\t\t\tborder-color: transparent !important;\n\t\t\t\t\t\toutline-color: transparent !important;\n\t\t\t\t\t\tbox-shadow: none !important;\n\t\t\t\t\t}\n\n\t\t\t\t\t.ck.ck-content {\n\t\t\t\t\t\tbackground: white;\n\t\t\t\t\t}\n\n\t\t\t\t\t${ boxStyles }\n\t\t\t\t</style>\n\t\t\t</head>\n\t\t\t<body class=\"${ this._options.extraClasses || '' }\"></body>\n\t\t</html>`;\n\n\t\tiframeDocument.open();\n\t\tiframeDocument.write( html );\n\t\tiframeDocument.close();\n\t\tiframeDocument.body.appendChild( domRootClone );\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 minimap/minimappositiontrackerview\n */\n\nimport { View } from 'ckeditor5/src/ui.js';\nimport { toUnit, global, type Locale } from 'ckeditor5/src/utils.js';\nimport type { MinimapDragEvent } from './minimapview.js';\n\nconst toPx = /* #__PURE__ */ toUnit( 'px' );\n\n/**\n * The position tracker visualizing the visible subset of the content. Displayed over the minimap.\n *\n * @internal\n */\nexport default class MinimapPositionTrackerView extends View {\n\t/**\n\t * The CSS `height` of the tracker visualizing the subset of the content visible to the user.\n\t *\n\t * @readonly\n\t */\n\tdeclare public height: number;\n\n\t/**\n\t * The CSS `top` of the tracker, used to move it vertically over the minimap.\n\t *\n\t * @readonly\n\t */\n\tdeclare public top: number;\n\n\t/**\n\t * The scroll progress (in %) displayed over the tracker when being dragged by the user.\n\t *\n\t * @readonly\n\t */\n\tdeclare public scrollProgress: number;\n\n\t/**\n\t * Indicates whether the tracker is being dragged by the user (e.g. using the mouse).\n\t *\n\t * @internal\n\t * @readonly\n\t */\n\tdeclare public _isDragging: boolean;\n\n\tconstructor( locale: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.set( 'height', 0 );\n\t\tthis.set( 'top', 0 );\n\t\tthis.set( 'scrollProgress', 0 );\n\t\tthis.set( '_isDragging', false );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-minimap__position-tracker',\n\t\t\t\t\tbind.if( '_isDragging', 'ck-minimap__position-tracker_dragging' )\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\ttop: bind.to( 'top', top => toPx( top ) ),\n\t\t\t\t\theight: bind.to( 'height', height => toPx( height ) )\n\t\t\t\t},\n\t\t\t\t'data-progress': bind.to( 'scrollProgress' )\n\t\t\t},\n\t\t\ton: {\n\t\t\t\tmousedown: bind.to( () => {\n\t\t\t\t\tthis._isDragging = true;\n\t\t\t\t} )\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis.listenTo( global.document, 'mousemove', ( evt, data ) => {\n\t\t\tif ( !this._isDragging ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.fire<MinimapDragEvent>( 'drag', data.movementY );\n\t\t}, { useCapture: true } );\n\n\t\tthis.listenTo( global.document, 'mouseup', () => {\n\t\t\tthis._isDragging = false;\n\t\t}, { useCapture: true } );\n\t}\n\n\t/**\n\t * Sets the new height of the tracker to visualize the subset of the content visible to the user.\n\t */\n\tpublic setHeight( newHeight: number ): void {\n\t\tthis.height = newHeight;\n\t}\n\n\t/**\n\t * Sets the top offset of the tracker to move it around vertically.\n\t */\n\tpublic setTopOffset( newOffset: number ): void {\n\t\tthis.top = newOffset;\n\t}\n\n\t/**\n\t * Sets the scroll progress (in %) to inform the user using a label when the tracker is being dragged.\n\t */\n\tpublic setScrollProgress( newProgress: number ): void {\n\t\tthis.scrollProgress = newProgress;\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 minimap/minimapview\n */\n\nimport { View } from 'ckeditor5/src/ui.js';\nimport { Rect, type Locale } from 'ckeditor5/src/utils.js';\n\nimport MinimapIframeView from './minimapiframeview.js';\nimport MinimapPositionTrackerView from './minimappositiontrackerview.js';\n\nexport type MinimapViewOptions = {\n\tdomRootClone: HTMLElement;\n\tpageStyles: Array<string | { href: string }>;\n\tscaleRatio: number;\n\tuseSimplePreview?: boolean;\n\textraClasses?: string;\n};\n\n/**\n * The main view of the minimap. It renders the original content but scaled down with a tracker element\n * visualizing the subset of the content visible to the user and allowing interactions (scrolling, dragging).\n *\n * @internal\n */\nexport default class MinimapView extends View {\n\t/**\n\t * An instance of the tracker view displayed over the minimap.\n\t */\n\tprivate readonly _positionTrackerView: MinimapPositionTrackerView;\n\n\t/**\n\t * The scale ratio of the minimap relative to the original editing DOM root with the content.\n\t */\n\tprivate readonly _scaleRatio: number;\n\n\t/**\n\t * An instance of the iframe view that hosts the minimap.\n\t */\n\tprivate readonly _minimapIframeView: MinimapIframeView;\n\n\t/**\n\t * Creates an instance of the minimap view.\n\t */\n\tconstructor(\n\t\t{ locale, scaleRatio, pageStyles, extraClasses, useSimplePreview, domRootClone }: { locale: Locale } & MinimapViewOptions\n\t) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis._positionTrackerView = new MinimapPositionTrackerView( locale );\n\t\tthis._positionTrackerView.delegate( 'drag' ).to( this );\n\n\t\tthis._scaleRatio = scaleRatio;\n\n\t\tthis._minimapIframeView = new MinimapIframeView( locale, {\n\t\t\tuseSimplePreview,\n\t\t\tpageStyles,\n\t\t\textraClasses,\n\t\t\tscaleRatio,\n\t\t\tdomRootClone\n\t\t} );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-minimap'\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\tthis._positionTrackerView\n\t\t\t],\n\t\t\ton: {\n\t\t\t\tclick: bind.to( this._handleMinimapClick.bind( this ) ),\n\t\t\t\twheel: bind.to( this._handleMinimapMouseWheel.bind( this ) )\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tthis._minimapIframeView.destroy();\n\n\t\tsuper.destroy();\n\t}\n\n\t/**\n\t * Returns the DOM {@link module:utils/dom/rect~Rect} height of the minimap.\n\t */\n\tpublic get height(): number {\n\t\treturn new Rect( this.element! ).height;\n\t}\n\n\t/**\n\t * Returns the number of available space (pixels) the position tracker (visible subset of the content) can use to scroll vertically.\n\t */\n\tpublic get scrollHeight(): number {\n\t\treturn Math.max( 0, Math.min( this.height, this._minimapIframeView.height ) - this._positionTrackerView.height );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis._minimapIframeView.render();\n\n\t\tthis.element!.appendChild( this._minimapIframeView.element! );\n\t}\n\n\t/**\n\t * Sets the new height of the minimap (in px) to respond to the changes in the original editing DOM root.\n\t *\n\t * **Note**:The provided value should be the `offsetHeight` of the original editing DOM root.\n\t */\n\tpublic setContentHeight( newHeight: number ): void {\n\t\tthis._minimapIframeView.setHeight( newHeight * this._scaleRatio );\n\t}\n\n\t/**\n\t * Sets the minimap scroll progress.\n\t *\n\t * The minimap scroll progress is linked to the original editing DOM root and its scrollable container (ancestor).\n\t * Changing the progress will alter the vertical position of the minimap (and its position tracker) and give the user an accurate\n\t * overview of the visible document.\n\t *\n\t * **Note**: The value should be between 0 and 1. 0 when the DOM root has not been scrolled, 1 when the\n\t * scrolling has reached the end.\n\t */\n\tpublic setScrollProgress( newScrollProgress: number ): void {\n\t\tconst iframeView = this._minimapIframeView;\n\t\tconst positionTrackerView = this._positionTrackerView;\n\n\t\t// The scrolling should end when the bottom edge of the iframe touches the bottom edge of the minimap.\n\t\tif ( iframeView.height < this.height ) {\n\t\t\tiframeView.setTopOffset( 0 );\n\t\t\tpositionTrackerView.setTopOffset( ( iframeView.height - positionTrackerView.height ) * newScrollProgress );\n\t\t} else {\n\t\t\tconst totalOffset = iframeView.height - this.height;\n\n\t\t\tiframeView.setTopOffset( -totalOffset * newScrollProgress );\n\t\t\tpositionTrackerView.setTopOffset( ( this.height - positionTrackerView.height ) * newScrollProgress );\n\t\t}\n\n\t\tpositionTrackerView.setScrollProgress( Math.round( newScrollProgress * 100 ) );\n\t}\n\n\t/**\n\t * Sets the new height of the tracker (in px) to visualize the subset of the content visible to the user.\n\t */\n\tpublic setPositionTrackerHeight( trackerHeight: number ): void {\n\t\tthis._positionTrackerView.setHeight( trackerHeight * this._scaleRatio );\n\t}\n\n\t/**\n\t * @param data DOM event data\n\t */\n\tprivate _handleMinimapClick( data: Event ) {\n\t\tconst positionTrackerView = this._positionTrackerView;\n\n\t\tif ( data.target === positionTrackerView.element ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst trackerViewRect = new Rect( positionTrackerView.element! );\n\t\tconst diff = ( data as MouseEvent ).clientY - trackerViewRect.top - trackerViewRect.height / 2;\n\t\tconst percentage = diff / this._minimapIframeView.height;\n\n\t\tthis.fire<MinimapClickEvent>( 'click', percentage );\n\t}\n\n\t/**\n\t * @param data DOM event data\n\t */\n\tprivate _handleMinimapMouseWheel( data: Event ) {\n\t\tthis.fire<MinimapDragEvent>( 'drag', ( data as WheelEvent ).deltaY * this._scaleRatio );\n\t}\n}\n\n/**\n * Fired when the minimap view is clicked.\n *\n * @eventName ~MinimapView#click\n * @param percentage The number between 0 and 1 representing a place in the minimap (its height) that was clicked.\n */\nexport type MinimapClickEvent = {\n\tname: 'click';\n\targs: [ percentage: number ];\n};\n\n/**\n * Fired when the position tracker is dragged or the minimap is scrolled via mouse wheel.\n *\n * @eventName ~MinimapView#drag\n * @param movementY The vertical movement of the minimap as a result of dragging or scrolling.\n */\nexport type MinimapDragEvent = {\n\tname: 'drag';\n\targs: [ movementY: number ];\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/* global CSSMediaRule */\n\n/**\n * @module minimap/utils\n */\n\nimport { Rect, global } from 'ckeditor5/src/utils.js';\nimport { DomConverter, Renderer } from 'ckeditor5/src/engine.js';\nimport type { Editor } from 'ckeditor5/src/core.js';\n\n/**\n * Clones the editing view DOM root by using a dedicated pair of {@link module:engine/view/renderer~Renderer} and\n * {@link module:engine/view/domconverter~DomConverter}. The DOM root clone updates incrementally to stay in sync with the\n * source root.\n *\n * @internal\n * @param editor The editor instance the original editing root belongs to.\n * @param rootName The name of the root to clone.\n * @returns The editing root DOM clone element.\n */\nexport function cloneEditingViewDomRoot( editor: Editor, rootName?: string ): HTMLElement {\n\tconst viewDocument = editor.editing.view.document;\n\tconst viewRoot = viewDocument.getRoot( rootName )!;\n\tconst domConverter = new DomConverter( viewDocument );\n\tconst renderer = new Renderer( domConverter, viewDocument.selection );\n\tconst domRootClone = editor.editing.view.getDomRoot()!.cloneNode() as HTMLElement;\n\n\tdomConverter.bindElements( domRootClone, viewRoot );\n\n\trenderer.markToSync( 'children', viewRoot );\n\trenderer.markToSync( 'attributes', viewRoot );\n\n\tviewRoot.on( 'change:children', ( evt, node ) => renderer.markToSync( 'children', node ) );\n\tviewRoot.on( 'change:attributes', ( evt, node ) => renderer.markToSync( 'attributes', node ) );\n\tviewRoot.on( 'change:text', ( evt, node ) => renderer.markToSync( 'text', node ) );\n\n\trenderer.render();\n\n\teditor.editing.view.on( 'render', () => renderer.render() );\n\n\t// TODO: Cleanup after destruction.\n\teditor.on( 'destroy', () => {\n\t\tdomConverter.unbindDomElement( domRootClone );\n\t} );\n\n\treturn domRootClone;\n}\n\n/**\n * Harvests all web page styles, for instance, to allow re-using them in an `<iframe>` preserving the look of the content.\n *\n * The returned data format is as follows:\n *\n * ```ts\n * [\n * \t'p { color: red; ... } h2 { font-size: 2em; ... } ...',\n * \t'.spacing { padding: 1em; ... }; ...',\n * \t'...',\n * \t{ href: 'http://link.to.external.stylesheet' },\n * \t{ href: '...' }\n * ]\n * ```\n *\n * **Note**: For stylesheets with `href` different than window origin, an object is returned because\n * accessing rules of these styles may cause CORS errors (depending on the configuration of the web page).\n *\n * @internal\n */\nexport function getPageStyles(): Array<string | { href: string }> {\n\treturn Array.from( global.document.styleSheets )\n\t\t.map( styleSheet => {\n\t\t\t// CORS\n\t\t\tif ( styleSheet.href && !styleSheet.href.startsWith( global.window.location.origin ) ) {\n\t\t\t\treturn { href: styleSheet.href };\n\t\t\t}\n\n\t\t\treturn Array.from( styleSheet.cssRules )\n\t\t\t\t.filter( rule => !( rule instanceof CSSMediaRule ) )\n\t\t\t\t.map( rule => rule.cssText )\n\t\t\t\t.join( ' \\n' );\n\t\t} );\n}\n\n/**\n * Gets dimensions rectangle according to passed DOM element. Returns whole window's size for `body` element.\n *\n * @internal\n */\nexport function getDomElementRect( domElement: HTMLElement ): Rect {\n\treturn new Rect( domElement === global.document.body ? global.window : domElement );\n}\n\n/**\n * Gets client height according to passed DOM element. Returns window's height for `body` element.\n *\n * @internal\n */\nexport function getClientHeight( domElement: HTMLElement ): number {\n\treturn domElement === global.document.body ? global.window.innerHeight : domElement.clientHeight;\n}\n\n/**\n * Returns the DOM element itself if it's not a `body` element, whole window otherwise.\n *\n * @internal\n */\nexport function getScrollable( domElement: HTMLElement ): Window | HTMLElement {\n\treturn domElement === global.document.body ? global.window : domElement;\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 minimap/minimap\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport { findClosestScrollableAncestor, global } from 'ckeditor5/src/utils.js';\nimport MinimapView, { type MinimapDragEvent, type MinimapClickEvent } from './minimapview.js';\nimport {\n\tcloneEditingViewDomRoot,\n\tgetClientHeight,\n\tgetDomElementRect,\n\tgetPageStyles,\n\tgetScrollable\n} from './utils.js';\n\n// @if CK_DEBUG_MINIMAP // const RectDrawer = require( '@ckeditor/ckeditor5-utils/tests/_utils/rectdrawer' ).default;\n\nimport '../theme/minimap.css';\n\n/**\n * The content minimap feature.\n */\nexport default class Minimap extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Minimap' as const;\n\t}\n\n\t/**\n\t * The reference to the view of the minimap.\n\t */\n\tprivate _minimapView!: MinimapView | null;\n\n\t/**\n\t * The DOM element closest to the editable element of the editor as returned\n\t * by {@link module:ui/editorui/editorui~EditorUI#getEditableElement}.\n\t */\n\tprivate _scrollableRootAncestor!: HTMLElement | null;\n\n\t/**\n\t * The DOM element closest to the editable element of the editor as returned\n\t * by {@link module:ui/editorui/editorui~EditorUI#getEditableElement}.\n\t */\n\tprivate _editingRootElement?: HTMLElement;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tthis._minimapView = null;\n\t\tthis._scrollableRootAncestor = null;\n\n\t\tthis.listenTo( editor.ui, 'ready', this._onUiReady.bind( this ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._minimapView!.destroy();\n\t\tthis._minimapView!.element!.remove();\n\t}\n\n\t/**\n\t * Initializes the minimap view element and starts the layout synchronization\n\t * on the editing view `render` event.\n\t */\n\tprivate _onUiReady(): void {\n\t\tconst editor = this.editor;\n\n\t\t// TODO: This will not work with the multi-root editor.\n\t\tconst editingRootElement = this._editingRootElement = editor.ui.getEditableElement()!;\n\n\t\tthis._scrollableRootAncestor = findClosestScrollableAncestor( editingRootElement );\n\n\t\t// DOM root element is not yet attached to the document.\n\t\tif ( !editingRootElement.ownerDocument.body.contains( editingRootElement ) ) {\n\t\t\teditor.ui.once( 'update', this._onUiReady.bind( this ) );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis._initializeMinimapView();\n\n\t\tthis.listenTo( editor.editing.view, 'render', () => {\n\t\t\tif ( editor.state !== 'ready' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._syncMinimapToEditingRootScrollPosition();\n\t\t} );\n\n\t\tthis._syncMinimapToEditingRootScrollPosition();\n\t}\n\n\t/**\n\t * Initializes the minimap view and attaches listeners that make it responsive to the environment (document)\n\t * but also allow the minimap to control the document (scroll position).\n\t */\n\tprivate _initializeMinimapView(): void {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst useSimplePreview = editor.config.get( 'minimap.useSimplePreview' );\n\n\t\t// TODO: Throw an error if there is no `minimap` in config.\n\t\tconst minimapContainerElement = editor.config.get( 'minimap.container' )!;\n\t\tconst scrollableRootAncestor = this._scrollableRootAncestor!;\n\n\t\t// TODO: This should be dynamic, the root width could change as the viewport scales if not fixed unit.\n\t\tconst editingRootElementWidth = getDomElementRect( this._editingRootElement! ).width;\n\t\tconst minimapContainerWidth = getDomElementRect( minimapContainerElement ).width;\n\t\tconst minimapScaleRatio = minimapContainerWidth / editingRootElementWidth;\n\n\t\tconst minimapView = this._minimapView = new MinimapView( {\n\t\t\tlocale,\n\t\t\tscaleRatio: minimapScaleRatio,\n\t\t\tpageStyles: getPageStyles(),\n\t\t\textraClasses: editor.config.get( 'minimap.extraClasses' ),\n\t\t\tuseSimplePreview,\n\t\t\tdomRootClone: cloneEditingViewDomRoot( editor )\n\t\t} );\n\n\t\tminimapView.render();\n\n\t\t// Scrollable ancestor scroll -> minimap position update.\n\t\tminimapView.listenTo( global.document, 'scroll', ( evt, data ) => {\n\t\t\tif ( scrollableRootAncestor === global.document.body ) {\n\t\t\t\tif ( data.target !== global.document ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else if ( data.target !== scrollableRootAncestor ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._syncMinimapToEditingRootScrollPosition();\n\t\t}, { useCapture: true, usePassive: true } );\n\n\t\t// Viewport resize -> minimap position update.\n\t\tminimapView.listenTo( global.window, 'resize', () => {\n\t\t\tthis._syncMinimapToEditingRootScrollPosition();\n\t\t} );\n\n\t\t// Dragging the visible content area -> document (scrollable) position update.\n\t\tminimapView.on<MinimapDragEvent>( 'drag', ( evt, movementY ) => {\n\t\t\tlet movementYPercentage;\n\n\t\t\tif ( minimapView.scrollHeight === 0 ) {\n\t\t\t\tmovementYPercentage = 0;\n\t\t\t} else {\n\t\t\t\tmovementYPercentage = movementY / minimapView.scrollHeight;\n\t\t\t}\n\n\t\t\tconst absoluteScrollProgress = movementYPercentage *\n\t\t\t\t( scrollableRootAncestor.scrollHeight - getClientHeight( scrollableRootAncestor ) );\n\t\t\tconst scrollable = getScrollable( scrollableRootAncestor );\n\n\t\t\tscrollable.scrollBy( 0, Math.round( absoluteScrollProgress ) );\n\t\t} );\n\n\t\t// Clicking the minimap -> center the document (scrollable) to the corresponding position.\n\t\tminimapView.on<MinimapClickEvent>( 'click', ( evt, percentage ) => {\n\t\t\tconst absoluteScrollProgress = percentage * scrollableRootAncestor.scrollHeight;\n\t\t\tconst scrollable = getScrollable( scrollableRootAncestor );\n\n\t\t\tscrollable.scrollBy( 0, Math.round( absoluteScrollProgress ) );\n\t\t} );\n\n\t\tminimapContainerElement.appendChild( minimapView.element! );\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate _syncMinimapToEditingRootScrollPosition(): void {\n\t\tconst editingRootElement = this._editingRootElement!;\n\t\tconst minimapView = this._minimapView!;\n\n\t\tminimapView.setContentHeight( editingRootElement.offsetHeight );\n\n\t\tconst editingRootRect = getDomElementRect( editingRootElement );\n\t\tconst scrollableRootAncestorRect = getDomElementRect( this._scrollableRootAncestor! );\n\t\tlet scrollProgress;\n\n\t\t// @if CK_DEBUG_MINIMAP // RectDrawer.clear();\n\t\t// @if CK_DEBUG_MINIMAP // RectDrawer.draw( scrollableRootAncestorRect, { outlineColor: 'red' }, 'scrollableRootAncestor' );\n\t\t// @if CK_DEBUG_MINIMAP // RectDrawer.draw( editingRootRect, { outlineColor: 'green' }, 'editingRoot' );\n\n\t\t// The root is completely visible in the scrollable ancestor.\n\t\tif ( scrollableRootAncestorRect.contains( editingRootRect ) ) {\n\t\t\tscrollProgress = 0;\n\t\t} else {\n\t\t\tif ( editingRootRect.top > scrollableRootAncestorRect.top ) {\n\t\t\t\tscrollProgress = 0;\n\t\t\t} else {\n\t\t\t\tscrollProgress = ( editingRootRect.top - scrollableRootAncestorRect.top ) /\n\t\t\t\t\t( scrollableRootAncestorRect.height - editingRootRect.height );\n\n\t\t\t\tscrollProgress = Math.max( 0, Math.min( scrollProgress, 1 ) );\n\t\t\t}\n\t\t}\n\n\t\t// The intersection helps to change the tracker height when there is a lot of padding around the root.\n\t\t// Note: It is **essential** that the height is set first because the progress depends on the correct tracker height.\n\t\tminimapView.setPositionTrackerHeight( scrollableRootAncestorRect.getIntersection( editingRootRect )!.height );\n\t\tminimapView.setScrollProgress( scrollProgress );\n\t}\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ckeditor/ckeditor5-minimap",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "42.0.0-alpha.1",
|
|
4
4
|
"description": "Content minimap 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": "
|
|
16
|
+
"ckeditor5": "42.0.0-alpha.1"
|
|
17
17
|
},
|
|
18
18
|
"author": "CKSource (http://cksource.com/)",
|
|
19
19
|
"license": "GPL-2.0-or-later",
|
package/src/minimapiframeview.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { View } from 'ckeditor5/src/ui.js';
|
|
9
9
|
import { toUnit, global } from 'ckeditor5/src/utils.js';
|
|
10
|
-
const toPx = toUnit('px');
|
|
10
|
+
const toPx = /* #__PURE__ */ toUnit('px');
|
|
11
11
|
/**
|
|
12
12
|
* The position tracker visualizing the visible subset of the content. Displayed over the minimap.
|
|
13
13
|
*
|