@worktile/theia 16.3.2 → 16.3.4
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/editor.module.d.ts +1 -1
- package/esm2022/components/contextmenu/contextmenu.component.mjs +1 -1
- package/esm2022/plugins/code/code.component.mjs +8 -8
- package/esm2022/plugins/code/code.editor.mjs +18 -7
- package/esm2022/plugins/color/toolbar-item.component.mjs +1 -1
- package/esm2022/plugins/image/image.component.mjs +5 -8
- package/esm2022/plugins/image/image.editor.mjs +19 -4
- package/esm2022/plugins/image/image.plugin.mjs +3 -3
- package/esm2022/plugins/link/edit/link-edit.component.mjs +4 -15
- package/esm2022/plugins/link/link.component.mjs +4 -4
- package/esm2022/plugins/link/link.editor.mjs +21 -4
- package/esm2022/plugins/link/link.plugin.mjs +3 -3
- package/esm2022/plugins/public-api.mjs +2 -1
- package/esm2022/plugins/table/components/table.component.mjs +3 -2
- package/esm2022/plugins/table/components/toolbar/table-options.component.mjs +3 -3
- package/esm2022/plugins/table/components/toolbar/table-toolbar.component.mjs +7 -17
- package/esm2022/plugins/table/table.editor.mjs +101 -17
- package/esm2022/plugins/table/table.plugin.mjs +2 -2
- package/esm2022/plugins/table/table.store.mjs +1 -25
- package/esm2022/plugins/table/utils/remove-row-column.mjs +3 -4
- package/esm2022/services/table-contextmenu.service.mjs +6 -8
- package/esm2022/transforms/delete-node-by-type.mjs +10 -0
- package/esm2022/transforms/index.mjs +4 -2
- package/esm2022/transforms/set-node-by-type.mjs +10 -0
- package/esm2022/utils/copy-node.mjs +5 -2
- package/fesm2022/worktile-theia.mjs +347 -275
- package/fesm2022/worktile-theia.mjs.map +1 -1
- package/package.json +1 -1
- package/plugins/code/code.editor.d.ts +2 -3
- package/plugins/image/image.component.d.ts +1 -4
- package/plugins/image/image.editor.d.ts +4 -7
- package/plugins/link/edit/link-edit.component.d.ts +3 -2
- package/plugins/link/link.editor.d.ts +3 -1
- package/plugins/public-api.d.ts +1 -0
- package/plugins/table/table.editor.d.ts +13 -6
- package/plugins/table/table.store.d.ts +0 -3
- package/transforms/delete-node-by-type.d.ts +3 -0
- package/transforms/index.d.ts +3 -1
- package/transforms/set-node-by-type.d.ts +3 -0
- package/esm2022/plugins/table/utils/set-cells-background-color.mjs +0 -22
- package/esm2022/plugins/table/utils/set-node-options.mjs +0 -11
- package/plugins/table/utils/set-cells-background-color.d.ts +0 -3
- package/plugins/table/utils/set-node-options.d.ts +0 -3
package/package.json
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Editor } from 'slate';
|
|
2
2
|
import { CodeElement } from '../../custom-types';
|
|
3
3
|
export declare const CodeEditor: {
|
|
4
|
-
setCodeAttribute(editor: Editor,
|
|
5
|
-
[key: string]: unknown;
|
|
6
|
-
}): void;
|
|
4
|
+
setCodeAttribute(editor: Editor, props: Partial<CodeElement>, element?: CodeElement): void;
|
|
7
5
|
insertCode(editor: Editor): void;
|
|
6
|
+
removeCode(editor: Editor, code?: CodeElement): void;
|
|
8
7
|
};
|
|
@@ -69,10 +69,7 @@ export declare class TheImageComponent extends TheBaseElementComponent<ImageElem
|
|
|
69
69
|
openLayoutToolbar(): void;
|
|
70
70
|
closeLayoutToolbar(): void;
|
|
71
71
|
layoutActive(key: Alignment | LayoutTypes): boolean;
|
|
72
|
-
setImageNode(e: MouseEvent,
|
|
73
|
-
layout?: LayoutTypes;
|
|
74
|
-
align?: Alignment;
|
|
75
|
-
}): void;
|
|
72
|
+
setImageNode(e: MouseEvent, props: Partial<ImageElement>): void;
|
|
76
73
|
setBlockCardLayoutAttr(): void;
|
|
77
74
|
onDelete(event: MouseEvent): void;
|
|
78
75
|
createPositionStrategy(): import("@angular/cdk/overlay").FlexibleConnectedPositionStrategy;
|
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
import { Editor
|
|
2
|
-
import { Alignment, LayoutTypes } from '../../constants';
|
|
1
|
+
import { Editor } from 'slate';
|
|
3
2
|
import { ImageElement } from '../../custom-types';
|
|
4
3
|
export declare const ImageEditor: {
|
|
5
4
|
openUpload(editor: Editor): void;
|
|
6
5
|
insertImages(editor: Editor, imageFiles: FileList | File[]): void;
|
|
7
6
|
handleBase64ImageElement(editor: Editor, image: ImageElement): void;
|
|
8
7
|
verifyImage(editor: Editor, image: File): boolean;
|
|
9
|
-
|
|
10
|
-
setImageNode(editor: Editor,
|
|
11
|
-
layout?: LayoutTypes;
|
|
12
|
-
align?: Alignment;
|
|
13
|
-
}): void;
|
|
8
|
+
isActive(editor: Editor): boolean;
|
|
9
|
+
setImageNode(editor: Editor, props: Partial<ImageElement>, image?: ImageElement): void;
|
|
14
10
|
isBase64(url: string): boolean;
|
|
15
11
|
/**
|
|
16
12
|
* 设置图片来源
|
|
@@ -18,4 +14,5 @@ export declare const ImageEditor: {
|
|
|
18
14
|
* @param image 图片节点
|
|
19
15
|
*/
|
|
20
16
|
setImageSource(editor: Editor, image: ImageElement): void;
|
|
17
|
+
removeImage(editor: Editor, image?: ImageElement): void;
|
|
21
18
|
};
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { OnInit } from '@angular/core';
|
|
2
2
|
import { ThyPopoverRef } from 'ngx-tethys/popover';
|
|
3
|
-
import { Range,
|
|
3
|
+
import { Range, Editor } from 'slate';
|
|
4
4
|
import { LinkTags } from '../link.types';
|
|
5
|
+
import { LinkElement } from '../../../custom-types';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
export declare class TheLinkEditComponent implements OnInit {
|
|
7
8
|
thyPopoverRef: ThyPopoverRef<any>;
|
|
8
9
|
className: string;
|
|
9
10
|
tag: LinkTags;
|
|
10
|
-
node:
|
|
11
|
+
node: LinkElement;
|
|
11
12
|
link: string;
|
|
12
13
|
text: string;
|
|
13
14
|
originSelection: Range;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Editor } from 'slate';
|
|
2
|
+
import { LinkElement } from '../../custom-types';
|
|
2
3
|
export declare const LinkEditor: {
|
|
3
4
|
insertLink(editor: Editor): void;
|
|
4
|
-
|
|
5
|
+
isActive(editor: Editor): boolean;
|
|
5
6
|
wrapLink(editor: Editor, text: string, url: string): void;
|
|
6
7
|
unwrapLink(editor: Editor): void;
|
|
8
|
+
updateLink(editor: Editor, element: LinkElement, url: string, text: string): void;
|
|
7
9
|
};
|
package/plugins/public-api.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export * from './mark/mark.editor';
|
|
|
12
12
|
export * from './mention/index';
|
|
13
13
|
export * from './quick-insert/quick-insert.editor';
|
|
14
14
|
export * from './table/table.editor';
|
|
15
|
+
export * from './table/utils';
|
|
15
16
|
export * from './todo-item/todo-item.editor';
|
|
16
17
|
export * from './vertical-align/vertical-align.editor';
|
|
17
18
|
export * from './inline-code/inline-code.editor';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Editor, NodeEntry, Path, Range, Location } from 'slate';
|
|
2
|
-
import { TableOptions } from './table.types';
|
|
2
|
+
import { TableOptions, TheTableOptions } from './table.types';
|
|
3
3
|
import { Alignment, Indents, MarkTypes, VerticalAlignment } from '../../constants';
|
|
4
4
|
import { TheEditor } from '../../interfaces';
|
|
5
|
-
import { CustomElement, TableElement } from '../../custom-types';
|
|
5
|
+
import { CustomElement, TableCellElement, TableElement } from '../../custom-types';
|
|
6
6
|
export declare const TableEditor: {
|
|
7
7
|
insertTable(editor: Editor, optionsParam?: TableOptions): void;
|
|
8
8
|
insertColumn(editor: Editor, count?: number, at?: number, optionsParam?: TableOptions): void;
|
|
@@ -11,10 +11,17 @@ export declare const TableEditor: {
|
|
|
11
11
|
removeRow(editor: Editor, rowIndex?: number, optionsParam?: TableOptions): void;
|
|
12
12
|
removeColumn(editor: Editor, colIndex?: number, optionsParam?: TableOptions): void;
|
|
13
13
|
clearCell(editor: Editor, nodeEntry?: NodeEntry<CustomElement>, optionsParam?: TableOptions): void;
|
|
14
|
+
setCellsBackgroundColor(editor: Editor, color: string, cells?: TableCellElement[]): void;
|
|
15
|
+
mergeCell(editor: Editor): void;
|
|
16
|
+
splitCell(editor: Editor): void;
|
|
17
|
+
setTableOptions(editor: Editor, newOptions: TheTableOptions): void;
|
|
18
|
+
setEquallyColumn(editor: Editor): void;
|
|
19
|
+
clearCellsContent(editor: Editor, cells?: TableCellElement[]): void;
|
|
14
20
|
isActive(editor: Editor): boolean;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
21
|
+
getSelectedCellPositions(editor: Editor): import("./table.types").CellPosition[];
|
|
22
|
+
getSelectedCells(editor: Editor): TableCellElement[];
|
|
23
|
+
setAlign(editor: Editor, alignment: Alignment, cells?: TableCellElement[]): boolean;
|
|
24
|
+
setVerticalAlign(editor: TheEditor, alignment: VerticalAlignment, cells?: TableCellElement[]): boolean;
|
|
18
25
|
isVerticalAlignActive(editor: TheEditor, alignment: VerticalAlignment): boolean;
|
|
19
26
|
toggleMark(editor: TheEditor, isActive: boolean, format: string | string[], value?: string | number | boolean): boolean;
|
|
20
27
|
clearMark(editor: TheEditor): boolean;
|
|
@@ -27,7 +34,7 @@ export declare const TableEditor: {
|
|
|
27
34
|
"background-color"?: any;
|
|
28
35
|
"font-size"?: any;
|
|
29
36
|
}): boolean;
|
|
30
|
-
handleSelectedCells(editor: TheEditor, handle: (cellPath: Path, cellRange: Range) => void): boolean;
|
|
37
|
+
handleSelectedCells(editor: TheEditor, handle: (cellPath: Path, cellRange: Range) => void, cells?: TableCellElement[]): boolean;
|
|
31
38
|
hasHeaderRow(editor: TheEditor, location?: Location): boolean;
|
|
32
39
|
hasHeaderColumn(editor: TheEditor, location?: Location): boolean;
|
|
33
40
|
isActiveHeader(editor: TheEditor, location?: Location): boolean;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import { Editor } from 'slate';
|
|
3
|
-
import { ColorType } from '../../constants/color-select';
|
|
4
3
|
import { TableCellElement } from '../../custom-types';
|
|
5
4
|
import { CellPosition, TableSelectCellDirection } from './table.types';
|
|
6
5
|
import { TablePosition } from './utils';
|
|
@@ -60,8 +59,6 @@ export declare class TableStore {
|
|
|
60
59
|
setDangerousRows(): void;
|
|
61
60
|
setDangerousColumns(): void;
|
|
62
61
|
setDangerousTable(): void;
|
|
63
|
-
setSelectedCellsBackgroundColor(backgroundColor: ColorType): void;
|
|
64
|
-
clearSelectedCellsContent(): void;
|
|
65
62
|
/**
|
|
66
63
|
* 聚焦单元格并设置聚焦相关路径及元素
|
|
67
64
|
*/
|
package/transforms/index.d.ts
CHANGED
|
@@ -14,4 +14,6 @@ import { setEndSelection } from './set-end-selection';
|
|
|
14
14
|
import { closeConversionHint } from './close-conversion-hint';
|
|
15
15
|
import { handleContinualDeleteBackward } from './handle-continual-delete-backward';
|
|
16
16
|
import { handleContinualInsertBreak } from './handle-continual-insert-break';
|
|
17
|
-
|
|
17
|
+
import { deleteNodeByType } from './delete-node-by-type';
|
|
18
|
+
import { setNodeByType } from './set-node-by-type';
|
|
19
|
+
export { setMarks, clearMarks, insertElements, insertParagraph, setNode, unwrapNodesByType, onKeyDownResetBlockType, moveChildren, applyDeepToNodes, mergeDeepToNodes, unWrap, deleteElement, setEndSelection, closeConversionHint, handleContinualDeleteBackward, handleContinualInsertBreak, deleteNodeByType, setNodeByType };
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { TableEditor } from '../table.editor';
|
|
2
|
-
import { TableHeaderBackgroundColor, SpecialBackgroundColor } from '../../../constants';
|
|
3
|
-
import { THE_EDITOR_PREVIOUS_SELECTION } from '../../../utils';
|
|
4
|
-
export const setSelectedCellsBackgroundColor = (editor, color, tableStore) => {
|
|
5
|
-
// 点击自定义颜色面板输入框设置颜色值时,会丢失焦点和选区(目前无法做到焦点同时存在于编辑器和输入框)
|
|
6
|
-
let location;
|
|
7
|
-
if (!editor.selection) {
|
|
8
|
-
const { rangeRef } = THE_EDITOR_PREVIOUS_SELECTION.get(editor);
|
|
9
|
-
location = rangeRef.current.anchor;
|
|
10
|
-
}
|
|
11
|
-
const isHeader = TableEditor.isActiveHeader(editor, location);
|
|
12
|
-
if (color === 'transparent') {
|
|
13
|
-
color = null;
|
|
14
|
-
}
|
|
15
|
-
if ((color === TableHeaderBackgroundColor && isHeader) || (color === SpecialBackgroundColor && !isHeader)) {
|
|
16
|
-
tableStore.setSelectedCellsBackgroundColor(null);
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
tableStore.setSelectedCellsBackgroundColor(color);
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LWNlbGxzLWJhY2tncm91bmQtY29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS91dGlscy9zZXQtY2VsbHMtYmFja2dyb3VuZC1jb2xvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0QsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsQ0FBQyxNQUFpQixFQUFFLEtBQWEsRUFBRSxVQUFzQixFQUFFLEVBQUU7SUFDeEcsb0RBQW9EO0lBQ3BELElBQUksUUFBZSxDQUFDO0lBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ25CLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyw2QkFBNkIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0tBQ3RDO0lBRUQsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDOUQsSUFBSSxLQUFLLEtBQUssYUFBYSxFQUFFO1FBQ3pCLEtBQUssR0FBRyxJQUFJLENBQUM7S0FDaEI7SUFDRCxJQUFJLENBQUMsS0FBSyxLQUFLLDBCQUEwQixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLHNCQUFzQixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDdkcsVUFBVSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3BEO1NBQU07UUFDSCxVQUFVLENBQUMsK0JBQStCLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDckQ7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vdGFibGUuc3RvcmUnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3IgfSBmcm9tICcuLi90YWJsZS5lZGl0b3InO1xuaW1wb3J0IHsgVGhlRWRpdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvciwgU3BlY2lhbEJhY2tncm91bmRDb2xvciB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBFZGl0b3IsIFBvaW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgVEhFX0VESVRPUl9QUkVWSU9VU19TRUxFQ1RJT04gfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBzZXRTZWxlY3RlZENlbGxzQmFja2dyb3VuZENvbG9yID0gKGVkaXRvcjogVGhlRWRpdG9yLCBjb2xvcjogc3RyaW5nLCB0YWJsZVN0b3JlOiBUYWJsZVN0b3JlKSA9PiB7XG4gICAgLy8g54K55Ye76Ieq5a6a5LmJ6aKc6Imy6Z2i5p2/6L6T5YWl5qGG6K6+572u6aKc6Imy5YC85pe277yM5Lya5Lii5aSx54Sm54K55ZKM6YCJ5Yy677yI55uu5YmN5peg5rOV5YGa5Yiw54Sm54K55ZCM5pe25a2Y5Zyo5LqO57yW6L6R5Zmo5ZKM6L6T5YWl5qGG77yJXG4gICAgbGV0IGxvY2F0aW9uOiBQb2ludDtcbiAgICBpZiAoIWVkaXRvci5zZWxlY3Rpb24pIHtcbiAgICAgICAgY29uc3QgeyByYW5nZVJlZiB9ID0gVEhFX0VESVRPUl9QUkVWSU9VU19TRUxFQ1RJT04uZ2V0KGVkaXRvcik7XG4gICAgICAgIGxvY2F0aW9uID0gcmFuZ2VSZWYuY3VycmVudC5hbmNob3I7XG4gICAgfVxuXG4gICAgY29uc3QgaXNIZWFkZXIgPSBUYWJsZUVkaXRvci5pc0FjdGl2ZUhlYWRlcihlZGl0b3IsIGxvY2F0aW9uKTtcbiAgICBpZiAoY29sb3IgPT09ICd0cmFuc3BhcmVudCcpIHtcbiAgICAgICAgY29sb3IgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoKGNvbG9yID09PSBUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvciAmJiBpc0hlYWRlcikgfHwgKGNvbG9yID09PSBTcGVjaWFsQmFja2dyb3VuZENvbG9yICYmICFpc0hlYWRlcikpIHtcbiAgICAgICAgdGFibGVTdG9yZS5zZXRTZWxlY3RlZENlbGxzQmFja2dyb3VuZENvbG9yKG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRhYmxlU3RvcmUuc2V0U2VsZWN0ZWRDZWxsc0JhY2tncm91bmRDb2xvcihjb2xvcik7XG4gICAgfVxufTtcbiJdfQ==
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Transforms } from 'slate';
|
|
2
|
-
import { createTablePosition } from './create-table-position';
|
|
3
|
-
import { getTablePath } from './table-entry';
|
|
4
|
-
export function setTableOptions(editor, newOptions) {
|
|
5
|
-
const tablePosition = createTablePosition(editor);
|
|
6
|
-
const tablePath = getTablePath(editor);
|
|
7
|
-
const table = tablePosition.table;
|
|
8
|
-
const options = { ...table.options, ...newOptions };
|
|
9
|
-
Transforms.setNodes(editor, { options }, { at: tablePath });
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LW5vZGUtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3RhYmxlL3V0aWxzL3NldC1ub2RlLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUduQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdDLE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBaUIsRUFBRSxVQUEyQjtJQUMxRSxNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUNsQyxNQUFNLE9BQU8sR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLFVBQVUsRUFBRSxDQUFDO0lBQ3BELFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNmb3JtcyB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IFRoZUVkaXRvciB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGhlVGFibGVPcHRpb25zIH0gZnJvbSAnLi4vdGFibGUudHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlVGFibGVQb3NpdGlvbiB9IGZyb20gJy4vY3JlYXRlLXRhYmxlLXBvc2l0aW9uJztcbmltcG9ydCB7IGdldFRhYmxlUGF0aCB9IGZyb20gJy4vdGFibGUtZW50cnknO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0VGFibGVPcHRpb25zKGVkaXRvcjogVGhlRWRpdG9yLCBuZXdPcHRpb25zOiBUaGVUYWJsZU9wdGlvbnMpIHtcbiAgICBjb25zdCB0YWJsZVBvc2l0aW9uID0gY3JlYXRlVGFibGVQb3NpdGlvbihlZGl0b3IpO1xuICAgIGNvbnN0IHRhYmxlUGF0aCA9IGdldFRhYmxlUGF0aChlZGl0b3IpO1xuICAgIGNvbnN0IHRhYmxlID0gdGFibGVQb3NpdGlvbi50YWJsZTtcbiAgICBjb25zdCBvcHRpb25zID0geyAuLi50YWJsZS5vcHRpb25zLCAuLi5uZXdPcHRpb25zIH07XG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhlZGl0b3IsIHsgb3B0aW9ucyB9LCB7IGF0OiB0YWJsZVBhdGggfSk7XG59XG4iXX0=
|