@eui/showcase 18.0.0-next.56 → 18.0.0-next.58
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.
|
@@ -285,11 +285,11 @@ export class DocPageComponent {
|
|
|
285
285
|
return result;
|
|
286
286
|
}
|
|
287
287
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.0", ngImport: i0, type: DocPageComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.EuiAppShellService }, { token: i3.DomSanitizer }, { token: i4.Location }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
288
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0-rc.0", type: DocPageComponent, selector: "eui-showcase-doc-page", inputs: { id: "id", label: "label", subLabel: "subLabel", isNotReady: "isNotReady", isDeprecated: "isDeprecated", isLegacy: "isLegacy", codeFolder: "codeFolder", showcase: "showcase", isNavigationVisible: "isNavigationVisible", hasApi: "hasApi", hasA11y: "hasA11y" }, queries: [{ propertyName: "samples", predicate: DocSampleComponent, descendants: true }, { propertyName: "sections", predicate: DocSectionComponent, descendants: true }, { propertyName: "pageOverviewContent", predicate: i0.forwardRef(() => DocPageOverviewContentDirective) }, { propertyName: "pageOverviewDefaultContent", predicate: i0.forwardRef(() => DocPageOverviewDefaultContentDirective) }, { propertyName: "pageSamplesContent", predicate: i0.forwardRef(() => DocPageSamplesContentDirective) }, { propertyName: "pageSectionsContent", predicate: i0.forwardRef(() => DocPageSectionsContentDirective) }, { propertyName: "pageInteractiveContent", predicate: i0.forwardRef(() => DocPageInteractiveContentDirective) }, { propertyName: "pageAccessibilityContent", predicate: i0.forwardRef(() => DocPageAccessibilityContentDirective) }, { propertyName: "pageApiContent", predicate: i0.forwardRef(() => DocPageApiContentDirective) }, { propertyName: "pageThemingContent", predicate: i0.forwardRef(() => DocPageThemingContentDirective) }], viewQueries: [{ propertyName: "tabsContent", first: true, predicate: ["tabsContent"], descendants: true }], ngImport: i0, template: "<div class=\"doc-page-navigation-wrapper\" [class.eui-u-hidden]=\"isLoading\">\n <div class=\"doc-page-main-column\">\n <eui-page>\n <eui-page-header label=\"{{ label }}\" subLabel=\"{{ subLabel }}\">\n <eui-page-header-action-items>\n <eui-showcase-doc-page-code\n *ngIf=\"codeFolder\"\n codeFolder=\"{{ codeFolder }}\"\n showcase=\"{{ showcase }}\"></eui-showcase-doc-page-code>\n <eui-chip\n *ngIf=\"stateLabel\"\n [euiSuccess]=\"stateLabel === 'ACTIVE'\"\n [euiInfo]=\"isNotReady\"\n [euiWarning]=\"isDeprecated\"\n [euiDanger]=\"isLegacy\">\n <span euiLabel>\n <strong>{{ stateLabel }}</strong>\n </span>\n </eui-chip>\n </eui-page-header-action-items>\n </eui-page-header>\n\n <eui-page-content>\n <eui-alert *ngIf=\"stateLabel === 'LEGACY' || isLegacy\" euiDanger class=\"eui-u-mb-xl\">\n <eui-alert-title>LEGACY component</eui-alert-title>\n <strong class=\"eui-u-color-danger\">This component will be removed in eUI 19 release (end of 2024)</strong>\n <div *ngIf=\"cmp\">\n <div *ngIf=\"cmp.cmpReplacement !== 'NONE'\">\n It has been replaced by :\n <strong class=\"eui-u-color-success-darkest\">{{ cmp.cmpReplacement }}</strong>\n <!-- <div *ngIf=\"cmp.cmpReplacementUrl\">\n <br><br>\n You can find more information on the new component here : <a [routerLink]=\"cmp.cmpReplacementUrl\">{{cmp.cmpReplacementUrl}}</a>\n </div> -->\n </div>\n <div *ngIf=\"cmp.cmpReplacement === 'NONE'\">\n <strong class=\"eui-u-color-danger\"> This component will be removed in eUI 18 release (end of 2023)</strong>\n </div>\n <div *ngIf=\"cmp.cmpReplacementNote\">\n <strong class=\"eui-u-color-warning\">{{ cmp.cmpReplacementNote }}</strong>\n </div>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'DEPRECATED' || isDeprecated\" euiWarning class=\"eui-u-mb-xl\">\n <eui-alert-title>DEPRECATED component</eui-alert-title>\n This component has been <strong class=\"eui-u-color-danger\">deprecated</strong>\n <div *ngIf=\"cmp\">\n This component has no replacement in current version AND won't have replacement in next version of eUI,\n <strong class=\"eui-u-color-danger\">it will be removed in eUI 18 release (end of 2023)</strong>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'NOT_READY' || isNotReady\" euiInfo class=\"eui-u-mb-xl\">\n <eui-alert-title>NOT READY for production usage</eui-alert-title>\n <div *ngIf=\"cmp\">\n This component is under development / some features might be missing, it'll be available in a future release once\n validated.\n </div>\n </eui-alert>\n\n <div *ngIf=\"(stateLabel || isNotReady || isDeprecated) && stateLabel !== 'ACTIVE'\" class=\"mb-5\"></div>\n\n <eui-tabs #tabsContent *ngIf=\"pageSectionsContent.length === 0\" (tabSelect)=\"onTabSelected($event)\">\n <eui-tab>\n <euiTabLabel> OPTIONS & SAMPLES </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"cmp && cmp.metadata\">\n <div class=\"doc-page-section-title\">Module import</div>\n <pre><code class=\"language-javascript eui-u-bg-color-grey-5\" euiCode>{{ cmpModuleImport }}</code></pre>\n <br />\n </ng-container>\n\n <div id=\"overview\" class=\"doc-page-section-title\">Overview</div>\n\n <div *ngIf=\"pageOverviewContent.length > 0\">\n <ng-content select=\"docPageOverview\"></ng-content>\n </div>\n\n <div *ngIf=\"pageOverviewDefaultContent.length > 0\">\n <ng-content select=\"docPageOverviewDefault\"></ng-content>\n </div>\n <br />\n\n <div id=\"samples\" class=\"doc-page-section-title\">Options & samples</div>\n <ng-content select=\"docPageSamples\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"hasApi\">\n <euiTabLabel> API </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"apiUrlSafe\">\n <div class=\"flex-container\">\n <a href=\"{{ apiUrl }}\" target=\"_blank\" class=\"ms-auto pb-2 eui-u-text-link-external\">Open API page</a>\n </div>\n <div class=\"doc-page-api-iframe-wrapper\">\n <iframe id=\"iframe_api\" [width]=\"'100%'\" height=\"700px\" frameBorder=\"0\" [src]=\"apiUrlSafe\"></iframe>\n </div>\n </ng-container>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"hasA11y\">\n <euiTabLabel> A11Y </euiTabLabel>\n <euiTabContent>\n <div id=\"accessibility\" class=\"doc-page-section-title\">Accessibility</div>\n <ng-container *ngIf=\"pageAccessibilityContent.length !== 0\">\n <ng-content select=\"docPageAccessibility\"></ng-content>\n </ng-container>\n <ng-container *ngIf=\"pageAccessibilityContent.length === 0\">\n No accessibility rules applicable\n </ng-container>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageThemingContent.length > 0\">\n <euiTabLabel> THEMING </euiTabLabel>\n <euiTabContent>\n <div id=\"theming\" class=\"doc-page-section-title\">Theming</div>\n <ng-content select=\"docPageTheming\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageInteractiveContent.length > 0\">\n <euiTabLabel>\n {{ pageInteractiveContent.first.title }}\n </euiTabLabel>\n <euiTabContent>\n <div id=\"interactive\" class=\"doc-page-section-title\">\n {{ pageInteractiveContent.first.subTitle }}\n </div>\n <ng-content select=\"docPageInteractive\"></ng-content>\n </euiTabContent>\n </eui-tab>\n </eui-tabs>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <div id=\"demo\" *ngIf=\"sections.length === 0\" class=\"doc-page-section-title\">Demo</div>\n <ng-content select=\"docPageSections\"></ng-content>\n </ng-container>\n </eui-page-content>\n </eui-page>\n </div>\n\n <div *ngIf=\"isNavigationVisible\" class=\"doc-page-navigation-column eui-u-hidden-desktop-down\">\n <div id=\"doc-page-nav\">\n <div class=\"doc-page-navigation-title\">In this page</div>\n <div class=\"doc-page-navigation-content\" tabindex=\"0\">\n <ul class=\"doc-page-navigation\">\n <ng-container *ngIf=\"pageSectionsContent.length === 0\">\n <li\n *ngIf=\"hasApi\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'api'\"\n (click)=\"onNavClick('api', 1)\">\n <span>API</span>\n </li>\n <li\n *ngIf=\"hasA11y\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'a11y'\"\n (click)=\"onNavClick('a11y', 2)\">\n <span>A11Y</span>\n </li>\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'samples'\"\n (click)=\"onNavClick('samples', 0)\">\n <span>OPTIONS & SAMPLES</span>\n </li>\n <li class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ng-container *ngIf=\"categories.length > 0\">\n <ng-container *ngIf=\"hasCategories; else noCategories\">\n <ng-container *ngFor=\"let category of categories\">\n <ng-container *ngIf=\"category.name === 'Base'; else notBase\">\n <ul *ngFor=\"let sample of category.samples\" class=\"doc-page-navigation-list\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\"\n (click)=\"onNavClick(sample.id, 0)\">\n <span>{{ sample.label }}</span>\n </li>\n </ul>\n </ng-container>\n <ng-template #notBase>\n <div *ngIf=\"category.name !== 'Base'\" class=\"doc-page-navigation-category\">{{category.name}}</div>\n <ul *ngFor=\"let sample of category.samples\" class=\"doc-page-navigation-list\">\n <li\n class=\"doc-page-navigation-item doc-page-navigation-item-sub\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\"\n (click)=\"onNavClick(sample.id, 0)\">\n <span>{{ sample.label }}</span>\n </li>\n </ul>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <ng-template #noCategories>\n <ul *ngFor=\"let sample of samples\" class=\"doc-page-navigation-list\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\"\n (click)=\"onNavClick(sample.id, 0)\">\n <span>{{ sample.label }}</span>\n </li>\n </ul>\n </ng-template>\n </ng-container>\n </li>\n\n\n\n <!-- OPTIONAL TABS-->\n <ng-container *ngIf=\"pageThemingContent.length > 0\">\n <li\n *ngIf=\"pageThemingContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'theming'\"\n (click)=\"onNavClick('theming', 3)\">\n <span>THEMING</span>\n </li>\n <li\n *ngIf=\"pageInteractiveContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\"\n (click)=\"onNavClick('advanced', 4)\">\n <span>{{ pageInteractiveContent.first.title }}</span>\n </li>\n </ng-container>\n <ng-container *ngIf=\"pageThemingContent.length === 0\">\n <li\n *ngIf=\"pageInteractiveContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\"\n (click)=\"onNavClick('advanced', 3)\">\n <span>{{ pageInteractiveContent.first.title }}</span>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'sections'\"\n (click)=\"onNavClick('sections', null)\">\n <span>Sections</span>\n </li>\n <li\n *ngIf=\"sections.length === 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'demo'\"\n (click)=\"onNavClick('demo', null)\">\n <span>Demo</span>\n </li>\n <li *ngIf=\"sections.length > 0\" class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let section of sections\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === section.id\"\n (click)=\"onNavClick(section.id, null)\">\n <span>{{ section.label }}</span>\n </li>\n </ul>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n</div>\n", styles: [".doc-page-navigation-wrapper{display:flex;flex-wrap:wrap;width:100%}.doc-page-navigation-wrapper .doc-page-main-column{padding-right:var(--eui-s-m);width:calc(100% - 400px)}.doc-page-navigation-wrapper .doc-page-navigation-column{background:var(--eui-c-white);box-shadow:0 8px 10px #b7c0ce33;position:fixed;right:0;transition:all ease-in-out .25s;width:400px;z-index:auto;box-shadow:var(--eui-sh-1)}.doc-page-navigation-wrapper .doc-page-navigation-column:hover{width:400px}.doc-page-navigation-wrapper .language-javascript:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:0!important;transition:none}.doc-page-navigation-wrapper .language-javascript:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:0!important;transition:none}.doc-page-navigation-wrapper .language-javascript [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:0!important;transition:none}.doc-page-navigation-title{padding:var(--eui-s-s);font:var(--eui-f-xl)}.doc-page-navigation-content{display:block;height:100vh;max-height:calc(100vh - 7.25rem);overflow-y:auto;width:100%}.doc-page-navigation-content::-webkit-scrollbar{display:inherit;height:6px;width:6px;background-color:var(--eui-c-neutral-bg-light)}.doc-page-navigation-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.doc-page-navigation-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.doc-page-navigation-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.doc-page-navigation{background-color:transparent;border-left:2px solid transparent;padding-top:var(--eui-s-xs);margin:0;padding:0}.doc-page-navigation .doc-page-navigation-list{margin:0;padding:0}.doc-page-navigation .doc-page-navigation-item{color:var(--eui-c-info-dark);cursor:pointer;line-height:1.5;overflow:hidden;padding:var(--eui-s-3xs);text-overflow:ellipsis;transition:background-color ease-in .2s;white-space:nowrap;list-style:none}.doc-page-navigation .doc-page-navigation-item span{font-weight:700;color:var(--eui-c-info-dark);padding-left:var(--eui-s-xs)}.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-dark)}.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)}.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)}.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-dark)}.doc-page-navigation .doc-page-navigation-item-sub{padding-left:var(--eui-s-l)}.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}.doc-page-api-iframe-wrapper{display:flex;justify-content:space-around;margin:0}.doc-page-section-title{margin-top:var(--eui-s-2xl);margin-bottom:var(--eui-s-xl);color:var(--eui-c-info-dark);letter-spacing:-1px;font:var(--eui-f-2xl-bold)}.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)}@media screen and (max-width: 767px){.doc-page-navigation-wrapper .doc-page-main-column{padding-right:0;width:100%}.doc-page-navigation-wrapper .doc-page-navigation-column{display:none;width:0}}@media screen and (min-width: 768px) and (max-width: 995px){.doc-page-navigation-wrapper .doc-page-main-column{width:80%}.doc-page-navigation-wrapper .doc-page-navigation-column{width:20%}}@media screen and (max-width: 1550px){.doc-page-api-iframe-wrapper{display:none}}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.EuiTabsComponent, selector: "eui-tabs", inputs: ["tabs", "activeTabIndex", "e2eAttr", "pathMatch", "isMainNavigation", "isHandleChangeTab", "isSubTabs", "isVerticalTabs"], outputs: ["tabClose", "tabSelect"] }, { kind: "component", type: i5.EuiTabComponent, selector: "eui-tab", inputs: ["url", "e2eAttr", "tooltip", "isClosable", "isVisible", "isActive", "isDisabled", "hasBackgroundFilled", "isHandleCloseOnClose"] }, { kind: "component", type: i5.EuiTabLabelComponent, selector: "eui-tab-label, euiTabLabel" }, { kind: "component", type: i5.EuiTabContentComponent, selector: "eui-tab-content, euiTabContent", inputs: ["hasNoContentPadding"] }, { kind: "component", type: i6.EuiPageComponent, selector: "eui-page" }, { kind: "component", type: i6.EuiPageContentComponent, selector: "eui-page-content" }, { kind: "component", type: i6.EuiPageHeaderComponent, selector: "eui-page-header", inputs: ["label", "subLabel", "labelTooltip", "subLabelTooltip", "isCollapsible", "isCollapsed", "isHeaderMultilines", "collapsedLabel", "expandedLabel"], outputs: ["collapse"] }, { kind: "component", type: i6.EuiPageHeaderActionItemsComponent, selector: "eui-page-header-action-items" }, { kind: "component", type: i7.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["ariaLabel", "e2eAttr", "euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i8.EuiAlertComponent, selector: "div[euiAlert], eui-alert", inputs: ["ariaDescribedBy", "e2eAttr", "isMuted", "isCloseable", "isFocusable"], outputs: ["closeAlert"] }, { kind: "component", type: i8.EuiAlertTitleComponent, selector: "eui-alert-title" }, { kind: "component", type: i9.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "directive", type: i10.EuiCodeHighlighterDirective, selector: "[euiCode]" }, { kind: "component", type: i11.DocPageCodeComponent, selector: "eui-showcase-doc-page-code", inputs: ["codeFolder", "showcase"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
288
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0-rc.0", type: DocPageComponent, selector: "eui-showcase-doc-page", inputs: { id: "id", label: "label", subLabel: "subLabel", isNotReady: "isNotReady", isDeprecated: "isDeprecated", isLegacy: "isLegacy", codeFolder: "codeFolder", showcase: "showcase", isNavigationVisible: "isNavigationVisible", hasApi: "hasApi", hasA11y: "hasA11y" }, queries: [{ propertyName: "samples", predicate: DocSampleComponent, descendants: true }, { propertyName: "sections", predicate: DocSectionComponent, descendants: true }, { propertyName: "pageOverviewContent", predicate: i0.forwardRef(() => DocPageOverviewContentDirective) }, { propertyName: "pageOverviewDefaultContent", predicate: i0.forwardRef(() => DocPageOverviewDefaultContentDirective) }, { propertyName: "pageSamplesContent", predicate: i0.forwardRef(() => DocPageSamplesContentDirective) }, { propertyName: "pageSectionsContent", predicate: i0.forwardRef(() => DocPageSectionsContentDirective) }, { propertyName: "pageInteractiveContent", predicate: i0.forwardRef(() => DocPageInteractiveContentDirective) }, { propertyName: "pageAccessibilityContent", predicate: i0.forwardRef(() => DocPageAccessibilityContentDirective) }, { propertyName: "pageApiContent", predicate: i0.forwardRef(() => DocPageApiContentDirective) }, { propertyName: "pageThemingContent", predicate: i0.forwardRef(() => DocPageThemingContentDirective) }], viewQueries: [{ propertyName: "tabsContent", first: true, predicate: ["tabsContent"], descendants: true }], ngImport: i0, template: "<div class=\"doc-page-navigation-wrapper\" [class.eui-u-hidden]=\"isLoading\">\n <div class=\"doc-page-main-column\">\n <eui-page>\n <eui-page-header label=\"{{ label }}\" subLabel=\"{{ subLabel }}\">\n <eui-page-header-action-items>\n <eui-showcase-doc-page-code\n *ngIf=\"codeFolder\"\n codeFolder=\"{{ codeFolder }}\"\n showcase=\"{{ showcase }}\"></eui-showcase-doc-page-code>\n <eui-chip\n *ngIf=\"stateLabel\"\n [euiSuccess]=\"stateLabel === 'ACTIVE'\"\n [euiInfo]=\"isNotReady\"\n [euiWarning]=\"isDeprecated\"\n [euiDanger]=\"isLegacy\">\n <span euiLabel>\n <strong>{{ stateLabel }}</strong>\n </span>\n </eui-chip>\n </eui-page-header-action-items>\n </eui-page-header>\n\n <eui-page-content>\n <eui-alert *ngIf=\"stateLabel === 'LEGACY' || isLegacy\" euiDanger class=\"eui-u-mb-xl\">\n <eui-alert-title>LEGACY component</eui-alert-title>\n <strong class=\"eui-u-color-danger\">This component will be removed in eUI 19 release (end of 2024)</strong>\n <div *ngIf=\"cmp\">\n <div *ngIf=\"cmp.cmpReplacement !== 'NONE'\">\n It has been replaced by :\n <strong class=\"eui-u-color-success-darkest\">{{ cmp.cmpReplacement }}</strong>\n <!-- <div *ngIf=\"cmp.cmpReplacementUrl\">\n <br><br>\n You can find more information on the new component here : <a [routerLink]=\"cmp.cmpReplacementUrl\">{{cmp.cmpReplacementUrl}}</a>\n </div> -->\n </div>\n <div *ngIf=\"cmp.cmpReplacement === 'NONE'\">\n <strong class=\"eui-u-color-danger\"> This component will be removed in eUI 18 release (end of 2023)</strong>\n </div>\n <div *ngIf=\"cmp.cmpReplacementNote\">\n <strong class=\"eui-u-color-warning\">{{ cmp.cmpReplacementNote }}</strong>\n </div>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'DEPRECATED' || isDeprecated\" euiWarning class=\"eui-u-mb-xl\">\n <eui-alert-title>DEPRECATED component</eui-alert-title>\n This component has been <strong class=\"eui-u-color-danger\">deprecated</strong>\n <div *ngIf=\"cmp\">\n This component has no replacement in current version AND won't have replacement in next version of eUI,\n <strong class=\"eui-u-color-danger\">it will be removed in eUI 18 release (end of 2023)</strong>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'NOT_READY' || isNotReady\" euiInfo class=\"eui-u-mb-xl\">\n <eui-alert-title>NOT READY for production usage</eui-alert-title>\n <div *ngIf=\"cmp\">\n This component is under development / some features might be missing, it'll be available in a future release once\n validated.\n </div>\n </eui-alert>\n\n <div *ngIf=\"(stateLabel || isNotReady || isDeprecated) && stateLabel !== 'ACTIVE'\" class=\"mb-5\"></div>\n\n <eui-tabs #tabsContent *ngIf=\"pageSectionsContent.length === 0\" (tabSelect)=\"onTabSelected($event)\">\n <eui-tab>\n <euiTabLabel> OPTIONS & SAMPLES </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"cmp && cmp.metadata\">\n <div class=\"doc-page-section-title\">Module import</div>\n <pre><code class=\"language-javascript eui-u-bg-color-grey-5\" euiCode>{{ cmpModuleImport }}</code></pre>\n <br />\n </ng-container>\n\n <div id=\"overview\" class=\"doc-page-section-title\">Overview</div>\n\n <div *ngIf=\"pageOverviewContent.length > 0\">\n <ng-content select=\"docPageOverview\"></ng-content>\n </div>\n\n <div *ngIf=\"pageOverviewDefaultContent.length > 0\">\n <ng-content select=\"docPageOverviewDefault\"></ng-content>\n </div>\n <br />\n\n <div id=\"samples\" class=\"doc-page-section-title\">Options & samples</div>\n <ng-content select=\"docPageSamples\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"hasApi\">\n <euiTabLabel> API </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"apiUrlSafe\">\n <div class=\"flex-container\">\n <a href=\"{{ apiUrl }}\" target=\"_blank\" class=\"ms-auto pb-2 eui-u-text-link-external\">Open API page</a>\n </div>\n <div class=\"doc-page-api-iframe-wrapper\">\n <iframe id=\"iframe_api\" [width]=\"'100%'\" height=\"700px\" frameBorder=\"0\" [src]=\"apiUrlSafe\"></iframe>\n </div>\n </ng-container>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"hasA11y\">\n <euiTabLabel> A11Y </euiTabLabel>\n <euiTabContent>\n <div id=\"accessibility\" class=\"doc-page-section-title\">Accessibility</div>\n <ng-container *ngIf=\"pageAccessibilityContent.length !== 0\">\n <ng-content select=\"docPageAccessibility\"></ng-content>\n </ng-container>\n <ng-container *ngIf=\"pageAccessibilityContent.length === 0\">\n No accessibility rules applicable\n </ng-container>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageThemingContent.length > 0\">\n <euiTabLabel> THEMING </euiTabLabel>\n <euiTabContent>\n <div id=\"theming\" class=\"doc-page-section-title\">Theming</div>\n <ng-content select=\"docPageTheming\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageInteractiveContent.length > 0\">\n <euiTabLabel>\n {{ pageInteractiveContent.first.title }}\n </euiTabLabel>\n <euiTabContent>\n <div id=\"interactive\" class=\"doc-page-section-title\">\n {{ pageInteractiveContent.first.subTitle }}\n </div>\n <ng-content select=\"docPageInteractive\"></ng-content>\n </euiTabContent>\n </eui-tab>\n </eui-tabs>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <div id=\"demo\" *ngIf=\"sections.length === 0\" class=\"doc-page-section-title\">Demo</div>\n <ng-content select=\"docPageSections\"></ng-content>\n </ng-container>\n </eui-page-content>\n </eui-page>\n </div>\n\n <div *ngIf=\"isNavigationVisible\" class=\"doc-page-navigation-column eui-u-hidden-desktop-down\">\n <div id=\"doc-page-nav\">\n <div class=\"doc-page-navigation-title\">In this page</div>\n <div class=\"doc-page-navigation-content\" tabindex=\"0\">\n <ul class=\"doc-page-navigation\">\n <ng-container *ngIf=\"pageSectionsContent.length === 0\">\n <li\n *ngIf=\"hasApi\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'api'\"\n (click)=\"onNavClick('api', 1)\">\n <span>API</span>\n </li>\n <li\n *ngIf=\"hasA11y\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'a11y'\"\n (click)=\"onNavClick('a11y', 2)\">\n <span>A11Y</span>\n </li>\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'samples'\"\n (click)=\"onNavClick('samples', 0)\">\n <span>OPTIONS & SAMPLES</span>\n </li>\n <li class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ng-container *ngIf=\"categories.length > 0\">\n <ng-container *ngIf=\"hasCategories; else noCategories\">\n <ng-container *ngFor=\"let category of categories\">\n <ng-container *ngIf=\"category.name === 'Base'; else notBase\">\n <ul *ngFor=\"let sample of category.samples\" class=\"doc-page-navigation-list\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\"\n (click)=\"onNavClick(sample.id, 0)\">\n <span>{{ sample.label }}</span>\n </li>\n </ul>\n </ng-container>\n <ng-template #notBase>\n <div *ngIf=\"category.name !== 'Base'\" class=\"doc-page-navigation-category\">{{category.name}}</div>\n <ul *ngFor=\"let sample of category.samples\" class=\"doc-page-navigation-list\">\n <li\n class=\"doc-page-navigation-item doc-page-navigation-item-sub\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\"\n (click)=\"onNavClick(sample.id, 0)\">\n <span>{{ sample.label }}</span>\n </li>\n </ul>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <ng-template #noCategories>\n <ul *ngFor=\"let sample of samples\" class=\"doc-page-navigation-list\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\"\n (click)=\"onNavClick(sample.id, 0)\">\n <span>{{ sample.label }}</span>\n </li>\n </ul>\n </ng-template>\n </ng-container>\n </li>\n\n\n\n <!-- OPTIONAL TABS-->\n <ng-container *ngIf=\"pageThemingContent.length > 0\">\n <li\n *ngIf=\"pageThemingContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'theming'\"\n (click)=\"onNavClick('theming', 3)\">\n <span>THEMING</span>\n </li>\n <li\n *ngIf=\"pageInteractiveContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\"\n (click)=\"onNavClick('advanced', 4)\">\n <span>{{ pageInteractiveContent.first.title }}</span>\n </li>\n </ng-container>\n <ng-container *ngIf=\"pageThemingContent.length === 0\">\n <li\n *ngIf=\"pageInteractiveContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\"\n (click)=\"onNavClick('advanced', 3)\">\n <span>{{ pageInteractiveContent.first.title }}</span>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'sections'\"\n (click)=\"onNavClick('sections', null)\">\n <span>Sections</span>\n </li>\n <li\n *ngIf=\"sections.length === 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'demo'\"\n (click)=\"onNavClick('demo', null)\">\n <span>Demo</span>\n </li>\n <li *ngIf=\"sections.length > 0\" class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let section of sections\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === section.id\"\n (click)=\"onNavClick(section.id, null)\">\n <span>{{ section.label }}</span>\n </li>\n </ul>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n</div>\n", styles: [".doc-page-navigation-wrapper{display:flex;flex-wrap:wrap;width:100%}.doc-page-navigation-wrapper .doc-page-main-column{padding-right:var(--eui-s-m);width:calc(100% - 400px)}.doc-page-navigation-wrapper .doc-page-navigation-column{background:var(--eui-c-white);box-shadow:0 8px 10px #b7c0ce33;position:fixed;right:0;transition:all ease-in-out .25s;width:400px;z-index:auto;box-shadow:var(--eui-sh-1)}.doc-page-navigation-wrapper .doc-page-navigation-column:hover{width:400px}.doc-page-navigation-wrapper .language-javascript:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:0!important;transition:none}.doc-page-navigation-wrapper .language-javascript:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:0!important;transition:none}.doc-page-navigation-wrapper .language-javascript [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:0!important;transition:none}.doc-page-navigation-title{padding:var(--eui-s-s);font:var(--eui-f-xl)}.doc-page-navigation-content{display:block;height:100vh;max-height:calc(100vh - 7.25rem);overflow-y:auto;width:100%}.doc-page-navigation-content::-webkit-scrollbar{display:inherit;height:6px;width:6px;background-color:var(--eui-c-neutral-bg-light)}.doc-page-navigation-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.doc-page-navigation-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.doc-page-navigation-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.doc-page-navigation{background-color:transparent;border-left:2px solid transparent;padding-top:var(--eui-s-xs);margin:0;padding:0}.doc-page-navigation .doc-page-navigation-list{margin:0;padding:0}.doc-page-navigation .doc-page-navigation-item{color:var(--eui-c-info-darker);cursor:pointer;line-height:1.5;overflow:hidden;padding:var(--eui-s-3xs);text-overflow:ellipsis;transition:background-color ease-in .2s;white-space:nowrap;list-style:none}.doc-page-navigation .doc-page-navigation-item span{font-weight:700;color:var(--eui-c-info-darker);padding-left:var(--eui-s-xs)}.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)}.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)}.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)}.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)}.doc-page-navigation .doc-page-navigation-item-sub{padding-left:var(--eui-s-l)}.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}.doc-page-api-iframe-wrapper{display:flex;justify-content:space-around;margin:0}.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)}.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)}@media screen and (max-width: 767px){.doc-page-navigation-wrapper .doc-page-main-column{padding-right:0;width:100%}.doc-page-navigation-wrapper .doc-page-navigation-column{display:none;width:0}}@media screen and (min-width: 768px) and (max-width: 995px){.doc-page-navigation-wrapper .doc-page-main-column{width:80%}.doc-page-navigation-wrapper .doc-page-navigation-column{width:20%}}@media screen and (max-width: 1550px){.doc-page-api-iframe-wrapper{display:none}}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.EuiTabsComponent, selector: "eui-tabs", inputs: ["tabs", "activeTabIndex", "e2eAttr", "pathMatch", "isMainNavigation", "isHandleChangeTab", "isSubTabs", "isVerticalTabs"], outputs: ["tabClose", "tabSelect"] }, { kind: "component", type: i5.EuiTabComponent, selector: "eui-tab", inputs: ["url", "e2eAttr", "tooltip", "isClosable", "isVisible", "isActive", "isDisabled", "hasBackgroundFilled", "isHandleCloseOnClose"] }, { kind: "component", type: i5.EuiTabLabelComponent, selector: "eui-tab-label, euiTabLabel" }, { kind: "component", type: i5.EuiTabContentComponent, selector: "eui-tab-content, euiTabContent", inputs: ["hasNoContentPadding"] }, { kind: "component", type: i6.EuiPageComponent, selector: "eui-page" }, { kind: "component", type: i6.EuiPageContentComponent, selector: "eui-page-content" }, { kind: "component", type: i6.EuiPageHeaderComponent, selector: "eui-page-header", inputs: ["label", "subLabel", "labelTooltip", "subLabelTooltip", "isCollapsible", "isCollapsed", "isHeaderMultilines", "collapsedLabel", "expandedLabel"], outputs: ["collapse"] }, { kind: "component", type: i6.EuiPageHeaderActionItemsComponent, selector: "eui-page-header-action-items" }, { kind: "component", type: i7.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["ariaLabel", "e2eAttr", "euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i8.EuiAlertComponent, selector: "div[euiAlert], eui-alert", inputs: ["ariaDescribedBy", "e2eAttr", "isMuted", "isCloseable", "isFocusable"], outputs: ["closeAlert"] }, { kind: "component", type: i8.EuiAlertTitleComponent, selector: "eui-alert-title" }, { kind: "component", type: i9.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "directive", type: i10.EuiCodeHighlighterDirective, selector: "[euiCode]" }, { kind: "component", type: i11.DocPageCodeComponent, selector: "eui-showcase-doc-page-code", inputs: ["codeFolder", "showcase"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
289
289
|
}
|
|
290
290
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.0", ngImport: i0, type: DocPageComponent, decorators: [{
|
|
291
291
|
type: Component,
|
|
292
|
-
args: [{ selector: 'eui-showcase-doc-page', encapsulation: ViewEncapsulation.None, template: "<div class=\"doc-page-navigation-wrapper\" [class.eui-u-hidden]=\"isLoading\">\n <div class=\"doc-page-main-column\">\n <eui-page>\n <eui-page-header label=\"{{ label }}\" subLabel=\"{{ subLabel }}\">\n <eui-page-header-action-items>\n <eui-showcase-doc-page-code\n *ngIf=\"codeFolder\"\n codeFolder=\"{{ codeFolder }}\"\n showcase=\"{{ showcase }}\"></eui-showcase-doc-page-code>\n <eui-chip\n *ngIf=\"stateLabel\"\n [euiSuccess]=\"stateLabel === 'ACTIVE'\"\n [euiInfo]=\"isNotReady\"\n [euiWarning]=\"isDeprecated\"\n [euiDanger]=\"isLegacy\">\n <span euiLabel>\n <strong>{{ stateLabel }}</strong>\n </span>\n </eui-chip>\n </eui-page-header-action-items>\n </eui-page-header>\n\n <eui-page-content>\n <eui-alert *ngIf=\"stateLabel === 'LEGACY' || isLegacy\" euiDanger class=\"eui-u-mb-xl\">\n <eui-alert-title>LEGACY component</eui-alert-title>\n <strong class=\"eui-u-color-danger\">This component will be removed in eUI 19 release (end of 2024)</strong>\n <div *ngIf=\"cmp\">\n <div *ngIf=\"cmp.cmpReplacement !== 'NONE'\">\n It has been replaced by :\n <strong class=\"eui-u-color-success-darkest\">{{ cmp.cmpReplacement }}</strong>\n <!-- <div *ngIf=\"cmp.cmpReplacementUrl\">\n <br><br>\n You can find more information on the new component here : <a [routerLink]=\"cmp.cmpReplacementUrl\">{{cmp.cmpReplacementUrl}}</a>\n </div> -->\n </div>\n <div *ngIf=\"cmp.cmpReplacement === 'NONE'\">\n <strong class=\"eui-u-color-danger\"> This component will be removed in eUI 18 release (end of 2023)</strong>\n </div>\n <div *ngIf=\"cmp.cmpReplacementNote\">\n <strong class=\"eui-u-color-warning\">{{ cmp.cmpReplacementNote }}</strong>\n </div>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'DEPRECATED' || isDeprecated\" euiWarning class=\"eui-u-mb-xl\">\n <eui-alert-title>DEPRECATED component</eui-alert-title>\n This component has been <strong class=\"eui-u-color-danger\">deprecated</strong>\n <div *ngIf=\"cmp\">\n This component has no replacement in current version AND won't have replacement in next version of eUI,\n <strong class=\"eui-u-color-danger\">it will be removed in eUI 18 release (end of 2023)</strong>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'NOT_READY' || isNotReady\" euiInfo class=\"eui-u-mb-xl\">\n <eui-alert-title>NOT READY for production usage</eui-alert-title>\n <div *ngIf=\"cmp\">\n This component is under development / some features might be missing, it'll be available in a future release once\n validated.\n </div>\n </eui-alert>\n\n <div *ngIf=\"(stateLabel || isNotReady || isDeprecated) && stateLabel !== 'ACTIVE'\" class=\"mb-5\"></div>\n\n <eui-tabs #tabsContent *ngIf=\"pageSectionsContent.length === 0\" (tabSelect)=\"onTabSelected($event)\">\n <eui-tab>\n <euiTabLabel> OPTIONS & SAMPLES </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"cmp && cmp.metadata\">\n <div class=\"doc-page-section-title\">Module import</div>\n <pre><code class=\"language-javascript eui-u-bg-color-grey-5\" euiCode>{{ cmpModuleImport }}</code></pre>\n <br />\n </ng-container>\n\n <div id=\"overview\" class=\"doc-page-section-title\">Overview</div>\n\n <div *ngIf=\"pageOverviewContent.length > 0\">\n <ng-content select=\"docPageOverview\"></ng-content>\n </div>\n\n <div *ngIf=\"pageOverviewDefaultContent.length > 0\">\n <ng-content select=\"docPageOverviewDefault\"></ng-content>\n </div>\n <br />\n\n <div id=\"samples\" class=\"doc-page-section-title\">Options & samples</div>\n <ng-content select=\"docPageSamples\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"hasApi\">\n <euiTabLabel> API </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"apiUrlSafe\">\n <div class=\"flex-container\">\n <a href=\"{{ apiUrl }}\" target=\"_blank\" class=\"ms-auto pb-2 eui-u-text-link-external\">Open API page</a>\n </div>\n <div class=\"doc-page-api-iframe-wrapper\">\n <iframe id=\"iframe_api\" [width]=\"'100%'\" height=\"700px\" frameBorder=\"0\" [src]=\"apiUrlSafe\"></iframe>\n </div>\n </ng-container>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"hasA11y\">\n <euiTabLabel> A11Y </euiTabLabel>\n <euiTabContent>\n <div id=\"accessibility\" class=\"doc-page-section-title\">Accessibility</div>\n <ng-container *ngIf=\"pageAccessibilityContent.length !== 0\">\n <ng-content select=\"docPageAccessibility\"></ng-content>\n </ng-container>\n <ng-container *ngIf=\"pageAccessibilityContent.length === 0\">\n No accessibility rules applicable\n </ng-container>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageThemingContent.length > 0\">\n <euiTabLabel> THEMING </euiTabLabel>\n <euiTabContent>\n <div id=\"theming\" class=\"doc-page-section-title\">Theming</div>\n <ng-content select=\"docPageTheming\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageInteractiveContent.length > 0\">\n <euiTabLabel>\n {{ pageInteractiveContent.first.title }}\n </euiTabLabel>\n <euiTabContent>\n <div id=\"interactive\" class=\"doc-page-section-title\">\n {{ pageInteractiveContent.first.subTitle }}\n </div>\n <ng-content select=\"docPageInteractive\"></ng-content>\n </euiTabContent>\n </eui-tab>\n </eui-tabs>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <div id=\"demo\" *ngIf=\"sections.length === 0\" class=\"doc-page-section-title\">Demo</div>\n <ng-content select=\"docPageSections\"></ng-content>\n </ng-container>\n </eui-page-content>\n </eui-page>\n </div>\n\n <div *ngIf=\"isNavigationVisible\" class=\"doc-page-navigation-column eui-u-hidden-desktop-down\">\n <div id=\"doc-page-nav\">\n <div class=\"doc-page-navigation-title\">In this page</div>\n <div class=\"doc-page-navigation-content\" tabindex=\"0\">\n <ul class=\"doc-page-navigation\">\n <ng-container *ngIf=\"pageSectionsContent.length === 0\">\n <li\n *ngIf=\"hasApi\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'api'\"\n (click)=\"onNavClick('api', 1)\">\n <span>API</span>\n </li>\n <li\n *ngIf=\"hasA11y\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'a11y'\"\n (click)=\"onNavClick('a11y', 2)\">\n <span>A11Y</span>\n </li>\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'samples'\"\n (click)=\"onNavClick('samples', 0)\">\n <span>OPTIONS & SAMPLES</span>\n </li>\n <li class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ng-container *ngIf=\"categories.length > 0\">\n <ng-container *ngIf=\"hasCategories; else noCategories\">\n <ng-container *ngFor=\"let category of categories\">\n <ng-container *ngIf=\"category.name === 'Base'; else notBase\">\n <ul *ngFor=\"let sample of category.samples\" class=\"doc-page-navigation-list\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\"\n (click)=\"onNavClick(sample.id, 0)\">\n <span>{{ sample.label }}</span>\n </li>\n </ul>\n </ng-container>\n <ng-template #notBase>\n <div *ngIf=\"category.name !== 'Base'\" class=\"doc-page-navigation-category\">{{category.name}}</div>\n <ul *ngFor=\"let sample of category.samples\" class=\"doc-page-navigation-list\">\n <li\n class=\"doc-page-navigation-item doc-page-navigation-item-sub\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\"\n (click)=\"onNavClick(sample.id, 0)\">\n <span>{{ sample.label }}</span>\n </li>\n </ul>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <ng-template #noCategories>\n <ul *ngFor=\"let sample of samples\" class=\"doc-page-navigation-list\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\"\n (click)=\"onNavClick(sample.id, 0)\">\n <span>{{ sample.label }}</span>\n </li>\n </ul>\n </ng-template>\n </ng-container>\n </li>\n\n\n\n <!-- OPTIONAL TABS-->\n <ng-container *ngIf=\"pageThemingContent.length > 0\">\n <li\n *ngIf=\"pageThemingContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'theming'\"\n (click)=\"onNavClick('theming', 3)\">\n <span>THEMING</span>\n </li>\n <li\n *ngIf=\"pageInteractiveContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\"\n (click)=\"onNavClick('advanced', 4)\">\n <span>{{ pageInteractiveContent.first.title }}</span>\n </li>\n </ng-container>\n <ng-container *ngIf=\"pageThemingContent.length === 0\">\n <li\n *ngIf=\"pageInteractiveContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\"\n (click)=\"onNavClick('advanced', 3)\">\n <span>{{ pageInteractiveContent.first.title }}</span>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'sections'\"\n (click)=\"onNavClick('sections', null)\">\n <span>Sections</span>\n </li>\n <li\n *ngIf=\"sections.length === 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'demo'\"\n (click)=\"onNavClick('demo', null)\">\n <span>Demo</span>\n </li>\n <li *ngIf=\"sections.length > 0\" class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let section of sections\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === section.id\"\n (click)=\"onNavClick(section.id, null)\">\n <span>{{ section.label }}</span>\n </li>\n </ul>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n</div>\n", styles: [".doc-page-navigation-wrapper{display:flex;flex-wrap:wrap;width:100%}.doc-page-navigation-wrapper .doc-page-main-column{padding-right:var(--eui-s-m);width:calc(100% - 400px)}.doc-page-navigation-wrapper .doc-page-navigation-column{background:var(--eui-c-white);box-shadow:0 8px 10px #b7c0ce33;position:fixed;right:0;transition:all ease-in-out .25s;width:400px;z-index:auto;box-shadow:var(--eui-sh-1)}.doc-page-navigation-wrapper .doc-page-navigation-column:hover{width:400px}.doc-page-navigation-wrapper .language-javascript:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:0!important;transition:none}.doc-page-navigation-wrapper .language-javascript:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:0!important;transition:none}.doc-page-navigation-wrapper .language-javascript [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:0!important;transition:none}.doc-page-navigation-title{padding:var(--eui-s-s);font:var(--eui-f-xl)}.doc-page-navigation-content{display:block;height:100vh;max-height:calc(100vh - 7.25rem);overflow-y:auto;width:100%}.doc-page-navigation-content::-webkit-scrollbar{display:inherit;height:6px;width:6px;background-color:var(--eui-c-neutral-bg-light)}.doc-page-navigation-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.doc-page-navigation-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.doc-page-navigation-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.doc-page-navigation{background-color:transparent;border-left:2px solid transparent;padding-top:var(--eui-s-xs);margin:0;padding:0}.doc-page-navigation .doc-page-navigation-list{margin:0;padding:0}.doc-page-navigation .doc-page-navigation-item{color:var(--eui-c-info-dark);cursor:pointer;line-height:1.5;overflow:hidden;padding:var(--eui-s-3xs);text-overflow:ellipsis;transition:background-color ease-in .2s;white-space:nowrap;list-style:none}.doc-page-navigation .doc-page-navigation-item span{font-weight:700;color:var(--eui-c-info-dark);padding-left:var(--eui-s-xs)}.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-dark)}.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)}.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)}.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-dark)}.doc-page-navigation .doc-page-navigation-item-sub{padding-left:var(--eui-s-l)}.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}.doc-page-api-iframe-wrapper{display:flex;justify-content:space-around;margin:0}.doc-page-section-title{margin-top:var(--eui-s-2xl);margin-bottom:var(--eui-s-xl);color:var(--eui-c-info-dark);letter-spacing:-1px;font:var(--eui-f-2xl-bold)}.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)}@media screen and (max-width: 767px){.doc-page-navigation-wrapper .doc-page-main-column{padding-right:0;width:100%}.doc-page-navigation-wrapper .doc-page-navigation-column{display:none;width:0}}@media screen and (min-width: 768px) and (max-width: 995px){.doc-page-navigation-wrapper .doc-page-main-column{width:80%}.doc-page-navigation-wrapper .doc-page-navigation-column{width:20%}}@media screen and (max-width: 1550px){.doc-page-api-iframe-wrapper{display:none}}\n"] }]
|
|
292
|
+
args: [{ selector: 'eui-showcase-doc-page', encapsulation: ViewEncapsulation.None, template: "<div class=\"doc-page-navigation-wrapper\" [class.eui-u-hidden]=\"isLoading\">\n <div class=\"doc-page-main-column\">\n <eui-page>\n <eui-page-header label=\"{{ label }}\" subLabel=\"{{ subLabel }}\">\n <eui-page-header-action-items>\n <eui-showcase-doc-page-code\n *ngIf=\"codeFolder\"\n codeFolder=\"{{ codeFolder }}\"\n showcase=\"{{ showcase }}\"></eui-showcase-doc-page-code>\n <eui-chip\n *ngIf=\"stateLabel\"\n [euiSuccess]=\"stateLabel === 'ACTIVE'\"\n [euiInfo]=\"isNotReady\"\n [euiWarning]=\"isDeprecated\"\n [euiDanger]=\"isLegacy\">\n <span euiLabel>\n <strong>{{ stateLabel }}</strong>\n </span>\n </eui-chip>\n </eui-page-header-action-items>\n </eui-page-header>\n\n <eui-page-content>\n <eui-alert *ngIf=\"stateLabel === 'LEGACY' || isLegacy\" euiDanger class=\"eui-u-mb-xl\">\n <eui-alert-title>LEGACY component</eui-alert-title>\n <strong class=\"eui-u-color-danger\">This component will be removed in eUI 19 release (end of 2024)</strong>\n <div *ngIf=\"cmp\">\n <div *ngIf=\"cmp.cmpReplacement !== 'NONE'\">\n It has been replaced by :\n <strong class=\"eui-u-color-success-darkest\">{{ cmp.cmpReplacement }}</strong>\n <!-- <div *ngIf=\"cmp.cmpReplacementUrl\">\n <br><br>\n You can find more information on the new component here : <a [routerLink]=\"cmp.cmpReplacementUrl\">{{cmp.cmpReplacementUrl}}</a>\n </div> -->\n </div>\n <div *ngIf=\"cmp.cmpReplacement === 'NONE'\">\n <strong class=\"eui-u-color-danger\"> This component will be removed in eUI 18 release (end of 2023)</strong>\n </div>\n <div *ngIf=\"cmp.cmpReplacementNote\">\n <strong class=\"eui-u-color-warning\">{{ cmp.cmpReplacementNote }}</strong>\n </div>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'DEPRECATED' || isDeprecated\" euiWarning class=\"eui-u-mb-xl\">\n <eui-alert-title>DEPRECATED component</eui-alert-title>\n This component has been <strong class=\"eui-u-color-danger\">deprecated</strong>\n <div *ngIf=\"cmp\">\n This component has no replacement in current version AND won't have replacement in next version of eUI,\n <strong class=\"eui-u-color-danger\">it will be removed in eUI 18 release (end of 2023)</strong>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'NOT_READY' || isNotReady\" euiInfo class=\"eui-u-mb-xl\">\n <eui-alert-title>NOT READY for production usage</eui-alert-title>\n <div *ngIf=\"cmp\">\n This component is under development / some features might be missing, it'll be available in a future release once\n validated.\n </div>\n </eui-alert>\n\n <div *ngIf=\"(stateLabel || isNotReady || isDeprecated) && stateLabel !== 'ACTIVE'\" class=\"mb-5\"></div>\n\n <eui-tabs #tabsContent *ngIf=\"pageSectionsContent.length === 0\" (tabSelect)=\"onTabSelected($event)\">\n <eui-tab>\n <euiTabLabel> OPTIONS & SAMPLES </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"cmp && cmp.metadata\">\n <div class=\"doc-page-section-title\">Module import</div>\n <pre><code class=\"language-javascript eui-u-bg-color-grey-5\" euiCode>{{ cmpModuleImport }}</code></pre>\n <br />\n </ng-container>\n\n <div id=\"overview\" class=\"doc-page-section-title\">Overview</div>\n\n <div *ngIf=\"pageOverviewContent.length > 0\">\n <ng-content select=\"docPageOverview\"></ng-content>\n </div>\n\n <div *ngIf=\"pageOverviewDefaultContent.length > 0\">\n <ng-content select=\"docPageOverviewDefault\"></ng-content>\n </div>\n <br />\n\n <div id=\"samples\" class=\"doc-page-section-title\">Options & samples</div>\n <ng-content select=\"docPageSamples\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"hasApi\">\n <euiTabLabel> API </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"apiUrlSafe\">\n <div class=\"flex-container\">\n <a href=\"{{ apiUrl }}\" target=\"_blank\" class=\"ms-auto pb-2 eui-u-text-link-external\">Open API page</a>\n </div>\n <div class=\"doc-page-api-iframe-wrapper\">\n <iframe id=\"iframe_api\" [width]=\"'100%'\" height=\"700px\" frameBorder=\"0\" [src]=\"apiUrlSafe\"></iframe>\n </div>\n </ng-container>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"hasA11y\">\n <euiTabLabel> A11Y </euiTabLabel>\n <euiTabContent>\n <div id=\"accessibility\" class=\"doc-page-section-title\">Accessibility</div>\n <ng-container *ngIf=\"pageAccessibilityContent.length !== 0\">\n <ng-content select=\"docPageAccessibility\"></ng-content>\n </ng-container>\n <ng-container *ngIf=\"pageAccessibilityContent.length === 0\">\n No accessibility rules applicable\n </ng-container>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageThemingContent.length > 0\">\n <euiTabLabel> THEMING </euiTabLabel>\n <euiTabContent>\n <div id=\"theming\" class=\"doc-page-section-title\">Theming</div>\n <ng-content select=\"docPageTheming\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageInteractiveContent.length > 0\">\n <euiTabLabel>\n {{ pageInteractiveContent.first.title }}\n </euiTabLabel>\n <euiTabContent>\n <div id=\"interactive\" class=\"doc-page-section-title\">\n {{ pageInteractiveContent.first.subTitle }}\n </div>\n <ng-content select=\"docPageInteractive\"></ng-content>\n </euiTabContent>\n </eui-tab>\n </eui-tabs>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <div id=\"demo\" *ngIf=\"sections.length === 0\" class=\"doc-page-section-title\">Demo</div>\n <ng-content select=\"docPageSections\"></ng-content>\n </ng-container>\n </eui-page-content>\n </eui-page>\n </div>\n\n <div *ngIf=\"isNavigationVisible\" class=\"doc-page-navigation-column eui-u-hidden-desktop-down\">\n <div id=\"doc-page-nav\">\n <div class=\"doc-page-navigation-title\">In this page</div>\n <div class=\"doc-page-navigation-content\" tabindex=\"0\">\n <ul class=\"doc-page-navigation\">\n <ng-container *ngIf=\"pageSectionsContent.length === 0\">\n <li\n *ngIf=\"hasApi\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'api'\"\n (click)=\"onNavClick('api', 1)\">\n <span>API</span>\n </li>\n <li\n *ngIf=\"hasA11y\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'a11y'\"\n (click)=\"onNavClick('a11y', 2)\">\n <span>A11Y</span>\n </li>\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'samples'\"\n (click)=\"onNavClick('samples', 0)\">\n <span>OPTIONS & SAMPLES</span>\n </li>\n <li class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ng-container *ngIf=\"categories.length > 0\">\n <ng-container *ngIf=\"hasCategories; else noCategories\">\n <ng-container *ngFor=\"let category of categories\">\n <ng-container *ngIf=\"category.name === 'Base'; else notBase\">\n <ul *ngFor=\"let sample of category.samples\" class=\"doc-page-navigation-list\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\"\n (click)=\"onNavClick(sample.id, 0)\">\n <span>{{ sample.label }}</span>\n </li>\n </ul>\n </ng-container>\n <ng-template #notBase>\n <div *ngIf=\"category.name !== 'Base'\" class=\"doc-page-navigation-category\">{{category.name}}</div>\n <ul *ngFor=\"let sample of category.samples\" class=\"doc-page-navigation-list\">\n <li\n class=\"doc-page-navigation-item doc-page-navigation-item-sub\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\"\n (click)=\"onNavClick(sample.id, 0)\">\n <span>{{ sample.label }}</span>\n </li>\n </ul>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <ng-template #noCategories>\n <ul *ngFor=\"let sample of samples\" class=\"doc-page-navigation-list\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\"\n (click)=\"onNavClick(sample.id, 0)\">\n <span>{{ sample.label }}</span>\n </li>\n </ul>\n </ng-template>\n </ng-container>\n </li>\n\n\n\n <!-- OPTIONAL TABS-->\n <ng-container *ngIf=\"pageThemingContent.length > 0\">\n <li\n *ngIf=\"pageThemingContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'theming'\"\n (click)=\"onNavClick('theming', 3)\">\n <span>THEMING</span>\n </li>\n <li\n *ngIf=\"pageInteractiveContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\"\n (click)=\"onNavClick('advanced', 4)\">\n <span>{{ pageInteractiveContent.first.title }}</span>\n </li>\n </ng-container>\n <ng-container *ngIf=\"pageThemingContent.length === 0\">\n <li\n *ngIf=\"pageInteractiveContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\"\n (click)=\"onNavClick('advanced', 3)\">\n <span>{{ pageInteractiveContent.first.title }}</span>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'sections'\"\n (click)=\"onNavClick('sections', null)\">\n <span>Sections</span>\n </li>\n <li\n *ngIf=\"sections.length === 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'demo'\"\n (click)=\"onNavClick('demo', null)\">\n <span>Demo</span>\n </li>\n <li *ngIf=\"sections.length > 0\" class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let section of sections\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === section.id\"\n (click)=\"onNavClick(section.id, null)\">\n <span>{{ section.label }}</span>\n </li>\n </ul>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n</div>\n", styles: [".doc-page-navigation-wrapper{display:flex;flex-wrap:wrap;width:100%}.doc-page-navigation-wrapper .doc-page-main-column{padding-right:var(--eui-s-m);width:calc(100% - 400px)}.doc-page-navigation-wrapper .doc-page-navigation-column{background:var(--eui-c-white);box-shadow:0 8px 10px #b7c0ce33;position:fixed;right:0;transition:all ease-in-out .25s;width:400px;z-index:auto;box-shadow:var(--eui-sh-1)}.doc-page-navigation-wrapper .doc-page-navigation-column:hover{width:400px}.doc-page-navigation-wrapper .language-javascript:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:0!important;transition:none}.doc-page-navigation-wrapper .language-javascript:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:0!important;transition:none}.doc-page-navigation-wrapper .language-javascript [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:0!important;transition:none}.doc-page-navigation-title{padding:var(--eui-s-s);font:var(--eui-f-xl)}.doc-page-navigation-content{display:block;height:100vh;max-height:calc(100vh - 7.25rem);overflow-y:auto;width:100%}.doc-page-navigation-content::-webkit-scrollbar{display:inherit;height:6px;width:6px;background-color:var(--eui-c-neutral-bg-light)}.doc-page-navigation-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.doc-page-navigation-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.doc-page-navigation-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.doc-page-navigation{background-color:transparent;border-left:2px solid transparent;padding-top:var(--eui-s-xs);margin:0;padding:0}.doc-page-navigation .doc-page-navigation-list{margin:0;padding:0}.doc-page-navigation .doc-page-navigation-item{color:var(--eui-c-info-darker);cursor:pointer;line-height:1.5;overflow:hidden;padding:var(--eui-s-3xs);text-overflow:ellipsis;transition:background-color ease-in .2s;white-space:nowrap;list-style:none}.doc-page-navigation .doc-page-navigation-item span{font-weight:700;color:var(--eui-c-info-darker);padding-left:var(--eui-s-xs)}.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)}.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)}.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)}.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)}.doc-page-navigation .doc-page-navigation-item-sub{padding-left:var(--eui-s-l)}.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}.doc-page-api-iframe-wrapper{display:flex;justify-content:space-around;margin:0}.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)}.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)}@media screen and (max-width: 767px){.doc-page-navigation-wrapper .doc-page-main-column{padding-right:0;width:100%}.doc-page-navigation-wrapper .doc-page-navigation-column{display:none;width:0}}@media screen and (min-width: 768px) and (max-width: 995px){.doc-page-navigation-wrapper .doc-page-main-column{width:80%}.doc-page-navigation-wrapper .doc-page-navigation-column{width:20%}}@media screen and (max-width: 1550px){.doc-page-api-iframe-wrapper{display:none}}\n"] }]
|
|
293
293
|
}], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.EuiAppShellService }, { type: i3.DomSanitizer }, { type: i4.Location }], propDecorators: { id: [{
|
|
294
294
|
type: Input
|
|
295
295
|
}], label: [{
|
|
@@ -176,11 +176,11 @@ export class DocSampleComponent {
|
|
|
176
176
|
}));
|
|
177
177
|
}
|
|
178
178
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.0", ngImport: i0, type: DocSampleComponent, deps: [{ token: i1.StackblitzService }, { token: i2.HttpClient }, { token: i3.EuiAppShellService }, { token: i0.ChangeDetectorRef }, { token: i3.EuiGrowlService }, { token: i4.Clipboard }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
179
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.0-rc.0", type: DocSampleComponent, selector: "eui-showcase-doc-sample", inputs: { id: "id", label: "label", category: "category", description: "description", defaultValue: "defaultValue", styleClass: "styleClass", renderPlayground: ["renderPlayground", "renderPlayground", booleanAttribute], isCodeButtonVisible: ["isCodeButtonVisible", "isCodeButtonVisible", booleanAttribute], isInnerSection: ["isInnerSection", "isInnerSection", booleanAttribute] }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: "<div class=\"doc-sample-title\">\n <div class=\"doc-sample-title__label\" [class.doc-sample-title__label--inner]=\"isInnerSection\">\n {{ label }}\n <button\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiPrimary\n euiSizeS\n (click)=\"copyCurrentUrlToClipboard(id)\"\n class=\"doc-sample-title__link\"\n tabindex=\"-1\">\n <eui-icon-svg icon=\"link\" set=\"outline\" size=\"l\" fillColor=\"grey-75\"></eui-icon-svg>\n </button>\n </div>\n <div *ngIf=\"renderPlayground\" class=\"doc-sample-title__items\" style=\"margin-right: 3px\">\n <button\n *ngIf=\"isCodeButtonVisible\"\n type=\"button\"\n euiButton\n [euiOutline]=\"!isCodeExpanded\"\n euiPrimary\n euiSizeS\n (click)=\"onStackblitzOpen()\">\n <span
|
|
179
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.0-rc.0", type: DocSampleComponent, selector: "eui-showcase-doc-sample", inputs: { id: "id", label: "label", category: "category", description: "description", defaultValue: "defaultValue", styleClass: "styleClass", renderPlayground: ["renderPlayground", "renderPlayground", booleanAttribute], isCodeButtonVisible: ["isCodeButtonVisible", "isCodeButtonVisible", booleanAttribute], isInnerSection: ["isInnerSection", "isInnerSection", booleanAttribute] }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: "<div class=\"doc-sample-title\">\n <div class=\"doc-sample-title__label\" [class.doc-sample-title__label--inner]=\"isInnerSection\">\n {{ label }}\n <button\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiPrimary\n euiSizeS\n (click)=\"copyCurrentUrlToClipboard(id)\"\n class=\"doc-sample-title__link\"\n tabindex=\"-1\">\n <eui-icon-svg icon=\"link\" set=\"outline\" size=\"l\" fillColor=\"grey-75\"></eui-icon-svg>\n </button>\n </div>\n <div *ngIf=\"renderPlayground\" class=\"doc-sample-title__items\" style=\"margin-right: 3px\">\n <button\n *ngIf=\"isCodeButtonVisible\"\n type=\"button\"\n euiButton\n [euiOutline]=\"!isCodeExpanded\"\n euiPrimary\n euiSizeS\n (click)=\"onStackblitzOpen()\">\n <span euiLabel>Stackblitz</span>\n <eui-icon-svg icon=\"expand:sharp\"></eui-icon-svg>\n </button>\n </div>\n <div class=\"doc-sample-title__items\">\n <button\n *ngIf=\"isCodeButtonVisible\"\n type=\"button\"\n euiButton\n [euiOutline]=\"!isCodeExpanded\"\n euiPrimary\n euiSizeS\n (click)=\"onToggleCode()\"\n [euiDisabled]=\"isCodeLoading\">\n <eui-icon-svg *ngIf=\"isCodeLoading\" isLoading></eui-icon-svg>\n <span *ngIf=\"!isCodeExpanded\" euiLabel>Code</span>\n <span *ngIf=\"isCodeExpanded\" euiLabel>Hide Code</span>\n <eui-icon-svg icon=\"eui-code\"></eui-icon-svg>\n </button>\n </div>\n</div>\n\n<ng-template [ngIf]=\"isCodeExpanded\">\n <eui-card euiNoContentPadding>\n <eui-card-content>\n <eui-tabs (tabSelect)=\"onSelectedTab($event)\">\n <eui-tab [isVisible]=\"htmlContent\">\n <euiTabLabel>\n HTML\n <euiTabSubLabel>HyperText Markup Language</euiTabSubLabel>\n </euiTabLabel>\n <euiTabContent>\n <pre><code class=\"language-markup\" euiCode>{{htmlContent}}</code></pre>\n </euiTabContent>\n </eui-tab>\n <eui-tab [isVisible]=\"tsContent\">\n <euiTabLabel>\n TS\n <euiTabSubLabel>Typescript</euiTabSubLabel>\n </euiTabLabel>\n <euiTabContent>\n <pre><code class=\"language-javascript\" euiCode>{{filterOutModuleAndImports(tsContent)}}</code></pre>\n </euiTabContent>\n </eui-tab>\n </eui-tabs>\n </eui-card-content>\n </eui-card>\n</ng-template>\n\n<ng-content></ng-content>\n", styles: [".eui-showcase-doc-sample{display:block;margin-bottom:var(--eui-s-2xl);margin-top:var(--eui-s-6xl);width:100%}.eui-showcase-doc-sample:first-child{margin-top:var(--eui-s-xl)}.eui-showcase-doc-sample .doc-sample-title{align-items:flex-end;display:flex;width:100%;margin-bottom:var(--eui-s-m);padding-bottom:var(--eui-s-s);border-bottom:1px solid var(--eui-c-neutral-lightest)}.eui-showcase-doc-sample .doc-sample-title__label{align-items:center;display:flex;min-height:var(--eui-s-xl);width:100%;letter-spacing:-.75px;font:var(--eui-f-xl-bold)}.eui-showcase-doc-sample .doc-sample-title__label:hover .doc-sample-title__link{opacity:1;transition:all .25s ease-in-out}.eui-showcase-doc-sample .doc-sample-title__label--inner{color:var(--eui-c-neutral-light);font:var(--eui-f-l)}.eui-showcase-doc-sample .doc-sample-title__items{display:flex;margin-left:auto}.eui-showcase-doc-sample .doc-sample-title__link{opacity:0;margin-left:var(--eui-s-m)}.eui-showcase-doc-sample .doc-sample-section-title,.eui-showcase-doc-sample h6.section-title{border-bottom:none;letter-spacing:-.5px;margin:var(--eui-s-3xl) 0 var(--eui-s-xs) 0!important;width:auto;display:table;color:var(--eui-c-info-darker);font:var(--eui-f-l)!important}.eui-showcase-doc-sample .doc-sample-section-title:first-child,.eui-showcase-doc-sample h6.section-title:first-child{margin-top:var(--eui-s-m)!important}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.EuiCardComponent, selector: "eui-card", inputs: ["e2eAttr", "euiSelected", "euiCollapsible", "euiCollapsed", "euiUrgent", "euiNoShadow", "euiNoContentPadding", "euiHoverable"], outputs: ["collapse"] }, { kind: "component", type: i7.EuiCardContentComponent, selector: "eui-card-content" }, { kind: "component", type: i8.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "euiIconButton", "euiLineWrap", "isChecked", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "component", type: i9.EuiTabsComponent, selector: "eui-tabs", inputs: ["tabs", "activeTabIndex", "e2eAttr", "pathMatch", "isMainNavigation", "isHandleChangeTab", "isSubTabs", "isVerticalTabs"], outputs: ["tabClose", "tabSelect"] }, { kind: "component", type: i9.EuiTabComponent, selector: "eui-tab", inputs: ["url", "e2eAttr", "tooltip", "isClosable", "isVisible", "isActive", "isDisabled", "hasBackgroundFilled", "isHandleCloseOnClose"] }, { kind: "component", type: i9.EuiTabLabelComponent, selector: "eui-tab-label, euiTabLabel" }, { kind: "directive", type: i9.EuiTabSubLabelDirective, selector: "euiTabSubLabel" }, { kind: "component", type: i9.EuiTabContentComponent, selector: "eui-tab-content, euiTabContent", inputs: ["hasNoContentPadding"] }, { kind: "component", type: i10.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "fillColor", "set", "size", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading", "isInputIcon", "euiStart", "euiEnd"] }, { kind: "component", type: i11.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "directive", type: i12.EuiCodeHighlighterDirective, selector: "[euiCode]" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
180
180
|
}
|
|
181
181
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.0", ngImport: i0, type: DocSampleComponent, decorators: [{
|
|
182
182
|
type: Component,
|
|
183
|
-
args: [{ selector: 'eui-showcase-doc-sample', encapsulation: ViewEncapsulation.None, template: "<div class=\"doc-sample-title\">\n <div class=\"doc-sample-title__label\" [class.doc-sample-title__label--inner]=\"isInnerSection\">\n {{ label }}\n <button\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiPrimary\n euiSizeS\n (click)=\"copyCurrentUrlToClipboard(id)\"\n class=\"doc-sample-title__link\"\n tabindex=\"-1\">\n <eui-icon-svg icon=\"link\" set=\"outline\" size=\"l\" fillColor=\"grey-75\"></eui-icon-svg>\n </button>\n </div>\n <div *ngIf=\"renderPlayground\" class=\"doc-sample-title__items\" style=\"margin-right: 3px\">\n <button\n *ngIf=\"isCodeButtonVisible\"\n type=\"button\"\n euiButton\n [euiOutline]=\"!isCodeExpanded\"\n euiPrimary\n euiSizeS\n (click)=\"onStackblitzOpen()\">\n <span
|
|
183
|
+
args: [{ selector: 'eui-showcase-doc-sample', encapsulation: ViewEncapsulation.None, template: "<div class=\"doc-sample-title\">\n <div class=\"doc-sample-title__label\" [class.doc-sample-title__label--inner]=\"isInnerSection\">\n {{ label }}\n <button\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiPrimary\n euiSizeS\n (click)=\"copyCurrentUrlToClipboard(id)\"\n class=\"doc-sample-title__link\"\n tabindex=\"-1\">\n <eui-icon-svg icon=\"link\" set=\"outline\" size=\"l\" fillColor=\"grey-75\"></eui-icon-svg>\n </button>\n </div>\n <div *ngIf=\"renderPlayground\" class=\"doc-sample-title__items\" style=\"margin-right: 3px\">\n <button\n *ngIf=\"isCodeButtonVisible\"\n type=\"button\"\n euiButton\n [euiOutline]=\"!isCodeExpanded\"\n euiPrimary\n euiSizeS\n (click)=\"onStackblitzOpen()\">\n <span euiLabel>Stackblitz</span>\n <eui-icon-svg icon=\"expand:sharp\"></eui-icon-svg>\n </button>\n </div>\n <div class=\"doc-sample-title__items\">\n <button\n *ngIf=\"isCodeButtonVisible\"\n type=\"button\"\n euiButton\n [euiOutline]=\"!isCodeExpanded\"\n euiPrimary\n euiSizeS\n (click)=\"onToggleCode()\"\n [euiDisabled]=\"isCodeLoading\">\n <eui-icon-svg *ngIf=\"isCodeLoading\" isLoading></eui-icon-svg>\n <span *ngIf=\"!isCodeExpanded\" euiLabel>Code</span>\n <span *ngIf=\"isCodeExpanded\" euiLabel>Hide Code</span>\n <eui-icon-svg icon=\"eui-code\"></eui-icon-svg>\n </button>\n </div>\n</div>\n\n<ng-template [ngIf]=\"isCodeExpanded\">\n <eui-card euiNoContentPadding>\n <eui-card-content>\n <eui-tabs (tabSelect)=\"onSelectedTab($event)\">\n <eui-tab [isVisible]=\"htmlContent\">\n <euiTabLabel>\n HTML\n <euiTabSubLabel>HyperText Markup Language</euiTabSubLabel>\n </euiTabLabel>\n <euiTabContent>\n <pre><code class=\"language-markup\" euiCode>{{htmlContent}}</code></pre>\n </euiTabContent>\n </eui-tab>\n <eui-tab [isVisible]=\"tsContent\">\n <euiTabLabel>\n TS\n <euiTabSubLabel>Typescript</euiTabSubLabel>\n </euiTabLabel>\n <euiTabContent>\n <pre><code class=\"language-javascript\" euiCode>{{filterOutModuleAndImports(tsContent)}}</code></pre>\n </euiTabContent>\n </eui-tab>\n </eui-tabs>\n </eui-card-content>\n </eui-card>\n</ng-template>\n\n<ng-content></ng-content>\n", styles: [".eui-showcase-doc-sample{display:block;margin-bottom:var(--eui-s-2xl);margin-top:var(--eui-s-6xl);width:100%}.eui-showcase-doc-sample:first-child{margin-top:var(--eui-s-xl)}.eui-showcase-doc-sample .doc-sample-title{align-items:flex-end;display:flex;width:100%;margin-bottom:var(--eui-s-m);padding-bottom:var(--eui-s-s);border-bottom:1px solid var(--eui-c-neutral-lightest)}.eui-showcase-doc-sample .doc-sample-title__label{align-items:center;display:flex;min-height:var(--eui-s-xl);width:100%;letter-spacing:-.75px;font:var(--eui-f-xl-bold)}.eui-showcase-doc-sample .doc-sample-title__label:hover .doc-sample-title__link{opacity:1;transition:all .25s ease-in-out}.eui-showcase-doc-sample .doc-sample-title__label--inner{color:var(--eui-c-neutral-light);font:var(--eui-f-l)}.eui-showcase-doc-sample .doc-sample-title__items{display:flex;margin-left:auto}.eui-showcase-doc-sample .doc-sample-title__link{opacity:0;margin-left:var(--eui-s-m)}.eui-showcase-doc-sample .doc-sample-section-title,.eui-showcase-doc-sample h6.section-title{border-bottom:none;letter-spacing:-.5px;margin:var(--eui-s-3xl) 0 var(--eui-s-xs) 0!important;width:auto;display:table;color:var(--eui-c-info-darker);font:var(--eui-f-l)!important}.eui-showcase-doc-sample .doc-sample-section-title:first-child,.eui-showcase-doc-sample h6.section-title:first-child{margin-top:var(--eui-s-m)!important}\n"] }]
|
|
184
184
|
}], ctorParameters: () => [{ type: i1.StackblitzService }, { type: i2.HttpClient }, { type: i3.EuiAppShellService }, { type: i0.ChangeDetectorRef }, { type: i3.EuiGrowlService }, { type: i4.Clipboard }, { type: i5.Router }], propDecorators: { id: [{
|
|
185
185
|
type: Input
|
|
186
186
|
}], label: [{
|
|
@@ -206,4 +206,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.0", ng
|
|
|
206
206
|
type: HostBinding,
|
|
207
207
|
args: ['class']
|
|
208
208
|
}] } });
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jLXNhbXBsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZG9jLXNhbXBsZS9kb2Mtc2FtcGxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kb2Mtc2FtcGxlL2RvYy1zYW1wbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBR0wsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxnQkFBZ0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFjakQsTUFBTSxPQUFPLGtCQUFrQjtJQXFCM0IsWUFDWSxFQUFxQixFQUNyQixLQUFpQixFQUNqQixTQUE2QixFQUM3QixFQUFxQixFQUNyQixZQUE2QixFQUM3QixTQUFvQixFQUNwQixNQUFjO1FBTmQsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUM3QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBM0JqQixPQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUlYLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDZSxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQzNCLG1CQUFjLEdBQUcsS0FBSyxDQUFD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LENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDVixDQUFDO21IQTdMUSxrQkFBa0I7dUdBQWxCLGtCQUFrQixnUEFPUCxnQkFBZ0IsdUVBQ2hCLGdCQUFnQix3REFDaEIsZ0JBQWdCLGdGQ25DeEMsaTRGQTJFQTs7Z0dEakRhLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDSSx5QkFBeUIsaUJBR3BCLGlCQUFpQixDQUFDLElBQUk7MlBBRzVCLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDa0MsZ0JBQWdCO3NCQUF2RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLG1CQUFtQjtzQkFBMUQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxjQUFjO3NCQUFyRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUVoQixPQUFPO3NCQUE1QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENsaXBib2FyZCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jbGlwYm9hcmQnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEV1aUFwcFNoZWxsU2VydmljZSB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBFdWlNZW51SXRlbSB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBFdWlUYWJDb21wb25lbnQgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLXRhYnMnO1xuaW1wb3J0IHsgRXVpR3Jvd2xTZXJ2aWNlIH0gZnJvbSAnQGV1aS9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdGFja2JsaXR6U2VydmljZSB9IGZyb20gJy4uL3BsYXlncm91bmQvc3RhY2tibGl0ei5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktc2hvd2Nhc2UtZG9jLXNhbXBsZScsXG4gICAgdGVtcGxhdGVVcmw6ICdkb2Mtc2FtcGxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kb2Mtc2FtcGxlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jU2FtcGxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQElucHV0KCkgaWQgPSAnJztcbiAgICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICAgIEBJbnB1dCgpIGNhdGVnb3J5O1xuICAgIEBJbnB1dCgpIGRlc2NyaXB0aW9uO1xuICAgIEBJbnB1dCgpIGRlZmF1bHRWYWx1ZTtcbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzID0gJyc7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHJlbmRlclBsYXlncm91bmQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNDb2RlQnV0dG9uVmlzaWJsZSA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzSW5uZXJTZWN0aW9uID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3NlcyA9ICdldWktc2hvd2Nhc2UtZG9jLXNhbXBsZSc7XG5cbiAgICBpc0NvZGVMb2FkZWQgPSBmYWxzZTtcbiAgICBpc0NvZGVMb2FkaW5nID0gZmFsc2U7XG4gICAgaXNDb2RlRXhwYW5kZWQgPSBmYWxzZTtcbiAgICBwbGF5Z3JvdW5kX2FjdGl2YXRlZCA9IGZhbHNlO1xuXG4gICAgdHNDb250ZW50O1xuICAgIGh0bWxDb250ZW50O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgc2I6IFN0YWNrYmxpdHpTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBwcml2YXRlIGFzU2VydmljZTogRXVpQXBwU2hlbGxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBncm93bFNlcnZpY2U6IEV1aUdyb3dsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjbGlwYm9hcmQ6IENsaXBib2FyZCxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICApIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5sYWJlbCkge1xuICAgICAgICAgICAgdGhpcy5sYWJlbCA9IHRoaXMuaWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY29weUN1cnJlbnRVcmxUb0NsaXBib2FyZChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlRG9tYWluID0gd2luZG93Py5sb2NhdGlvbj8ub3JpZ2luO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnIycpO1xuICAgICAgICAgICAgY29uc3QgZnVsbFVybCA9IGJhc2VEb21haW4gKyBjdXJyZW50VXJsWzBdICsgJyMnICsgaWQ7XG4gICAgICAgICAgICB0aGlzLmNsaXBib2FyZC5jb3B5KGZ1bGxVcmwpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMuZ3Jvd2xTZXJ2aWNlLmdyb3dsKHsgc2V2ZXJpdHk6ICdkYW5nZXInLCBzdW1tYXJ5OiAnQ2xpcGJvYXJkIHNlcnZpY2Ugbm90IGF2YWlsYWJsZScgfSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5ncm93bCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdMaW5rIFVSTCBjb3BpZWQgdG8gY2xpcGJvYXJkJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVG9nZ2xlQ29kZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNDb2RlTG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmlzQ29kZUV4cGFuZGVkID0gIXRoaXMuaXNDb2RlRXhwYW5kZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNDb2RlTG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRDb2RlRmlsZXMoKS5zdWJzY3JpYmUoKGRlbW86IHsgdHlwZXNjcmlwdDogc3RyaW5nOyBodG1sOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRzQ29udGVudCA9IGRlbW8udHlwZXNjcmlwdDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5odG1sQ29udGVudCA9IGRlbW8uaHRtbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvZGVMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29kZUV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvZGVMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogb24gcGxheWdyb3VuZCB0YWIgc2VsZWN0ZWQgaW5mb3JtIHRoZSBwbGF5Z3JvdW5kIGNvbXBvbmVudCB0aGF0IGl0cyBjb250ZW50IGlzIHJlbmRlcmVkXG4gICAgICogVE9ETzogZml4IHRoZSBidWcgb24gZXVpLXRhYiBpbXBsZW1lbnRhdGlvbiB3aGVyZSB0aGUgbmdBZnRlclZpZXdJbml0IGlzIGNhbGxlZCB3aXRob3V0IHRoZSB2aWV3IGFjdHVhbGx5XG4gICAgICogIGJlaW5nIHJlbmRlcmVkIG9uIHNjcmVlbi4gSXNzdWUgaXMgdGhhdCBpbml0aWFsbHkgdGhlIHZpZXcgaXMgYmVpbmcgcmVuZGVyZWQgYW5kIHRoZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00uXG4gICAgICogIEludGVybmFsbHkgZXVpLXRhYnMgaXMgbW92aW5nIHRoZSBwcm9qZWN0ZWQgY29udGVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZWxlY3RlZCBUaGUgc2VsZWN0ZWQgdGFiIGNvbXBvbmVudCByZWZlcmVuY2UgYW5kIGl0cyBpbmRleCBpbiB0aGUgdGFicyBhcnJheS5cbiAgICAgKi9cbiAgICBvblNlbGVjdGVkVGFiKHNlbGVjdGVkOiB7IHRhYjogRXVpVGFiQ29tcG9uZW50OyBpbmRleDogbnVtYmVyIH0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wbGF5Z3JvdW5kX2FjdGl2YXRlZCA9IHNlbGVjdGVkLmluZGV4ID09PSAyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZpbHRlciBvdXQgdGhlIGV4dHJhIGltcG9ydCBhbmQgbW9kdWxlIGZyb20gdGhlIGNvZGUgc2FtcGxlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29kZVxuICAgICAqL1xuICAgIGZpbHRlck91dE1vZHVsZUFuZEltcG9ydHMoY29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgLy8gZmlsdGVyIG91dCBtb2R1bGVcbiAgICAgICAgY29uc3QgbW9kdWxlUmVnZXggPSAvQE5nTW9kdWxlXFwoKFtcXHNcXFNdKj8pXFwpXFxuZXhwb3J0IGNsYXNzIFxcdysgXFx7KFtcXHNcXFNdKj8pXFx9L2c7XG4gICAgICAgIGNvZGUgPSBjb2RlLnJlcGxhY2UobW9kdWxlUmVnZXgsICcnKTtcbiAgICAgICAgLy8gZmlsdGVyIG91dCBleHRyYSBpbXBvcnRzXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICBjb2RlID0gY29kZS5yZXBsYWNlKFwiaW1wb3J0IHsgRXVpQWxsTW9kdWxlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzJztcXG5cIiwgJycpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgY29kZSA9IGNvZGUucmVwbGFjZShcImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XFxuXCIsICcnKTtcbiAgICAgICAgcmV0dXJuIGNvZGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogb3BlbiB0aGUgY29kZSBzYW1wbGUgaW4gc3RhY2tibGl0elxuICAgICAqL1xuICAgIG9uU3RhY2tibGl0ek9wZW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZENvZGVGaWxlcygpLnN1YnNjcmliZSgoZGVtbzogeyB0eXBlc2NyaXB0OiBzdHJpbmc7IGh0bWw6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRzQ29udGVudCA9IGRlbW8udHlwZXNjcmlwdDtcbiAgICAgICAgICAgIHRoaXMuaHRtbENvbnRlbnQgPSBkZW1vLmh0bWw7XG4gICAgICAgICAgICB0aGlzLnNiLm9wZW5TdGFja0JsaXR6KHRoaXMuaHRtbENvbnRlbnQsIHRoaXMudHNDb250ZW50LCAnZVVJIFBsYXlncm91bmQnLCB0aGlzLmlkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIF9nZXRDb21wb25lbnQoaWQpOiBFdWlNZW51SXRlbSB8IGFueSB7XG4gICAgICAgIGNvbnN0IGZsYXRMaW5rcyA9IHRoaXMuZmxhdHRlbih0aGlzLmFzU2VydmljZS5zdGF0ZS5zaWRlYmFyTGlua3MpO1xuXG4gICAgICAgIHJldHVybiBmbGF0TGlua3MuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlkID09PSBpZClbMF07XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIGZsYXR0ZW4obGlua3M6IEV1aU1lbnVJdGVtW10pOiBFdWlNZW51SXRlbVtdIHwgYW55IHtcbiAgICAgICAgcmV0dXJuIGxpbmtzXG4gICAgICAgICAgICA/IGxpbmtzLnJlZHVjZShcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgIChyZXN1bHQsIGl0ZW06IEV1aU1lbnVJdGVtIHwgYW55KSA9PiBbXG4gICAgICAgICAgICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVybmF0ZVNhbXBsZUxvY2F0aW9uOiBpdGVtLmFsdGVybmF0ZVNhbXBsZUxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5mbGF0dGVuKGl0ZW0uY2hpbGRyZW4pLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZENvZGVGaWxlcygpOiBPYnNlcnZhYmxlPFJlc3BvbnNlIHwgeyB0eXBlc2NyaXB0OiBzdHJpbmcsIGh0bWw6IHN0cmluZyB9PiB7XG4gICAgICAgIHRoaXMuaXNDb2RlTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uO1xuICAgICAgICBjb25zdCBwYXRoTmFtZSA9IHVybC5wYXRobmFtZTtcbiAgICAgICAgY29uc3QgcGF0aE5hbWVBcnJheSA9IHBhdGhOYW1lLnNwbGl0KCcvJyk7XG5cbiAgICAgICAgbGV0IHNhbXBsZVBhdGhBcnJheSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IGNtcElkID0gcGF0aE5hbWVBcnJheVtwYXRoTmFtZUFycmF5Lmxlbmd0aCAtIDFdO1xuICAgICAgICBjb25zdCBjbXAgPSB0aGlzLl9nZXRDb21wb25lbnQoY21wSWQpO1xuXG4gICAgICAgIGlmIChjbXAgJiYgY21wLmFsdGVybmF0ZVNhbXBsZUxvY2F0aW9uKSB7XG4gICAgICAgICAgICBzYW1wbGVQYXRoQXJyYXkgPSBjbXAuYWx0ZXJuYXRlU2FtcGxlTG9jYXRpb24uc3BsaXQoJy8nKS5yZXZlcnNlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gcGF0aE5hbWVBcnJheS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGlmIChwYXRoTmFtZUFycmF5W2ldLmluZGV4T2YoJ2V1aS1zaG93Y2FzZS0nKSA+IC0xIHx8IHBhdGhOYW1lQXJyYXlbaV0uaW5kZXhPZignbG9jYWxob3N0JykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBhdGhOYW1lQXJyYXlbaV0gIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHNhbXBsZVBhdGhBcnJheS5wdXNoKHBhdGhOYW1lQXJyYXlbaV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNhbXBsZVBhdGhBcnJheSA9IHNhbXBsZVBhdGhBcnJheS5yZXZlcnNlKCk7XG4gICAgICAgIHNhbXBsZVBhdGhBcnJheS5wdXNoKCdzYW1wbGVzJyk7XG4gICAgICAgIHNhbXBsZVBhdGhBcnJheS5wdXNoKHRoaXMuaWQpO1xuXG4gICAgICAgIGNvbnN0IHNhbXBsZXNQYXRoID0gYGFzc2V0cy9zYW1wbGVzLyR7c2FtcGxlUGF0aEFycmF5LmpvaW4oJy8nKX1gO1xuXG4gICAgICAgIHJldHVybiBmb3JrSm9pbih7XG4gICAgICAgICAgICB0eXBlc2NyaXB0OiB0aGlzLl9odHRwLmdldChgJHtzYW1wbGVzUGF0aH0vY29tcG9uZW50LnRzYCwge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBodG1sOiB0aGlzLl9odHRwLmdldChgJHtzYW1wbGVzUGF0aH0vY29tcG9uZW50Lmh0bWxgLCB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2VzOiB7IHR5cGVzY3JpcHQ6IHN0cmluZzsgaHRtbDogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvZGVMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29kZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZXNjcmlwdDogcmVzcG9uc2VzLnR5cGVzY3JpcHQsIGh0bWw6IHJlc3BvbnNlcy5odG1sIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xTZXJ2aWNlLmdyb3dsRXJyb3IoYElzc3VlIHdoaWxlIGZldGNoaW5nIDogJHtlcnJvci51cmx9IDogJHtlcnJvci5zdGF0dXN9LSR7ZXJyb3Iuc3RhdHVzVGV4dH1gKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8UmVzcG9uc2U+KChzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPFJlc3BvbnNlPikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRvYy1zYW1wbGUtdGl0bGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZG9jLXNhbXBsZS10aXRsZV9fbGFiZWxcIiBbY2xhc3MuZG9jLXNhbXBsZS10aXRsZV9fbGFiZWwtLWlubmVyXT1cImlzSW5uZXJTZWN0aW9uXCI+XG4gICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgZXVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgICAgIGV1aVJvdW5kZWRcbiAgICAgICAgICAgIGV1aVByaW1hcnlcbiAgICAgICAgICAgIGV1aVNpemVTXG4gICAgICAgICAgICAoY2xpY2spPVwiY29weUN1cnJlbnRVcmxUb0NsaXBib2FyZChpZClcIlxuICAgICAgICAgICAgY2xhc3M9XCJkb2Mtc2FtcGxlLXRpdGxlX19saW5rXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImxpbmtcIiBzZXQ9XCJvdXRsaW5lXCIgc2l6ZT1cImxcIiBmaWxsQ29sb3I9XCJncmV5LTc1XCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJyZW5kZXJQbGF5Z3JvdW5kXCIgY2xhc3M9XCJkb2Mtc2FtcGxlLXRpdGxlX19pdGVtc1wiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAzcHhcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJpc0NvZGVCdXR0b25WaXNpYmxlXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICBbZXVpT3V0bGluZV09XCIhaXNDb2RlRXhwYW5kZWRcIlxuICAgICAgICAgICAgZXVpUHJpbWFyeVxuICAgICAgICAgICAgZXVpU2l6ZVNcbiAgICAgICAgICAgIChjbGljayk9XCJvblN0YWNrYmxpdHpPcGVuKClcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzQ29kZUV4cGFuZGVkXCIgZXVpTGFiZWw+U3RhY2tibGl0ejwvc3Bhbj5cbiAgICAgICAgICAgIDxldWktaWNvbi1zdmcgc2V0PVwic2hhcnBcIiBpY29uPVwiZXhwYW5kXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkb2Mtc2FtcGxlLXRpdGxlX19pdGVtc1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImlzQ29kZUJ1dHRvblZpc2libGVcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBldWlCdXR0b25cbiAgICAgICAgICAgIFtldWlPdXRsaW5lXT1cIiFpc0NvZGVFeHBhbmRlZFwiXG4gICAgICAgICAgICBldWlQcmltYXJ5XG4gICAgICAgICAgICBldWlTaXplU1xuICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlQ29kZSgpXCJcbiAgICAgICAgICAgIFtldWlEaXNhYmxlZF09XCJpc0NvZGVMb2FkaW5nXCI+XG4gICAgICAgICAgICA8ZXVpLWljb24tc3ZnICpuZ0lmPVwiaXNDb2RlTG9hZGluZ1wiIGlzTG9hZGluZz48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzQ29kZUV4cGFuZGVkXCIgZXVpTGFiZWw+Q29kZTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNDb2RlRXhwYW5kZWRcIiBldWlMYWJlbD5IaWRlIENvZGU8L3NwYW4+XG4gICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJldWktY29kZVwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgW25nSWZdPVwiaXNDb2RlRXhwYW5kZWRcIj5cbiAgICA8ZXVpLWNhcmQgZXVpTm9Db250ZW50UGFkZGluZz5cbiAgICAgICAgPGV1aS1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8ZXVpLXRhYnMgKHRhYlNlbGVjdCk9XCJvblNlbGVjdGVkVGFiKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8ZXVpLXRhYiBbaXNWaXNpYmxlXT1cImh0bWxDb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIEhUTUxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWlUYWJTdWJMYWJlbD5IeXBlclRleHQgTWFya3VwIExhbmd1YWdlPC9ldWlUYWJTdWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlIGNsYXNzPVwibGFuZ3VhZ2UtbWFya3VwXCIgZXVpQ29kZT57e2h0bWxDb250ZW50fX08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICA8L2V1aS10YWI+XG4gICAgICAgICAgICAgICAgPGV1aS10YWIgW2lzVmlzaWJsZV09XCJ0c0NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgVFNcbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWlUYWJTdWJMYWJlbD5UeXBlc2NyaXB0PC9ldWlUYWJTdWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlIGNsYXNzPVwibGFuZ3VhZ2UtamF2YXNjcmlwdFwiIGV1aUNvZGU+e3tmaWx0ZXJPdXRNb2R1bGVBbmRJbXBvcnRzKHRzQ29udGVudCl9fTwvY29kZT48L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgIDwvZXVpLXRhYj5cbiAgICAgICAgICAgIDwvZXVpLXRhYnM+XG4gICAgICAgIDwvZXVpLWNhcmQtY29udGVudD5cbiAgICA8L2V1aS1jYXJkPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jLXNhbXBsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZG9jLXNhbXBsZS9kb2Mtc2FtcGxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kb2Mtc2FtcGxlL2RvYy1zYW1wbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBR0wsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxnQkFBZ0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFjakQsTUFBTSxPQUFPLGtCQUFrQjtJQXFCM0IsWUFDWSxFQUFxQixFQUNyQixLQUFpQixFQUNqQixTQUE2QixFQUM3QixFQUFxQixFQUNyQixZQUE2QixFQUM3QixTQUFvQixFQUNwQixNQUFjO1FBTmQsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUM3QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBM0JqQixPQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUlYLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDZSxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQzNCLG1CQUFjLEdBQUcsS0FBSyxDQUFD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LENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDVixDQUFDO21IQTdMUSxrQkFBa0I7dUdBQWxCLGtCQUFrQixnUEFPUCxnQkFBZ0IsdUVBQ2hCLGdCQUFnQix3REFDaEIsZ0JBQWdCLGdGQ25DeEMsKzFGQTJFQTs7Z0dEakRhLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDSSx5QkFBeUIsaUJBR3BCLGlCQUFpQixDQUFDLElBQUk7MlBBRzVCLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDa0MsZ0JBQWdCO3NCQUF2RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLG1CQUFtQjtzQkFBMUQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxjQUFjO3NCQUFyRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUVoQixPQUFPO3NCQUE1QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENsaXBib2FyZCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jbGlwYm9hcmQnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEV1aUFwcFNoZWxsU2VydmljZSB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBFdWlNZW51SXRlbSB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBFdWlUYWJDb21wb25lbnQgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLXRhYnMnO1xuaW1wb3J0IHsgRXVpR3Jvd2xTZXJ2aWNlIH0gZnJvbSAnQGV1aS9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdGFja2JsaXR6U2VydmljZSB9IGZyb20gJy4uL3BsYXlncm91bmQvc3RhY2tibGl0ei5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktc2hvd2Nhc2UtZG9jLXNhbXBsZScsXG4gICAgdGVtcGxhdGVVcmw6ICdkb2Mtc2FtcGxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kb2Mtc2FtcGxlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jU2FtcGxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQElucHV0KCkgaWQgPSAnJztcbiAgICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICAgIEBJbnB1dCgpIGNhdGVnb3J5O1xuICAgIEBJbnB1dCgpIGRlc2NyaXB0aW9uO1xuICAgIEBJbnB1dCgpIGRlZmF1bHRWYWx1ZTtcbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzID0gJyc7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHJlbmRlclBsYXlncm91bmQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNDb2RlQnV0dG9uVmlzaWJsZSA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzSW5uZXJTZWN0aW9uID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3NlcyA9ICdldWktc2hvd2Nhc2UtZG9jLXNhbXBsZSc7XG5cbiAgICBpc0NvZGVMb2FkZWQgPSBmYWxzZTtcbiAgICBpc0NvZGVMb2FkaW5nID0gZmFsc2U7XG4gICAgaXNDb2RlRXhwYW5kZWQgPSBmYWxzZTtcbiAgICBwbGF5Z3JvdW5kX2FjdGl2YXRlZCA9IGZhbHNlO1xuXG4gICAgdHNDb250ZW50O1xuICAgIGh0bWxDb250ZW50O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgc2I6IFN0YWNrYmxpdHpTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBwcml2YXRlIGFzU2VydmljZTogRXVpQXBwU2hlbGxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBncm93bFNlcnZpY2U6IEV1aUdyb3dsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjbGlwYm9hcmQ6IENsaXBib2FyZCxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICApIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5sYWJlbCkge1xuICAgICAgICAgICAgdGhpcy5sYWJlbCA9IHRoaXMuaWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY29weUN1cnJlbnRVcmxUb0NsaXBib2FyZChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlRG9tYWluID0gd2luZG93Py5sb2NhdGlvbj8ub3JpZ2luO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnIycpO1xuICAgICAgICAgICAgY29uc3QgZnVsbFVybCA9IGJhc2VEb21haW4gKyBjdXJyZW50VXJsWzBdICsgJyMnICsgaWQ7XG4gICAgICAgICAgICB0aGlzLmNsaXBib2FyZC5jb3B5KGZ1bGxVcmwpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMuZ3Jvd2xTZXJ2aWNlLmdyb3dsKHsgc2V2ZXJpdHk6ICdkYW5nZXInLCBzdW1tYXJ5OiAnQ2xpcGJvYXJkIHNlcnZpY2Ugbm90IGF2YWlsYWJsZScgfSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5ncm93bCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdMaW5rIFVSTCBjb3BpZWQgdG8gY2xpcGJvYXJkJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVG9nZ2xlQ29kZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNDb2RlTG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmlzQ29kZUV4cGFuZGVkID0gIXRoaXMuaXNDb2RlRXhwYW5kZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNDb2RlTG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRDb2RlRmlsZXMoKS5zdWJzY3JpYmUoKGRlbW86IHsgdHlwZXNjcmlwdDogc3RyaW5nOyBodG1sOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRzQ29udGVudCA9IGRlbW8udHlwZXNjcmlwdDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5odG1sQ29udGVudCA9IGRlbW8uaHRtbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvZGVMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29kZUV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvZGVMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogb24gcGxheWdyb3VuZCB0YWIgc2VsZWN0ZWQgaW5mb3JtIHRoZSBwbGF5Z3JvdW5kIGNvbXBvbmVudCB0aGF0IGl0cyBjb250ZW50IGlzIHJlbmRlcmVkXG4gICAgICogVE9ETzogZml4IHRoZSBidWcgb24gZXVpLXRhYiBpbXBsZW1lbnRhdGlvbiB3aGVyZSB0aGUgbmdBZnRlclZpZXdJbml0IGlzIGNhbGxlZCB3aXRob3V0IHRoZSB2aWV3IGFjdHVhbGx5XG4gICAgICogIGJlaW5nIHJlbmRlcmVkIG9uIHNjcmVlbi4gSXNzdWUgaXMgdGhhdCBpbml0aWFsbHkgdGhlIHZpZXcgaXMgYmVpbmcgcmVuZGVyZWQgYW5kIHRoZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00uXG4gICAgICogIEludGVybmFsbHkgZXVpLXRhYnMgaXMgbW92aW5nIHRoZSBwcm9qZWN0ZWQgY29udGVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZWxlY3RlZCBUaGUgc2VsZWN0ZWQgdGFiIGNvbXBvbmVudCByZWZlcmVuY2UgYW5kIGl0cyBpbmRleCBpbiB0aGUgdGFicyBhcnJheS5cbiAgICAgKi9cbiAgICBvblNlbGVjdGVkVGFiKHNlbGVjdGVkOiB7IHRhYjogRXVpVGFiQ29tcG9uZW50OyBpbmRleDogbnVtYmVyIH0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wbGF5Z3JvdW5kX2FjdGl2YXRlZCA9IHNlbGVjdGVkLmluZGV4ID09PSAyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZpbHRlciBvdXQgdGhlIGV4dHJhIGltcG9ydCBhbmQgbW9kdWxlIGZyb20gdGhlIGNvZGUgc2FtcGxlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29kZVxuICAgICAqL1xuICAgIGZpbHRlck91dE1vZHVsZUFuZEltcG9ydHMoY29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgLy8gZmlsdGVyIG91dCBtb2R1bGVcbiAgICAgICAgY29uc3QgbW9kdWxlUmVnZXggPSAvQE5nTW9kdWxlXFwoKFtcXHNcXFNdKj8pXFwpXFxuZXhwb3J0IGNsYXNzIFxcdysgXFx7KFtcXHNcXFNdKj8pXFx9L2c7XG4gICAgICAgIGNvZGUgPSBjb2RlLnJlcGxhY2UobW9kdWxlUmVnZXgsICcnKTtcbiAgICAgICAgLy8gZmlsdGVyIG91dCBleHRyYSBpbXBvcnRzXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICBjb2RlID0gY29kZS5yZXBsYWNlKFwiaW1wb3J0IHsgRXVpQWxsTW9kdWxlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzJztcXG5cIiwgJycpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgY29kZSA9IGNvZGUucmVwbGFjZShcImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XFxuXCIsICcnKTtcbiAgICAgICAgcmV0dXJuIGNvZGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogb3BlbiB0aGUgY29kZSBzYW1wbGUgaW4gc3RhY2tibGl0elxuICAgICAqL1xuICAgIG9uU3RhY2tibGl0ek9wZW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZENvZGVGaWxlcygpLnN1YnNjcmliZSgoZGVtbzogeyB0eXBlc2NyaXB0OiBzdHJpbmc7IGh0bWw6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRzQ29udGVudCA9IGRlbW8udHlwZXNjcmlwdDtcbiAgICAgICAgICAgIHRoaXMuaHRtbENvbnRlbnQgPSBkZW1vLmh0bWw7XG4gICAgICAgICAgICB0aGlzLnNiLm9wZW5TdGFja0JsaXR6KHRoaXMuaHRtbENvbnRlbnQsIHRoaXMudHNDb250ZW50LCAnZVVJIFBsYXlncm91bmQnLCB0aGlzLmlkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIF9nZXRDb21wb25lbnQoaWQpOiBFdWlNZW51SXRlbSB8IGFueSB7XG4gICAgICAgIGNvbnN0IGZsYXRMaW5rcyA9IHRoaXMuZmxhdHRlbih0aGlzLmFzU2VydmljZS5zdGF0ZS5zaWRlYmFyTGlua3MpO1xuXG4gICAgICAgIHJldHVybiBmbGF0TGlua3MuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlkID09PSBpZClbMF07XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIGZsYXR0ZW4obGlua3M6IEV1aU1lbnVJdGVtW10pOiBFdWlNZW51SXRlbVtdIHwgYW55IHtcbiAgICAgICAgcmV0dXJuIGxpbmtzXG4gICAgICAgICAgICA/IGxpbmtzLnJlZHVjZShcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgIChyZXN1bHQsIGl0ZW06IEV1aU1lbnVJdGVtIHwgYW55KSA9PiBbXG4gICAgICAgICAgICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVybmF0ZVNhbXBsZUxvY2F0aW9uOiBpdGVtLmFsdGVybmF0ZVNhbXBsZUxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5mbGF0dGVuKGl0ZW0uY2hpbGRyZW4pLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZENvZGVGaWxlcygpOiBPYnNlcnZhYmxlPFJlc3BvbnNlIHwgeyB0eXBlc2NyaXB0OiBzdHJpbmcsIGh0bWw6IHN0cmluZyB9PiB7XG4gICAgICAgIHRoaXMuaXNDb2RlTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uO1xuICAgICAgICBjb25zdCBwYXRoTmFtZSA9IHVybC5wYXRobmFtZTtcbiAgICAgICAgY29uc3QgcGF0aE5hbWVBcnJheSA9IHBhdGhOYW1lLnNwbGl0KCcvJyk7XG5cbiAgICAgICAgbGV0IHNhbXBsZVBhdGhBcnJheSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IGNtcElkID0gcGF0aE5hbWVBcnJheVtwYXRoTmFtZUFycmF5Lmxlbmd0aCAtIDFdO1xuICAgICAgICBjb25zdCBjbXAgPSB0aGlzLl9nZXRDb21wb25lbnQoY21wSWQpO1xuXG4gICAgICAgIGlmIChjbXAgJiYgY21wLmFsdGVybmF0ZVNhbXBsZUxvY2F0aW9uKSB7XG4gICAgICAgICAgICBzYW1wbGVQYXRoQXJyYXkgPSBjbXAuYWx0ZXJuYXRlU2FtcGxlTG9jYXRpb24uc3BsaXQoJy8nKS5yZXZlcnNlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gcGF0aE5hbWVBcnJheS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGlmIChwYXRoTmFtZUFycmF5W2ldLmluZGV4T2YoJ2V1aS1zaG93Y2FzZS0nKSA+IC0xIHx8IHBhdGhOYW1lQXJyYXlbaV0uaW5kZXhPZignbG9jYWxob3N0JykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBhdGhOYW1lQXJyYXlbaV0gIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHNhbXBsZVBhdGhBcnJheS5wdXNoKHBhdGhOYW1lQXJyYXlbaV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNhbXBsZVBhdGhBcnJheSA9IHNhbXBsZVBhdGhBcnJheS5yZXZlcnNlKCk7XG4gICAgICAgIHNhbXBsZVBhdGhBcnJheS5wdXNoKCdzYW1wbGVzJyk7XG4gICAgICAgIHNhbXBsZVBhdGhBcnJheS5wdXNoKHRoaXMuaWQpO1xuXG4gICAgICAgIGNvbnN0IHNhbXBsZXNQYXRoID0gYGFzc2V0cy9zYW1wbGVzLyR7c2FtcGxlUGF0aEFycmF5LmpvaW4oJy8nKX1gO1xuXG4gICAgICAgIHJldHVybiBmb3JrSm9pbih7XG4gICAgICAgICAgICB0eXBlc2NyaXB0OiB0aGlzLl9odHRwLmdldChgJHtzYW1wbGVzUGF0aH0vY29tcG9uZW50LnRzYCwge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBodG1sOiB0aGlzLl9odHRwLmdldChgJHtzYW1wbGVzUGF0aH0vY29tcG9uZW50Lmh0bWxgLCB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2VzOiB7IHR5cGVzY3JpcHQ6IHN0cmluZzsgaHRtbDogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvZGVMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29kZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZXNjcmlwdDogcmVzcG9uc2VzLnR5cGVzY3JpcHQsIGh0bWw6IHJlc3BvbnNlcy5odG1sIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xTZXJ2aWNlLmdyb3dsRXJyb3IoYElzc3VlIHdoaWxlIGZldGNoaW5nIDogJHtlcnJvci51cmx9IDogJHtlcnJvci5zdGF0dXN9LSR7ZXJyb3Iuc3RhdHVzVGV4dH1gKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8UmVzcG9uc2U+KChzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPFJlc3BvbnNlPikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRvYy1zYW1wbGUtdGl0bGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZG9jLXNhbXBsZS10aXRsZV9fbGFiZWxcIiBbY2xhc3MuZG9jLXNhbXBsZS10aXRsZV9fbGFiZWwtLWlubmVyXT1cImlzSW5uZXJTZWN0aW9uXCI+XG4gICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgZXVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgICAgIGV1aVJvdW5kZWRcbiAgICAgICAgICAgIGV1aVByaW1hcnlcbiAgICAgICAgICAgIGV1aVNpemVTXG4gICAgICAgICAgICAoY2xpY2spPVwiY29weUN1cnJlbnRVcmxUb0NsaXBib2FyZChpZClcIlxuICAgICAgICAgICAgY2xhc3M9XCJkb2Mtc2FtcGxlLXRpdGxlX19saW5rXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImxpbmtcIiBzZXQ9XCJvdXRsaW5lXCIgc2l6ZT1cImxcIiBmaWxsQ29sb3I9XCJncmV5LTc1XCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJyZW5kZXJQbGF5Z3JvdW5kXCIgY2xhc3M9XCJkb2Mtc2FtcGxlLXRpdGxlX19pdGVtc1wiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAzcHhcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJpc0NvZGVCdXR0b25WaXNpYmxlXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICBbZXVpT3V0bGluZV09XCIhaXNDb2RlRXhwYW5kZWRcIlxuICAgICAgICAgICAgZXVpUHJpbWFyeVxuICAgICAgICAgICAgZXVpU2l6ZVNcbiAgICAgICAgICAgIChjbGljayk9XCJvblN0YWNrYmxpdHpPcGVuKClcIj5cbiAgICAgICAgICAgIDxzcGFuIGV1aUxhYmVsPlN0YWNrYmxpdHo8L3NwYW4+XG4gICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJleHBhbmQ6c2hhcnBcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImRvYy1zYW1wbGUtdGl0bGVfX2l0ZW1zXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiaXNDb2RlQnV0dG9uVmlzaWJsZVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgW2V1aU91dGxpbmVdPVwiIWlzQ29kZUV4cGFuZGVkXCJcbiAgICAgICAgICAgIGV1aVByaW1hcnlcbiAgICAgICAgICAgIGV1aVNpemVTXG4gICAgICAgICAgICAoY2xpY2spPVwib25Ub2dnbGVDb2RlKClcIlxuICAgICAgICAgICAgW2V1aURpc2FibGVkXT1cImlzQ29kZUxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxldWktaWNvbi1zdmcgKm5nSWY9XCJpc0NvZGVMb2FkaW5nXCIgaXNMb2FkaW5nPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNDb2RlRXhwYW5kZWRcIiBldWlMYWJlbD5Db2RlPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0NvZGVFeHBhbmRlZFwiIGV1aUxhYmVsPkhpZGUgQ29kZTwvc3Bhbj5cbiAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1jb2RlXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSBbbmdJZl09XCJpc0NvZGVFeHBhbmRlZFwiPlxuICAgIDxldWktY2FyZCBldWlOb0NvbnRlbnRQYWRkaW5nPlxuICAgICAgICA8ZXVpLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxldWktdGFicyAodGFiU2VsZWN0KT1cIm9uU2VsZWN0ZWRUYWIoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxldWktdGFiIFtpc1Zpc2libGVdPVwiaHRtbENvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgSFRNTFxuICAgICAgICAgICAgICAgICAgICAgICAgPGV1aVRhYlN1YkxhYmVsPkh5cGVyVGV4dCBNYXJrdXAgTGFuZ3VhZ2U8L2V1aVRhYlN1YkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2V1aVRhYkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGUgY2xhc3M9XCJsYW5ndWFnZS1tYXJrdXBcIiBldWlDb2RlPnt7aHRtbENvbnRlbnR9fTwvY29kZT48L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgIDwvZXVpLXRhYj5cbiAgICAgICAgICAgICAgICA8ZXVpLXRhYiBbaXNWaXNpYmxlXT1cInRzQ29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICBUU1xuICAgICAgICAgICAgICAgICAgICAgICAgPGV1aVRhYlN1YkxhYmVsPlR5cGVzY3JpcHQ8L2V1aVRhYlN1YkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2V1aVRhYkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGUgY2xhc3M9XCJsYW5ndWFnZS1qYXZhc2NyaXB0XCIgZXVpQ29kZT57e2ZpbHRlck91dE1vZHVsZUFuZEltcG9ydHModHNDb250ZW50KX19PC9jb2RlPjwvcHJlPlxuICAgICAgICAgICAgICAgICAgICA8L2V1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPC9ldWktdGFiPlxuICAgICAgICAgICAgPC9ldWktdGFicz5cbiAgICAgICAgPC9ldWktY2FyZC1jb250ZW50PlxuICAgIDwvZXVpLWNhcmQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
|