@koobiq/components 18.10.0 → 18.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/autocomplete/autocomplete-trigger.directive.d.ts +0 -1
- package/autocomplete/autocomplete.scss +2 -10
- package/code-block/_code-block-theme.scss +35 -54
- package/code-block/code-block-highlight.d.ts +44 -0
- package/code-block/code-block-tokens.scss +7 -11
- package/code-block/code-block.d.ts +187 -0
- package/code-block/code-block.module.d.ts +2 -8
- package/code-block/code-block.scss +103 -127
- package/code-block/public-api.d.ts +3 -2
- package/code-block/types.d.ts +27 -0
- package/core/error/error-state-matcher.d.ts +3 -0
- package/core/locales/index.d.ts +1 -0
- package/core/locales/types.d.ts +11 -0
- package/core/pop-up/constants.d.ts +9 -0
- package/core/select/constants.d.ts +16 -4
- package/core/styles/theming/_scrollbar-theme.scss +2 -1
- package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +7 -8
- package/esm2022/autocomplete/autocomplete.component.mjs +2 -2
- package/esm2022/code-block/code-block-highlight.mjs +416 -0
- package/esm2022/code-block/code-block.mjs +395 -0
- package/esm2022/code-block/code-block.module.mjs +9 -30
- package/esm2022/code-block/public-api.mjs +4 -3
- package/esm2022/code-block/types.mjs +2 -0
- package/esm2022/core/error/error-state-matcher.mjs +15 -2
- package/esm2022/core/locales/en-US.mjs +1 -1
- package/esm2022/core/locales/es-LA.mjs +1 -1
- package/esm2022/core/locales/fa-IR.mjs +1 -1
- package/esm2022/core/locales/index.mjs +2 -1
- package/esm2022/core/locales/pt-BR.mjs +1 -1
- package/esm2022/core/locales/ru-RU.mjs +1 -1
- package/esm2022/core/locales/types.mjs +2 -0
- package/esm2022/core/locales/zh-CN.mjs +1 -1
- package/esm2022/core/pop-up/constants.mjs +6 -1
- package/esm2022/core/select/constants.mjs +17 -5
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/datepicker/calendar-header.component.mjs +1 -1
- package/esm2022/form-field/form-field.mjs +6 -6
- package/esm2022/loader-overlay/loader-overlay.component.mjs +6 -4
- package/esm2022/modal/modal.component.mjs +5 -3
- package/esm2022/modal/modal.service.mjs +5 -2
- package/esm2022/modal/public-api.mjs +5 -5
- package/esm2022/select/select.component.mjs +22 -12
- package/esm2022/sidepanel/sidepanel-config.mjs +1 -1
- package/esm2022/sidepanel/sidepanel-container.component.mjs +6 -3
- package/esm2022/timezone/timezone-select.component.mjs +3 -1
- package/esm2022/tooltip/tooltip.component.mjs +5 -2
- package/esm2022/tree-select/tree-select.component.mjs +12 -7
- package/fesm2022/koobiq-components-autocomplete.mjs +9 -10
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +378 -341
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +36 -7
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +5 -5
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +5 -3
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +9 -4
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +21 -11
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +5 -2
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +2 -0
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +4 -1
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +11 -6
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/form-field/form-field.d.ts +1 -1
- package/form-field/form-field.scss +0 -1
- package/loader-overlay/loader-overlay.component.d.ts +1 -0
- package/modal/modal.component.d.ts +4 -0
- package/modal/modal.service.d.ts +4 -0
- package/modal/public-api.d.ts +4 -4
- package/package.json +4 -4
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/schematics/ng-add/index.js +3 -4
- package/select/select.component.d.ts +15 -3
- package/sidepanel/sidepanel-config.d.ts +2 -0
- package/sidepanel/sidepanel-container.component.d.ts +1 -0
- package/timezone/timezone-select.component.d.ts +3 -1
- package/tooltip/tooltip.component.d.ts +2 -1
- package/accordion/README.md +0 -0
- package/alert/README.md +0 -0
- package/autocomplete/README.md +0 -0
- package/badge/README.md +0 -0
- package/button/README.md +0 -0
- package/button-toggle/README.md +0 -0
- package/checkbox/README.md +0 -1
- package/code-block/README.md +0 -36
- package/code-block/actionbar.component.d.ts +0 -32
- package/code-block/actionbar.component.scss +0 -43
- package/code-block/code-block-content.d.ts +0 -28
- package/code-block/code-block.component.d.ts +0 -98
- package/code-block/code-block.types.d.ts +0 -36
- package/datepicker/README.md +0 -0
- package/divider/README.md +0 -0
- package/dl/README.md +0 -0
- package/empty-state/README.md +0 -0
- package/esm2022/code-block/actionbar.component.mjs +0 -90
- package/esm2022/code-block/code-block-content.mjs +0 -393
- package/esm2022/code-block/code-block.component.mjs +0 -283
- package/esm2022/code-block/code-block.types.mjs +0 -5
- package/file-upload/README.md +0 -0
- package/form-field/README.md +0 -0
- package/icon/README.md +0 -0
- package/link/README.md +0 -0
- package/list/README.md +0 -0
- package/loader-overlay/README.md +0 -0
- package/modal/README.md +0 -35
- package/navbar/README.md +0 -42
- package/popover/README.md +0 -36
- package/progress-bar/README.md +0 -0
- package/progress-spinner/README.md +0 -0
- package/risk-level/README.md +0 -0
- package/table/README.md +0 -0
- package/tags/README.md +0 -0
- package/textarea/README.md +0 -0
- package/timepicker/README.md +0 -0
- package/timezone/README.md +0 -0
- package/tree-select/README.md +0 -0
package/code-block/README.md
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# Popover component
|
|
2
|
-
|
|
3
|
-
## API
|
|
4
|
-
|
|
5
|
-
| Property | Description | Type | Default | |
|
|
6
|
-
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- | ----------- | --- |
|
|
7
|
-
| kbqPlacement | Место для показа относительно элемента, к которому он привязан. Возможные значения: top, bottom, left, right | string | bottom | |
|
|
8
|
-
| kbqTrigger | Триггер для показа Возможные значения: hover, manual, click, focus | string | hover | |
|
|
9
|
-
| kbqVisible | Ручное управление показом, используется только при kbqTrigger="manual" | boolean | false | |
|
|
10
|
-
| kbqPopoverHeader | Содержимое шапки Обрати внимание: если используешь строку, то используй аккуратно, желательно предварительно сделать escape строки, чтобы избежать потенциальной XSS уязвимости. | string | ng-template | – |
|
|
11
|
-
| kbqPopoverContent | Содержимое компонента Обрати внимание: если используешь строку, то используй аккуратно, желательно предварительно сделать escape строки, чтобы избежать потенциальной XSS уязвимости. | string | ng-template | – |
|
|
12
|
-
| kbqPopoverFooter | Содержимое подвала Обрати внимание: если используешь строку, то используй аккуратно, желательно предварительно сделать escape строки, чтобы избежать потенциальной XSS уязвимости. | string | ng-template | – |
|
|
13
|
-
| kbqPopoverDisabled | Флаг для запрета показа | boolean | false | |
|
|
14
|
-
| kbqPopoverClass | Добавление своих классов | string | string[] | – |
|
|
15
|
-
| kbqVisibleChange | Callback на изменение видимости компонента | EventEmitter<boolean> | – | |
|
|
16
|
-
|
|
17
|
-
## Example
|
|
18
|
-
|
|
19
|
-
<!-- cspell:ignore Э́йяфьядлайё̀кюдль, Эйяфьядлайёкюдль -->
|
|
20
|
-
|
|
21
|
-
```html
|
|
22
|
-
<ng-template #customContent>
|
|
23
|
-
Э́йяфьядлайё̀кюдль — шестой по величине ледник Исландии. Расположен на юге Исландии в 125 км к востоку от Рейкьявика.
|
|
24
|
-
Под этим ледником находится одноимённый вулкан конической формы.
|
|
25
|
-
</ng-template>
|
|
26
|
-
|
|
27
|
-
<button
|
|
28
|
-
kbqPopover
|
|
29
|
-
[kbqTrigger]="'hover'"
|
|
30
|
-
[kbqPlacement]="'top'"
|
|
31
|
-
[kbqPopoverHeader]="'Это header'"
|
|
32
|
-
[kbqPopoverContent]="customContent"
|
|
33
|
-
>
|
|
34
|
-
Найти Эйяфьядлайёкюдль
|
|
35
|
-
</button>
|
|
36
|
-
```
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { AfterViewInit, ChangeDetectorRef, EventEmitter } from '@angular/core';
|
|
2
|
-
import { KbqLocaleService } from '@koobiq/components/core';
|
|
3
|
-
import { KbqTooltipTrigger } from '@koobiq/components/tooltip';
|
|
4
|
-
import { KbqCodeBlockConfiguration, KbqCodeBlockFile } from './code-block.types';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class KbqActionBarComponent implements AfterViewInit {
|
|
7
|
-
private changeDetectorRef;
|
|
8
|
-
protected configuration?: KbqCodeBlockConfiguration | undefined;
|
|
9
|
-
protected localeService?: KbqLocaleService | undefined;
|
|
10
|
-
copyTooltip: KbqTooltipTrigger;
|
|
11
|
-
codeFiles: KbqCodeBlockFile[];
|
|
12
|
-
selectedTabIndex: number;
|
|
13
|
-
multiLine: boolean;
|
|
14
|
-
softWrap: boolean;
|
|
15
|
-
canLoad: boolean;
|
|
16
|
-
toggleSoftWrap: EventEmitter<void>;
|
|
17
|
-
downloadCode: EventEmitter<void>;
|
|
18
|
-
copyCode: EventEmitter<void>;
|
|
19
|
-
openExternalSystem: EventEmitter<void>;
|
|
20
|
-
copyTooltipText: string;
|
|
21
|
-
/**
|
|
22
|
-
* @docs-private
|
|
23
|
-
*/
|
|
24
|
-
config: KbqCodeBlockConfiguration;
|
|
25
|
-
constructor(changeDetectorRef: ChangeDetectorRef, configuration?: KbqCodeBlockConfiguration | undefined, localeService?: KbqLocaleService | undefined);
|
|
26
|
-
ngAfterViewInit(): void;
|
|
27
|
-
onCopy(): void;
|
|
28
|
-
private updateLocaleParams;
|
|
29
|
-
private initDefaultParams;
|
|
30
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<KbqActionBarComponent, [null, { optional: true; }, { optional: true; }]>;
|
|
31
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<KbqActionBarComponent, "kbq-actionbar-block", never, { "codeFiles": { "alias": "codeFiles"; "required": false; }; "selectedTabIndex": { "alias": "selectedTabIndex"; "required": false; }; "multiLine": { "alias": "multiLine"; "required": false; }; "softWrap": { "alias": "softWrap"; "required": false; }; "canLoad": { "alias": "canLoad"; "required": false; }; }, { "toggleSoftWrap": "toggleSoftWrap"; "downloadCode": "downloadCode"; "copyCode": "copyCode"; "openExternalSystem": "openExternalSystem"; }, never, never, false, never>;
|
|
32
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
@use '../core/styles/common/tokens' as *;
|
|
2
|
-
|
|
3
|
-
$actionbar-indents: var(--kbq-code-block-size-actionbar-padding-vertical)
|
|
4
|
-
var(--kbq-code-block-size-actionbar-padding-horizontal);
|
|
5
|
-
|
|
6
|
-
.kbq-code-block-actionbar {
|
|
7
|
-
display: flex;
|
|
8
|
-
justify-content: right;
|
|
9
|
-
align-items: center;
|
|
10
|
-
|
|
11
|
-
position: absolute;
|
|
12
|
-
|
|
13
|
-
// position to top to the height of tab-header
|
|
14
|
-
top: -48px;
|
|
15
|
-
right: 0;
|
|
16
|
-
|
|
17
|
-
margin: $actionbar-indents;
|
|
18
|
-
|
|
19
|
-
.kbq-actionbar-block__button-stack {
|
|
20
|
-
gap: var(--kbq-code-block-size-actionbar-content-gap-horizontal);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.kbq-code-block__fade-gradient {
|
|
24
|
-
display: none;
|
|
25
|
-
|
|
26
|
-
width: var(--kbq-code-block-size-actionbar-fade-gradient-width);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
&.kbq-actionbar-block_floating {
|
|
30
|
-
top: 0;
|
|
31
|
-
margin: unset;
|
|
32
|
-
background: transparent !important;
|
|
33
|
-
|
|
34
|
-
.kbq-code-block__fade-gradient {
|
|
35
|
-
display: block;
|
|
36
|
-
align-self: stretch;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
.kbq-actionbar-block__button-stack {
|
|
40
|
-
padding: $actionbar-indents;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { KbqCodeBlockFile } from './code-block.types';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class KbqCodeBlockContent {
|
|
4
|
-
protected readonly document: Document;
|
|
5
|
-
private readonly nativeElement;
|
|
6
|
-
private readonly renderer;
|
|
7
|
-
private readonly domSanitizer;
|
|
8
|
-
/** The code file. */
|
|
9
|
-
set file({ language, content }: KbqCodeBlockFile);
|
|
10
|
-
/** The starting line number. */
|
|
11
|
-
startFrom: number;
|
|
12
|
-
/** Whether to display line numbers for single line code block. */
|
|
13
|
-
singleLine: boolean;
|
|
14
|
-
constructor();
|
|
15
|
-
/** Use defaultView of injected document if available or fallback to global window reference */
|
|
16
|
-
private getWindow;
|
|
17
|
-
private initLineNumbersPlugin;
|
|
18
|
-
/**
|
|
19
|
-
* This method is not intended for editing.
|
|
20
|
-
* Changes may lead to unpredictable behavior.
|
|
21
|
-
* Source code: https://github.com/wcoder/highlightjs-line-numbers.js/blob/v2.9.0/src/highlightjs-line-numbers.js
|
|
22
|
-
*/
|
|
23
|
-
private highlightJSLineNumbersPlugin;
|
|
24
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<KbqCodeBlockContent, never>;
|
|
25
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqCodeBlockContent, "[kbqCodeBlockContent]", never, { "file": { "alias": "file"; "required": true; }; "startFrom": { "alias": "startFrom"; "required": false; }; "singleLine": { "alias": "singleLine"; "required": false; }; }, {}, never, never, true, never>;
|
|
26
|
-
static ngAcceptInputType_startFrom: unknown;
|
|
27
|
-
static ngAcceptInputType_singleLine: unknown;
|
|
28
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
2
|
-
import { Clipboard } from '@angular/cdk/clipboard';
|
|
3
|
-
import { AfterViewInit, ChangeDetectorRef, ElementRef, OnDestroy, Renderer2 } from '@angular/core';
|
|
4
|
-
import { KbqLocaleService } from '@koobiq/components/core';
|
|
5
|
-
import { KbqTabChangeEvent, KbqTabGroup } from '@koobiq/components/tabs';
|
|
6
|
-
import { Subject } from 'rxjs';
|
|
7
|
-
import { KbqCodeBlockConfiguration, KbqCodeBlockFile } from './code-block.types';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
export declare const COPIED_MESSAGE_TOOLTIP_TIMEOUT = 100;
|
|
10
|
-
export declare const DEFAULT_EXTENSION = "txt";
|
|
11
|
-
export declare const LANGUAGES_EXTENSIONS: {
|
|
12
|
-
html: string;
|
|
13
|
-
css: string;
|
|
14
|
-
php: string;
|
|
15
|
-
java: string;
|
|
16
|
-
bash: string;
|
|
17
|
-
javascript: string;
|
|
18
|
-
typescript: string;
|
|
19
|
-
python: string;
|
|
20
|
-
ruby: string;
|
|
21
|
-
c: string;
|
|
22
|
-
'c++': string;
|
|
23
|
-
'c#': string;
|
|
24
|
-
csharp: string;
|
|
25
|
-
lua: string;
|
|
26
|
-
xml: string;
|
|
27
|
-
json: string;
|
|
28
|
-
};
|
|
29
|
-
export declare class KbqCodeBlockComponent implements AfterViewInit, OnDestroy {
|
|
30
|
-
private elementRef;
|
|
31
|
-
private changeDetectorRef;
|
|
32
|
-
private clipboard;
|
|
33
|
-
private renderer;
|
|
34
|
-
private focusMonitor;
|
|
35
|
-
protected configuration?: KbqCodeBlockConfiguration | undefined;
|
|
36
|
-
protected localeService?: KbqLocaleService | undefined;
|
|
37
|
-
protected readonly document: Document;
|
|
38
|
-
tabGroup: KbqTabGroup;
|
|
39
|
-
lineNumbers: boolean;
|
|
40
|
-
filled: boolean;
|
|
41
|
-
maxHeight: number;
|
|
42
|
-
softWrap: boolean;
|
|
43
|
-
canLoad: boolean;
|
|
44
|
-
get codeFiles(): KbqCodeBlockFile[];
|
|
45
|
-
set codeFiles(files: KbqCodeBlockFile[]);
|
|
46
|
-
private _codeFiles;
|
|
47
|
-
get noHeader(): any;
|
|
48
|
-
get singleFile(): boolean;
|
|
49
|
-
selectedTabIndex: number;
|
|
50
|
-
copied: boolean;
|
|
51
|
-
viewAll: boolean;
|
|
52
|
-
multiLine: boolean;
|
|
53
|
-
isTopOverflow: boolean;
|
|
54
|
-
hasKeyboardFocus: boolean;
|
|
55
|
-
/**
|
|
56
|
-
* @docs-private
|
|
57
|
-
*/
|
|
58
|
-
actionbarHidden?: boolean;
|
|
59
|
-
/**
|
|
60
|
-
* @docs-private
|
|
61
|
-
*/
|
|
62
|
-
config: KbqCodeBlockConfiguration;
|
|
63
|
-
readonly resizeStream: Subject<Event>;
|
|
64
|
-
readonly currentCodeBlock: Subject<HTMLElement>;
|
|
65
|
-
private readonly resizeDebounceInterval;
|
|
66
|
-
private resizeSubscription;
|
|
67
|
-
private codeBlockSubscription;
|
|
68
|
-
private hoverSubscription;
|
|
69
|
-
constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, clipboard: Clipboard, renderer: Renderer2, focusMonitor: FocusMonitor, configuration?: KbqCodeBlockConfiguration | undefined, localeService?: KbqLocaleService | undefined);
|
|
70
|
-
ngAfterViewInit(): void;
|
|
71
|
-
ngOnDestroy(): void;
|
|
72
|
-
updateHeader: () => void;
|
|
73
|
-
toggleSoftWrap(): void;
|
|
74
|
-
toggleViewAll(): void;
|
|
75
|
-
downloadCode(): void;
|
|
76
|
-
copyCode(): void;
|
|
77
|
-
openExternalSystem(): void;
|
|
78
|
-
onHighlighted(): void;
|
|
79
|
-
getMaxHeight(): string;
|
|
80
|
-
onSelectTab($event: KbqTabChangeEvent): void;
|
|
81
|
-
checkOverflow(currentCodeContentElement: HTMLElement): void;
|
|
82
|
-
onShowMoreClick(currentCodeContentElement: HTMLPreElement): void;
|
|
83
|
-
canShowFocus(currentCodeContent: HTMLPreElement): boolean;
|
|
84
|
-
onEnter(currentCodeBlock: HTMLPreElement): void;
|
|
85
|
-
/** @docs-private */
|
|
86
|
-
showActionBarIfNecessary(): void;
|
|
87
|
-
/** @docs-private */
|
|
88
|
-
hideActionBarIfNoHeader(event?: FocusEvent | null): void;
|
|
89
|
-
private updateLocaleParams;
|
|
90
|
-
private initDefaultParams;
|
|
91
|
-
private updateMultiline;
|
|
92
|
-
private getFullFileName;
|
|
93
|
-
private subscribeToHover;
|
|
94
|
-
/** Use defaultView of injected document if available or fallback to global window reference */
|
|
95
|
-
private getWindow;
|
|
96
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<KbqCodeBlockComponent, [null, null, null, null, null, { optional: true; }, { optional: true; }]>;
|
|
97
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<KbqCodeBlockComponent, "kbq-code-block", ["kbqCodeBlock"], { "lineNumbers": { "alias": "lineNumbers"; "required": false; }; "filled": { "alias": "filled"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "softWrap": { "alias": "softWrap"; "required": false; }; "canLoad": { "alias": "canLoad"; "required": false; }; "codeFiles": { "alias": "codeFiles"; "required": false; }; }, {}, never, never, false, never>;
|
|
98
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export declare const KBQ_CODE_BLOCK_CONFIGURATION: InjectionToken<any>;
|
|
3
|
-
export declare const KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION: {
|
|
4
|
-
softWrapOnTooltip: string;
|
|
5
|
-
softWrapOffTooltip: string;
|
|
6
|
-
downloadTooltip: string;
|
|
7
|
-
copiedTooltip: string;
|
|
8
|
-
copyTooltip: string;
|
|
9
|
-
viewAllText: string;
|
|
10
|
-
viewLessText: string;
|
|
11
|
-
openExternalSystemTooltip: string;
|
|
12
|
-
};
|
|
13
|
-
export interface KbqCodeBlockConfiguration {
|
|
14
|
-
softWrapOnTooltip: string;
|
|
15
|
-
softWrapOffTooltip: string;
|
|
16
|
-
downloadTooltip: string;
|
|
17
|
-
copiedTooltip: string;
|
|
18
|
-
copyTooltip: string;
|
|
19
|
-
viewAllText: string;
|
|
20
|
-
viewLessText: string;
|
|
21
|
-
openExternalSystemTooltip: string;
|
|
22
|
-
}
|
|
23
|
-
/** Code block file type. */
|
|
24
|
-
export type KbqCodeBlockFile = {
|
|
25
|
-
filename: string;
|
|
26
|
-
content: string;
|
|
27
|
-
/**
|
|
28
|
-
* File language
|
|
29
|
-
*
|
|
30
|
-
* @link https://highlightjs.readthedocs.io/en/stable/supported-languages.html
|
|
31
|
-
*/
|
|
32
|
-
language: string;
|
|
33
|
-
link?: string;
|
|
34
|
-
};
|
|
35
|
-
/** @deprecated Will be removed in next major release, use `KbqCodeBlockFile` instead. */
|
|
36
|
-
export type KbqCodeFile = KbqCodeBlockFile;
|
package/datepicker/README.md
DELETED
|
File without changes
|
package/divider/README.md
DELETED
|
File without changes
|
package/dl/README.md
DELETED
|
File without changes
|
package/empty-state/README.md
DELETED
|
File without changes
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, Optional, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
|
-
import { KBQ_LOCALE_SERVICE, KbqLocaleService } from '@koobiq/components/core';
|
|
4
|
-
import { KbqTooltipTrigger } from '@koobiq/components/tooltip';
|
|
5
|
-
import { filter } from 'rxjs/operators';
|
|
6
|
-
import { KBQ_CODE_BLOCK_CONFIGURATION, KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION } from './code-block.types';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@koobiq/components/button";
|
|
9
|
-
import * as i2 from "@koobiq/components/tooltip";
|
|
10
|
-
import * as i3 from "@koobiq/components/icon";
|
|
11
|
-
import * as i4 from "@koobiq/components/core";
|
|
12
|
-
export class KbqActionBarComponent {
|
|
13
|
-
constructor(changeDetectorRef, configuration, localeService) {
|
|
14
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
15
|
-
this.configuration = configuration;
|
|
16
|
-
this.localeService = localeService;
|
|
17
|
-
this.selectedTabIndex = 0;
|
|
18
|
-
this.toggleSoftWrap = new EventEmitter();
|
|
19
|
-
this.downloadCode = new EventEmitter();
|
|
20
|
-
this.copyCode = new EventEmitter();
|
|
21
|
-
this.openExternalSystem = new EventEmitter();
|
|
22
|
-
this.updateLocaleParams = () => {
|
|
23
|
-
this.config = this.configuration || this.localeService?.getParams('codeBlock');
|
|
24
|
-
this.copyTooltipText = this.config.copyTooltip;
|
|
25
|
-
this.changeDetectorRef.markForCheck();
|
|
26
|
-
};
|
|
27
|
-
this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);
|
|
28
|
-
if (!this.localeService) {
|
|
29
|
-
this.initDefaultParams();
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
ngAfterViewInit() {
|
|
33
|
-
this.copyTooltipText = this.config.copyTooltip;
|
|
34
|
-
this.copyTooltip.visibleChange.pipe(filter((state) => !state)).subscribe(() => {
|
|
35
|
-
if (this.copyTooltipText === this.config.copiedTooltip) {
|
|
36
|
-
this.copyTooltipText = this.config.copyTooltip;
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
onCopy() {
|
|
41
|
-
this.copyCode.emit();
|
|
42
|
-
setTimeout(() => {
|
|
43
|
-
this.copyTooltipText = this.config.copiedTooltip;
|
|
44
|
-
this.copyTooltip.show();
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
initDefaultParams() {
|
|
48
|
-
this.config = KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION;
|
|
49
|
-
}
|
|
50
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqActionBarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: KBQ_CODE_BLOCK_CONFIGURATION, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
51
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: KbqActionBarComponent, selector: "kbq-actionbar-block", inputs: { codeFiles: "codeFiles", selectedTabIndex: "selectedTabIndex", multiLine: "multiLine", softWrap: "softWrap", canLoad: "canLoad" }, outputs: { toggleSoftWrap: "toggleSoftWrap", downloadCode: "downloadCode", copyCode: "copyCode", openExternalSystem: "openExternalSystem" }, host: { classAttribute: "kbq-code-block-actionbar" }, viewQueries: [{ propertyName: "copyTooltip", first: true, predicate: ["copyTooltip"], descendants: true }], ngImport: i0, template: "<div class=\"kbq-code-block__fade-gradient\"></div>\n\n<div class=\"kbq-actionbar-block__button-stack layout-row\">\n @if (multiLine) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"softWrap ? config.softWrapOffTooltip : config.softWrapOnTooltip\"\n (click)=\"toggleSoftWrap.emit()\"\n >\n @if (!softWrap) {\n <i kbq-icon=\"kbq-wrap-text_16\"></i>\n }\n @if (softWrap) {\n <i kbq-icon=\"kbq-wrap-text-slash_16\"></i>\n }\n </button>\n }\n\n @if (canLoad) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"config.downloadTooltip\"\n (click)=\"downloadCode.emit()\"\n >\n <i kbq-icon=\"kbq-arrow-down-to-line_16\"></i>\n </button>\n }\n\n <button\n #copyTooltip=\"kbqTooltip\"\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"copyTooltipText\"\n (click)=\"onCopy()\"\n >\n <i kbq-icon=\"kbq-file-multiple-o_16\"></i>\n </button>\n\n @if (codeFiles[selectedTabIndex].link) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"config.openExternalSystemTooltip\"\n (click)=\"openExternalSystem.emit()\"\n >\n <i kbq-icon=\"kbq-arrow-up-right-from-square_16\"></i>\n </button>\n }\n</div>\n", styles: [".kbq-code-block-actionbar{display:flex;justify-content:right;align-items:center;position:absolute;top:-48px;right:0;margin:var(--kbq-code-block-size-actionbar-padding-vertical) var(--kbq-code-block-size-actionbar-padding-horizontal)}.kbq-code-block-actionbar .kbq-actionbar-block__button-stack{gap:var(--kbq-code-block-size-actionbar-content-gap-horizontal)}.kbq-code-block-actionbar .kbq-code-block__fade-gradient{display:none;width:var(--kbq-code-block-size-actionbar-fade-gradient-width)}.kbq-code-block-actionbar.kbq-actionbar-block_floating{top:0;margin:unset;background:transparent!important}.kbq-code-block-actionbar.kbq-actionbar-block_floating .kbq-code-block__fade-gradient{display:block;align-self:stretch}.kbq-code-block-actionbar.kbq-actionbar-block_floating .kbq-actionbar-block__button-stack{padding:var(--kbq-code-block-size-actionbar-padding-vertical) var(--kbq-code-block-size-actionbar-padding-horizontal)}\n"], dependencies: [{ kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["color", "tabIndex", "kbqStyle", "disabled"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "directive", type: i2.KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["kbqVisible", "kbqPlacement", "kbqRelativeToPointer", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "kbqEnterDelay", "kbqLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipContext", "kbqTooltipColor", "kbqTooltipArrow", "kbqTooltipOffset"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }, { kind: "component", type: i3.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
52
|
-
}
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqActionBarComponent, decorators: [{
|
|
54
|
-
type: Component,
|
|
55
|
-
args: [{ selector: 'kbq-actionbar-block', host: {
|
|
56
|
-
class: 'kbq-code-block-actionbar'
|
|
57
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"kbq-code-block__fade-gradient\"></div>\n\n<div class=\"kbq-actionbar-block__button-stack layout-row\">\n @if (multiLine) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"softWrap ? config.softWrapOffTooltip : config.softWrapOnTooltip\"\n (click)=\"toggleSoftWrap.emit()\"\n >\n @if (!softWrap) {\n <i kbq-icon=\"kbq-wrap-text_16\"></i>\n }\n @if (softWrap) {\n <i kbq-icon=\"kbq-wrap-text-slash_16\"></i>\n }\n </button>\n }\n\n @if (canLoad) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"config.downloadTooltip\"\n (click)=\"downloadCode.emit()\"\n >\n <i kbq-icon=\"kbq-arrow-down-to-line_16\"></i>\n </button>\n }\n\n <button\n #copyTooltip=\"kbqTooltip\"\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"copyTooltipText\"\n (click)=\"onCopy()\"\n >\n <i kbq-icon=\"kbq-file-multiple-o_16\"></i>\n </button>\n\n @if (codeFiles[selectedTabIndex].link) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"config.openExternalSystemTooltip\"\n (click)=\"openExternalSystem.emit()\"\n >\n <i kbq-icon=\"kbq-arrow-up-right-from-square_16\"></i>\n </button>\n }\n</div>\n", styles: [".kbq-code-block-actionbar{display:flex;justify-content:right;align-items:center;position:absolute;top:-48px;right:0;margin:var(--kbq-code-block-size-actionbar-padding-vertical) var(--kbq-code-block-size-actionbar-padding-horizontal)}.kbq-code-block-actionbar .kbq-actionbar-block__button-stack{gap:var(--kbq-code-block-size-actionbar-content-gap-horizontal)}.kbq-code-block-actionbar .kbq-code-block__fade-gradient{display:none;width:var(--kbq-code-block-size-actionbar-fade-gradient-width)}.kbq-code-block-actionbar.kbq-actionbar-block_floating{top:0;margin:unset;background:transparent!important}.kbq-code-block-actionbar.kbq-actionbar-block_floating .kbq-code-block__fade-gradient{display:block;align-self:stretch}.kbq-code-block-actionbar.kbq-actionbar-block_floating .kbq-actionbar-block__button-stack{padding:var(--kbq-code-block-size-actionbar-padding-vertical) var(--kbq-code-block-size-actionbar-padding-horizontal)}\n"] }]
|
|
58
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
59
|
-
type: Optional
|
|
60
|
-
}, {
|
|
61
|
-
type: Inject,
|
|
62
|
-
args: [KBQ_CODE_BLOCK_CONFIGURATION]
|
|
63
|
-
}] }, { type: i4.KbqLocaleService, decorators: [{
|
|
64
|
-
type: Optional
|
|
65
|
-
}, {
|
|
66
|
-
type: Inject,
|
|
67
|
-
args: [KBQ_LOCALE_SERVICE]
|
|
68
|
-
}] }], propDecorators: { copyTooltip: [{
|
|
69
|
-
type: ViewChild,
|
|
70
|
-
args: ['copyTooltip']
|
|
71
|
-
}], codeFiles: [{
|
|
72
|
-
type: Input
|
|
73
|
-
}], selectedTabIndex: [{
|
|
74
|
-
type: Input
|
|
75
|
-
}], multiLine: [{
|
|
76
|
-
type: Input
|
|
77
|
-
}], softWrap: [{
|
|
78
|
-
type: Input
|
|
79
|
-
}], canLoad: [{
|
|
80
|
-
type: Input
|
|
81
|
-
}], toggleSoftWrap: [{
|
|
82
|
-
type: Output
|
|
83
|
-
}], downloadCode: [{
|
|
84
|
-
type: Output
|
|
85
|
-
}], copyCode: [{
|
|
86
|
-
type: Output
|
|
87
|
-
}], openExternalSystem: [{
|
|
88
|
-
type: Output
|
|
89
|
-
}] } });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29kZS1ibG9jay9hY3Rpb25iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb2RlLWJsb2NrL2FjdGlvbmJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQ0gsNEJBQTRCLEVBQzVCLG9DQUFvQyxFQUd2QyxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7QUFZNUIsTUFBTSxPQUFPLHFCQUFxQjtJQW9COUIsWUFDWSxpQkFBb0MsRUFDZ0IsYUFBeUMsRUFDbkQsYUFBZ0M7UUFGMUUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNnQixrQkFBYSxHQUFiLGFBQWEsQ0FBNEI7UUFDbkQsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBbkI3RSxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFLcEIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzFDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN4QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNwQyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBdUNoRCx1QkFBa0IsR0FBRyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRS9FLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFFL0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFDLENBQUMsQ0FBQztRQWhDRSxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUxRixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFFL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDMUUsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFDbkQsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXJCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBVU8saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsb0NBQW9DLENBQUM7SUFDdkQsQ0FBQztpSUE3RFEscUJBQXFCLG1EQXNCTiw0QkFBNEIsNkJBQzVCLGtCQUFrQjtxSEF2QmpDLHFCQUFxQixzZkNsQ2xDLGtvREF1REE7OzJGRHJCYSxxQkFBcUI7a0JBVmpDLFNBQVM7K0JBQ0kscUJBQXFCLFFBR3pCO3dCQUNGLEtBQUssRUFBRSwwQkFBMEI7cUJBQ3BDLGlCQUNjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OzBCQXdCMUMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw0QkFBNEI7OzBCQUMvQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjt5Q0F0QmhCLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFFZixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgS0JRX0xPQ0FMRV9TRVJWSUNFLCBLYnFMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS2JxVG9vbHRpcFRyaWdnZXIgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIEtCUV9DT0RFX0JMT0NLX0NPTkZJR1VSQVRJT04sXG4gICAgS0JRX0NPREVfQkxPQ0tfREVGQVVMVF9DT05GSUdVUkFUSU9OLFxuICAgIEticUNvZGVCbG9ja0NvbmZpZ3VyYXRpb24sXG4gICAgS2JxQ29kZUJsb2NrRmlsZVxufSBmcm9tICcuL2NvZGUtYmxvY2sudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS1hY3Rpb25iYXItYmxvY2snLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb25iYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2FjdGlvbmJhci5jb21wb25lbnQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtY29kZS1ibG9jay1hY3Rpb25iYXInXG4gICAgfSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEticUFjdGlvbkJhckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2NvcHlUb29sdGlwJykgY29weVRvb2x0aXA6IEticVRvb2x0aXBUcmlnZ2VyO1xuXG4gICAgQElucHV0KCkgY29kZUZpbGVzOiBLYnFDb2RlQmxvY2tGaWxlW107XG4gICAgQElucHV0KCkgc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gICAgQElucHV0KCkgbXVsdGlMaW5lOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNvZnRXcmFwOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNhbkxvYWQ6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgdG9nZ2xlU29mdFdyYXAgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIGRvd25sb2FkQ29kZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgY29weUNvZGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIG9wZW5FeHRlcm5hbFN5c3RlbSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIGNvcHlUb29sdGlwVGV4dDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBjb25maWc6IEticUNvZGVCbG9ja0NvbmZpZ3VyYXRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0NPREVfQkxPQ0tfQ09ORklHVVJBVElPTikgcHJvdGVjdGVkIGNvbmZpZ3VyYXRpb24/OiBLYnFDb2RlQmxvY2tDb25maWd1cmF0aW9uLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfU0VSVklDRSkgcHJvdGVjdGVkIGxvY2FsZVNlcnZpY2U/OiBLYnFMb2NhbGVTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMubG9jYWxlU2VydmljZT8uY2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUodGhpcy51cGRhdGVMb2NhbGVQYXJhbXMpO1xuXG4gICAgICAgIGlmICghdGhpcy5sb2NhbGVTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLmluaXREZWZhdWx0UGFyYW1zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29weVRvb2x0aXBUZXh0ID0gdGhpcy5jb25maWcuY29weVRvb2x0aXA7XG5cbiAgICAgICAgdGhpcy5jb3B5VG9vbHRpcC52aXNpYmxlQ2hhbmdlLnBpcGUoZmlsdGVyKChzdGF0ZSkgPT4gIXN0YXRlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvcHlUb29sdGlwVGV4dCA9PT0gdGhpcy5jb25maWcuY29waWVkVG9vbHRpcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29weVRvb2x0aXBUZXh0ID0gdGhpcy5jb25maWcuY29weVRvb2x0aXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQ29weSgpIHtcbiAgICAgICAgdGhpcy5jb3B5Q29kZS5lbWl0KCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvcHlUb29sdGlwVGV4dCA9IHRoaXMuY29uZmlnLmNvcGllZFRvb2x0aXA7XG4gICAgICAgICAgICB0aGlzLmNvcHlUb29sdGlwLnNob3coKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVMb2NhbGVQYXJhbXMgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5jb25maWd1cmF0aW9uIHx8IHRoaXMubG9jYWxlU2VydmljZT8uZ2V0UGFyYW1zKCdjb2RlQmxvY2snKTtcblxuICAgICAgICB0aGlzLmNvcHlUb29sdGlwVGV4dCA9IHRoaXMuY29uZmlnLmNvcHlUb29sdGlwO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgaW5pdERlZmF1bHRQYXJhbXMoKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gS0JRX0NPREVfQkxPQ0tfREVGQVVMVF9DT05GSUdVUkFUSU9OO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJrYnEtY29kZS1ibG9ja19fZmFkZS1ncmFkaWVudFwiPjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwia2JxLWFjdGlvbmJhci1ibG9ja19fYnV0dG9uLXN0YWNrIGxheW91dC1yb3dcIj5cbiAgICBAaWYgKG11bHRpTGluZSkge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBrYnEtYnV0dG9uXG4gICAgICAgICAgICBbY29sb3JdPVwiJ2NvbnRyYXN0J1wiXG4gICAgICAgICAgICBba2JxU3R5bGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICBba2JxVG9vbHRpcF09XCJzb2Z0V3JhcCA/IGNvbmZpZy5zb2Z0V3JhcE9mZlRvb2x0aXAgOiBjb25maWcuc29mdFdyYXBPblRvb2x0aXBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNvZnRXcmFwLmVtaXQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoIXNvZnRXcmFwKSB7XG4gICAgICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtd3JhcC10ZXh0XzE2XCI+PC9pPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzb2Z0V3JhcCkge1xuICAgICAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLXdyYXAtdGV4dC1zbGFzaF8xNlwiPjwvaT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9idXR0b24+XG4gICAgfVxuXG4gICAgQGlmIChjYW5Mb2FkKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGticS1idXR0b25cbiAgICAgICAgICAgIFtjb2xvcl09XCInY29udHJhc3QnXCJcbiAgICAgICAgICAgIFtrYnFTdHlsZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgIFtrYnFUb29sdGlwXT1cImNvbmZpZy5kb3dubG9hZFRvb2x0aXBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQ29kZS5lbWl0KClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS1hcnJvdy1kb3duLXRvLWxpbmVfMTZcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIH1cblxuICAgIDxidXR0b25cbiAgICAgICAgI2NvcHlUb29sdGlwPVwia2JxVG9vbHRpcFwiXG4gICAgICAgIGticS1idXR0b25cbiAgICAgICAgW2NvbG9yXT1cIidjb250cmFzdCdcIlxuICAgICAgICBba2JxU3R5bGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgIFtrYnFUb29sdGlwXT1cImNvcHlUb29sdGlwVGV4dFwiXG4gICAgICAgIChjbGljayk9XCJvbkNvcHkoKVwiXG4gICAgPlxuICAgICAgICA8aSBrYnEtaWNvbj1cImticS1maWxlLW11bHRpcGxlLW9fMTZcIj48L2k+XG4gICAgPC9idXR0b24+XG5cbiAgICBAaWYgKGNvZGVGaWxlc1tzZWxlY3RlZFRhYkluZGV4XS5saW5rKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGticS1idXR0b25cbiAgICAgICAgICAgIFtjb2xvcl09XCInY29udHJhc3QnXCJcbiAgICAgICAgICAgIFtrYnFTdHlsZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgIFtrYnFUb29sdGlwXT1cImNvbmZpZy5vcGVuRXh0ZXJuYWxTeXN0ZW1Ub29sdGlwXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuRXh0ZXJuYWxTeXN0ZW0uZW1pdCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtYXJyb3ctdXAtcmlnaHQtZnJvbS1zcXVhcmVfMTZcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIH1cbjwvZGl2PlxuIl19
|