@skyux/docs-tools 11.2.1 → 12.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -132
- package/css/styles.css +35 -0
- package/fesm2022/skyux-docs-tools.mjs +1617 -3171
- package/fesm2022/skyux-docs-tools.mjs.map +1 -1
- package/index.d.ts +32 -5
- package/lib/modules/category-tag/category-color.d.ts +6 -0
- package/lib/modules/category-tag/category-tag.component.d.ts +10 -0
- package/lib/modules/category-tag/category-tag.module.d.ts +10 -0
- package/lib/modules/clipboard/clipboard-button.directive.d.ts +12 -0
- package/lib/modules/clipboard/clipboard.module.d.ts +10 -0
- package/lib/modules/clipboard/clipboard.service.d.ts +15 -0
- package/lib/modules/code-example-viewer/code-example-viewer.component.d.ts +23 -0
- package/lib/modules/code-example-viewer/code-example-viewer.module.d.ts +10 -0
- package/lib/modules/code-example-viewer/stackblitz-launch-config.d.ts +10 -0
- package/lib/modules/code-example-viewer/stackblitz.service.d.ts +11 -0
- package/lib/modules/code-highlight/code-highlight-language.d.ts +12 -0
- package/lib/modules/code-highlight/code-highlight.pipe.d.ts +12 -0
- package/lib/modules/code-highlight/code-highlight.service.d.ts +11 -0
- package/lib/modules/code-snippet/code-snippet-toolbar.component.d.ts +9 -0
- package/lib/modules/code-snippet/code-snippet-wrapper.component.d.ts +12 -0
- package/lib/modules/code-snippet/code-snippet.component.d.ts +16 -0
- package/lib/modules/code-snippet/code-snippet.module.d.ts +11 -0
- package/lib/modules/heading-anchor/heading-anchor-heading-level.d.ts +4 -0
- package/lib/modules/heading-anchor/heading-anchor-heading-text-format.d.ts +4 -0
- package/lib/modules/heading-anchor/heading-anchor-link.d.ts +12 -0
- package/lib/modules/heading-anchor/heading-anchor.component.d.ts +24 -0
- package/{modules → lib/modules}/heading-anchor/heading-anchor.module.d.ts +4 -4
- package/lib/modules/heading-anchor/heading-anchor.service.d.ts +16 -0
- package/{modules → lib/modules}/shared/sky-docs-tools-resources.module.d.ts +0 -4
- package/lib/modules/showcase/code-example-types/code-example-types-token.d.ts +9 -0
- package/lib/modules/showcase/code-example-types/code-example-types.pipe.d.ts +11 -0
- package/lib/modules/showcase/code-example-types/provide-code-example-types.d.ts +14 -0
- package/lib/modules/showcase/showcase-area-development.component.d.ts +11 -0
- package/lib/modules/showcase/showcase-area-examples.component.d.ts +11 -0
- package/lib/modules/showcase/showcase-area-overview.component.d.ts +9 -0
- package/lib/modules/showcase/showcase-area-testing.component.d.ts +11 -0
- package/lib/modules/showcase/showcase-host.service.d.ts +15 -0
- package/lib/modules/showcase/showcase.component.d.ts +19 -0
- package/lib/modules/showcase/showcase.module.d.ts +14 -0
- package/lib/modules/table-of-contents/table-of-contents-links.d.ts +7 -0
- package/lib/modules/table-of-contents/table-of-contents-page.component.d.ts +15 -0
- package/lib/modules/table-of-contents/table-of-contents.component.d.ts +11 -0
- package/lib/modules/table-of-contents/table-of-contents.module.d.ts +11 -0
- package/lib/modules/type-definition/box.component.d.ts +12 -0
- package/lib/modules/type-definition/deprecation-reason.component.d.ts +9 -0
- package/lib/modules/type-definition/description.component.d.ts +10 -0
- package/lib/modules/type-definition/pipes/default-value.pipe.d.ts +11 -0
- package/lib/modules/type-definition/pipes/enum-signature.pipe.d.ts +11 -0
- package/lib/modules/type-definition/pipes/escape-html.pipe.d.ts +10 -0
- package/lib/modules/type-definition/pipes/function-signature.pipe.d.ts +12 -0
- package/lib/modules/type-definition/pipes/interface-signature.pipe.d.ts +11 -0
- package/{modules/markdown → lib/modules/type-definition/pipes}/markdown.pipe.d.ts +5 -2
- package/lib/modules/type-definition/pipes/method-name.pipe.d.ts +12 -0
- package/lib/modules/type-definition/pipes/parameter-name.pipe.d.ts +11 -0
- package/lib/modules/type-definition/pipes/property-name.pipe.d.ts +12 -0
- package/lib/modules/type-definition/pipes/type-alias-signature.pipe.d.ts +11 -0
- package/lib/modules/type-definition/pipes/type-anchor-links.pipe.d.ts +14 -0
- package/lib/modules/type-definition/pipes/type-definition-kind-to-category-color.pipe.d.ts +12 -0
- package/lib/modules/type-definition/pipes/type-definition-kind-to-label.pipe.d.ts +11 -0
- package/lib/modules/type-definition/property-definition.d.ts +5 -0
- package/lib/modules/type-definition/type-anchor-ids.service.d.ts +14 -0
- package/lib/modules/type-definition/type-definition.component.d.ts +19 -0
- package/lib/modules/type-definition/type-definition.module.d.ts +10 -0
- package/package.json +39 -28
- package/LICENSE +0 -21
- package/css/docs-tools.css +0 -70
- package/docs-tools.module.d.ts +0 -14
- package/esm2022/docs-tools.module.mjs +0 -36
- package/esm2022/modules/anatomy/anatomy-item.component.mjs +0 -17
- package/esm2022/modules/anatomy/anatomy-thumbnail.component.mjs +0 -27
- package/esm2022/modules/anatomy/anatomy.component.mjs +0 -25
- package/esm2022/modules/anatomy/anatomy.module.mjs +0 -46
- package/esm2022/modules/code-examples/code-example-module-dependencies.mjs +0 -2
- package/esm2022/modules/code-examples/code-example-theme.mjs +0 -6
- package/esm2022/modules/code-examples/code-example.component.mjs +0 -68
- package/esm2022/modules/code-examples/code-example.mjs +0 -2
- package/esm2022/modules/code-examples/code-examples-editor.service.mjs +0 -368
- package/esm2022/modules/code-examples/code-examples.component.mjs +0 -98
- package/esm2022/modules/code-examples/code-examples.module.mjs +0 -41
- package/esm2022/modules/demo/demo-content-alignment.mjs +0 -2
- package/esm2022/modules/demo/demo-control-panel-change.mjs +0 -2
- package/esm2022/modules/demo/demo-control-panel-checkbox.component.mjs +0 -84
- package/esm2022/modules/demo/demo-control-panel-radio-choice.mjs +0 -2
- package/esm2022/modules/demo/demo-control-panel-radio-group.component.mjs +0 -80
- package/esm2022/modules/demo/demo-control-panel-section.component.mjs +0 -22
- package/esm2022/modules/demo/demo-control-panel.component.mjs +0 -85
- package/esm2022/modules/demo/demo-custom-control-panel.component.mjs +0 -20
- package/esm2022/modules/demo/demo.component.mjs +0 -58
- package/esm2022/modules/demo/demo.module.mjs +0 -72
- package/esm2022/modules/demo-page/demo-page-dom-adapter.service.mjs +0 -75
- package/esm2022/modules/demo-page/demo-page-module-info.component.mjs +0 -14
- package/esm2022/modules/demo-page/demo-page-section.component.mjs +0 -43
- package/esm2022/modules/demo-page/demo-page-summary.component.mjs +0 -21
- package/esm2022/modules/demo-page/demo-page-title.service.mjs +0 -28
- package/esm2022/modules/demo-page/demo-page-type-definitions.component.mjs +0 -24
- package/esm2022/modules/demo-page/demo-page.component.mjs +0 -190
- package/esm2022/modules/demo-page/demo-page.module.mjs +0 -94
- package/esm2022/modules/design-guidelines/design-guideline-thumbnail.component.mjs +0 -27
- package/esm2022/modules/design-guidelines/design-guideline.component.mjs +0 -33
- package/esm2022/modules/design-guidelines/design-guidelines.component.mjs +0 -11
- package/esm2022/modules/design-guidelines/design-guidelines.module.mjs +0 -34
- package/esm2022/modules/heading-anchor/heading-anchor.component.mjs +0 -21
- package/esm2022/modules/heading-anchor/heading-anchor.module.mjs +0 -20
- package/esm2022/modules/markdown/markdown.module.mjs +0 -17
- package/esm2022/modules/markdown/markdown.pipe.mjs +0 -20
- package/esm2022/modules/module-info/module-info.component.mjs +0 -72
- package/esm2022/modules/module-info/module-info.module.mjs +0 -40
- package/esm2022/modules/safe-html/safe-html.component.mjs +0 -20
- package/esm2022/modules/safe-html/safe-html.module.mjs +0 -18
- package/esm2022/modules/shared/docs-tools-component-info.mjs +0 -2
- package/esm2022/modules/shared/docs-tools-options.mjs +0 -3
- package/esm2022/modules/shared/docs-tools-site-options.mjs +0 -3
- package/esm2022/modules/shared/docs-tools-supportal.service.mjs +0 -23
- package/esm2022/modules/shared/sky-docs-tools-resources.module.mjs +0 -55
- package/esm2022/modules/source-code/source-code-file.mjs +0 -2
- package/esm2022/modules/source-code/source-code-provider.mjs +0 -13
- package/esm2022/modules/source-code/source-code.service.mjs +0 -42
- package/esm2022/modules/thumbnail/thumbnail.component.mjs +0 -28
- package/esm2022/modules/thumbnail/thumbnail.module.mjs +0 -19
- package/esm2022/modules/type-definitions/anchor-link-service-config.mjs +0 -2
- package/esm2022/modules/type-definitions/anchor-link-service-format.mjs +0 -2
- package/esm2022/modules/type-definitions/anchor-link.mjs +0 -2
- package/esm2022/modules/type-definitions/anchor-link.service.mjs +0 -106
- package/esm2022/modules/type-definitions/call-signature-definition.component.mjs +0 -45
- package/esm2022/modules/type-definitions/call-signature-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/class-definition.component.mjs +0 -20
- package/esm2022/modules/type-definitions/class-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/comment-tags.mjs +0 -2
- package/esm2022/modules/type-definitions/directive-definition.component.mjs +0 -20
- package/esm2022/modules/type-definitions/directive-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/entry-child-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/entry-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/enumeration-definition.component.mjs +0 -19
- package/esm2022/modules/type-definitions/enumeration-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/enumeration-member-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/index-signature-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/interface-definition.component.mjs +0 -36
- package/esm2022/modules/type-definitions/interface-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/interface-property-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/method-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/method-definitions.component.mjs +0 -72
- package/esm2022/modules/type-definitions/parameter-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/pipe-definition.component.mjs +0 -20
- package/esm2022/modules/type-definitions/pipe-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/preview-feature-indicator.component.mjs +0 -13
- package/esm2022/modules/type-definitions/property-decorator.mjs +0 -2
- package/esm2022/modules/type-definitions/property-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/property-definitions.component.mjs +0 -66
- package/esm2022/modules/type-definitions/type-alias-definition.component.mjs +0 -37
- package/esm2022/modules/type-definitions/type-alias-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/type-anchor-links.pipe.mjs +0 -27
- package/esm2022/modules/type-definitions/type-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/type-definitions-format.service.mjs +0 -254
- package/esm2022/modules/type-definitions/type-definitions-provider.mjs +0 -10
- package/esm2022/modules/type-definitions/type-definitions.mjs +0 -2
- package/esm2022/modules/type-definitions/type-definitions.module.mjs +0 -108
- package/esm2022/modules/type-definitions/type-definitions.service.mjs +0 -122
- package/esm2022/modules/type-definitions/type-parameter-definition.mjs +0 -2
- package/esm2022/modules/type-definitions/typedoc-adapter.service.mjs +0 -614
- package/esm2022/modules/type-definitions/typedoc-types.mjs +0 -32
- package/esm2022/public-api.mjs +0 -69
- package/esm2022/skyux-docs-tools.mjs +0 -5
- package/modules/anatomy/anatomy-item.component.d.ts +0 -7
- package/modules/anatomy/anatomy-thumbnail.component.d.ts +0 -11
- package/modules/anatomy/anatomy.component.d.ts +0 -9
- package/modules/anatomy/anatomy.module.d.ts +0 -13
- package/modules/code-examples/code-example-module-dependencies.d.ts +0 -6
- package/modules/code-examples/code-example-theme.d.ts +0 -4
- package/modules/code-examples/code-example.component.d.ts +0 -39
- package/modules/code-examples/code-example.d.ts +0 -13
- package/modules/code-examples/code-examples-editor.service.d.ts +0 -18
- package/modules/code-examples/code-examples.component.d.ts +0 -45
- package/modules/code-examples/code-examples.module.d.ts +0 -14
- package/modules/demo/demo-content-alignment.d.ts +0 -1
- package/modules/demo/demo-control-panel-change.d.ts +0 -9
- package/modules/demo/demo-control-panel-checkbox.component.d.ts +0 -63
- package/modules/demo/demo-control-panel-radio-choice.d.ts +0 -13
- package/modules/demo/demo-control-panel-radio-group.component.d.ts +0 -64
- package/modules/demo/demo-control-panel-section.component.d.ts +0 -16
- package/modules/demo/demo-control-panel.component.d.ts +0 -34
- package/modules/demo/demo-custom-control-panel.component.d.ts +0 -9
- package/modules/demo/demo.component.d.ts +0 -32
- package/modules/demo/demo.module.d.ts +0 -18
- package/modules/demo-page/demo-page-dom-adapter.service.d.ts +0 -24
- package/modules/demo-page/demo-page-module-info.component.d.ts +0 -5
- package/modules/demo-page/demo-page-section.component.d.ts +0 -22
- package/modules/demo-page/demo-page-summary.component.d.ts +0 -15
- package/modules/demo-page/demo-page-title.service.d.ts +0 -12
- package/modules/demo-page/demo-page-type-definitions.component.d.ts +0 -10
- package/modules/demo-page/demo-page.component.d.ts +0 -112
- package/modules/demo-page/demo-page.module.d.ts +0 -23
- package/modules/design-guidelines/design-guideline-thumbnail.component.d.ts +0 -11
- package/modules/design-guidelines/design-guideline.component.d.ts +0 -12
- package/modules/design-guidelines/design-guidelines.component.d.ts +0 -5
- package/modules/design-guidelines/design-guidelines.module.d.ts +0 -12
- package/modules/heading-anchor/heading-anchor.component.d.ts +0 -7
- package/modules/markdown/markdown.module.d.ts +0 -7
- package/modules/module-info/module-info.component.d.ts +0 -21
- package/modules/module-info/module-info.module.d.ts +0 -13
- package/modules/safe-html/safe-html.component.d.ts +0 -10
- package/modules/safe-html/safe-html.module.d.ts +0 -8
- package/modules/shared/docs-tools-component-info.d.ts +0 -13
- package/modules/shared/docs-tools-options.d.ts +0 -4
- package/modules/shared/docs-tools-site-options.d.ts +0 -3
- package/modules/shared/docs-tools-supportal.service.d.ts +0 -11
- package/modules/source-code/source-code-file.d.ts +0 -5
- package/modules/source-code/source-code-provider.d.ts +0 -6
- package/modules/source-code/source-code.service.d.ts +0 -10
- package/modules/thumbnail/thumbnail.component.d.ts +0 -11
- package/modules/thumbnail/thumbnail.module.d.ts +0 -9
- package/modules/type-definitions/anchor-link-service-config.d.ts +0 -6
- package/modules/type-definitions/anchor-link-service-format.d.ts +0 -4
- package/modules/type-definitions/anchor-link.d.ts +0 -3
- package/modules/type-definitions/anchor-link.service.d.ts +0 -24
- package/modules/type-definitions/call-signature-definition.component.d.ts +0 -26
- package/modules/type-definitions/call-signature-definition.d.ts +0 -9
- package/modules/type-definitions/class-definition.component.d.ts +0 -7
- package/modules/type-definitions/class-definition.d.ts +0 -11
- package/modules/type-definitions/comment-tags.d.ts +0 -14
- package/modules/type-definitions/directive-definition.component.d.ts +0 -7
- package/modules/type-definitions/directive-definition.d.ts +0 -11
- package/modules/type-definitions/entry-child-definition.d.ts +0 -13
- package/modules/type-definitions/entry-definition.d.ts +0 -12
- package/modules/type-definitions/enumeration-definition.component.d.ts +0 -7
- package/modules/type-definitions/enumeration-definition.d.ts +0 -9
- package/modules/type-definitions/enumeration-member-definition.d.ts +0 -11
- package/modules/type-definitions/index-signature-definition.d.ts +0 -11
- package/modules/type-definitions/interface-definition.component.d.ts +0 -14
- package/modules/type-definitions/interface-definition.d.ts +0 -11
- package/modules/type-definitions/interface-property-definition.d.ts +0 -8
- package/modules/type-definitions/method-definition.d.ts +0 -11
- package/modules/type-definitions/method-definitions.component.d.ts +0 -36
- package/modules/type-definitions/parameter-definition.d.ts +0 -12
- package/modules/type-definitions/pipe-definition.component.d.ts +0 -7
- package/modules/type-definitions/pipe-definition.d.ts +0 -8
- package/modules/type-definitions/preview-feature-indicator.component.d.ts +0 -5
- package/modules/type-definitions/property-decorator.d.ts +0 -6
- package/modules/type-definitions/property-definition.d.ts +0 -11
- package/modules/type-definitions/property-definitions.component.d.ts +0 -39
- package/modules/type-definitions/type-alias-definition.component.d.ts +0 -14
- package/modules/type-definitions/type-alias-definition.d.ts +0 -11
- package/modules/type-definitions/type-anchor-links.pipe.d.ts +0 -14
- package/modules/type-definitions/type-definition.d.ts +0 -36
- package/modules/type-definitions/type-definitions-format.service.d.ts +0 -55
- package/modules/type-definitions/type-definitions-provider.d.ts +0 -10
- package/modules/type-definitions/type-definitions.d.ts +0 -20
- package/modules/type-definitions/type-definitions.module.d.ts +0 -26
- package/modules/type-definitions/type-definitions.service.d.ts +0 -20
- package/modules/type-definitions/type-parameter-definition.d.ts +0 -8
- package/modules/type-definitions/typedoc-adapter.service.d.ts +0 -49
- package/modules/type-definitions/typedoc-types.d.ts +0 -142
- package/public-api.d.ts +0 -66
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input, Optional, } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { takeUntil } from 'rxjs/operators';
|
|
4
|
-
import { SkyDocsCodeExampleTheme } from './code-example-theme';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@skyux/theme";
|
|
7
|
-
/**
|
|
8
|
-
* Renders a single code example.
|
|
9
|
-
* @example
|
|
10
|
-
* ```
|
|
11
|
-
* <sky-docs-code-example
|
|
12
|
-
* heading="My code example"
|
|
13
|
-
* sourceCodePath="src/app/public/plugin-resources/foobar"
|
|
14
|
-
* >
|
|
15
|
-
* </sky-docs-code-example>
|
|
16
|
-
* ```
|
|
17
|
-
*/
|
|
18
|
-
export class SkyDocsCodeExampleComponent {
|
|
19
|
-
/**
|
|
20
|
-
* Specifies if the editor service should show the example in modern theme.
|
|
21
|
-
* The value will be gleaned from `SkyThemeService` first, then fallback to 'default' if the service is not found.
|
|
22
|
-
*/
|
|
23
|
-
set theme(value) {
|
|
24
|
-
this._theme = value;
|
|
25
|
-
}
|
|
26
|
-
get theme() {
|
|
27
|
-
return this._theme || SkyDocsCodeExampleTheme.Default;
|
|
28
|
-
}
|
|
29
|
-
constructor(themeSvc) {
|
|
30
|
-
this.ngUnsubscribe = new Subject();
|
|
31
|
-
// Update theme property with SkyThemeService if it has not been set.
|
|
32
|
-
if (!this._theme && themeSvc) {
|
|
33
|
-
themeSvc.settingsChange
|
|
34
|
-
.pipe(takeUntil(this.ngUnsubscribe))
|
|
35
|
-
.subscribe((change) => {
|
|
36
|
-
if (change.currentSettings.theme.name === 'modern') {
|
|
37
|
-
this.theme = SkyDocsCodeExampleTheme.Modern;
|
|
38
|
-
}
|
|
39
|
-
else if (change.currentSettings.theme.name === 'default') {
|
|
40
|
-
this.theme = SkyDocsCodeExampleTheme.Default;
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
ngOnDestroy() {
|
|
46
|
-
this.ngUnsubscribe.next();
|
|
47
|
-
this.ngUnsubscribe.complete();
|
|
48
|
-
}
|
|
49
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SkyDocsCodeExampleComponent, deps: [{ token: i1.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: SkyDocsCodeExampleComponent, selector: "sky-docs-code-example", inputs: { heading: "heading", sourceCodePath: "sourceCodePath", theme: "theme" }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
51
|
-
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SkyDocsCodeExampleComponent, decorators: [{
|
|
53
|
-
type: Component,
|
|
54
|
-
args: [{
|
|
55
|
-
selector: 'sky-docs-code-example',
|
|
56
|
-
template: '',
|
|
57
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
58
|
-
}]
|
|
59
|
-
}], ctorParameters: () => [{ type: i1.SkyThemeService, decorators: [{
|
|
60
|
-
type: Optional
|
|
61
|
-
}] }], propDecorators: { heading: [{
|
|
62
|
-
type: Input
|
|
63
|
-
}], sourceCodePath: [{
|
|
64
|
-
type: Input
|
|
65
|
-
}], theme: [{
|
|
66
|
-
type: Input
|
|
67
|
-
}] } });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1leGFtcGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RvY3MtdG9vbHMvc3JjL21vZHVsZXMvY29kZS1leGFtcGxlcy9jb2RlLWV4YW1wbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFFTCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUUvRDs7Ozs7Ozs7OztHQVVHO0FBTUgsTUFBTSxPQUFPLDJCQUEyQjtJQWV0Qzs7O09BR0c7SUFDSCxJQUNXLEtBQUssQ0FBQyxLQUE4QjtRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLHVCQUF1QixDQUFDLE9BQU8sQ0FBQztJQUN4RCxDQUFDO0lBTUQsWUFBd0IsUUFBMEI7UUFKMUMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBSzFDLHFFQUFxRTtRQUNyRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUM3QixRQUFRLENBQUMsY0FBYztpQkFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ25DLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNwQixJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDbkQsSUFBSSxDQUFDLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLENBQUM7Z0JBQzlDLENBQUM7cUJBQU0sSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQzNELElBQUksQ0FBQyxLQUFLLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDO2dCQUMvQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7K0dBbERVLDJCQUEyQjttR0FBM0IsMkJBQTJCLCtJQUg1QixFQUFFOzs0RkFHRCwyQkFBMkI7a0JBTHZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzswQkFpQ2MsUUFBUTt5Q0ExQmQsT0FBTztzQkFEYixLQUFLO2dCQVFDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBUUssS0FBSztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5RG9jc0NvZGVFeGFtcGxlVGhlbWUgfSBmcm9tICcuL2NvZGUtZXhhbXBsZS10aGVtZSc7XG5cbi8qKlxuICogUmVuZGVycyBhIHNpbmdsZSBjb2RlIGV4YW1wbGUuXG4gKiBAZXhhbXBsZVxuICogYGBgXG4gKiA8c2t5LWRvY3MtY29kZS1leGFtcGxlXG4gKiAgIGhlYWRpbmc9XCJNeSBjb2RlIGV4YW1wbGVcIlxuICogICBzb3VyY2VDb2RlUGF0aD1cInNyYy9hcHAvcHVibGljL3BsdWdpbi1yZXNvdXJjZXMvZm9vYmFyXCJcbiAqID5cbiAqIDwvc2t5LWRvY3MtY29kZS1leGFtcGxlPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kb2NzLWNvZGUtZXhhbXBsZScsXG4gIHRlbXBsYXRlOiAnJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreURvY3NDb2RlRXhhbXBsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBUaGUgaGVhZGluZyB0byBiZSB1c2VkIGZvciB0aGUgY29kZSBleGFtcGxlLlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWFkaW5nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbG9jYWwgcGF0aCB0byB0aGUgY29kZSBleGFtcGxlJ3Mgc291cmNlIGNvZGUuIFRoZSB2YWx1ZSBpcyByZWxhdGl2ZSB0byB0aGUgcm9vdCBkaXJlY3RvcnkuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNvdXJjZUNvZGVQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBpZiB0aGUgZWRpdG9yIHNlcnZpY2Ugc2hvdWxkIHNob3cgdGhlIGV4YW1wbGUgaW4gbW9kZXJuIHRoZW1lLlxuICAgKiBUaGUgdmFsdWUgd2lsbCBiZSBnbGVhbmVkIGZyb20gYFNreVRoZW1lU2VydmljZWAgZmlyc3QsIHRoZW4gZmFsbGJhY2sgdG8gJ2RlZmF1bHQnIGlmIHRoZSBzZXJ2aWNlIGlzIG5vdCBmb3VuZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGhlbWUodmFsdWU6IFNreURvY3NDb2RlRXhhbXBsZVRoZW1lKSB7XG4gICAgdGhpcy5fdGhlbWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGhlbWUoKTogU2t5RG9jc0NvZGVFeGFtcGxlVGhlbWUge1xuICAgIHJldHVybiB0aGlzLl90aGVtZSB8fCBTa3lEb2NzQ29kZUV4YW1wbGVUaGVtZS5EZWZhdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF90aGVtZTogU2t5RG9jc0NvZGVFeGFtcGxlVGhlbWU7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2UpIHtcbiAgICAvLyBVcGRhdGUgdGhlbWUgcHJvcGVydHkgd2l0aCBTa3lUaGVtZVNlcnZpY2UgaWYgaXQgaGFzIG5vdCBiZWVuIHNldC5cbiAgICBpZiAoIXRoaXMuX3RoZW1lICYmIHRoZW1lU3ZjKSB7XG4gICAgICB0aGVtZVN2Yy5zZXR0aW5nc0NoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgaWYgKGNoYW5nZS5jdXJyZW50U2V0dGluZ3MudGhlbWUubmFtZSA9PT0gJ21vZGVybicpIHtcbiAgICAgICAgICAgIHRoaXMudGhlbWUgPSBTa3lEb2NzQ29kZUV4YW1wbGVUaGVtZS5Nb2Rlcm47XG4gICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuY3VycmVudFNldHRpbmdzLnRoZW1lLm5hbWUgPT09ICdkZWZhdWx0Jykge1xuICAgICAgICAgICAgdGhpcy50aGVtZSA9IFNreURvY3NDb2RlRXhhbXBsZVRoZW1lLkRlZmF1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1leGFtcGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9jcy10b29scy9zcmMvbW9kdWxlcy9jb2RlLWV4YW1wbGVzL2NvZGUtZXhhbXBsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5RG9jc1NvdXJjZUNvZGVGaWxlIH0gZnJvbSAnLi4vc291cmNlLWNvZGUvc291cmNlLWNvZGUtZmlsZSc7XG5cbmltcG9ydCB7IFNreURvY3NDb2RlRXhhbXBsZU1vZHVsZURlcGVuZGVuY2llcyB9IGZyb20gJy4vY29kZS1leGFtcGxlLW1vZHVsZS1kZXBlbmRlbmNpZXMnO1xuXG5pbXBvcnQgeyBTa3lEb2NzQ29kZUV4YW1wbGVUaGVtZSB9IGZyb20gJy4vY29kZS1leGFtcGxlLXRoZW1lJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lEb2NzQ29kZUV4YW1wbGUge1xuICBoZWFkaW5nOiBzdHJpbmc7XG5cbiAgcGFja2FnZURlcGVuZGVuY2llczogU2t5RG9jc0NvZGVFeGFtcGxlTW9kdWxlRGVwZW5kZW5jaWVzO1xuXG4gIHNvdXJjZUNvZGU6IFNreURvY3NTb3VyY2VDb2RlRmlsZVtdO1xuXG4gIHRoZW1lOiBTa3lEb2NzQ29kZUV4YW1wbGVUaGVtZTtcblxuICBzdHlsZXNoZWV0cz86IHN0cmluZ1tdO1xufVxuIl19
|
|
@@ -1,368 +0,0 @@
|
|
|
1
|
-
import { VERSION as ANGULAR_VERSION, Injectable } from '@angular/core';
|
|
2
|
-
import { VERSION as SKY_UX_VERSION } from '@skyux/core';
|
|
3
|
-
import { VERSION as SKY_UX_ICONS_VERSION } from '@skyux/icons';
|
|
4
|
-
import StackBlitzSDK from '@stackblitz/sdk';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
/**
|
|
7
|
-
* @internal
|
|
8
|
-
*/
|
|
9
|
-
export class SkyDocsCodeExamplesEditorService {
|
|
10
|
-
launchEditor(codeExample, template = 'angular-cli') {
|
|
11
|
-
const project = this.#getPayload(codeExample, template);
|
|
12
|
-
const openFile = [];
|
|
13
|
-
if (project.files['src/app/demo.component.html']) {
|
|
14
|
-
openFile.push('src/app/demo.component.html');
|
|
15
|
-
}
|
|
16
|
-
else if (project.files['src/app/demo.component.ts']) {
|
|
17
|
-
openFile.push('src/app/demo.component.ts');
|
|
18
|
-
}
|
|
19
|
-
const options = {
|
|
20
|
-
openFile,
|
|
21
|
-
};
|
|
22
|
-
StackBlitzSDK.openProject(project, options);
|
|
23
|
-
}
|
|
24
|
-
#getPayload(codeExample, template) {
|
|
25
|
-
const angularVersion = `^${ANGULAR_VERSION.major}`;
|
|
26
|
-
const skyuxVersion = `^${SKY_UX_VERSION.full}`;
|
|
27
|
-
const defaultDependencies = {
|
|
28
|
-
'@angular-devkit/build-angular': angularVersion,
|
|
29
|
-
'@angular/animations': angularVersion,
|
|
30
|
-
'@angular/cdk': angularVersion,
|
|
31
|
-
'@angular/cli': angularVersion,
|
|
32
|
-
'@angular/common': angularVersion,
|
|
33
|
-
'@angular/compiler': angularVersion,
|
|
34
|
-
'@angular/compiler-cli': angularVersion,
|
|
35
|
-
'@angular/core': angularVersion,
|
|
36
|
-
'@angular/forms': angularVersion,
|
|
37
|
-
'@angular/platform-browser': angularVersion,
|
|
38
|
-
'@angular/platform-browser-dynamic': angularVersion,
|
|
39
|
-
'@angular/router': angularVersion,
|
|
40
|
-
'@skyux/animations': skyuxVersion,
|
|
41
|
-
'@skyux/assets': skyuxVersion,
|
|
42
|
-
'@skyux/config': skyuxVersion,
|
|
43
|
-
'@skyux/core': skyuxVersion,
|
|
44
|
-
'@skyux/errors': skyuxVersion,
|
|
45
|
-
'@skyux/forms': skyuxVersion,
|
|
46
|
-
'@skyux/help-inline': skyuxVersion,
|
|
47
|
-
'@skyux/i18n': skyuxVersion,
|
|
48
|
-
'@skyux/icon': skyuxVersion,
|
|
49
|
-
'@skyux/indicators': skyuxVersion,
|
|
50
|
-
'@skyux/layout': skyuxVersion,
|
|
51
|
-
'@skyux/modals': skyuxVersion,
|
|
52
|
-
'@skyux/packages': skyuxVersion,
|
|
53
|
-
'@skyux/popovers': skyuxVersion,
|
|
54
|
-
'@skyux/router': skyuxVersion,
|
|
55
|
-
'@skyux/theme': skyuxVersion,
|
|
56
|
-
'@types/jasmine': '~5.1.4',
|
|
57
|
-
'ng2-dragula': '5.1.0',
|
|
58
|
-
rxjs: '^7',
|
|
59
|
-
tslib: '^2.6.2',
|
|
60
|
-
typescript: '~5.5.3',
|
|
61
|
-
'zone.js': '~0.14.4',
|
|
62
|
-
};
|
|
63
|
-
const mergedDependencies = Object.assign({}, defaultDependencies, codeExample.packageDependencies);
|
|
64
|
-
// Ensure any @skyux dependencies list the correct version of SKY UX.
|
|
65
|
-
// e.g. `"@skyux/core": "*"` --> `"@skyux/core": "5.0.0"`
|
|
66
|
-
for (const packageName in mergedDependencies) {
|
|
67
|
-
/*istanbul ignore else*/
|
|
68
|
-
if (mergedDependencies.hasOwnProperty(packageName)) {
|
|
69
|
-
const version = mergedDependencies[packageName];
|
|
70
|
-
if (version === '*' &&
|
|
71
|
-
/^(@blackbaud\/skyux-lib-|@skyux)/.test(packageName)) {
|
|
72
|
-
mergedDependencies[packageName] = skyuxVersion;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
const overrides = template === 'node'
|
|
77
|
-
? {
|
|
78
|
-
'ng2-dragula@5.1.0': {
|
|
79
|
-
'@angular/animations': '>=16.0.0 <19.0.0',
|
|
80
|
-
'@angular/core': '>=16.0.0 <19.0.0',
|
|
81
|
-
'@angular/common': '>=16.0.0 <19.0.0',
|
|
82
|
-
},
|
|
83
|
-
}
|
|
84
|
-
: undefined;
|
|
85
|
-
const files = this.parseStackBlitzFiles(codeExample.sourceCode, mergedDependencies, overrides, {
|
|
86
|
-
target: template === 'node' ? 'ES2022' : 'ES2015',
|
|
87
|
-
}, codeExample.theme, codeExample.stylesheets);
|
|
88
|
-
return {
|
|
89
|
-
files,
|
|
90
|
-
title: 'SKY UX Demo',
|
|
91
|
-
description: 'SKY UX Demo',
|
|
92
|
-
template,
|
|
93
|
-
dependencies: mergedDependencies,
|
|
94
|
-
settings: {
|
|
95
|
-
compile: {
|
|
96
|
-
clearConsole: false,
|
|
97
|
-
},
|
|
98
|
-
},
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
parseStackBlitzFiles(sourceCode, dependencies, overrides, compilerOptions, theme, stylesheets = []) {
|
|
102
|
-
const srcPath = 'src/';
|
|
103
|
-
const appPath = `${srcPath}app/`;
|
|
104
|
-
const banner = `/**
|
|
105
|
-
* This file is needed for the StackBlitz demo only.
|
|
106
|
-
* It is automatically provided when using the Angular CLI.
|
|
107
|
-
**/
|
|
108
|
-
`;
|
|
109
|
-
const moduleImportStatements = [
|
|
110
|
-
`import { FormsModule, ReactiveFormsModule } from '@angular/forms';`,
|
|
111
|
-
];
|
|
112
|
-
const moduleImports = ['FormsModule', 'ReactiveFormsModule'];
|
|
113
|
-
const files = {
|
|
114
|
-
'.stackblitzrc': JSON.stringify({
|
|
115
|
-
env: {
|
|
116
|
-
NG_BUILD_PARALLEL_TS: '0',
|
|
117
|
-
NODE_ENV: 'development',
|
|
118
|
-
},
|
|
119
|
-
}, undefined, 2),
|
|
120
|
-
};
|
|
121
|
-
let appComponentTemplate = '';
|
|
122
|
-
sourceCode.forEach((file) => {
|
|
123
|
-
files[`${appPath}${file.fileName}`] = file.rawContents;
|
|
124
|
-
// Setup module imports and component selectors.
|
|
125
|
-
if (file.fileName.indexOf('.module.ts') > -1) {
|
|
126
|
-
const moduleName = this.getModuleName(file.rawContents);
|
|
127
|
-
const importPath = `./${this.getFilenameNoExtension(file.fileName)}`;
|
|
128
|
-
const exportedComponent = this.getExportedComponent(file.rawContents);
|
|
129
|
-
const componentSelector = this.getComponentSelector(exportedComponent, sourceCode);
|
|
130
|
-
appComponentTemplate += `<${componentSelector}></${componentSelector}>`;
|
|
131
|
-
moduleImports.push(moduleName);
|
|
132
|
-
moduleImportStatements.push(`import { ${moduleName} } from '${importPath}';`);
|
|
133
|
-
}
|
|
134
|
-
// Standalone entry components are named demo.component.ts.
|
|
135
|
-
if (file.fileName === 'demo.component.ts') {
|
|
136
|
-
const componentName = 'DemoComponent';
|
|
137
|
-
const componentSelector = 'app-demo';
|
|
138
|
-
const importPath = `./${this.getFilenameNoExtension(file.fileName)}`;
|
|
139
|
-
appComponentTemplate += `<${componentSelector} />`;
|
|
140
|
-
moduleImports.push(componentName);
|
|
141
|
-
moduleImportStatements.push(`import { ${componentName} } from '${importPath}';`);
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
files[`${appPath}app.component.ts`] = `${banner}
|
|
145
|
-
import { Component, Injectable } from '@angular/core';
|
|
146
|
-
import { SkyHelpOpenArgs, SkyHelpService, SkyHelpUpdateArgs } from '@skyux/core';
|
|
147
|
-
${moduleImportStatements.join('\n\n')}
|
|
148
|
-
|
|
149
|
-
@Injectable()
|
|
150
|
-
/*
|
|
151
|
-
This mocked \`SkyHelpService\` is needed for Stackbliz demos only.
|
|
152
|
-
To properly implement help service see: https://docs.blackbaud.com/bb-help-docs/
|
|
153
|
-
*/
|
|
154
|
-
export class StackblitzOnlyCodeExamplesHelpService extends SkyHelpService {
|
|
155
|
-
public override openHelp(args?: SkyHelpOpenArgs): void {
|
|
156
|
-
if (args) {
|
|
157
|
-
console.log('help key: ' + args.helpKey);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
public override updateHelp(args: SkyHelpUpdateArgs): void {
|
|
162
|
-
if ('helpKey' in args) {
|
|
163
|
-
console.log('help key update: ' + args.helpKey);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
if ('pageDefaultHelpKey' in args) {
|
|
167
|
-
console.log('page default help key update: ' + args.pageDefaultHelpKey);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
@Component({
|
|
173
|
-
selector: 'sky-demo-app',
|
|
174
|
-
template: '${appComponentTemplate}',
|
|
175
|
-
standalone: true,
|
|
176
|
-
imports: [
|
|
177
|
-
${moduleImports.join(',\n ')},
|
|
178
|
-
],
|
|
179
|
-
providers: [
|
|
180
|
-
{provide: SkyHelpService, useClass: StackblitzOnlyCodeExamplesHelpService}
|
|
181
|
-
]
|
|
182
|
-
})
|
|
183
|
-
export class AppComponent {}
|
|
184
|
-
`;
|
|
185
|
-
files[`${srcPath}index.html`] = `<!doctype html>
|
|
186
|
-
<html lang="en">
|
|
187
|
-
<head>
|
|
188
|
-
<meta charset="utf-8">
|
|
189
|
-
<title>Sky UX Demo</title>
|
|
190
|
-
<base href="/">
|
|
191
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
192
|
-
<!--
|
|
193
|
-
The CSS links are needed for the StackBlitz demo only.
|
|
194
|
-
This is a workaround for a known bug that prevents external imports in CSS.
|
|
195
|
-
https://github.com/stackblitz/core/issues/133
|
|
196
|
-
-->
|
|
197
|
-
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" crossorigin="anonymous">
|
|
198
|
-
<link rel="stylesheet" type="text/css" href="https://sky.blackbaudcdn.net/static/skyux-icons/${SKY_UX_ICONS_VERSION.full}/assets/css/skyux-icons.min.css" crossorigin="anonymous">
|
|
199
|
-
</head>
|
|
200
|
-
<body>
|
|
201
|
-
<sky-demo-app>
|
|
202
|
-
Loading...
|
|
203
|
-
</sky-demo-app>
|
|
204
|
-
</body>
|
|
205
|
-
</html>
|
|
206
|
-
`;
|
|
207
|
-
files[`${srcPath}main.ts`] = `${banner}
|
|
208
|
-
import 'zone.js';
|
|
209
|
-
import '@skyux/packages/polyfills';
|
|
210
|
-
|
|
211
|
-
import { bootstrapApplication } from '@angular/platform-browser';
|
|
212
|
-
import { provideAnimations } from '@angular/platform-browser/animations';
|
|
213
|
-
import { provideRouter } from '@angular/router';
|
|
214
|
-
import { provideInitialTheme } from '@skyux/theme';
|
|
215
|
-
|
|
216
|
-
import { AppComponent } from './app/app.component';
|
|
217
|
-
|
|
218
|
-
void bootstrapApplication(AppComponent, {
|
|
219
|
-
providers: [
|
|
220
|
-
provideAnimations(),
|
|
221
|
-
provideInitialTheme('${theme}'),
|
|
222
|
-
provideRouter([]),
|
|
223
|
-
],
|
|
224
|
-
})
|
|
225
|
-
.catch((err) => console.error(err));
|
|
226
|
-
`;
|
|
227
|
-
files[`${srcPath}styles.scss`] = `@import '@skyux/theme/css/sky';
|
|
228
|
-
@import '@skyux/theme/css/themes/modern/styles';
|
|
229
|
-
|
|
230
|
-
body {
|
|
231
|
-
background-color: #fff;
|
|
232
|
-
margin: 15px;
|
|
233
|
-
}
|
|
234
|
-
`;
|
|
235
|
-
stylesheets.push('src/styles.scss');
|
|
236
|
-
files['angular.json'] = JSON.stringify({
|
|
237
|
-
$schema: './node_modules/@angular/cli/lib/config/schema.json',
|
|
238
|
-
version: 1,
|
|
239
|
-
projects: {
|
|
240
|
-
demo: {
|
|
241
|
-
projectType: 'application',
|
|
242
|
-
root: '',
|
|
243
|
-
sourceRoot: 'src',
|
|
244
|
-
prefix: 'app',
|
|
245
|
-
architect: {
|
|
246
|
-
build: {
|
|
247
|
-
builder: '@angular-devkit/build-angular:application',
|
|
248
|
-
options: {
|
|
249
|
-
index: 'src/index.html',
|
|
250
|
-
browser: 'src/main.ts',
|
|
251
|
-
outputPath: 'dist/demo',
|
|
252
|
-
tsConfig: 'tsconfig.app.json',
|
|
253
|
-
inlineStyleLanguage: 'scss',
|
|
254
|
-
styles: stylesheets,
|
|
255
|
-
},
|
|
256
|
-
configurations: {
|
|
257
|
-
development: {
|
|
258
|
-
optimization: false,
|
|
259
|
-
extractLicenses: false,
|
|
260
|
-
sourceMap: true,
|
|
261
|
-
},
|
|
262
|
-
},
|
|
263
|
-
defaultConfiguration: 'development',
|
|
264
|
-
},
|
|
265
|
-
serve: {
|
|
266
|
-
builder: '@angular-devkit/build-angular:dev-server',
|
|
267
|
-
configurations: {
|
|
268
|
-
development: {
|
|
269
|
-
buildTarget: 'demo:build:development',
|
|
270
|
-
},
|
|
271
|
-
},
|
|
272
|
-
defaultConfiguration: 'development',
|
|
273
|
-
},
|
|
274
|
-
},
|
|
275
|
-
},
|
|
276
|
-
},
|
|
277
|
-
}, undefined, 2);
|
|
278
|
-
files['package.json'] = JSON.stringify({
|
|
279
|
-
name: 'skyux-spa-demo',
|
|
280
|
-
version: '0.0.0',
|
|
281
|
-
dependencies,
|
|
282
|
-
scripts: {
|
|
283
|
-
start: 'ng serve',
|
|
284
|
-
build: 'ng build',
|
|
285
|
-
},
|
|
286
|
-
...(overrides ? { overrides } : {}),
|
|
287
|
-
}, undefined, 2);
|
|
288
|
-
files['tsconfig.app.json'] = JSON.stringify({
|
|
289
|
-
extends: './tsconfig.json',
|
|
290
|
-
compilerOptions: {
|
|
291
|
-
outDir: './out-tsc/app',
|
|
292
|
-
types: [],
|
|
293
|
-
},
|
|
294
|
-
files: ['src/main.ts'],
|
|
295
|
-
include: ['src/**/*.d.ts'],
|
|
296
|
-
}, undefined, 2);
|
|
297
|
-
files['tsconfig.json'] = JSON.stringify({
|
|
298
|
-
compileOnSave: false,
|
|
299
|
-
compilerOptions: {
|
|
300
|
-
strict: true,
|
|
301
|
-
forceConsistentCasingInFileNames: true,
|
|
302
|
-
noImplicitOverride: true,
|
|
303
|
-
noPropertyAccessFromIndexSignature: true,
|
|
304
|
-
noImplicitReturns: true,
|
|
305
|
-
noFallthroughCasesInSwitch: true,
|
|
306
|
-
sourceMap: true,
|
|
307
|
-
declaration: false,
|
|
308
|
-
downlevelIteration: true,
|
|
309
|
-
esModuleInterop: true,
|
|
310
|
-
experimentalDecorators: true,
|
|
311
|
-
moduleResolution: 'node',
|
|
312
|
-
importHelpers: true,
|
|
313
|
-
typeRoots: ['node_modules/@types'],
|
|
314
|
-
target: 'ES2015',
|
|
315
|
-
module: 'ES2022',
|
|
316
|
-
useDefineForClassFields: false,
|
|
317
|
-
lib: ['ES2022', 'dom'],
|
|
318
|
-
...compilerOptions,
|
|
319
|
-
},
|
|
320
|
-
angularCompilerOptions: {
|
|
321
|
-
fullTemplateTypeCheck: true,
|
|
322
|
-
enableI18nLegacyMessageIdFormat: false,
|
|
323
|
-
strictInjectionParameters: true,
|
|
324
|
-
strictInputAccessModifiers: true,
|
|
325
|
-
strictTemplates: true,
|
|
326
|
-
},
|
|
327
|
-
}, undefined, 2);
|
|
328
|
-
return files;
|
|
329
|
-
}
|
|
330
|
-
getModuleName(contents) {
|
|
331
|
-
return contents.split('export class ')[1].split(' {')[0];
|
|
332
|
-
}
|
|
333
|
-
getFilenameNoExtension(fileName) {
|
|
334
|
-
const extension = fileName.split('.').pop();
|
|
335
|
-
return fileName.replace(`.${extension}`, '');
|
|
336
|
-
}
|
|
337
|
-
getExportedComponent(contents) {
|
|
338
|
-
const trimmed = contents.replace(/\s/g, '');
|
|
339
|
-
let fragment = trimmed.split('exports:[')[1];
|
|
340
|
-
if (!fragment) {
|
|
341
|
-
throw 'You must export a component from the code example module!';
|
|
342
|
-
}
|
|
343
|
-
fragment = fragment.split(']')[0];
|
|
344
|
-
const components = fragment.split(',').filter((x) => x);
|
|
345
|
-
if (components.length > 1) {
|
|
346
|
-
throw ('You may only export a single component from the code example module' +
|
|
347
|
-
`(we found ${components.length}: ${components.join(', ')}).` +
|
|
348
|
-
'Is it possible to create a new code example with the extra components?');
|
|
349
|
-
}
|
|
350
|
-
return components[0];
|
|
351
|
-
}
|
|
352
|
-
getComponentSelector(componentClassName, sourceCode) {
|
|
353
|
-
const found = sourceCode.find((file) => {
|
|
354
|
-
return file.rawContents.indexOf(`class ${componentClassName}`) > -1;
|
|
355
|
-
});
|
|
356
|
-
const trimmed = found.rawContents.replace(/\s/g, '');
|
|
357
|
-
return trimmed.split(`selector:'`)[1].split(`'`)[0];
|
|
358
|
-
}
|
|
359
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SkyDocsCodeExamplesEditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
360
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SkyDocsCodeExamplesEditorService, providedIn: 'root' }); }
|
|
361
|
-
}
|
|
362
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SkyDocsCodeExamplesEditorService, decorators: [{
|
|
363
|
-
type: Injectable,
|
|
364
|
-
args: [{
|
|
365
|
-
providedIn: 'root',
|
|
366
|
-
}]
|
|
367
|
-
}] });
|
|
368
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1leGFtcGxlcy1lZGl0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RvY3MtdG9vbHMvc3JjL21vZHVsZXMvY29kZS1leGFtcGxlcy9jb2RlLWV4YW1wbGVzLWVkaXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLElBQUksZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxJQUFJLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxJQUFJLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9ELE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFDOztBQWM1Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxnQ0FBZ0M7SUFDcEMsWUFBWSxDQUNqQixXQUErQixFQUMvQixXQUErQixhQUFhO1FBRTVDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztRQUM5QixJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsRUFBRSxDQUFDO1lBQ2pELFFBQVEsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUMvQyxDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQztZQUN0RCxRQUFRLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUEwQjtZQUNyQyxRQUFRO1NBQ1QsQ0FBQztRQUVGLGFBQWEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxXQUFXLENBQ1Qs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QUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDOytHQXBjVSxnQ0FBZ0M7bUhBQWhDLGdDQUFnQyxjQUYvQixNQUFNOzs0RkFFUCxnQ0FBZ0M7a0JBSDVDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVkVSU0lPTiBhcyBBTkdVTEFSX1ZFUlNJT04sIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZFUlNJT04gYXMgU0tZX1VYX1ZFUlNJT04gfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBWRVJTSU9OIGFzIFNLWV9VWF9JQ09OU19WRVJTSU9OIH0gZnJvbSAnQHNreXV4L2ljb25zJztcbmltcG9ydCBTdGFja0JsaXR6U0RLIGZyb20gJ0BzdGFja2JsaXR6L3Nkayc7XG5pbXBvcnQge1xuICBPcGVuT3B0aW9ucyBhcyBTdGFja0JsaXR6T3Blbk9wdGlvbnMsXG4gIFByb2plY3QgYXMgU3RhY2tCbGl0elByb2plY3QsXG59IGZyb20gJ0BzdGFja2JsaXR6L3Nkayc7XG5cbmltcG9ydCB7IFNreURvY3NTb3VyY2VDb2RlRmlsZSB9IGZyb20gJy4uL3NvdXJjZS1jb2RlL3NvdXJjZS1jb2RlLWZpbGUnO1xuXG5pbXBvcnQgeyBTa3lEb2NzQ29kZUV4YW1wbGUgfSBmcm9tICcuL2NvZGUtZXhhbXBsZSc7XG5pbXBvcnQgeyBTa3lEb2NzQ29kZUV4YW1wbGVNb2R1bGVEZXBlbmRlbmNpZXMgfSBmcm9tICcuL2NvZGUtZXhhbXBsZS1tb2R1bGUtZGVwZW5kZW5jaWVzJztcbmltcG9ydCB7IFNreURvY3NDb2RlRXhhbXBsZVRoZW1lIH0gZnJvbSAnLi9jb2RlLWV4YW1wbGUtdGhlbWUnO1xuXG50eXBlIFN0YWNrYmxpdHpUZW1wbGF0ZSA9ICdhbmd1bGFyLWNsaScgfCAnbm9kZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEb2NzQ29kZUV4YW1wbGVzRWRpdG9yU2VydmljZSB7XG4gIHB1YmxpYyBsYXVuY2hFZGl0b3IoXG4gICAgY29kZUV4YW1wbGU6IFNreURvY3NDb2RlRXhhbXBsZSxcbiAgICB0ZW1wbGF0ZTogU3RhY2tibGl0elRlbXBsYXRlID0gJ2FuZ3VsYXItY2xpJyxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgcHJvamVjdCA9IHRoaXMuI2dldFBheWxvYWQoY29kZUV4YW1wbGUsIHRlbXBsYXRlKTtcbiAgICBjb25zdCBvcGVuRmlsZTogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAocHJvamVjdC5maWxlc1snc3JjL2FwcC9kZW1vLmNvbXBvbmVudC5odG1sJ10pIHtcbiAgICAgIG9wZW5GaWxlLnB1c2goJ3NyYy9hcHAvZGVtby5jb21wb25lbnQuaHRtbCcpO1xuICAgIH0gZWxzZSBpZiAocHJvamVjdC5maWxlc1snc3JjL2FwcC9kZW1vLmNvbXBvbmVudC50cyddKSB7XG4gICAgICBvcGVuRmlsZS5wdXNoKCdzcmMvYXBwL2RlbW8uY29tcG9uZW50LnRzJyk7XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnM6IFN0YWNrQmxpdHpPcGVuT3B0aW9ucyA9IHtcbiAgICAgIG9wZW5GaWxlLFxuICAgIH07XG5cbiAgICBTdGFja0JsaXR6U0RLLm9wZW5Qcm9qZWN0KHByb2plY3QsIG9wdGlvbnMpO1xuICB9XG5cbiAgI2dldFBheWxvYWQoXG4gICAgY29kZUV4YW1wbGU6IFNreURvY3NDb2RlRXhhbXBsZSxcbiAgICB0ZW1wbGF0ZTogU3RhY2tibGl0elRlbXBsYXRlLFxuICApOiBTdGFja0JsaXR6UHJvamVjdCB7XG4gICAgY29uc3QgYW5ndWxhclZlcnNpb24gPSBgXiR7QU5HVUxBUl9WRVJTSU9OLm1ham9yfWA7XG4gICAgY29uc3Qgc2t5dXhWZXJzaW9uID0gYF4ke1NLWV9VWF9WRVJTSU9OLmZ1bGx9YDtcblxuICAgIGNvbnN0IGRlZmF1bHREZXBlbmRlbmNpZXM6IFNreURvY3NDb2RlRXhhbXBsZU1vZHVsZURlcGVuZGVuY2llcyA9IHtcbiAgICAgICdAYW5ndWxhci1kZXZraXQvYnVpbGQtYW5ndWxhcic6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnOiBhbmd1bGFyVmVyc2lvbixcbiAgICAgICdAYW5ndWxhci9jZGsnOiBhbmd1bGFyVmVyc2lvbixcbiAgICAgICdAYW5ndWxhci9jbGknOiBhbmd1bGFyVmVyc2lvbixcbiAgICAgICdAYW5ndWxhci9jb21tb24nOiBhbmd1bGFyVmVyc2lvbixcbiAgICAgICdAYW5ndWxhci9jb21waWxlcic6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaSc6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bhbmd1bGFyL2NvcmUnOiBhbmd1bGFyVmVyc2lvbixcbiAgICAgICdAYW5ndWxhci9mb3Jtcyc6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInOiBhbmd1bGFyVmVyc2lvbixcbiAgICAgICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyLWR5bmFtaWMnOiBhbmd1bGFyVmVyc2lvbixcbiAgICAgICdAYW5ndWxhci9yb3V0ZXInOiBhbmd1bGFyVmVyc2lvbixcbiAgICAgICdAc2t5dXgvYW5pbWF0aW9ucyc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvYXNzZXRzJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9jb25maWcnOiBza3l1eFZlcnNpb24sXG4gICAgICAnQHNreXV4L2NvcmUnOiBza3l1eFZlcnNpb24sXG4gICAgICAnQHNreXV4L2Vycm9ycyc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvZm9ybXMnOiBza3l1eFZlcnNpb24sXG4gICAgICAnQHNreXV4L2hlbHAtaW5saW5lJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9pMThuJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9pY29uJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9pbmRpY2F0b3JzJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9sYXlvdXQnOiBza3l1eFZlcnNpb24sXG4gICAgICAnQHNreXV4L21vZGFscyc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvcGFja2FnZXMnOiBza3l1eFZlcnNpb24sXG4gICAgICAnQHNreXV4L3BvcG92ZXJzJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9yb3V0ZXInOiBza3l1eFZlcnNpb24sXG4gICAgICAnQHNreXV4L3RoZW1lJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0B0eXBlcy9qYXNtaW5lJzogJ341LjEuNCcsXG4gICAgICAnbmcyLWRyYWd1bGEnOiAnNS4xLjAnLFxuICAgICAgcnhqczogJ143JyxcbiAgICAgIHRzbGliOiAnXjIuNi4yJyxcbiAgICAgIHR5cGVzY3JpcHQ6ICd+NS41LjMnLFxuICAgICAgJ3pvbmUuanMnOiAnfjAuMTQuNCcsXG4gICAgfTtcblxuICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIGRlZmF1bHREZXBlbmRlbmNpZXMsXG4gICAgICBjb2RlRXhhbXBsZS5wYWNrYWdlRGVwZW5kZW5jaWVzLFxuICAgICk7XG5cbiAgICAvLyBFbnN1cmUgYW55IEBza3l1eCBkZXBlbmRlbmNpZXMgbGlzdCB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIFNLWSBVWC5cbiAgICAvLyBlLmcuIGBcIkBza3l1eC9jb3JlXCI6IFwiKlwiYCAtLT4gYFwiQHNreXV4L2NvcmVcIjogXCI1LjAuMFwiYFxuICAgIGZvciAoY29uc3QgcGFja2FnZU5hbWUgaW4gbWVyZ2VkRGVwZW5kZW5jaWVzKSB7XG4gICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICAgIGlmIChtZXJnZWREZXBlbmRlbmNpZXMuaGFzT3duUHJvcGVydHkocGFja2FnZU5hbWUpKSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSBtZXJnZWREZXBlbmRlbmNpZXNbcGFja2FnZU5hbWVdO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdmVyc2lvbiA9PT0gJyonICYmXG4gICAgICAgICAgL14oQGJsYWNrYmF1ZFxcL3NreXV4LWxpYi18QHNreXV4KS8udGVzdChwYWNrYWdlTmFtZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgbWVyZ2VkRGVwZW5kZW5jaWVzW3BhY2thZ2VOYW1lXSA9IHNreXV4VmVyc2lvbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG92ZXJyaWRlcyA9XG4gICAgICB0ZW1wbGF0ZSA9PT0gJ25vZGUnXG4gICAgICAgID8ge1xuICAgICAgICAgICAgJ25nMi1kcmFndWxhQDUuMS4wJzoge1xuICAgICAgICAgICAgICAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc6ICc+PTE2LjAuMCA8MTkuMC4wJyxcbiAgICAgICAgICAgICAgJ0Bhbmd1bGFyL2NvcmUnOiAnPj0xNi4wLjAgPDE5LjAuMCcsXG4gICAgICAgICAgICAgICdAYW5ndWxhci9jb21tb24nOiAnPj0xNi4wLjAgPDE5LjAuMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBmaWxlcyA9IHRoaXMucGFyc2VTdGFja0JsaXR6RmlsZXMoXG4gICAgICBjb2RlRXhhbXBsZS5zb3VyY2VDb2RlLFxuICAgICAgbWVyZ2VkRGVwZW5kZW5jaWVzLFxuICAgICAgb3ZlcnJpZGVzLFxuICAgICAge1xuICAgICAgICB0YXJnZXQ6IHRlbXBsYXRlID09PSAnbm9kZScgPyAnRVMyMDIyJyA6ICdFUzIwMTUnLFxuICAgICAgfSxcbiAgICAgIGNvZGVFeGFtcGxlLnRoZW1lLFxuICAgICAgY29kZUV4YW1wbGUuc3R5bGVzaGVldHMsXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBmaWxlcyxcbiAgICAgIHRpdGxlOiAnU0tZIFVYIERlbW8nLFxuICAgICAgZGVzY3JpcHRpb246ICdTS1kgVVggRGVtbycsXG4gICAgICB0ZW1wbGF0ZSxcbiAgICAgIGRlcGVuZGVuY2llczogbWVyZ2VkRGVwZW5kZW5jaWVzLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgY29tcGlsZToge1xuICAgICAgICAgIGNsZWFyQ29uc29sZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHBhcnNlU3RhY2tCbGl0ekZpbGVzKFxuICAgIHNvdXJjZUNvZGU6IFNreURvY3NTb3VyY2VDb2RlRmlsZVtdLFxuICAgIGRlcGVuZGVuY2llczogU2t5RG9jc0NvZGVFeGFtcGxlTW9kdWxlRGVwZW5kZW5jaWVzLFxuICAgIG92ZXJyaWRlczogb2JqZWN0IHwgdW5kZWZpbmVkLFxuICAgIGNvbXBpbGVyT3B0aW9uczogb2JqZWN0LFxuICAgIHRoZW1lOiBTa3lEb2NzQ29kZUV4YW1wbGVUaGVtZSxcbiAgICBzdHlsZXNoZWV0czogc3RyaW5nW10gPSBbXSxcbiAgKToge1xuICAgIFtwYXRoOiBzdHJpbmddOiBzdHJpbmc7XG4gIH0ge1xuICAgIGNvbnN0IHNyY1BhdGggPSAnc3JjLyc7XG4gICAgY29uc3QgYXBwUGF0aCA9IGAke3NyY1BhdGh9YXBwL2A7XG5cbiAgICBjb25zdCBiYW5uZXIgPSBgLyoqXG4gKiBUaGlzIGZpbGUgaXMgbmVlZGVkIGZvciB0aGUgU3RhY2tCbGl0eiBkZW1vIG9ubHkuXG4gKiBJdCBpcyBhdXRvbWF0aWNhbGx5IHByb3ZpZGVkIHdoZW4gdXNpbmcgdGhlIEFuZ3VsYXIgQ0xJLlxuICoqL1xuIGA7XG5cbiAgICBjb25zdCBtb2R1bGVJbXBvcnRTdGF0ZW1lbnRzOiBzdHJpbmdbXSA9IFtcbiAgICAgIGBpbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztgLFxuICAgIF07XG5cbiAgICBjb25zdCBtb2R1bGVJbXBvcnRzOiBzdHJpbmdbXSA9IFsnRm9ybXNNb2R1bGUnLCAnUmVhY3RpdmVGb3Jtc01vZHVsZSddO1xuXG4gICAgY29uc3QgZmlsZXM6IHsgW186IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgJy5zdGFja2JsaXR6cmMnOiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAge1xuICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgTkdfQlVJTERfUEFSQUxMRUxfVFM6ICcwJyxcbiAgICAgICAgICAgIE5PREVfRU5WOiAnZGV2ZWxvcG1lbnQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgMixcbiAgICAgICksXG4gICAgfTtcblxuICAgIGxldCBhcHBDb21wb25lbnRUZW1wbGF0ZSA9ICcnO1xuXG4gICAgc291cmNlQ29kZS5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICBmaWxlc1tgJHthcHBQYXRofSR7ZmlsZS5maWxlTmFtZX1gXSA9IGZpbGUucmF3Q29udGVudHM7XG5cbiAgICAgIC8vIFNldHVwIG1vZHVsZSBpbXBvcnRzIGFuZCBjb21wb25lbnQgc2VsZWN0b3JzLlxuICAgICAgaWYgKGZpbGUuZmlsZU5hbWUuaW5kZXhPZignLm1vZHVsZS50cycpID4gLTEpIHtcbiAgICAgICAgY29uc3QgbW9kdWxlTmFtZSA9IHRoaXMuZ2V0TW9kdWxlTmFtZShmaWxlLnJhd0NvbnRlbnRzKTtcbiAgICAgICAgY29uc3QgaW1wb3J0UGF0aCA9IGAuLyR7dGhpcy5nZXRGaWxlbmFtZU5vRXh0ZW5zaW9uKGZpbGUuZmlsZU5hbWUpfWA7XG5cbiAgICAgICAgY29uc3QgZXhwb3J0ZWRDb21wb25lbnQgPSB0aGlzLmdldEV4cG9ydGVkQ29tcG9uZW50KGZpbGUucmF3Q29udGVudHMpO1xuICAgICAgICBjb25zdCBjb21wb25lbnRTZWxlY3RvciA9IHRoaXMuZ2V0Q29tcG9uZW50U2VsZWN0b3IoXG4gICAgICAgICAgZXhwb3J0ZWRDb21wb25lbnQsXG4gICAgICAgICAgc291cmNlQ29kZSxcbiAgICAgICAgKTtcblxuICAgICAgICBhcHBDb21wb25lbnRUZW1wbGF0ZSArPSBgPCR7Y29tcG9uZW50U2VsZWN0b3J9PjwvJHtjb21wb25lbnRTZWxlY3Rvcn0+YDtcblxuICAgICAgICBtb2R1bGVJbXBvcnRzLnB1c2gobW9kdWxlTmFtZSk7XG4gICAgICAgIG1vZHVsZUltcG9ydFN0YXRlbWVudHMucHVzaChcbiAgICAgICAgICBgaW1wb3J0IHsgJHttb2R1bGVOYW1lfSB9IGZyb20gJyR7aW1wb3J0UGF0aH0nO2AsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIFN0YW5kYWxvbmUgZW50cnkgY29tcG9uZW50cyBhcmUgbmFtZWQgZGVtby5jb21wb25lbnQudHMuXG4gICAgICBpZiAoZmlsZS5maWxlTmFtZSA9PT0gJ2RlbW8uY29tcG9uZW50LnRzJykge1xuICAgICAgICBjb25zdCBjb21wb25lbnROYW1lID0gJ0RlbW9Db21wb25lbnQnO1xuICAgICAgICBjb25zdCBjb21wb25lbnRTZWxlY3RvciA9ICdhcHAtZGVtbyc7XG4gICAgICAgIGNvbnN0IGltcG9ydFBhdGggPSBgLi8ke3RoaXMuZ2V0RmlsZW5hbWVOb0V4dGVuc2lvbihmaWxlLmZpbGVOYW1lKX1gO1xuXG4gICAgICAgIGFwcENvbXBvbmVudFRlbXBsYXRlICs9IGA8JHtjb21wb25lbnRTZWxlY3Rvcn0gLz5gO1xuXG4gICAgICAgIG1vZHVsZUltcG9ydHMucHVzaChjb21wb25lbnROYW1lKTtcbiAgICAgICAgbW9kdWxlSW1wb3J0U3RhdGVtZW50cy5wdXNoKFxuICAgICAgICAgIGBpbXBvcnQgeyAke2NvbXBvbmVudE5hbWV9IH0gZnJvbSAnJHtpbXBvcnRQYXRofSc7YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGZpbGVzW2Ake2FwcFBhdGh9YXBwLmNvbXBvbmVudC50c2BdID0gYCR7YmFubmVyfVxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lIZWxwT3BlbkFyZ3MsIFNreUhlbHBTZXJ2aWNlLCBTa3lIZWxwVXBkYXRlQXJncyB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbiR7bW9kdWxlSW1wb3J0U3RhdGVtZW50cy5qb2luKCdcXG5cXG4nKX1cblxuQEluamVjdGFibGUoKVxuLypcbiAgVGhpcyBtb2NrZWQgXFxgU2t5SGVscFNlcnZpY2VcXGAgaXMgbmVlZGVkIGZvciBTdGFja2JsaXogZGVtb3Mgb25seS5cbiAgVG8gcHJvcGVybHkgaW1wbGVtZW50IGhlbHAgc2VydmljZSBzZWU6IGh0dHBzOi8vZG9jcy5ibGFja2JhdWQuY29tL2JiLWhlbHAtZG9jcy9cbiovXG5leHBvcnQgY2xhc3MgU3RhY2tibGl0ek9ubHlDb2RlRXhhbXBsZXNIZWxwU2VydmljZSBleHRlbmRzIFNreUhlbHBTZXJ2aWNlIHtcbiAgcHVibGljIG92ZXJyaWRlIG9wZW5IZWxwKGFyZ3M/OiBTa3lIZWxwT3BlbkFyZ3MpOiB2b2lkIHtcbiAgICBpZiAoYXJncykge1xuICAgICAgY29uc29sZS5sb2coJ2hlbHAga2V5OiAnICsgYXJncy5oZWxwS2V5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgdXBkYXRlSGVscChhcmdzOiBTa3lIZWxwVXBkYXRlQXJncyk6IHZvaWQge1xuICAgIGlmICgnaGVscEtleScgaW4gYXJncykge1xuICAgICAgY29uc29sZS5sb2coJ2hlbHAga2V5IHVwZGF0ZTogJyArIGFyZ3MuaGVscEtleSk7XG4gICAgfVxuXG4gICAgaWYgKCdwYWdlRGVmYXVsdEhlbHBLZXknIGluIGFyZ3MpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdwYWdlIGRlZmF1bHQgaGVscCBrZXkgdXBkYXRlOiAnICsgYXJncy5wYWdlRGVmYXVsdEhlbHBLZXkpO1xuICAgIH1cbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZGVtby1hcHAnLFxuICB0ZW1wbGF0ZTogJyR7YXBwQ29tcG9uZW50VGVtcGxhdGV9JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgICR7bW9kdWxlSW1wb3J0cy5qb2luKCcsXFxuICAgICcpfSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge3Byb3ZpZGU6IFNreUhlbHBTZXJ2aWNlLCB1c2VDbGFzczogU3RhY2tibGl0ek9ubHlDb2RlRXhhbXBsZXNIZWxwU2VydmljZX1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBcHBDb21wb25lbnQge31cbmA7XG5cbiAgICBmaWxlc1tgJHtzcmNQYXRofWluZGV4Lmh0bWxgXSA9IGA8IWRvY3R5cGUgaHRtbD5cbjxodG1sIGxhbmc9XCJlblwiPlxuPGhlYWQ+XG4gIDxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiPlxuICA8dGl0bGU+U2t5IFVYIERlbW88L3RpdGxlPlxuICA8YmFzZSBocmVmPVwiL1wiPlxuICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTFcIj5cbiAgPCEtLVxuICAgIFRoZSBDU1MgbGlua3MgYXJlIG5lZWRlZCBmb3IgdGhlIFN0YWNrQmxpdHogZGVtbyBvbmx5LlxuICAgIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBhIGtub3duIGJ1ZyB0aGF0IHByZXZlbnRzIGV4dGVybmFsIGltcG9ydHMgaW4gQ1NTLlxuICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9zdGFja2JsaXR6L2NvcmUvaXNzdWVzLzEzM1xuICAtLT5cbiAgPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIHR5cGU9XCJ0ZXh0L2Nzc1wiIGhyZWY9XCJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS80LjcuMC9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3NcIiBjcm9zc29yaWdpbj1cImFub255bW91c1wiPlxuICA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgdHlwZT1cInRleHQvY3NzXCIgaHJlZj1cImh0dHBzOi8vc2t5LmJsYWNrYmF1ZGNkbi5uZXQvc3RhdGljL3NreXV4LWljb25zLyR7U0tZX1VYX0lDT05TX1ZFUlNJT04uZnVsbH0vYXNzZXRzL2Nzcy9za3l1eC1pY29ucy5taW4uY3NzXCIgY3Jvc3NvcmlnaW49XCJhbm9ueW1vdXNcIj5cbjwvaGVhZD5cbjxib2R5PlxuICA8c2t5LWRlbW8tYXBwPlxuICAgIExvYWRpbmcuLi5cbiAgPC9za3ktZGVtby1hcHA+XG48L2JvZHk+XG48L2h0bWw+XG5gO1xuXG4gICAgZmlsZXNbYCR7c3JjUGF0aH1tYWluLnRzYF0gPSBgJHtiYW5uZXJ9XG5pbXBvcnQgJ3pvbmUuanMnO1xuaW1wb3J0ICdAc2t5dXgvcGFja2FnZXMvcG9seWZpbGxzJztcblxuaW1wb3J0IHsgYm9vdHN0cmFwQXBwbGljYXRpb24gfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IHByb3ZpZGVBbmltYXRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcbmltcG9ydCB7IHByb3ZpZGVSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgcHJvdmlkZUluaXRpYWxUaGVtZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IEFwcENvbXBvbmVudCB9IGZyb20gJy4vYXBwL2FwcC5jb21wb25lbnQnO1xuXG52b2lkIGJvb3RzdHJhcEFwcGxpY2F0aW9uKEFwcENvbXBvbmVudCwge1xuICBwcm92aWRlcnM6IFtcbiAgICBwcm92aWRlQW5pbWF0aW9ucygpLFxuICAgIHByb3ZpZGVJbml0aWFsVGhlbWUoJyR7dGhlbWV9JyksXG4gICAgcHJvdmlkZVJvdXRlcihbXSksXG4gIF0sXG59KVxuICAuY2F0Y2goKGVycikgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcbmA7XG5cbiAgICBmaWxlc1tgJHtzcmNQYXRofXN0eWxlcy5zY3NzYF0gPSBgQGltcG9ydCAnQHNreXV4L3RoZW1lL2Nzcy9za3knO1xuQGltcG9ydCAnQHNreXV4L3RoZW1lL2Nzcy90aGVtZXMvbW9kZXJuL3N0eWxlcyc7XG5cbmJvZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBtYXJnaW46IDE1cHg7XG59XG5gO1xuXG4gICAgc3R5bGVzaGVldHMucHVzaCgnc3JjL3N0eWxlcy5zY3NzJyk7XG5cbiAgICBmaWxlc1snYW5ndWxhci5qc29uJ10gPSBKU09OLnN0cmluZ2lmeShcbiAgICAgIHtcbiAgICAgICAgJHNjaGVtYTogJy4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL2NsaS9saWIvY29uZmlnL3NjaGVtYS5qc29uJyxcbiAgICAgICAgdmVyc2lvbjogMSxcbiAgICAgICAgcHJvamVjdHM6IHtcbiAgICAgICAgICBkZW1vOiB7XG4gICAgICAgICAgICBwcm9qZWN0VHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgICAgIHJvb3Q6ICcnLFxuICAgICAgICAgICAgc291cmNlUm9vdDogJ3NyYycsXG4gICAgICAgICAgICBwcmVmaXg6ICdhcHAnLFxuICAgICAgICAgICAgYXJjaGl0ZWN0OiB7XG4gICAgICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICAgICAgYnVpbGRlcjogJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC1hbmd1bGFyOmFwcGxpY2F0aW9uJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBpbmRleDogJ3NyYy9pbmRleC5odG1sJyxcbiAgICAgICAgICAgICAgICAgIGJyb3dzZXI6ICdzcmMvbWFpbi50cycsXG4gICAgICAgICAgICAgICAgICBvdXRwdXRQYXRoOiAnZGlzdC9kZW1vJyxcbiAgICAgICAgICAgICAgICAgIHRzQ29uZmlnOiAndHNjb25maWcuYXBwLmpzb24nLFxuICAgICAgICAgICAgICAgICAgaW5saW5lU3R5bGVMYW5ndWFnZTogJ3Njc3MnLFxuICAgICAgICAgICAgICAgICAgc3R5bGVzOiBzdHlsZXNoZWV0cyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudDoge1xuICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0TGljZW5zZXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2VNYXA6IHRydWUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZGVmYXVsdENvbmZpZ3VyYXRpb246ICdkZXZlbG9wbWVudCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHNlcnZlOiB7XG4gICAgICAgICAgICAgICAgYnVpbGRlcjogJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC1hbmd1bGFyOmRldi1zZXJ2ZXInLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudDoge1xuICAgICAgICAgICAgICAgICAgICBidWlsZFRhcmdldDogJ2RlbW86YnVpbGQ6ZGV2ZWxvcG1lbnQnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRlZmF1bHRDb25maWd1cmF0aW9uOiAnZGV2ZWxvcG1lbnQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIDIsXG4gICAgKTtcblxuICAgIGZpbGVzWydwYWNrYWdlLmpzb24nXSA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2t5dXgtc3BhLWRlbW8nLFxuICAgICAgICB2ZXJzaW9uOiAnMC4wLjAnLFxuICAgICAgICBkZXBlbmRlbmNpZXMsXG4gICAgICAgIHNjcmlwdHM6IHtcbiAgICAgICAgICBzdGFydDogJ25nIHNlcnZlJyxcbiAgICAgICAgICBidWlsZDogJ25nIGJ1aWxkJyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uKG92ZXJyaWRlcyA/IHsgb3ZlcnJpZGVzIH0gOiB7fSksXG4gICAgICB9LFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgMixcbiAgICApO1xuXG4gICAgZmlsZXNbJ3RzY29uZmlnLmFwcC5qc29uJ10gPSBKU09OLnN0cmluZ2lmeShcbiAgICAgIHtcbiAgICAgICAgZXh0ZW5kczogJy4vdHNjb25maWcuanNvbicsXG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIG91dERpcjogJy4vb3V0LXRzYy9hcHAnLFxuICAgICAgICAgIHR5cGVzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAgZmlsZXM6IFsnc3JjL21haW4udHMnXSxcbiAgICAgICAgaW5jbHVkZTogWydzcmMvKiovKi5kLnRzJ10sXG4gICAgICB9LFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgMixcbiAgICApO1xuXG4gICAgZmlsZXNbJ3RzY29uZmlnLmpzb24nXSA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAge1xuICAgICAgICBjb21waWxlT25TYXZlOiBmYWxzZSxcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgc3RyaWN0OiB0cnVlLFxuICAgICAgICAgIGZvcmNlQ29uc2lzdGVudENhc2luZ0luRmlsZU5hbWVzOiB0cnVlLFxuICAgICAgICAgIG5vSW1wbGljaXRPdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICBub1Byb3BlcnR5QWNjZXNzRnJvbUluZGV4U2lnbmF0dXJlOiB0cnVlLFxuICAgICAgICAgIG5vSW1wbGljaXRSZXR1cm5zOiB0cnVlLFxuICAgICAgICAgIG5vRmFsbHRocm91Z2hDYXNlc0luU3dpdGNoOiB0cnVlLFxuICAgICAgICAgIHNvdXJjZU1hcDogdHJ1ZSxcbiAgICAgICAgICBkZWNsYXJhdGlvbjogZmFsc2UsXG4gICAgICAgICAgZG93bmxldmVsSXRlcmF0aW9uOiB0cnVlLFxuICAgICAgICAgIGVzTW9kdWxlSW50ZXJvcDogdHJ1ZSxcbiAgICAgICAgICBleHBlcmltZW50YWxEZWNvcmF0b3JzOiB0cnVlLFxuICAgICAgICAgIG1vZHVsZVJlc29sdXRpb246ICdub2RlJyxcbiAgICAgICAgICBpbXBvcnRIZWxwZXJzOiB0cnVlLFxuICAgICAgICAgIHR5cGVSb290czogWydub2RlX21vZHVsZXMvQHR5cGVzJ10sXG4gICAgICAgICAgdGFyZ2V0OiAnRVMyMDE1JyxcbiAgICAgICAgICBtb2R1bGU6ICdFUzIwMjInLFxuICAgICAgICAgIHVzZURlZmluZUZvckNsYXNzRmllbGRzOiBmYWxzZSxcbiAgICAgICAgICBsaWI6IFsnRVMyMDIyJywgJ2RvbSddLFxuICAgICAgICAgIC4uLmNvbXBpbGVyT3B0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgICAgYW5ndWxhckNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIGZ1bGxUZW1wbGF0ZVR5cGVDaGVjazogdHJ1ZSxcbiAgICAgICAgICBlbmFibGVJMThuTGVnYWN5TWVzc2FnZUlkRm9ybWF0OiBmYWxzZSxcbiAgICAgICAgICBzdHJpY3RJbmplY3Rpb25QYXJhbWV0ZXJzOiB0cnVlLFxuICAgICAgICAgIHN0cmljdElucHV0QWNjZXNzTW9kaWZpZXJzOiB0cnVlLFxuICAgICAgICAgIHN0cmljdFRlbXBsYXRlczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICAyLFxuICAgICk7XG5cbiAgICByZXR1cm4gZmlsZXM7XG4gIH1cblxuICBwcml2YXRlIGdldE1vZHVsZU5hbWUoY29udGVudHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbnRlbnRzLnNwbGl0KCdleHBvcnQgY2xhc3MgJylbMV0uc3BsaXQoJyB7JylbMF07XG4gIH1cblxuICBwcml2YXRlIGdldEZpbGVuYW1lTm9FeHRlbnNpb24oZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZU5hbWUuc3BsaXQoJy4nKS5wb3AoKTtcbiAgICByZXR1cm4gZmlsZU5hbWUucmVwbGFjZShgLiR7ZXh0ZW5zaW9ufWAsICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXhwb3J0ZWRDb21wb25lbnQoY29udGVudHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdHJpbW1lZCA9IGNvbnRlbnRzLnJlcGxhY2UoL1xccy9nLCAnJyk7XG5cbiAgICBsZXQgZnJhZ21lbnQgPSB0cmltbWVkLnNwbGl0KCdleHBvcnRzOlsnKVsxXTtcbiAgICBpZiAoIWZyYWdtZW50KSB7XG4gICAgICB0aHJvdyAnWW91IG11c3QgZXhwb3J0IGEgY29tcG9uZW50IGZyb20gdGhlIGNvZGUgZXhhbXBsZSBtb2R1bGUhJztcbiAgICB9XG5cbiAgICBmcmFnbWVudCA9IGZyYWdtZW50LnNwbGl0KCddJylbMF07XG5cbiAgICBjb25zdCBjb21wb25lbnRzID0gZnJhZ21lbnQuc3BsaXQoJywnKS5maWx0ZXIoKHgpID0+IHgpO1xuXG4gICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgKFxuICAgICAgICAnWW91IG1heSBvbmx5IGV4cG9ydCBhIHNpbmdsZSBjb21wb25lbnQgZnJvbSB0aGUgY29kZSBleGFtcGxlIG1vZHVsZScgK1xuICAgICAgICBgKHdlIGZvdW5kICR7Y29tcG9uZW50cy5sZW5ndGh9OiAke2NvbXBvbmVudHMuam9pbignLCAnKX0pLmAgK1xuICAgICAgICAnSXMgaXQgcG9zc2libGUgdG8gY3JlYXRlIGEgbmV3IGNvZGUgZXhhbXBsZSB3aXRoIHRoZSBleHRyYSBjb21wb25lbnRzPydcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBvbmVudHNbMF07XG4gIH1cblxuICBwcml2YXRlIGdldENvbXBvbmVudFNlbGVjdG9yKFxuICAgIGNvbXBvbmVudENsYXNzTmFtZTogc3RyaW5nLFxuICAgIHNvdXJjZUNvZGU6IFNreURvY3NTb3VyY2VDb2RlRmlsZVtdLFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGZvdW5kID0gc291cmNlQ29kZS5maW5kKChmaWxlKSA9PiB7XG4gICAgICByZXR1cm4gZmlsZS5yYXdDb250ZW50cy5pbmRleE9mKGBjbGFzcyAke2NvbXBvbmVudENsYXNzTmFtZX1gKSA+IC0xO1xuICAgIH0pO1xuXG4gICAgY29uc3QgdHJpbW1lZCA9IGZvdW5kLnJhd0NvbnRlbnRzLnJlcGxhY2UoL1xccy9nLCAnJyk7XG5cbiAgICByZXR1cm4gdHJpbW1lZC5zcGxpdChgc2VsZWN0b3I6J2ApWzFdLnNwbGl0KGAnYClbMF07XG4gIH1cbn1cbiJdfQ==
|