@eui/showcase 18.0.0-rc.4 → 18.0.0-rc.41
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/esm2022/lib/components/doc-page/doc-page-dev-guide.component.mjs +97 -0
- package/esm2022/lib/components/doc-page/doc-page.component.mjs +23 -22
- package/esm2022/lib/components/doc-page-code-fab/doc-page-code-fab.component.mjs +3 -3
- package/esm2022/lib/components/doc-page-pattern/doc-page-pattern.component.mjs +3 -3
- package/esm2022/lib/components/doc-sample/doc-sample.component.mjs +4 -4
- package/esm2022/lib/components/doc-section/doc-section.component.mjs +2 -2
- package/esm2022/lib/components/doc-section-code/doc-section-code.component.mjs +1 -1
- package/esm2022/lib/components/index.mjs +2 -1
- package/esm2022/lib/components/lorem-ipsum/lorem-ipsum-sample.component.mjs +3 -3
- package/esm2022/lib/components/playground/stackblitz.files.mjs +73 -64
- package/esm2022/lib/components/playground/stackblitz.service.mjs +5 -5
- package/esm2022/lib/eui-showcase.module.mjs +12 -4
- package/fesm2022/eui-showcase.mjs +211 -104
- package/fesm2022/eui-showcase.mjs.map +1 -1
- package/lib/components/doc-page/doc-page-dev-guide.component.d.ts +30 -0
- package/lib/components/doc-page/doc-page-dev-guide.component.d.ts.map +1 -0
- package/lib/components/doc-page/doc-page.component.d.ts +1 -0
- package/lib/components/doc-page/doc-page.component.d.ts.map +1 -1
- package/lib/components/doc-sample/doc-sample.component.d.ts.map +1 -1
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.d.ts.map +1 -1
- package/lib/components/playground/stackblitz.files.d.ts +10 -2
- package/lib/components/playground/stackblitz.files.d.ts.map +1 -1
- package/lib/components/playground/stackblitz.service.d.ts.map +1 -1
- package/lib/eui-showcase.module.d.ts +25 -23
- package/lib/eui-showcase.module.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Component, ViewEncapsulation, HostBinding } from '@angular/core';
|
|
2
|
+
import { map, take } from 'rxjs/operators';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "ngx-markdown";
|
|
5
|
+
import * as i2 from "@angular/common/http";
|
|
6
|
+
import * as i3 from "@angular/router";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
import * as i5 from "@eui/components/eui-page";
|
|
9
|
+
export class DocPageDevGuideComponent {
|
|
10
|
+
constructor(markdownService, http, router, route) {
|
|
11
|
+
this.markdownService = markdownService;
|
|
12
|
+
this.http = http;
|
|
13
|
+
this.router = router;
|
|
14
|
+
this.route = route;
|
|
15
|
+
this.cssClass = 'eui-doc-page';
|
|
16
|
+
this.headers = [];
|
|
17
|
+
this.subscription = this.route.url.subscribe((u) => {
|
|
18
|
+
this._loadMdContent('/docs/' + u.join('/'));
|
|
19
|
+
});
|
|
20
|
+
// eslint-disable-next-line
|
|
21
|
+
this.markdownService.renderer.heading = (text, level, str) => {
|
|
22
|
+
if (level === 2 || level === 3) {
|
|
23
|
+
const newHeader = '<h' + level + ' id="' + str + '">' +
|
|
24
|
+
text +
|
|
25
|
+
'</h' + level + '>';
|
|
26
|
+
console.log(text);
|
|
27
|
+
if (text.indexOf('<a ') === -1 && text.indexOf('<em>') === -1) {
|
|
28
|
+
this.headers.push({ id: str, label: text, level });
|
|
29
|
+
}
|
|
30
|
+
return newHeader;
|
|
31
|
+
}
|
|
32
|
+
return '<h' + level + '>' +
|
|
33
|
+
text +
|
|
34
|
+
'</h' + level + '>';
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
ngAfterViewInit() {
|
|
38
|
+
this.route.fragment.pipe(take(1)).subscribe((fragment) => {
|
|
39
|
+
if (fragment) {
|
|
40
|
+
setTimeout(() => {
|
|
41
|
+
this.fragmentId = fragment;
|
|
42
|
+
const fgm = document.getElementById(fragment);
|
|
43
|
+
fgm.scrollIntoView();
|
|
44
|
+
}, 1);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
ngOnDestroy() {
|
|
49
|
+
if (this.subscription) {
|
|
50
|
+
this.subscription.unsubscribe();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
onNavClick(fragmentId) {
|
|
54
|
+
this._scrollToFragment(fragmentId);
|
|
55
|
+
}
|
|
56
|
+
_loadMdContent(url) {
|
|
57
|
+
let mdPath, contextRoot;
|
|
58
|
+
const currentUrl = window.location;
|
|
59
|
+
const pathNameArray = currentUrl.pathname.split('/');
|
|
60
|
+
this.headers = [];
|
|
61
|
+
if (url) {
|
|
62
|
+
mdPath = url.substr(1);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
mdPath = pathNameArray.slice(pathNameArray.length - 3).join('/');
|
|
66
|
+
}
|
|
67
|
+
contextRoot = `${currentUrl.protocol}//${currentUrl.host}`;
|
|
68
|
+
if (pathNameArray[1] !== 'showcase-dev-guide') {
|
|
69
|
+
contextRoot += `/${pathNameArray[1]}`;
|
|
70
|
+
}
|
|
71
|
+
const filePath = `${contextRoot}/assets/${mdPath}.md`;
|
|
72
|
+
this.http.get(filePath, { responseType: 'text' }).pipe(map((md) => md.replace(new RegExp('assets/docs', 'g'), `${contextRoot}/assets/docs`))).subscribe((md) => this.markdown = md);
|
|
73
|
+
}
|
|
74
|
+
_scrollToFragment(fragmentId) {
|
|
75
|
+
// forcing reload when deep link with fragment
|
|
76
|
+
this.router.onSameUrlNavigation = 'reload';
|
|
77
|
+
this.router.navigate(['.'], { relativeTo: this.route, fragment: fragmentId });
|
|
78
|
+
if (fragmentId) {
|
|
79
|
+
setTimeout(() => {
|
|
80
|
+
const fgm = document.getElementById(fragmentId);
|
|
81
|
+
if (fgm) {
|
|
82
|
+
fgm.scrollIntoView();
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: DocPageDevGuideComponent, deps: [{ token: i1.MarkdownService }, { token: i2.HttpClient }, { token: i3.Router }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: DocPageDevGuideComponent, selector: "eui-showcase-doc-page-dev-guide", host: { properties: { "class": "this.cssClass" } }, ngImport: i0, template: "<eui-page>\n <eui-page-content>\n <eui-page-columns>\n <eui-page-column>\n <eui-page-column-body>\n <markdown class=\"doc-content\" [data]=\"markdown\"></markdown>\n </eui-page-column-body>\n </eui-page-column>\n\n <eui-page-column class=\"eui-u-hidden-mobile\"\n label=\"On this page\"\n size=\"4xl\"\n isCollapsible\n isRightCollapsible>\n\n <eui-page-column-body>\n <div class=\"doc-page-navigation-content\" tabindex=\"0\">\n <ul class=\"doc-page-navigation\">\n <li class=\"doc-page-navigation-item\"\n *ngFor=\"let header of headers\" (click)=\"onNavClick(header.id)\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === header.id\">\n <span [ngClass]=\"header.level === 3 ? 'eui-u-ml-m eui-u-f-regular': ''\">\n {{header.label}}\n </span>\n </li>\n </ul>\n </div>\n </eui-page-column-body>\n\n </eui-page-column>\n\n </eui-page-columns>\n </eui-page-content>\n</eui-page>\n", styles: [".eui-doc-page .eui-tab-content{padding-left:var(--eui-s-s)!important;padding-right:var(--eui-s-xs)!important}.eui-doc-page .eui-doc-page-title .eui-common-header__label-text{font:var(--eui-f-2xl)!important}.eui-doc-page .doc-page-navigation,.eui-doc-page .doc-page-navigation .doc-page-navigation-list{margin:0;padding:0}.eui-doc-page .doc-page-navigation .doc-page-navigation-item{color:var(--eui-c-info-darker);cursor:pointer;overflow:hidden;padding:var(--eui-s-3xs);text-overflow:ellipsis;white-space:nowrap;list-style:none}.eui-doc-page .doc-page-navigation .doc-page-navigation-item span{font-weight:700;color:var(--eui-c-info-darker);padding-left:var(--eui-s-xs)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item:not(.doc-page-navigation-sub):hover{background-color:var(--eui-c-neutral-bg-light);border-left:2px solid var(--eui-c-info-darker)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item span{font-weight:400;padding-left:var(--eui-s-s)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item:hover{background-color:var(--eui-c-neutral-bg-light);border-left:2px solid var(--eui-c-neutral-lightest)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item.doc-page-navigation-item--selected{background-color:var(--eui-c-info-bg);border-left:2px solid var(--eui-c-info-darker)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item-sub{padding-left:var(--eui-s-l)}.eui-doc-page .doc-page-navigation .doc-page-navigation-category{padding-left:var(--eui-s-m);color:var(--eui-c-text);margin-top:var(--eui-s-s);font-weight:700;text-transform:capitalize}.eui-doc-page .doc-page-api-iframe-wrapper{display:flex;justify-content:space-around;margin:0}.eui-doc-page .doc-page-section-title{margin-top:var(--eui-s-2xl);margin-bottom:var(--eui-s-xl);color:var(--eui-c-info-darker);letter-spacing:-1px;font:var(--eui-f-2xl-bold)}.eui-doc-page .doc-page-section-subtitle{font:var(--eui-f-l-bold);letter-spacing:-.25px;margin:var(--eui-s-2xl) 0 var(--eui-s-s);padding-bottom:var(--eui-s-2xs);width:auto;display:table;color:var(--eui-c-neutral)}.eui-doc-page .doc-content h2{color:var(--eui-c-info-dark);margin-top:var(--eui-s-3xl)}.eui-doc-page .doc-content h3{color:var(--eui-c-neutral);margin-top:var(--eui-s-3xl)}.eui-doc-page .doc-content h4{margin-top:var(--eui-s-xl);text-decoration:underline;color:var(--eui-c-neutral-light)}.eui-doc-page .doc-content h5{font:var(--eui-f-bold);font-style:italic}.eui-doc-page .doc-content ul{margin-top:1rem}.eui-doc-page .doc-content ul li{list-style:circle;margin-left:2rem}.eui-doc-page .doc-content ol{list-style:none;counter-reset:item;margin-top:1rem}.eui-doc-page .doc-content ol li{counter-increment:item;margin-bottom:1rem}.eui-doc-page .doc-content ol li:before{margin-right:1.25rem;content:counter(item);background:var(--eui-c-info-dark);border-radius:50%;color:#fff;width:2rem;height:2rem;text-align:center;display:inline-block;font-size:1.25rem;font-weight:600}.eui-doc-page .doc-content ol li p:first-child{display:inline-block}.eui-doc-page .doc-content ol ol li{margin-top:1rem}.eui-doc-page .doc-content ol ol li:before{margin-left:20px;width:1.25rem;font-size:1rem;font-weight:400;background:transparent;color:var(--eui-c-info-dark);line-height:1.5rem}.eui-doc-page .doc-content em{color:var(--eui-c-danger);font-style:normal;font-weight:700}.eui-doc-page .doc-content em.info{color:var(--eui-c-info-dark)}.eui-doc-page .doc-content em.warning{color:var(--eui-c-warning)}.eui-doc-page .doc-content table{border-collapse:collapse;width:100%}.eui-doc-page .doc-content table,.eui-doc-page .doc-content th,.eui-doc-page .doc-content td{padding:.25rem;border:1px solid var(--eui-c-neutral-light)}.eui-doc-page .doc-content td{text-align:left}.eui-doc-page .doc-content code.language-none{display:inline-block;background-color:var(--eui-c-neutral-bg-light)}.eui-doc-page .doc-content img{max-width:100%}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i5.EuiPageComponent, selector: "eui-page" }, { kind: "component", type: i5.EuiPageColumnComponent, selector: "eui-page-column", inputs: ["size", "label", "subLabel", "autocloseContainerWidth", "expandAriaLabel", "collapseAriaLabel", "isCollapsible", "isCollapsed", "isRightCollapsible", "isHighlighted", "isCollapsedWithIcons", "hasSidebarMenu", "hasHeaderBodyShrinkable", "isAutocloseOnContainerResize"], outputs: ["collapse", "headerCollapse"] }, { kind: "directive", type: i5.EuiPageColumnBodyContentDirective, selector: "eui-page-column-body" }, { kind: "component", type: i5.EuiPageColumnsComponent, selector: "eui-page-columns" }, { kind: "component", type: i5.EuiPageContentComponent, selector: "eui-page-content" }, { kind: "component", type: i1.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
89
|
+
}
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: DocPageDevGuideComponent, decorators: [{
|
|
91
|
+
type: Component,
|
|
92
|
+
args: [{ selector: 'eui-showcase-doc-page-dev-guide', encapsulation: ViewEncapsulation.None, template: "<eui-page>\n <eui-page-content>\n <eui-page-columns>\n <eui-page-column>\n <eui-page-column-body>\n <markdown class=\"doc-content\" [data]=\"markdown\"></markdown>\n </eui-page-column-body>\n </eui-page-column>\n\n <eui-page-column class=\"eui-u-hidden-mobile\"\n label=\"On this page\"\n size=\"4xl\"\n isCollapsible\n isRightCollapsible>\n\n <eui-page-column-body>\n <div class=\"doc-page-navigation-content\" tabindex=\"0\">\n <ul class=\"doc-page-navigation\">\n <li class=\"doc-page-navigation-item\"\n *ngFor=\"let header of headers\" (click)=\"onNavClick(header.id)\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === header.id\">\n <span [ngClass]=\"header.level === 3 ? 'eui-u-ml-m eui-u-f-regular': ''\">\n {{header.label}}\n </span>\n </li>\n </ul>\n </div>\n </eui-page-column-body>\n\n </eui-page-column>\n\n </eui-page-columns>\n </eui-page-content>\n</eui-page>\n", styles: [".eui-doc-page .eui-tab-content{padding-left:var(--eui-s-s)!important;padding-right:var(--eui-s-xs)!important}.eui-doc-page .eui-doc-page-title .eui-common-header__label-text{font:var(--eui-f-2xl)!important}.eui-doc-page .doc-page-navigation,.eui-doc-page .doc-page-navigation .doc-page-navigation-list{margin:0;padding:0}.eui-doc-page .doc-page-navigation .doc-page-navigation-item{color:var(--eui-c-info-darker);cursor:pointer;overflow:hidden;padding:var(--eui-s-3xs);text-overflow:ellipsis;white-space:nowrap;list-style:none}.eui-doc-page .doc-page-navigation .doc-page-navigation-item span{font-weight:700;color:var(--eui-c-info-darker);padding-left:var(--eui-s-xs)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item:not(.doc-page-navigation-sub):hover{background-color:var(--eui-c-neutral-bg-light);border-left:2px solid var(--eui-c-info-darker)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item span{font-weight:400;padding-left:var(--eui-s-s)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item:hover{background-color:var(--eui-c-neutral-bg-light);border-left:2px solid var(--eui-c-neutral-lightest)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item.doc-page-navigation-item--selected{background-color:var(--eui-c-info-bg);border-left:2px solid var(--eui-c-info-darker)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item-sub{padding-left:var(--eui-s-l)}.eui-doc-page .doc-page-navigation .doc-page-navigation-category{padding-left:var(--eui-s-m);color:var(--eui-c-text);margin-top:var(--eui-s-s);font-weight:700;text-transform:capitalize}.eui-doc-page .doc-page-api-iframe-wrapper{display:flex;justify-content:space-around;margin:0}.eui-doc-page .doc-page-section-title{margin-top:var(--eui-s-2xl);margin-bottom:var(--eui-s-xl);color:var(--eui-c-info-darker);letter-spacing:-1px;font:var(--eui-f-2xl-bold)}.eui-doc-page .doc-page-section-subtitle{font:var(--eui-f-l-bold);letter-spacing:-.25px;margin:var(--eui-s-2xl) 0 var(--eui-s-s);padding-bottom:var(--eui-s-2xs);width:auto;display:table;color:var(--eui-c-neutral)}.eui-doc-page .doc-content h2{color:var(--eui-c-info-dark);margin-top:var(--eui-s-3xl)}.eui-doc-page .doc-content h3{color:var(--eui-c-neutral);margin-top:var(--eui-s-3xl)}.eui-doc-page .doc-content h4{margin-top:var(--eui-s-xl);text-decoration:underline;color:var(--eui-c-neutral-light)}.eui-doc-page .doc-content h5{font:var(--eui-f-bold);font-style:italic}.eui-doc-page .doc-content ul{margin-top:1rem}.eui-doc-page .doc-content ul li{list-style:circle;margin-left:2rem}.eui-doc-page .doc-content ol{list-style:none;counter-reset:item;margin-top:1rem}.eui-doc-page .doc-content ol li{counter-increment:item;margin-bottom:1rem}.eui-doc-page .doc-content ol li:before{margin-right:1.25rem;content:counter(item);background:var(--eui-c-info-dark);border-radius:50%;color:#fff;width:2rem;height:2rem;text-align:center;display:inline-block;font-size:1.25rem;font-weight:600}.eui-doc-page .doc-content ol li p:first-child{display:inline-block}.eui-doc-page .doc-content ol ol li{margin-top:1rem}.eui-doc-page .doc-content ol ol li:before{margin-left:20px;width:1.25rem;font-size:1rem;font-weight:400;background:transparent;color:var(--eui-c-info-dark);line-height:1.5rem}.eui-doc-page .doc-content em{color:var(--eui-c-danger);font-style:normal;font-weight:700}.eui-doc-page .doc-content em.info{color:var(--eui-c-info-dark)}.eui-doc-page .doc-content em.warning{color:var(--eui-c-warning)}.eui-doc-page .doc-content table{border-collapse:collapse;width:100%}.eui-doc-page .doc-content table,.eui-doc-page .doc-content th,.eui-doc-page .doc-content td{padding:.25rem;border:1px solid var(--eui-c-neutral-light)}.eui-doc-page .doc-content td{text-align:left}.eui-doc-page .doc-content code.language-none{display:inline-block;background-color:var(--eui-c-neutral-bg-light)}.eui-doc-page .doc-content img{max-width:100%}\n"] }]
|
|
93
|
+
}], ctorParameters: () => [{ type: i1.MarkdownService }, { type: i2.HttpClient }, { type: i3.Router }, { type: i3.ActivatedRoute }], propDecorators: { cssClass: [{
|
|
94
|
+
type: HostBinding,
|
|
95
|
+
args: ['class']
|
|
96
|
+
}] } });
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jLXBhZ2UtZGV2LWd1aWRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kb2MtcGFnZS9kb2MtcGFnZS1kZXYtZ3VpZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RvYy1wYWdlL2RvYy1wYWdlLWRldi1ndWlkZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUE0QixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJcEcsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVMzQyxNQUFNLE9BQU8sd0JBQXdCO0lBU2pDLFlBQ1ksZUFBZ0MsRUFDaEMsSUFBZ0IsRUFDaEIsTUFBYyxFQUNkLEtBQXFCO1FBSHJCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQVpYLGFBQVEsR0FBRyxjQUFjLENBQUM7UUFJaEQsWUFBTyxHQUF3RCxFQUFFLENBQUM7UUFVOUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMvQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUE7UUFFRiwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUN6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RUFBRSxZQUFZLEVBQUUsTUFBZ0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNwRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsV0FBVyxjQUFjLENBQUMsQ0FBQyxDQUN4RixDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8saUJBQWlCLENBQUMsVUFBa0I7UUFDeEMsOENBQThDO1FBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEdBQUcsUUFBUSxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUU5RSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNOLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDekIsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7OEdBakdRLHdCQUF3QjtrR0FBeEIsd0JBQXdCLDJIQ2JyQyw0M0NBa0NBOzsyRkRyQmEsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNJLGlDQUFpQyxpQkFHNUIsaUJBQWlCLENBQUMsSUFBSTsrSkFHZixRQUFRO3NCQUE3QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1hcmtkb3duU2VydmljZSB9IGZyb20gJ25neC1tYXJrZG93bic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLXNob3djYXNlLWRvYy1wYWdlLWRldi1ndWlkZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RvYy1wYWdlLWRldi1ndWlkZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2hhcmVkLnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBEb2NQYWdlRGV2R3VpZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjc3NDbGFzcyA9ICdldWktZG9jLXBhZ2UnO1xuXG4gICAgbWFya2Rvd246IHN0cmluZztcbiAgICBpc0ZpcnN0OiBib29sZWFuO1xuICAgIGhlYWRlcnM6IEFycmF5PHsgaWQ6IHN0cmluZywgbGFiZWw6IHN0cmluZywgbGV2ZWw6IG51bWJlciB9PiA9IFtdO1xuICAgIGZyYWdtZW50SWQ6IHN0cmluZztcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgbWFya2Rvd25TZXJ2aWNlOiBNYXJrZG93blNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZS51cmwuc3Vic2NyaWJlKCh1KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkTWRDb250ZW50KCcvZG9jcy8nICsgdS5qb2luKCcvJykpO1xuICAgICAgICB9KVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICB0aGlzLm1hcmtkb3duU2VydmljZS5yZW5kZXJlci5oZWFkaW5nID0gKHRleHQ6IHN0cmluZywgbGV2ZWw6IG51bWJlciwgc3RyKSA9PiB7XG4gICAgICAgICAgICBpZiAobGV2ZWwgPT09IDIgfHwgbGV2ZWwgPT09IDMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdIZWFkZXIgPSAnPGgnICsgbGV2ZWwgKyAnIGlkPVwiJyArIHN0ciArICdcIj4nICtcbiAgICAgICAgICAgICAgICAgICAgdGV4dCArXG4gICAgICAgICAgICAgICAgICAgICc8L2gnICsgbGV2ZWwgKyAnPic7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRleHQpO1xuICAgICAgICAgICAgICAgIGlmICh0ZXh0LmluZGV4T2YoJzxhICcpID09PSAtMSAmJiB0ZXh0LmluZGV4T2YoJzxlbT4nKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJzLnB1c2goeyBpZDogc3RyLCBsYWJlbDogdGV4dCwgbGV2ZWwgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXdIZWFkZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJzxoJyArIGxldmVsICsgJz4nICtcbiAgICAgICAgICAgICAgICB0ZXh0ICtcbiAgICAgICAgICAgICAgICAnPC9oJyArIGxldmVsICsgJz4nO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5mcmFnbWVudC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoZnJhZ21lbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChmcmFnbWVudCkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyYWdtZW50SWQgPSBmcmFnbWVudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmdtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgICAgICBmZ20uc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTmF2Q2xpY2soZnJhZ21lbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Njcm9sbFRvRnJhZ21lbnQoZnJhZ21lbnRJZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbG9hZE1kQ29udGVudCh1cmw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgbGV0IG1kUGF0aCwgY29udGV4dFJvb3Q7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRVcmwgPSB3aW5kb3cubG9jYXRpb247XG4gICAgICAgIGNvbnN0IHBhdGhOYW1lQXJyYXkgPSBjdXJyZW50VXJsLnBhdGhuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICAgICAgdGhpcy5oZWFkZXJzID0gW107XG5cbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgICAgbWRQYXRoID0gdXJsLnN1YnN0cigxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1kUGF0aCA9IHBhdGhOYW1lQXJyYXkuc2xpY2UocGF0aE5hbWVBcnJheS5sZW5ndGggLSAzKS5qb2luKCcvJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Um9vdCA9IGAke2N1cnJlbnRVcmwucHJvdG9jb2x9Ly8ke2N1cnJlbnRVcmwuaG9zdH1gO1xuICAgICAgICBpZiAocGF0aE5hbWVBcnJheVsxXSAhPT0gJ3Nob3djYXNlLWRldi1ndWlkZScpIHtcbiAgICAgICAgICAgIGNvbnRleHRSb290ICs9IGAvJHtwYXRoTmFtZUFycmF5WzFdfWA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGAke2NvbnRleHRSb290fS9hc3NldHMvJHttZFBhdGh9Lm1kYDtcblxuICAgICAgICB0aGlzLmh0dHAuZ2V0PHN0cmluZz4oZmlsZVBhdGgsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgYXMgJ2pzb24nIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKG1kKSA9PiBtZC5yZXBsYWNlKG5ldyBSZWdFeHAoJ2Fzc2V0cy9kb2NzJywgJ2cnKSwgYCR7Y29udGV4dFJvb3R9L2Fzc2V0cy9kb2NzYCkpLFxuICAgICAgICApLnN1YnNjcmliZSgobWQpID0+IHRoaXMubWFya2Rvd24gPSBtZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2Nyb2xsVG9GcmFnbWVudChmcmFnbWVudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gZm9yY2luZyByZWxvYWQgd2hlbiBkZWVwIGxpbmsgd2l0aCBmcmFnbWVudFxuICAgICAgICB0aGlzLnJvdXRlci5vblNhbWVVcmxOYXZpZ2F0aW9uID0gJ3JlbG9hZCc7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLiddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUsIGZyYWdtZW50OiBmcmFnbWVudElkIH0pO1xuXG4gICAgICAgIGlmIChmcmFnbWVudElkKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZ20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmcmFnbWVudElkKTtcbiAgICAgICAgICAgICAgICBpZiAoZmdtKSB7XG4gICAgICAgICAgICAgICAgICAgIGZnbS5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGV1aS1wYWdlPlxuICAgIDxldWktcGFnZS1jb250ZW50PlxuICAgICAgICA8ZXVpLXBhZ2UtY29sdW1ucz5cbiAgICAgICAgICAgIDxldWktcGFnZS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGV1aS1wYWdlLWNvbHVtbi1ib2R5PlxuICAgICAgICAgICAgICAgICAgICA8bWFya2Rvd24gY2xhc3M9XCJkb2MtY29udGVudFwiIFtkYXRhXT1cIm1hcmtkb3duXCI+PC9tYXJrZG93bj5cbiAgICAgICAgICAgICAgICA8L2V1aS1wYWdlLWNvbHVtbi1ib2R5PlxuICAgICAgICAgICAgPC9ldWktcGFnZS1jb2x1bW4+XG5cbiAgICAgICAgICAgIDxldWktcGFnZS1jb2x1bW4gY2xhc3M9XCJldWktdS1oaWRkZW4tbW9iaWxlXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIk9uIHRoaXMgcGFnZVwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cIjR4bFwiXG4gICAgICAgICAgICAgICAgaXNDb2xsYXBzaWJsZVxuICAgICAgICAgICAgICAgIGlzUmlnaHRDb2xsYXBzaWJsZT5cblxuICAgICAgICAgICAgICAgIDxldWktcGFnZS1jb2x1bW4tYm9keT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24tY29udGVudFwiIHRhYmluZGV4PVwiMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgaGVhZGVyc1wiIChjbGljayk9XCJvbk5hdkNsaWNrKGhlYWRlci5pZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtLS1zZWxlY3RlZF09XCJmcmFnbWVudElkID09PSBoZWFkZXIuaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cImhlYWRlci5sZXZlbCA9PT0gMyA/ICdldWktdS1tbC1tIGV1aS11LWYtcmVndWxhcic6ICcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3toZWFkZXIubGFiZWx9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2V1aS1wYWdlLWNvbHVtbi1ib2R5PlxuXG4gICAgICAgICAgICA8L2V1aS1wYWdlLWNvbHVtbj5cblxuICAgICAgICA8L2V1aS1wYWdlLWNvbHVtbnM+XG4gICAgPC9ldWktcGFnZS1jb250ZW50PlxuPC9ldWktcGFnZT5cbiJdfQ==
|