@koobiq/components 18.10.0 → 18.12.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/button/button-tokens.scss +1 -1
- 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/common-behaviors/error-state.d.ts +3 -3
- 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/button/button.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/common-behaviors/error-state.mjs +1 -1
- 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/file-upload/file-upload.mjs +40 -2
- package/esm2022/file-upload/multiple-file-upload.component.mjs +43 -47
- package/esm2022/file-upload/single-file-upload.component.mjs +41 -45
- package/esm2022/form-field/form-field.mjs +6 -6
- package/esm2022/form-field/hint.mjs +2 -2
- package/esm2022/form-field/password-hint.mjs +2 -2
- package/esm2022/loader-overlay/loader-overlay.component.mjs +6 -4
- package/esm2022/modal/modal.component.mjs +5 -3
- package/esm2022/modal/modal.service.mjs +6 -3
- package/esm2022/modal/modal.type.mjs +1 -1
- package/esm2022/modal/public-api.mjs +5 -5
- package/esm2022/scrollbar/scrollbar.directive.mjs +6 -3
- 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/toast/toast-container.component.mjs +3 -3
- package/esm2022/toast/toast.component.mjs +18 -9
- package/esm2022/toast/toast.module.mjs +14 -50
- package/esm2022/toast/toast.service.mjs +5 -2
- package/esm2022/tooltip/tooltip.component.mjs +5 -2
- package/esm2022/tree-select/tree-select.component.mjs +15 -40
- package/fesm2022/koobiq-components-autocomplete.mjs +9 -10
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +2 -2
- package/fesm2022/koobiq-components-button.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-file-upload.mjs +107 -76
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +9 -9
- 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 +10 -5
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar.mjs +5 -2
- package/fesm2022/koobiq-components-scrollbar.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-toast.mjs +138 -161
- package/fesm2022/koobiq-components-toast.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 +14 -39
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/file-upload/_file-upload-theme.scss +16 -2
- package/file-upload/file-upload.d.ts +29 -2
- package/file-upload/multiple-file-upload.component.d.ts +18 -18
- package/file-upload/single-file-upload.component.d.ts +17 -16
- package/form-field/_hint-theme.scss +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/modal.type.d.ts +6 -1
- 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/scrollbar/scrollbar.directive.d.ts +2 -1
- 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/toast/toast-container.component.d.ts +1 -1
- package/toast/toast.component.d.ts +2 -2
- package/toast/toast.module.d.ts +1 -7
- package/toast/toast.service.d.ts +1 -1
- package/tooltip/tooltip.component.d.ts +2 -1
- package/tree-select/_tree-select-theme.scss +4 -0
- package/tree-select/tree-select.component.d.ts +1 -12
- 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
|
@@ -8,7 +8,7 @@ import { KbqToastData } from './toast.type';
|
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export declare class KbqToastCloseButton {
|
|
10
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqToastCloseButton, never>;
|
|
11
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqToastCloseButton, "[kbq-toast-close-button]", never, {}, {}, never, never,
|
|
11
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqToastCloseButton, "[kbq-toast-close-button]", never, {}, {}, never, never, true, never>;
|
|
12
12
|
}
|
|
13
13
|
export declare class KbqToastComponent implements OnDestroy {
|
|
14
14
|
readonly data: KbqToastData;
|
|
@@ -35,5 +35,5 @@ export declare class KbqToastComponent implements OnDestroy {
|
|
|
35
35
|
private runFocusMonitor;
|
|
36
36
|
private stopFocusMonitor;
|
|
37
37
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqToastComponent, never>;
|
|
38
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<KbqToastComponent, "kbq-toast", never, {}, {}, never, never,
|
|
38
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<KbqToastComponent, "kbq-toast", never, {}, {}, never, never, true, never>;
|
|
39
39
|
}
|
package/toast/toast.module.d.ts
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
2
|
import * as i1 from "./toast.component";
|
|
3
3
|
import * as i2 from "./toast-container.component";
|
|
4
|
-
import * as i3 from "@angular/cdk/overlay";
|
|
5
|
-
import * as i4 from "@koobiq/components/title";
|
|
6
|
-
import * as i5 from "@angular/cdk/a11y";
|
|
7
|
-
import * as i6 from "@koobiq/components/icon";
|
|
8
|
-
import * as i7 from "@koobiq/components/button";
|
|
9
|
-
import * as i8 from "@angular/common";
|
|
10
4
|
export declare class KbqToastModule {
|
|
11
5
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqToastModule, never>;
|
|
12
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<KbqToastModule, [typeof i1.KbqToastComponent, typeof
|
|
6
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<KbqToastModule, never, [typeof i1.KbqToastComponent, typeof i1.KbqToastCloseButton, typeof i2.KbqToastContainerComponent], [typeof i1.KbqToastComponent, typeof i1.KbqToastCloseButton, typeof i2.KbqToastContainerComponent]>;
|
|
13
7
|
static ɵinj: i0.ɵɵInjectorDeclaration<KbqToastModule>;
|
|
14
8
|
}
|
package/toast/toast.service.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { BehaviorSubject } from 'rxjs';
|
|
|
5
5
|
import { KbqToastComponent } from './toast.component';
|
|
6
6
|
import { KbqToastConfig, KbqToastData } from './toast.type';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
|
-
export declare const KBQ_TOAST_FACTORY: InjectionToken<
|
|
8
|
+
export declare const KBQ_TOAST_FACTORY: InjectionToken<typeof KbqToastComponent>;
|
|
9
9
|
export declare const defaultToastConfig: KbqToastConfig;
|
|
10
10
|
export declare class KbqToastService<T extends KbqToastComponent = KbqToastComponent> implements OnDestroy {
|
|
11
11
|
private overlay;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
2
2
|
import { Overlay, OverlayConfig, ScrollStrategy } from '@angular/cdk/overlay';
|
|
3
3
|
import { ElementRef, EventEmitter, InjectionToken, OnDestroy, TemplateRef, Type } from '@angular/core';
|
|
4
|
-
import { KbqComponentColors, KbqPopUp, KbqPopUpTrigger, PopUpPlacements } from '@koobiq/components/core';
|
|
4
|
+
import { KbqComponentColors, KbqParentPopup, KbqPopUp, KbqPopUpTrigger, PopUpPlacements } from '@koobiq/components/core';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare enum TooltipModifier {
|
|
7
7
|
Default = "default",
|
|
@@ -40,6 +40,7 @@ export declare const KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER: {
|
|
|
40
40
|
};
|
|
41
41
|
export declare class KbqTooltipTrigger extends KbqPopUpTrigger<KbqTooltipComponent> implements OnDestroy {
|
|
42
42
|
protected scrollStrategy: () => ScrollStrategy;
|
|
43
|
+
protected parentPopup: KbqParentPopup | null;
|
|
43
44
|
protected focusMonitor: FocusMonitor;
|
|
44
45
|
get tooltipVisible(): boolean;
|
|
45
46
|
set tooltipVisible(value: boolean);
|
|
@@ -31,6 +31,10 @@
|
|
|
31
31
|
.kbq-select__search-container {
|
|
32
32
|
border-bottom-color: var(--kbq-divider-color, var(--kbq-line-contrast-less));
|
|
33
33
|
}
|
|
34
|
+
|
|
35
|
+
.kbq-select__no-options-message {
|
|
36
|
+
color: var(--kbq-foreground-contrast-secondary);
|
|
37
|
+
}
|
|
34
38
|
}
|
|
35
39
|
|
|
36
40
|
@mixin kbq-tree-select-typography() {
|
|
@@ -159,15 +159,7 @@ export declare class KbqTreeSelect extends KbqTreeSelectMixinBase implements Aft
|
|
|
159
159
|
get autoSelect(): boolean;
|
|
160
160
|
set autoSelect(value: boolean);
|
|
161
161
|
private _autoSelect;
|
|
162
|
-
/**
|
|
163
|
-
* Function to compare the option values with the selected values. The first argument
|
|
164
|
-
* is a value from an option. The second is a value from the selection. A boolean
|
|
165
|
-
* should be returned.
|
|
166
|
-
*/
|
|
167
|
-
get compareWith(): (o1: any, o2: any) => boolean;
|
|
168
|
-
set compareWith(fn: (o1: any, o2: any) => boolean);
|
|
169
162
|
get value(): any;
|
|
170
|
-
private _value;
|
|
171
163
|
get id(): string;
|
|
172
164
|
set id(value: string);
|
|
173
165
|
private _id;
|
|
@@ -291,7 +283,6 @@ export declare class KbqTreeSelect extends KbqTreeSelectMixinBase implements Aft
|
|
|
291
283
|
private handleClosedKeydown;
|
|
292
284
|
private handleOpenKeydown;
|
|
293
285
|
private refreshTriggerValues;
|
|
294
|
-
private initializeSelection;
|
|
295
286
|
/**
|
|
296
287
|
* Sets the selected option based on a value. If no option can be
|
|
297
288
|
* found with the designated value, the select trigger is cleared.
|
|
@@ -315,10 +306,8 @@ export declare class KbqTreeSelect extends KbqTreeSelectMixinBase implements Aft
|
|
|
315
306
|
* content width in order to constrain the panel within the viewport.
|
|
316
307
|
*/
|
|
317
308
|
private calculateOverlayOffsetX;
|
|
318
|
-
/** Comparison function to specify which option is displayed. Defaults to object equality. */
|
|
319
|
-
private _compareWith;
|
|
320
309
|
private subscribeOnSearchChanges;
|
|
321
310
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqTreeSelect, [null, null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; self: true; }, { optional: true; }]>;
|
|
322
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<KbqTreeSelect, "kbq-tree-select", ["kbqTreeSelect"], { "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "hiddenItemsText": { "alias": "hiddenItemsText"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "backdropClass": { "alias": "backdropClass"; "required": false; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "sortComparator": { "alias": "sortComparator"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "autoSelect": { "alias": "autoSelect"; "required": false; }; "
|
|
311
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<KbqTreeSelect, "kbq-tree-select", ["kbqTreeSelect"], { "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "hiddenItemsText": { "alias": "hiddenItemsText"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "backdropClass": { "alias": "backdropClass"; "required": false; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "sortComparator": { "alias": "sortComparator"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "autoSelect": { "alias": "autoSelect"; "required": false; }; "id": { "alias": "id"; "required": false; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "hiddenItemsTextFormatter": { "alias": "hiddenItemsTextFormatter"; "required": false; }; }, { "openedChange": "openedChange"; "openedStream": "opened"; "closedStream": "closed"; "selectionChange": "selectionChange"; "valueChange": "valueChange"; }, ["cleaner", "customTrigger", "customMatcher", "customTagTemplateRef", "tree", "search"], ["kbq-select-matcher, [kbq-select-matcher]", "kbq-select-trigger", "kbq-cleaner", "[kbqSelectSearch]", "[kbq-select-search-empty-result]", "kbq-tree-selection", "kbq-select-footer,[kbq-tree-select-footer]"], false, never>;
|
|
323
312
|
}
|
|
324
313
|
export {};
|
package/accordion/README.md
DELETED
|
File without changes
|
package/alert/README.md
DELETED
|
File without changes
|
package/autocomplete/README.md
DELETED
|
File without changes
|
package/badge/README.md
DELETED
|
File without changes
|
package/button/README.md
DELETED
|
File without changes
|
package/button-toggle/README.md
DELETED
|
File without changes
|
package/checkbox/README.md
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Please see the official documentation at #
|
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
|