@skyux/docs-tools 5.0.0-beta.9 → 6.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/esm2020/docs-tools.module.mjs +40 -0
- package/esm2020/modules/anatomy/anatomy-item.component.mjs +17 -0
- package/esm2020/modules/anatomy/anatomy.component.mjs +24 -0
- package/esm2020/modules/anatomy/anatomy.module.mjs +21 -0
- package/{esm2015/modules/code-examples/code-example-module-dependencies.js → esm2020/modules/code-examples/code-example-module-dependencies.mjs} +0 -0
- package/{esm2015/modules/code-examples/code-example-theme.js → esm2020/modules/code-examples/code-example-theme.mjs} +1 -1
- package/esm2020/modules/code-examples/code-example.component.mjs +68 -0
- package/esm2020/modules/code-examples/code-example.mjs +2 -0
- package/esm2020/modules/code-examples/code-examples-editor.service.mjs +292 -0
- package/esm2020/modules/code-examples/code-examples.component.mjs +97 -0
- package/esm2020/modules/code-examples/code-examples.module.mjs +43 -0
- package/{esm2015/modules/demo/demo-content-alignment.js → esm2020/modules/demo/demo-content-alignment.mjs} +0 -0
- package/{esm2015/modules/demo/demo-control-panel-change.js → esm2020/modules/demo/demo-control-panel-change.mjs} +0 -0
- package/esm2020/modules/demo/demo-control-panel-checkbox.component.mjs +80 -0
- package/{esm2015/modules/demo/demo-control-panel-radio-choice.js → esm2020/modules/demo/demo-control-panel-radio-choice.mjs} +1 -1
- package/esm2020/modules/demo/demo-control-panel-radio-group.component.mjs +75 -0
- package/esm2020/modules/demo/demo-control-panel-section.component.mjs +22 -0
- package/esm2020/modules/demo/demo-control-panel.component.mjs +85 -0
- package/esm2020/modules/demo/demo.component.mjs +53 -0
- package/esm2020/modules/demo/demo.module.mjs +69 -0
- package/esm2020/modules/demo-page/demo-page-dom-adapter.service.mjs +75 -0
- package/esm2020/modules/demo-page/demo-page-module-info.component.mjs +14 -0
- package/esm2020/modules/demo-page/demo-page-section.component.mjs +43 -0
- package/esm2020/modules/demo-page/demo-page-summary.component.mjs +21 -0
- package/esm2020/modules/demo-page/demo-page-title.service.mjs +28 -0
- package/esm2020/modules/demo-page/demo-page-type-definitions.component.mjs +35 -0
- package/esm2020/modules/demo-page/demo-page.component.mjs +134 -0
- package/esm2020/modules/demo-page/demo-page.module.mjs +88 -0
- package/esm2020/modules/design-guidelines/design-guideline-thumbnail.component.mjs +27 -0
- package/esm2020/modules/design-guidelines/design-guideline.component.mjs +33 -0
- package/esm2020/modules/design-guidelines/design-guidelines.component.mjs +11 -0
- package/esm2020/modules/design-guidelines/design-guidelines.module.mjs +34 -0
- package/esm2020/modules/heading-anchor/heading-anchor.component.mjs +21 -0
- package/esm2020/modules/heading-anchor/heading-anchor.module.mjs +20 -0
- package/esm2020/modules/markdown/markdown.module.mjs +17 -0
- package/esm2020/modules/markdown/markdown.pipe.mjs +20 -0
- package/esm2020/modules/module-info/module-info.component.mjs +77 -0
- package/esm2020/modules/module-info/module-info.module.mjs +42 -0
- package/esm2020/modules/safe-html/safe-html.component.mjs +20 -0
- package/esm2020/modules/safe-html/safe-html.module.mjs +18 -0
- package/{esm2015/modules/shared/docs-tools-component-info.js → esm2020/modules/shared/docs-tools-component-info.mjs} +0 -0
- package/{esm2015/modules/shared/docs-tools-options.js → esm2020/modules/shared/docs-tools-options.mjs} +1 -1
- package/esm2020/modules/shared/docs-tools-supportal.service.mjs +23 -0
- package/esm2020/modules/shared/sky-docs-tools-resources.module.mjs +53 -0
- package/{esm2015/modules/source-code/source-code-file.js → esm2020/modules/source-code/source-code-file.mjs} +1 -1
- package/esm2020/modules/source-code/source-code-provider.mjs +13 -0
- package/esm2020/modules/source-code/source-code.service.mjs +42 -0
- package/esm2020/modules/thumbnail/thumbnail.component.mjs +28 -0
- package/esm2020/modules/thumbnail/thumbnail.module.mjs +19 -0
- package/{esm2015/modules/type-definitions/anchor-link-service-config.js → esm2020/modules/type-definitions/anchor-link-service-config.mjs} +0 -0
- package/{esm2015/modules/type-definitions/anchor-link-service-format.js → esm2020/modules/type-definitions/anchor-link-service-format.mjs} +0 -0
- package/{esm2015/modules/type-definitions/anchor-link.js → esm2020/modules/type-definitions/anchor-link.mjs} +0 -0
- package/esm2020/modules/type-definitions/anchor-link.service.mjs +106 -0
- package/esm2020/modules/type-definitions/call-signature-definition.component.mjs +45 -0
- package/esm2020/modules/type-definitions/call-signature-definition.mjs +2 -0
- package/esm2020/modules/type-definitions/class-definition.component.mjs +20 -0
- package/esm2020/modules/type-definitions/class-definition.mjs +2 -0
- package/esm2020/modules/type-definitions/comment-tags.mjs +2 -0
- package/esm2020/modules/type-definitions/directive-definition.component.mjs +20 -0
- package/esm2020/modules/type-definitions/directive-definition.mjs +2 -0
- package/esm2020/modules/type-definitions/entry-child-definition.mjs +2 -0
- package/{esm2015/modules/type-definitions/entry-definition.js → esm2020/modules/type-definitions/entry-definition.mjs} +1 -1
- package/esm2020/modules/type-definitions/enumeration-definition.component.mjs +19 -0
- package/esm2020/modules/type-definitions/enumeration-definition.mjs +2 -0
- package/{esm2015/modules/type-definitions/enumeration-member-definition.js → esm2020/modules/type-definitions/enumeration-member-definition.mjs} +1 -1
- package/esm2020/modules/type-definitions/index-signature-definition.mjs +2 -0
- package/esm2020/modules/type-definitions/interface-definition.component.mjs +36 -0
- package/esm2020/modules/type-definitions/interface-definition.mjs +2 -0
- package/esm2020/modules/type-definitions/interface-property-definition.mjs +2 -0
- package/esm2020/modules/type-definitions/method-definition.mjs +2 -0
- package/esm2020/modules/type-definitions/method-definitions.component.mjs +56 -0
- package/esm2020/modules/type-definitions/parameter-definition.mjs +2 -0
- package/esm2020/modules/type-definitions/pipe-definition.component.mjs +20 -0
- package/esm2020/modules/type-definitions/pipe-definition.mjs +2 -0
- package/{esm2015/modules/type-definitions/property-decorator.js → esm2020/modules/type-definitions/property-decorator.mjs} +1 -1
- package/esm2020/modules/type-definitions/property-definition.mjs +2 -0
- package/esm2020/modules/type-definitions/property-definitions.component.mjs +62 -0
- package/esm2020/modules/type-definitions/type-alias-definition.component.mjs +36 -0
- package/esm2020/modules/type-definitions/type-alias-definition.mjs +2 -0
- package/esm2020/modules/type-definitions/type-anchor-links.pipe.mjs +27 -0
- package/esm2020/modules/type-definitions/type-definition.mjs +2 -0
- package/esm2020/modules/type-definitions/type-definitions-format.service.mjs +242 -0
- package/esm2020/modules/type-definitions/type-definitions-provider.mjs +10 -0
- package/esm2020/modules/type-definitions/type-definitions.mjs +2 -0
- package/esm2020/modules/type-definitions/type-definitions.module.mjs +102 -0
- package/esm2020/modules/type-definitions/type-definitions.service.mjs +103 -0
- package/esm2020/modules/type-definitions/type-parameter-definition.mjs +2 -0
- package/esm2020/modules/type-definitions/typedoc-adapter.service.mjs +521 -0
- package/esm2020/modules/type-definitions/typedoc-types.mjs +2 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +1 -1
- package/{esm2015/skyux-docs-tools.js → esm2020/skyux-docs-tools.mjs} +0 -0
- package/fesm2015/skyux-docs-tools.mjs +3086 -0
- package/fesm2015/skyux-docs-tools.mjs.map +1 -0
- package/fesm2020/skyux-docs-tools.mjs +3070 -0
- package/fesm2020/skyux-docs-tools.mjs.map +1 -0
- package/modules/type-definitions/typedoc-types.d.ts +5 -3
- package/package.json +35 -22
- package/bundles/skyux-docs-tools.umd.js +0 -3705
- package/bundles/skyux-docs-tools.umd.js.map +0 -1
- package/documentation.json +0 -10784
- package/esm2015/docs-tools.module.js +0 -40
- package/esm2015/modules/anatomy/anatomy-item.component.js +0 -22
- package/esm2015/modules/anatomy/anatomy.component.js +0 -29
- package/esm2015/modules/anatomy/anatomy.module.js +0 -39
- package/esm2015/modules/code-examples/code-example.component.js +0 -68
- package/esm2015/modules/code-examples/code-example.js +0 -2
- package/esm2015/modules/code-examples/code-examples-editor.service.js +0 -289
- package/esm2015/modules/code-examples/code-examples.component.js +0 -102
- package/esm2015/modules/code-examples/code-examples.module.js +0 -51
- package/esm2015/modules/demo/demo-control-panel-checkbox.component.js +0 -84
- package/esm2015/modules/demo/demo-control-panel-radio-group.component.js +0 -80
- package/esm2015/modules/demo/demo-control-panel-section.component.js +0 -27
- package/esm2015/modules/demo/demo-control-panel.component.js +0 -86
- package/esm2015/modules/demo/demo.component.js +0 -58
- package/esm2015/modules/demo/demo.module.js +0 -69
- package/esm2015/modules/demo-page/demo-page-dom-adapter.service.js +0 -75
- package/esm2015/modules/demo-page/demo-page-module-info.component.js +0 -14
- package/esm2015/modules/demo-page/demo-page-section.component.js +0 -47
- package/esm2015/modules/demo-page/demo-page-summary.component.js +0 -26
- package/esm2015/modules/demo-page/demo-page-title.service.js +0 -28
- package/esm2015/modules/demo-page/demo-page-type-definitions.component.js +0 -39
- package/esm2015/modules/demo-page/demo-page.component.js +0 -142
- package/esm2015/modules/demo-page/demo-page.module.js +0 -88
- package/esm2015/modules/design-guidelines/design-guideline-thumbnail.component.js +0 -32
- package/esm2015/modules/design-guidelines/design-guideline.component.js +0 -38
- package/esm2015/modules/design-guidelines/design-guidelines.component.js +0 -15
- package/esm2015/modules/design-guidelines/design-guidelines.module.js +0 -44
- package/esm2015/modules/heading-anchor/heading-anchor.component.js +0 -26
- package/esm2015/modules/heading-anchor/heading-anchor.module.js +0 -34
- package/esm2015/modules/markdown/markdown.module.js +0 -25
- package/esm2015/modules/markdown/markdown.pipe.js +0 -20
- package/esm2015/modules/module-info/module-info.component.js +0 -82
- package/esm2015/modules/module-info/module-info.module.js +0 -46
- package/esm2015/modules/safe-html/safe-html.component.js +0 -24
- package/esm2015/modules/safe-html/safe-html.module.js +0 -26
- package/esm2015/modules/shared/docs-tools-supportal.service.js +0 -23
- package/esm2015/modules/shared/sky-docs-tools-resources.module.js +0 -41
- package/esm2015/modules/source-code/source-code-provider.js +0 -13
- package/esm2015/modules/source-code/source-code.service.js +0 -42
- package/esm2015/modules/thumbnail/thumbnail.component.js +0 -33
- package/esm2015/modules/thumbnail/thumbnail.module.js +0 -30
- package/esm2015/modules/type-definitions/anchor-link.service.js +0 -98
- package/esm2015/modules/type-definitions/call-signature-definition.component.js +0 -51
- package/esm2015/modules/type-definitions/call-signature-definition.js +0 -2
- package/esm2015/modules/type-definitions/class-definition.component.js +0 -25
- package/esm2015/modules/type-definitions/class-definition.js +0 -2
- package/esm2015/modules/type-definitions/comment-tags.js +0 -2
- package/esm2015/modules/type-definitions/directive-definition.component.js +0 -25
- package/esm2015/modules/type-definitions/directive-definition.js +0 -2
- package/esm2015/modules/type-definitions/entry-child-definition.js +0 -2
- package/esm2015/modules/type-definitions/enumeration-definition.component.js +0 -23
- package/esm2015/modules/type-definitions/enumeration-definition.js +0 -2
- package/esm2015/modules/type-definitions/index-signature-definition.js +0 -2
- package/esm2015/modules/type-definitions/interface-definition.component.js +0 -38
- package/esm2015/modules/type-definitions/interface-definition.js +0 -2
- package/esm2015/modules/type-definitions/interface-property-definition.js +0 -2
- package/esm2015/modules/type-definitions/method-definition.js +0 -2
- package/esm2015/modules/type-definitions/method-definitions.component.js +0 -62
- package/esm2015/modules/type-definitions/parameter-definition.js +0 -2
- package/esm2015/modules/type-definitions/pipe-definition.component.js +0 -25
- package/esm2015/modules/type-definitions/pipe-definition.js +0 -2
- package/esm2015/modules/type-definitions/property-definition.js +0 -2
- package/esm2015/modules/type-definitions/property-definitions.component.js +0 -69
- package/esm2015/modules/type-definitions/type-alias-definition.component.js +0 -39
- package/esm2015/modules/type-definitions/type-alias-definition.js +0 -2
- package/esm2015/modules/type-definitions/type-anchor-links.pipe.js +0 -27
- package/esm2015/modules/type-definitions/type-definition.js +0 -2
- package/esm2015/modules/type-definitions/type-definitions-format.service.js +0 -241
- package/esm2015/modules/type-definitions/type-definitions-provider.js +0 -10
- package/esm2015/modules/type-definitions/type-definitions.js +0 -2
- package/esm2015/modules/type-definitions/type-definitions.module.js +0 -102
- package/esm2015/modules/type-definitions/type-definitions.service.js +0 -103
- package/esm2015/modules/type-definitions/type-parameter-definition.js +0 -2
- package/esm2015/modules/type-definitions/typedoc-adapter.service.js +0 -477
- package/esm2015/modules/type-definitions/typedoc-types.js +0 -2
- package/fesm2015/skyux-docs-tools.js +0 -3215
- package/fesm2015/skyux-docs-tools.js.map +0 -1
package/README.md
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
- Run `npm i -ED @skyux-sdk/builder-plugin-skyux`.
|
|
12
12
|
|
|
13
13
|
- Remove any custom styles that are hiding the Omnibar. Instead, create a **skyuxconfig.e2e.json** file with the following contents:
|
|
14
|
+
|
|
14
15
|
```
|
|
15
16
|
{
|
|
16
17
|
"omnibar": false
|
|
@@ -18,6 +19,7 @@
|
|
|
18
19
|
```
|
|
19
20
|
|
|
20
21
|
- Open **skyuxconfig.json** and add the following:
|
|
22
|
+
|
|
21
23
|
```
|
|
22
24
|
{
|
|
23
25
|
// ...
|
|
@@ -67,11 +69,13 @@ export class AppExtrasModule { }
|
|
|
67
69
|
```
|
|
68
70
|
|
|
69
71
|
- Create the following files (as you would normally when creating a new SPA route):
|
|
72
|
+
|
|
70
73
|
- **./src/app/docs/[module-name]/index.html**
|
|
71
74
|
- **./src/app/docs/[module-name]/[module-name]-docs.component.html**
|
|
72
75
|
- **./src/app/docs/[module-name]/[module-name]-docs.component.ts**
|
|
73
76
|
|
|
74
77
|
- Add the following contents to the component's HTML file:
|
|
78
|
+
|
|
75
79
|
```
|
|
76
80
|
<sky-docs-demo-page
|
|
77
81
|
moduleName="SkySampleModule"
|
|
@@ -97,6 +101,7 @@ export class AppExtrasModule { }
|
|
|
97
101
|
```
|
|
98
102
|
|
|
99
103
|
- Add package dependencies for demos
|
|
104
|
+
|
|
100
105
|
```
|
|
101
106
|
<sky-docs-code-examples
|
|
102
107
|
[packageDependencies]="{
|
|
@@ -109,10 +114,12 @@ export class AppExtrasModule { }
|
|
|
109
114
|
## JSDoc comments
|
|
110
115
|
|
|
111
116
|
### Features:
|
|
117
|
+
|
|
112
118
|
- Accepts markdown.
|
|
113
119
|
- Links to internal types are automatically added.
|
|
114
120
|
|
|
115
121
|
### Tags:
|
|
122
|
+
|
|
116
123
|
- `@example` Specifies an inline code example.
|
|
117
124
|
- `@internal` Hides the property or type from documentation.
|
|
118
125
|
- `@default` Deliberately specifies a default value if one isn't obvious from the source code (for example, when a getter/setter is used).
|
|
@@ -121,6 +128,7 @@ export class AppExtrasModule { }
|
|
|
121
128
|
- `@param` Provides a description for a specific parameter in a method or function.
|
|
122
129
|
|
|
123
130
|
## Code Examples
|
|
131
|
+
|
|
124
132
|
- Code examples are automatically generated from source code added to `./src/app/public/plugin-resources/code-examples`.
|
|
125
133
|
- Each code example should be self-contained (in its own folder) and have its own module. The module will dictate its own exports, imports, providers, or entry components.
|
|
126
134
|
- Code examples are not instrumented for code coverage and are not included in any build results.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { SkyAuthHttpClientModule } from '@skyux/http';
|
|
3
|
+
import { SkyDocsAnatomyModule } from './modules/anatomy/anatomy.module';
|
|
4
|
+
import { SkyDocsCodeExamplesModule } from './modules/code-examples/code-examples.module';
|
|
5
|
+
import { SkyDocsDemoModule } from './modules/demo/demo.module';
|
|
6
|
+
import { SkyDocsDemoPageModule } from './modules/demo-page/demo-page.module';
|
|
7
|
+
import { SkyDocsDesignGuidelinesModule } from './modules/design-guidelines/design-guidelines.module';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
/**
|
|
10
|
+
* This module conveniently exports the most commonly used modules.
|
|
11
|
+
*/
|
|
12
|
+
export class SkyDocsToolsModule {
|
|
13
|
+
}
|
|
14
|
+
SkyDocsToolsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDocsToolsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
+
SkyDocsToolsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDocsToolsModule, exports: [SkyAuthHttpClientModule,
|
|
16
|
+
SkyDocsAnatomyModule,
|
|
17
|
+
SkyDocsCodeExamplesModule,
|
|
18
|
+
SkyDocsDemoModule,
|
|
19
|
+
SkyDocsDemoPageModule,
|
|
20
|
+
SkyDocsDesignGuidelinesModule] });
|
|
21
|
+
SkyDocsToolsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDocsToolsModule, imports: [SkyAuthHttpClientModule,
|
|
22
|
+
SkyDocsAnatomyModule,
|
|
23
|
+
SkyDocsCodeExamplesModule,
|
|
24
|
+
SkyDocsDemoModule,
|
|
25
|
+
SkyDocsDemoPageModule,
|
|
26
|
+
SkyDocsDesignGuidelinesModule] });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDocsToolsModule, decorators: [{
|
|
28
|
+
type: NgModule,
|
|
29
|
+
args: [{
|
|
30
|
+
exports: [
|
|
31
|
+
SkyAuthHttpClientModule,
|
|
32
|
+
SkyDocsAnatomyModule,
|
|
33
|
+
SkyDocsCodeExamplesModule,
|
|
34
|
+
SkyDocsDemoModule,
|
|
35
|
+
SkyDocsDemoPageModule,
|
|
36
|
+
SkyDocsDesignGuidelinesModule,
|
|
37
|
+
],
|
|
38
|
+
}]
|
|
39
|
+
}] });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy10b29scy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9kb2NzLXRvb2xzL3NyYy9kb2NzLXRvb2xzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV4RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUV6RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUU3RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7QUFFckc7O0dBRUc7QUFXSCxNQUFNLE9BQU8sa0JBQWtCOzsrR0FBbEIsa0JBQWtCO2dIQUFsQixrQkFBa0IsWUFSM0IsdUJBQXVCO1FBQ3ZCLG9CQUFvQjtRQUNwQix5QkFBeUI7UUFDekIsaUJBQWlCO1FBQ2pCLHFCQUFxQjtRQUNyQiw2QkFBNkI7Z0hBR3BCLGtCQUFrQixZQVIzQix1QkFBdUI7UUFDdkIsb0JBQW9CO1FBQ3BCLHlCQUF5QjtRQUN6QixpQkFBaUI7UUFDakIscUJBQXFCO1FBQ3JCLDZCQUE2QjsyRkFHcEIsa0JBQWtCO2tCQVY5QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIseUJBQXlCO3dCQUN6QixpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIsNkJBQTZCO3FCQUM5QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUF1dGhIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQHNreXV4L2h0dHAnO1xuXG5pbXBvcnQgeyBTa3lEb2NzQW5hdG9teU1vZHVsZSB9IGZyb20gJy4vbW9kdWxlcy9hbmF0b215L2FuYXRvbXkubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5RG9jc0NvZGVFeGFtcGxlc01vZHVsZSB9IGZyb20gJy4vbW9kdWxlcy9jb2RlLWV4YW1wbGVzL2NvZGUtZXhhbXBsZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5RG9jc0RlbW9Nb2R1bGUgfSBmcm9tICcuL21vZHVsZXMvZGVtby9kZW1vLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreURvY3NEZW1vUGFnZU1vZHVsZSB9IGZyb20gJy4vbW9kdWxlcy9kZW1vLXBhZ2UvZGVtby1wYWdlLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreURvY3NEZXNpZ25HdWlkZWxpbmVzTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL2Rlc2lnbi1ndWlkZWxpbmVzL2Rlc2lnbi1ndWlkZWxpbmVzLm1vZHVsZSc7XG5cbi8qKlxuICogVGhpcyBtb2R1bGUgY29udmVuaWVudGx5IGV4cG9ydHMgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBtb2R1bGVzLlxuICovXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbXG4gICAgU2t5QXV0aEh0dHBDbGllbnRNb2R1bGUsIC8vIFN1cHBvcnRzIHRoZSBzdXBwb3J0YWwgc2VydmljZSBjYWxscyB1c2luZyB0aGUgYHN2Y2lkYCBwYXJhbS5cbiAgICBTa3lEb2NzQW5hdG9teU1vZHVsZSxcbiAgICBTa3lEb2NzQ29kZUV4YW1wbGVzTW9kdWxlLFxuICAgIFNreURvY3NEZW1vTW9kdWxlLFxuICAgIFNreURvY3NEZW1vUGFnZU1vZHVsZSxcbiAgICBTa3lEb2NzRGVzaWduR3VpZGVsaW5lc01vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RG9jc1Rvb2xzTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class SkyDocsAnatomyItemComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.isOptional = false;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
SkyDocsAnatomyItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDocsAnatomyItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10
|
+
SkyDocsAnatomyItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyDocsAnatomyItemComponent, selector: "sky-docs-anatomy-item", inputs: { isOptional: "isOptional" }, ngImport: i0, template: "<div\n class=\"sky-docs-anatomy-item\"\n [ngClass]=\"{\n 'sky-docs-anatomy-item-optional': isOptional\n }\"\n>\n <div class=\"sky-docs-anatomy-item-marker\">\n {{ marker }}\n </div>\n <div class=\"sky-docs-anatomy-item-description\">\n <ng-content></ng-content>\n <span *ngIf=\"isOptional\" class=\"sky-deemphasized\"> (optional)</span>\n </div>\n</div>\n", styles: [".sky-docs-anatomy-item-marker{display:flex;width:22px;height:22px;border-radius:50%;justify-content:center;align-items:center;margin-right:5px;color:#fff;background-color:#4d842d}.sky-docs-anatomy-item{margin-bottom:10px;display:flex;align-items:center}.sky-docs-anatomy-item.sky-docs-anatomy-item-optional .sky-docs-anatomy-item-marker{background-color:#b7da9b;color:#212327}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDocsAnatomyItemComponent, decorators: [{
|
|
12
|
+
type: Component,
|
|
13
|
+
args: [{ selector: 'sky-docs-anatomy-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"sky-docs-anatomy-item\"\n [ngClass]=\"{\n 'sky-docs-anatomy-item-optional': isOptional\n }\"\n>\n <div class=\"sky-docs-anatomy-item-marker\">\n {{ marker }}\n </div>\n <div class=\"sky-docs-anatomy-item-description\">\n <ng-content></ng-content>\n <span *ngIf=\"isOptional\" class=\"sky-deemphasized\"> (optional)</span>\n </div>\n</div>\n", styles: [".sky-docs-anatomy-item-marker{display:flex;width:22px;height:22px;border-radius:50%;justify-content:center;align-items:center;margin-right:5px;color:#fff;background-color:#4d842d}.sky-docs-anatomy-item{margin-bottom:10px;display:flex;align-items:center}.sky-docs-anatomy-item.sky-docs-anatomy-item-optional .sky-docs-anatomy-item-marker{background-color:#b7da9b;color:#212327}\n"] }]
|
|
14
|
+
}], propDecorators: { isOptional: [{
|
|
15
|
+
type: Input
|
|
16
|
+
}] } });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hdG9teS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RvY3MtdG9vbHMvc3JjL21vZHVsZXMvYW5hdG9teS9hbmF0b215LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9jcy10b29scy9zcmMvbW9kdWxlcy9hbmF0b215L2FuYXRvbXktaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBUTFFLE1BQU0sT0FBTywyQkFBMkI7SUFOeEM7UUFRUyxlQUFVLEdBQVksS0FBSyxDQUFDO0tBR3BDOzt3SEFMWSwyQkFBMkI7NEdBQTNCLDJCQUEyQixtR0NSeEMsNlhBY0E7MkZETmEsMkJBQTJCO2tCQU52QyxTQUFTOytCQUNFLHVCQUF1QixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTTs4QkFJeEMsVUFBVTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kb2NzLWFuYXRvbXktaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbmF0b215LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hbmF0b215LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreURvY3NBbmF0b215SXRlbUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc09wdGlvbmFsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIG1hcmtlcjogc3RyaW5nO1xufVxuIiwiPGRpdlxuICBjbGFzcz1cInNreS1kb2NzLWFuYXRvbXktaXRlbVwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnc2t5LWRvY3MtYW5hdG9teS1pdGVtLW9wdGlvbmFsJzogaXNPcHRpb25hbFxuICB9XCJcbj5cbiAgPGRpdiBjbGFzcz1cInNreS1kb2NzLWFuYXRvbXktaXRlbS1tYXJrZXJcIj5cbiAgICB7eyBtYXJrZXIgfX1cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJza3ktZG9jcy1hbmF0b215LWl0ZW0tZGVzY3JpcHRpb25cIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPHNwYW4gKm5nSWY9XCJpc09wdGlvbmFsXCIgY2xhc3M9XCJza3ktZGVlbXBoYXNpemVkXCI+Jm5ic3A7KG9wdGlvbmFsKTwvc3Bhbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, Input, } from '@angular/core';
|
|
2
|
+
import { SkyDocsAnatomyItemComponent } from './anatomy-item.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@skyux/layout";
|
|
5
|
+
import * as i2 from "@blackbaud/skyux-lib-media";
|
|
6
|
+
export class SkyDocsAnatomyComponent {
|
|
7
|
+
ngAfterContentInit() {
|
|
8
|
+
this.anatomyItems.forEach((item, i) => {
|
|
9
|
+
item.marker = (i + 1).toString();
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
SkyDocsAnatomyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDocsAnatomyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14
|
+
SkyDocsAnatomyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyDocsAnatomyComponent, selector: "sky-docs-anatomy", inputs: { imagePath: "imagePath" }, queries: [{ propertyName: "anatomyItems", predicate: SkyDocsAnatomyItemComponent }], ngImport: i0, template: "<div class=\"sky-docs-anatomy\">\n <sky-row>\n <sky-column screenSmall=\"6\" screenMedium=\"5\" screenLarge=\"4\">\n <ng-content select=\"sky-docs-anatomy-item\"></ng-content>\n </sky-column>\n <sky-column screenSmall=\"6\" screenMedium=\"7\" screenLarge=\"8\">\n <sky-image [imageSource]=\"imagePath\"></sky-image>\n </sky-column>\n </sky-row>\n</div>\n", styles: [""], components: [{ type: i1.λ23, selector: "sky-row", inputs: ["reverseColumnOrder"] }, { type: i1.λ24, selector: "sky-column", inputs: ["screenXSmall", "screenSmall", "screenMedium", "screenLarge"] }, { type: i2.λ4, selector: "sky-image", inputs: ["caption", "captionType", "imageAlt", "imageSource", "showBorder", "showCaptionPrefix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDocsAnatomyComponent, decorators: [{
|
|
16
|
+
type: Component,
|
|
17
|
+
args: [{ selector: 'sky-docs-anatomy', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"sky-docs-anatomy\">\n <sky-row>\n <sky-column screenSmall=\"6\" screenMedium=\"5\" screenLarge=\"4\">\n <ng-content select=\"sky-docs-anatomy-item\"></ng-content>\n </sky-column>\n <sky-column screenSmall=\"6\" screenMedium=\"7\" screenLarge=\"8\">\n <sky-image [imageSource]=\"imagePath\"></sky-image>\n </sky-column>\n </sky-row>\n</div>\n", styles: [""] }]
|
|
18
|
+
}], propDecorators: { imagePath: [{
|
|
19
|
+
type: Input
|
|
20
|
+
}], anatomyItems: [{
|
|
21
|
+
type: ContentChildren,
|
|
22
|
+
args: [SkyDocsAnatomyItemComponent]
|
|
23
|
+
}] } });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hdG9teS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb2NzLXRvb2xzL3NyYy9tb2R1bGVzL2FuYXRvbXkvYW5hdG9teS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb2NzLXRvb2xzL3NyYy9tb2R1bGVzL2FuYXRvbXkvYW5hdG9teS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBUXZFLE1BQU0sT0FBTyx1QkFBdUI7SUFPM0Isa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztvSEFYVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qix5SEFJakIsMkJBQTJCLDZCQ3JCOUMsNFhBVUE7MkZET2EsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUl4QyxTQUFTO3NCQURmLEtBQUs7Z0JBSUUsWUFBWTtzQkFEbkIsZUFBZTt1QkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIElucHV0LFxuICBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lEb2NzQW5hdG9teUl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2FuYXRvbXktaXRlbS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZG9jcy1hbmF0b215JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FuYXRvbXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hbmF0b215LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEb2NzQW5hdG9teUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgaW1hZ2VQYXRoOiBzdHJpbmc7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lEb2NzQW5hdG9teUl0ZW1Db21wb25lbnQpXG4gIHByaXZhdGUgYW5hdG9teUl0ZW1zOiBRdWVyeUxpc3Q8U2t5RG9jc0FuYXRvbXlJdGVtQ29tcG9uZW50PjtcblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYW5hdG9teUl0ZW1zLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgIGl0ZW0ubWFya2VyID0gKGkgKyAxKS50b1N0cmluZygpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LWRvY3MtYW5hdG9teVwiPlxuICA8c2t5LXJvdz5cbiAgICA8c2t5LWNvbHVtbiBzY3JlZW5TbWFsbD1cIjZcIiBzY3JlZW5NZWRpdW09XCI1XCIgc2NyZWVuTGFyZ2U9XCI0XCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktZG9jcy1hbmF0b215LWl0ZW1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9za3ktY29sdW1uPlxuICAgIDxza3ktY29sdW1uIHNjcmVlblNtYWxsPVwiNlwiIHNjcmVlbk1lZGl1bT1cIjdcIiBzY3JlZW5MYXJnZT1cIjhcIj5cbiAgICAgIDxza3ktaW1hZ2UgW2ltYWdlU291cmNlXT1cImltYWdlUGF0aFwiPjwvc2t5LWltYWdlPlxuICAgIDwvc2t5LWNvbHVtbj5cbiAgPC9za3ktcm93PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { SkyImageModule } from '@blackbaud/skyux-lib-media';
|
|
4
|
+
import { SkyFluidGridModule } from '@skyux/layout';
|
|
5
|
+
import { SkyDocsAnatomyComponent } from './anatomy.component';
|
|
6
|
+
import { SkyDocsAnatomyItemComponent } from './anatomy-item.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class SkyDocsAnatomyModule {
|
|
9
|
+
}
|
|
10
|
+
SkyDocsAnatomyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDocsAnatomyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
11
|
+
SkyDocsAnatomyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDocsAnatomyModule, declarations: [SkyDocsAnatomyComponent, SkyDocsAnatomyItemComponent], imports: [CommonModule, SkyFluidGridModule, SkyImageModule], exports: [SkyDocsAnatomyComponent, SkyDocsAnatomyItemComponent] });
|
|
12
|
+
SkyDocsAnatomyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDocsAnatomyModule, imports: [[CommonModule, SkyFluidGridModule, SkyImageModule]] });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDocsAnatomyModule, decorators: [{
|
|
14
|
+
type: NgModule,
|
|
15
|
+
args: [{
|
|
16
|
+
imports: [CommonModule, SkyFluidGridModule, SkyImageModule],
|
|
17
|
+
declarations: [SkyDocsAnatomyComponent, SkyDocsAnatomyItemComponent],
|
|
18
|
+
exports: [SkyDocsAnatomyComponent, SkyDocsAnatomyItemComponent],
|
|
19
|
+
}]
|
|
20
|
+
}] });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hdG9teS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb2NzLXRvb2xzL3NyYy9tb2R1bGVzL2FuYXRvbXkvYW5hdG9teS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFPdkUsTUFBTSxPQUFPLG9CQUFvQjs7aUhBQXBCLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGlCQUhoQix1QkFBdUIsRUFBRSwyQkFBMkIsYUFEekQsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsYUFFaEQsdUJBQXVCLEVBQUUsMkJBQTJCO2tIQUVuRCxvQkFBb0IsWUFKdEIsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxDQUFDOzJGQUloRCxvQkFBb0I7a0JBTGhDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsQ0FBQztvQkFDM0QsWUFBWSxFQUFFLENBQUMsdUJBQXVCLEVBQUUsMkJBQTJCLENBQUM7b0JBQ3BFLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixFQUFFLDJCQUEyQixDQUFDO2lCQUNoRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUltYWdlTW9kdWxlIH0gZnJvbSAnQGJsYWNrYmF1ZC9za3l1eC1saWItbWVkaWEnO1xuXG5pbXBvcnQgeyBTa3lGbHVpZEdyaWRNb2R1bGUgfSBmcm9tICdAc2t5dXgvbGF5b3V0JztcblxuaW1wb3J0IHsgU2t5RG9jc0FuYXRvbXlDb21wb25lbnQgfSBmcm9tICcuL2FuYXRvbXkuY29tcG9uZW50JztcblxuaW1wb3J0IHsgU2t5RG9jc0FuYXRvbXlJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9hbmF0b215LWl0ZW0uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2t5Rmx1aWRHcmlkTW9kdWxlLCBTa3lJbWFnZU1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1NreURvY3NBbmF0b215Q29tcG9uZW50LCBTa3lEb2NzQW5hdG9teUl0ZW1Db21wb25lbnRdLFxuICBleHBvcnRzOiBbU2t5RG9jc0FuYXRvbXlDb21wb25lbnQsIFNreURvY3NBbmF0b215SXRlbUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreURvY3NBbmF0b215TW9kdWxlIHt9XG4iXX0=
|
|
File without changes
|
|
@@ -3,4 +3,4 @@ export var SkyDocsCodeExampleTheme;
|
|
|
3
3
|
SkyDocsCodeExampleTheme["Default"] = "default";
|
|
4
4
|
SkyDocsCodeExampleTheme["Modern"] = "modern";
|
|
5
5
|
})(SkyDocsCodeExampleTheme || (SkyDocsCodeExampleTheme = {}));
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1leGFtcGxlLXRoZW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9jcy10b29scy9zcmMvbW9kdWxlcy9jb2RlLWV4YW1wbGVzL2NvZGUtZXhhbXBsZS10aGVtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSx1QkFHWDtBQUhELFdBQVksdUJBQXVCO0lBQ2pDLDhDQUFtQixDQUFBO0lBQ25CLDRDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFIVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBR2xDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gU2t5RG9jc0NvZGVFeGFtcGxlVGhlbWUge1xuICBEZWZhdWx0ID0gJ2RlZmF1bHQnLFxuICBNb2Rlcm4gPSAnbW9kZXJuJyxcbn1cbiJdfQ==
|
|
@@ -0,0 +1,68 @@
|
|
|
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
|
+
constructor(themeSvc) {
|
|
20
|
+
this.ngUnsubscribe = new Subject();
|
|
21
|
+
// Update theme property with SkyThemeService if it has not been set.
|
|
22
|
+
if (!this._theme && themeSvc) {
|
|
23
|
+
themeSvc.settingsChange
|
|
24
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
25
|
+
.subscribe((change) => {
|
|
26
|
+
if (change.currentSettings.theme.name === 'modern') {
|
|
27
|
+
this.theme = SkyDocsCodeExampleTheme.Modern;
|
|
28
|
+
}
|
|
29
|
+
else if (change.currentSettings.theme.name === 'default') {
|
|
30
|
+
this.theme = SkyDocsCodeExampleTheme.Default;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Specifies if the editor service should show the example in modern theme.
|
|
37
|
+
* The value will be gleaned from `SkyThemeService` first, then fallback to 'default' if the service is not found.
|
|
38
|
+
*/
|
|
39
|
+
set theme(value) {
|
|
40
|
+
this._theme = value;
|
|
41
|
+
}
|
|
42
|
+
get theme() {
|
|
43
|
+
return this._theme || SkyDocsCodeExampleTheme.Default;
|
|
44
|
+
}
|
|
45
|
+
ngOnDestroy() {
|
|
46
|
+
this.ngUnsubscribe.next();
|
|
47
|
+
this.ngUnsubscribe.complete();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
SkyDocsCodeExampleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDocsCodeExampleComponent, deps: [{ token: i1.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
51
|
+
SkyDocsCodeExampleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyDocsCodeExampleComponent, selector: "sky-docs-code-example", inputs: { heading: "heading", sourceCodePath: "sourceCodePath", theme: "theme" }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", 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: function () { return [{ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1leGFtcGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RvY3MtdG9vbHMvc3JjL21vZHVsZXMvY29kZS1leGFtcGxlcy9jb2RlLWV4YW1wbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFFTCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUUvRDs7Ozs7Ozs7OztHQVVHO0FBTUgsTUFBTSxPQUFPLDJCQUEyQjtJQWdDdEMsWUFBd0IsUUFBMEI7UUFKMUMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBSzFDLHFFQUFxRTtRQUNyRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxRQUFRLEVBQUU7WUFDNUIsUUFBUSxDQUFDLGNBQWM7aUJBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUNuQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO29CQUNsRCxJQUFJLENBQUMsS0FBSyxHQUFHLHVCQUF1QixDQUFDLE1BQU0sQ0FBQztpQkFDN0M7cUJBQU0sSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO29CQUMxRCxJQUFJLENBQUMsS0FBSyxHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQztpQkFDOUM7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQTlCRDs7O09BR0c7SUFDSCxJQUNXLEtBQUssQ0FBQyxLQUE4QjtRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLHVCQUF1QixDQUFDLE9BQU8sQ0FBQztJQUN4RCxDQUFDO0lBcUJNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7O3dIQWxEVSwyQkFBMkI7NEdBQTNCLDJCQUEyQiwrSUFINUIsRUFBRTsyRkFHRCwyQkFBMkI7a0JBTHZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzswQkFpQ2MsUUFBUTs0Q0ExQmQsT0FBTztzQkFEYixLQUFLO2dCQVFDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBUUssS0FBSztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5RG9jc0NvZGVFeGFtcGxlVGhlbWUgfSBmcm9tICcuL2NvZGUtZXhhbXBsZS10aGVtZSc7XG5cbi8qKlxuICogUmVuZGVycyBhIHNpbmdsZSBjb2RlIGV4YW1wbGUuXG4gKiBAZXhhbXBsZVxuICogYGBgXG4gKiA8c2t5LWRvY3MtY29kZS1leGFtcGxlXG4gKiAgIGhlYWRpbmc9XCJNeSBjb2RlIGV4YW1wbGVcIlxuICogICBzb3VyY2VDb2RlUGF0aD1cInNyYy9hcHAvcHVibGljL3BsdWdpbi1yZXNvdXJjZXMvZm9vYmFyXCJcbiAqID5cbiAqIDwvc2t5LWRvY3MtY29kZS1leGFtcGxlPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kb2NzLWNvZGUtZXhhbXBsZScsXG4gIHRlbXBsYXRlOiAnJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreURvY3NDb2RlRXhhbXBsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBUaGUgaGVhZGluZyB0byBiZSB1c2VkIGZvciB0aGUgY29kZSBleGFtcGxlLlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWFkaW5nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbG9jYWwgcGF0aCB0byB0aGUgY29kZSBleGFtcGxlJ3Mgc291cmNlIGNvZGUuIFRoZSB2YWx1ZSBpcyByZWxhdGl2ZSB0byB0aGUgcm9vdCBkaXJlY3RvcnkuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNvdXJjZUNvZGVQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBpZiB0aGUgZWRpdG9yIHNlcnZpY2Ugc2hvdWxkIHNob3cgdGhlIGV4YW1wbGUgaW4gbW9kZXJuIHRoZW1lLlxuICAgKiBUaGUgdmFsdWUgd2lsbCBiZSBnbGVhbmVkIGZyb20gYFNreVRoZW1lU2VydmljZWAgZmlyc3QsIHRoZW4gZmFsbGJhY2sgdG8gJ2RlZmF1bHQnIGlmIHRoZSBzZXJ2aWNlIGlzIG5vdCBmb3VuZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGhlbWUodmFsdWU6IFNreURvY3NDb2RlRXhhbXBsZVRoZW1lKSB7XG4gICAgdGhpcy5fdGhlbWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGhlbWUoKTogU2t5RG9jc0NvZGVFeGFtcGxlVGhlbWUge1xuICAgIHJldHVybiB0aGlzLl90aGVtZSB8fCBTa3lEb2NzQ29kZUV4YW1wbGVUaGVtZS5EZWZhdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF90aGVtZTogU2t5RG9jc0NvZGVFeGFtcGxlVGhlbWU7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2UpIHtcbiAgICAvLyBVcGRhdGUgdGhlbWUgcHJvcGVydHkgd2l0aCBTa3lUaGVtZVNlcnZpY2UgaWYgaXQgaGFzIG5vdCBiZWVuIHNldC5cbiAgICBpZiAoIXRoaXMuX3RoZW1lICYmIHRoZW1lU3ZjKSB7XG4gICAgICB0aGVtZVN2Yy5zZXR0aW5nc0NoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgaWYgKGNoYW5nZS5jdXJyZW50U2V0dGluZ3MudGhlbWUubmFtZSA9PT0gJ21vZGVybicpIHtcbiAgICAgICAgICAgIHRoaXMudGhlbWUgPSBTa3lEb2NzQ29kZUV4YW1wbGVUaGVtZS5Nb2Rlcm47XG4gICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuY3VycmVudFNldHRpbmdzLnRoZW1lLm5hbWUgPT09ICdkZWZhdWx0Jykge1xuICAgICAgICAgICAgdGhpcy50aGVtZSA9IFNreURvY3NDb2RlRXhhbXBsZVRoZW1lLkRlZmF1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1leGFtcGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9jcy10b29scy9zcmMvbW9kdWxlcy9jb2RlLWV4YW1wbGVzL2NvZGUtZXhhbXBsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5RG9jc1NvdXJjZUNvZGVGaWxlIH0gZnJvbSAnLi4vc291cmNlLWNvZGUvc291cmNlLWNvZGUtZmlsZSc7XG5cbmltcG9ydCB7IFNreURvY3NDb2RlRXhhbXBsZU1vZHVsZURlcGVuZGVuY2llcyB9IGZyb20gJy4vY29kZS1leGFtcGxlLW1vZHVsZS1kZXBlbmRlbmNpZXMnO1xuXG5pbXBvcnQgeyBTa3lEb2NzQ29kZUV4YW1wbGVUaGVtZSB9IGZyb20gJy4vY29kZS1leGFtcGxlLXRoZW1lJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lEb2NzQ29kZUV4YW1wbGUge1xuICBoZWFkaW5nOiBzdHJpbmc7XG5cbiAgcGFja2FnZURlcGVuZGVuY2llczogU2t5RG9jc0NvZGVFeGFtcGxlTW9kdWxlRGVwZW5kZW5jaWVzO1xuXG4gIHNvdXJjZUNvZGU6IFNreURvY3NTb3VyY2VDb2RlRmlsZVtdO1xuXG4gIHRoZW1lOiBTa3lEb2NzQ29kZUV4YW1wbGVUaGVtZTtcblxuICBzdHlsZXNoZWV0cz86IHN0cmluZ1tdO1xufVxuIl19
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import StackBlitzSDK from '@stackblitz/sdk';
|
|
3
|
+
import { SkyDocsCodeExampleTheme } from './code-example-theme';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export class SkyDocsCodeExamplesEditorService {
|
|
9
|
+
launchEditor(codeExample) {
|
|
10
|
+
const project = this.getPayload(codeExample);
|
|
11
|
+
const options = {};
|
|
12
|
+
StackBlitzSDK.openProject(project, options);
|
|
13
|
+
}
|
|
14
|
+
getPayload(codeExample) {
|
|
15
|
+
const angularVersion = '^13.0.0';
|
|
16
|
+
const skyuxVersion = '^6.0.0-0';
|
|
17
|
+
const defaultDependencies = {
|
|
18
|
+
'@angular/animations': angularVersion,
|
|
19
|
+
'@angular/common': angularVersion,
|
|
20
|
+
'@angular/compiler': angularVersion,
|
|
21
|
+
'@angular/core': angularVersion,
|
|
22
|
+
'@angular/forms': angularVersion,
|
|
23
|
+
'@angular/platform-browser': angularVersion,
|
|
24
|
+
'@angular/platform-browser-dynamic': angularVersion,
|
|
25
|
+
'@angular/router': angularVersion,
|
|
26
|
+
'@skyux/animations': skyuxVersion,
|
|
27
|
+
'@skyux/assets': skyuxVersion,
|
|
28
|
+
'@skyux/config': skyuxVersion,
|
|
29
|
+
'@skyux/core': skyuxVersion,
|
|
30
|
+
'@skyux/errors': skyuxVersion,
|
|
31
|
+
'@skyux/forms': skyuxVersion,
|
|
32
|
+
'@skyux/http': skyuxVersion,
|
|
33
|
+
'@skyux/i18n': skyuxVersion,
|
|
34
|
+
'@skyux/indicators': skyuxVersion,
|
|
35
|
+
'@skyux/layout': skyuxVersion,
|
|
36
|
+
'@skyux/modals': skyuxVersion,
|
|
37
|
+
'@skyux/popovers': skyuxVersion,
|
|
38
|
+
'@skyux/router': skyuxVersion,
|
|
39
|
+
'@skyux/theme': skyuxVersion,
|
|
40
|
+
rxjs: '^7',
|
|
41
|
+
tslib: '^2.3.0',
|
|
42
|
+
'zone.js': '~0.11.4',
|
|
43
|
+
};
|
|
44
|
+
const mergedDependencies = Object.assign({}, defaultDependencies, codeExample.packageDependencies);
|
|
45
|
+
// Ensure any @skyux dependencies list the correct version of SKY UX.
|
|
46
|
+
// e.g. `"@skyux/core": "*"` --> `"@skyux/core": "5.0.0"`
|
|
47
|
+
for (const packageName in mergedDependencies) {
|
|
48
|
+
/*istanbul ignore else*/
|
|
49
|
+
if (mergedDependencies.hasOwnProperty(packageName)) {
|
|
50
|
+
const version = mergedDependencies[packageName];
|
|
51
|
+
if (version === '*' &&
|
|
52
|
+
/^(@blackbaud\/skyux-lib-|@skyux)/.test(packageName)) {
|
|
53
|
+
mergedDependencies[packageName] = skyuxVersion;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const files = this.parseStackBlitzFiles(codeExample.sourceCode, mergedDependencies, codeExample.theme, codeExample.stylesheets);
|
|
58
|
+
return {
|
|
59
|
+
files,
|
|
60
|
+
title: 'SKY UX Demo',
|
|
61
|
+
description: 'SKY UX Demo',
|
|
62
|
+
template: 'angular-cli',
|
|
63
|
+
dependencies: mergedDependencies,
|
|
64
|
+
settings: {
|
|
65
|
+
compile: {
|
|
66
|
+
clearConsole: false,
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
parseStackBlitzFiles(sourceCode, dependencies, theme, stylesheets = []) {
|
|
72
|
+
const srcPath = 'src/';
|
|
73
|
+
const appPath = `${srcPath}app/`;
|
|
74
|
+
const banner = `/**
|
|
75
|
+
* This file is needed for the StackBlitz demo only.
|
|
76
|
+
* It is automatically provided when using the Angular CLI.
|
|
77
|
+
**/
|
|
78
|
+
`;
|
|
79
|
+
const moduleImportStatements = [
|
|
80
|
+
`import {\n NgModule\n} from '@angular/core';`,
|
|
81
|
+
`import {\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';`,
|
|
82
|
+
`import {\n BrowserAnimationsModule\n} from '@angular/platform-browser/animations';`,
|
|
83
|
+
`import {\n RouterModule\n} from '@angular/router';`,
|
|
84
|
+
`import {\n SkyAppLocaleProvider\n} from '@skyux/i18n';`,
|
|
85
|
+
`import {\n SkyThemeService\n} from '@skyux/theme';`,
|
|
86
|
+
`import {\n of as observableOf\n} from 'rxjs';`,
|
|
87
|
+
`import {\n AppComponent\n} from './app.component';`,
|
|
88
|
+
];
|
|
89
|
+
const moduleImports = [
|
|
90
|
+
'BrowserAnimationsModule',
|
|
91
|
+
'FormsModule',
|
|
92
|
+
'ReactiveFormsModule',
|
|
93
|
+
'RouterModule.forRoot([])',
|
|
94
|
+
];
|
|
95
|
+
const files = {};
|
|
96
|
+
let appComponentTemplate = '';
|
|
97
|
+
sourceCode.forEach((file) => {
|
|
98
|
+
files[`${appPath}${file.fileName}`] = file.rawContents;
|
|
99
|
+
// Setup module imports and component selectors.
|
|
100
|
+
if (file.fileName.indexOf('.module.ts') > -1) {
|
|
101
|
+
const moduleName = this.getModuleName(file.rawContents);
|
|
102
|
+
const importPath = `./${this.getFilenameNoExtension(file.fileName)}`;
|
|
103
|
+
const exportedComponent = this.getExportedComponent(file.rawContents);
|
|
104
|
+
const componentSelector = this.getComponentSelector(exportedComponent, sourceCode);
|
|
105
|
+
appComponentTemplate += `<${componentSelector}></${componentSelector}>`;
|
|
106
|
+
moduleImports.push(moduleName);
|
|
107
|
+
moduleImportStatements.push(`import {\n ${moduleName}\n} from '${importPath}';`);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
files[`${appPath}app.component.ts`] = `${banner}
|
|
111
|
+
import {
|
|
112
|
+
Component,
|
|
113
|
+
Renderer2
|
|
114
|
+
} from '@angular/core';
|
|
115
|
+
|
|
116
|
+
import {
|
|
117
|
+
SkyTheme,
|
|
118
|
+
SkyThemeMode,
|
|
119
|
+
SkyThemeService,
|
|
120
|
+
SkyThemeSettings
|
|
121
|
+
} from '@skyux/theme';
|
|
122
|
+
|
|
123
|
+
@Component({
|
|
124
|
+
selector: 'sky-demo-app',
|
|
125
|
+
template: '${appComponentTemplate}'
|
|
126
|
+
})
|
|
127
|
+
export class AppComponent {
|
|
128
|
+
|
|
129
|
+
constructor(
|
|
130
|
+
themeSvc: SkyThemeService,
|
|
131
|
+
renderer?: Renderer2
|
|
132
|
+
) {
|
|
133
|
+
const themeSettings = new SkyThemeSettings(
|
|
134
|
+
SkyTheme.presets['${theme === SkyDocsCodeExampleTheme.Modern ? 'modern' : 'default'}'],
|
|
135
|
+
SkyThemeMode.presets.light
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
themeSvc.init(
|
|
139
|
+
document.body,
|
|
140
|
+
renderer,
|
|
141
|
+
themeSettings
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
}`;
|
|
146
|
+
files[`${appPath}app.module.ts`] = `${moduleImportStatements.join('\n\n')}
|
|
147
|
+
|
|
148
|
+
@NgModule({
|
|
149
|
+
imports: [
|
|
150
|
+
${moduleImports.join(',\n ')}
|
|
151
|
+
],
|
|
152
|
+
declarations: [
|
|
153
|
+
AppComponent
|
|
154
|
+
],
|
|
155
|
+
bootstrap: [
|
|
156
|
+
AppComponent
|
|
157
|
+
],
|
|
158
|
+
providers: [
|
|
159
|
+
SkyThemeService,
|
|
160
|
+
{
|
|
161
|
+
provide: SkyAppLocaleProvider,
|
|
162
|
+
useValue: {
|
|
163
|
+
getLocaleInfo: () => observableOf({
|
|
164
|
+
locale: 'en-US'
|
|
165
|
+
})
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
]
|
|
169
|
+
})
|
|
170
|
+
export class AppModule { }
|
|
171
|
+
`;
|
|
172
|
+
files[`${srcPath}index.html`] = `<!--
|
|
173
|
+
The CSS links are needed for the StackBlitz demo only.
|
|
174
|
+
This is a workaround for a known bug that prevents external imports in CSS.
|
|
175
|
+
https://github.com/stackblitz/core/issues/133
|
|
176
|
+
-->
|
|
177
|
+
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
|
|
178
|
+
<link rel="stylesheet" type="text/css" href="https://sky.blackbaudcdn.net/static/skyux-icons/5.0.0/assets/css/skyux-icons.min.css" />
|
|
179
|
+
|
|
180
|
+
<sky-demo-app>
|
|
181
|
+
Loading...
|
|
182
|
+
</sky-demo-app>`;
|
|
183
|
+
files[`${srcPath}main.ts`] = `${banner}
|
|
184
|
+
import './polyfills';
|
|
185
|
+
|
|
186
|
+
import {
|
|
187
|
+
platformBrowserDynamic
|
|
188
|
+
} from '@angular/platform-browser-dynamic';
|
|
189
|
+
|
|
190
|
+
import {
|
|
191
|
+
AppModule
|
|
192
|
+
} from './app/app.module';
|
|
193
|
+
|
|
194
|
+
platformBrowserDynamic().bootstrapModule(AppModule).then(ref => {
|
|
195
|
+
if (window['ngRef']) {
|
|
196
|
+
window['ngRef'].destroy();
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
window['ngRef'] = ref;
|
|
200
|
+
}).catch(err => console.error(err));
|
|
201
|
+
`;
|
|
202
|
+
files[`${srcPath}polyfills.ts`] = `${banner}
|
|
203
|
+
import 'zone.js';
|
|
204
|
+
`;
|
|
205
|
+
files[`${srcPath}styles.scss`] = `@import '~@skyux/theme/css/sky';
|
|
206
|
+
@import '~@skyux/theme/css/themes/modern/styles';
|
|
207
|
+
|
|
208
|
+
body {
|
|
209
|
+
background-color: #fff;
|
|
210
|
+
margin: 15px;
|
|
211
|
+
}`;
|
|
212
|
+
stylesheets.push('src/styles.scss');
|
|
213
|
+
files['angular.json'] = `{
|
|
214
|
+
"projects": {
|
|
215
|
+
"demo": {
|
|
216
|
+
"architect": {
|
|
217
|
+
"build": {
|
|
218
|
+
"options": {
|
|
219
|
+
"index": "src/index.html",
|
|
220
|
+
"styles": ${JSON.stringify(stylesheets)}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}`;
|
|
227
|
+
files['package.json'] = JSON.stringify({
|
|
228
|
+
dependencies,
|
|
229
|
+
}, undefined, 2);
|
|
230
|
+
files['tsconfig.json'] = `{
|
|
231
|
+
"compilerOptions": {
|
|
232
|
+
"target": "es2017",
|
|
233
|
+
"module": "es2020",
|
|
234
|
+
"moduleResolution": "node",
|
|
235
|
+
"emitDecoratorMetadata": true,
|
|
236
|
+
"experimentalDecorators": true,
|
|
237
|
+
"importHelpers": true,
|
|
238
|
+
"typeRoots": ["node_modules/@types"],
|
|
239
|
+
"lib": [
|
|
240
|
+
"es2020",
|
|
241
|
+
"dom"
|
|
242
|
+
]
|
|
243
|
+
},
|
|
244
|
+
"angularCompilerOptions": {
|
|
245
|
+
"fullTemplateTypeCheck": true,
|
|
246
|
+
"strictInjectionParameters": true,
|
|
247
|
+
"strictInputAccessModifiers": true,
|
|
248
|
+
"strictTemplates": true,
|
|
249
|
+
"enableIvy": true
|
|
250
|
+
}
|
|
251
|
+
}`;
|
|
252
|
+
return files;
|
|
253
|
+
}
|
|
254
|
+
getModuleName(contents) {
|
|
255
|
+
return contents.split('export class ')[1].split(' {')[0];
|
|
256
|
+
}
|
|
257
|
+
getFilenameNoExtension(fileName) {
|
|
258
|
+
const extension = fileName.split('.').pop();
|
|
259
|
+
return fileName.replace(`.${extension}`, '');
|
|
260
|
+
}
|
|
261
|
+
getExportedComponent(contents) {
|
|
262
|
+
const trimmed = contents.replace(/\s/g, '');
|
|
263
|
+
let fragment = trimmed.split('exports:[')[1];
|
|
264
|
+
if (!fragment) {
|
|
265
|
+
throw 'You must export a component from the code example module!';
|
|
266
|
+
}
|
|
267
|
+
fragment = fragment.split(']')[0];
|
|
268
|
+
const components = fragment.split(',').filter((x) => x);
|
|
269
|
+
if (components.length > 1) {
|
|
270
|
+
throw ('You may only export a single component from the code example module' +
|
|
271
|
+
`(we found ${components.length}: ${components.join(', ')}).` +
|
|
272
|
+
'Is it possible to create a new code example with the extra components?');
|
|
273
|
+
}
|
|
274
|
+
return components[0];
|
|
275
|
+
}
|
|
276
|
+
getComponentSelector(componentClassName, sourceCode) {
|
|
277
|
+
const found = sourceCode.find((file) => {
|
|
278
|
+
return file.rawContents.indexOf(componentClassName) > -1;
|
|
279
|
+
});
|
|
280
|
+
const trimmed = found.rawContents.replace(/\s/g, '');
|
|
281
|
+
return trimmed.split(`selector:'`)[1].split(`'`)[0];
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
SkyDocsCodeExamplesEditorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDocsCodeExamplesEditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
285
|
+
SkyDocsCodeExamplesEditorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDocsCodeExamplesEditorService, providedIn: 'root' });
|
|
286
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDocsCodeExamplesEditorService, decorators: [{
|
|
287
|
+
type: Injectable,
|
|
288
|
+
args: [{
|
|
289
|
+
providedIn: 'root',
|
|
290
|
+
}]
|
|
291
|
+
}] });
|
|
292
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1leGFtcGxlcy1lZGl0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RvY3MtdG9vbHMvc3JjL21vZHVsZXMvY29kZS1leGFtcGxlcy9jb2RlLWV4YW1wbGVzLWVkaXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxhQUFhLE1BQU0saUJBQWlCLENBQUM7QUFXNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBSS9EOztHQUVHO0FBSUgsTUFBTSxPQUFPLGdDQUFnQztJQUNwQyxZQUFZLENBQUMsV0FBK0I7UUFDakQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxNQUFNLE9BQU8sR0FBMEIsRUFBRSxDQUFDO1FBRTFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTyxVQUFVLENBQUMsV0FBK0I7UUFDaEQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDO1FBQ2pDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQztRQUVoQyxNQUFNLG1CQUFtQixHQUF5QztZQUNoRSxxQkFBcUIsRUFBRSxjQUFjO1lBQ3JDLGlCQUFpQixFQUFFLGNBQWM7WUFDakMsbUJBQW1CLEVBQUUsY0FBYztZQUNuQyxlQUFlLEVBQUUsY0FBYztZQUMvQixnQkFBZ0IsRUFBRSxjQUFjO1lBQ2hDLDJCQUEyQixFQUFFLGNBQWM7WUFDM0MsbUNBQW1DLEVBQUUsY0FBYztZQUNuRCxpQkFBaUIsRUFBRSxjQUFjO1lBQ2pDLG1CQUFtQixFQUFFLFlBQVk7WUFDakMsZUFBZSxFQUFFLFlBQVk7WUFDN0IsZUFBZSxFQUFFLFlBQVk7WUFDN0IsYUFBYSxFQUFFLFlBQVk7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QUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVsQyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFeEQsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6QixNQUFNLENBQ0oscUVBQXFFO2dCQUNyRSxhQUFhLFVBQVUsQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtnQkFDNUQsd0VBQXdFLENBQ3pFLENBQUM7U0FDSDtRQUVELE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxvQkFBb0IsQ0FDMUIsa0JBQTBCLEVBQzFCLFVBQW1DO1FBRW5DLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNyQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFckQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs2SEE1VlUsZ0NBQWdDO2lJQUFoQyxnQ0FBZ0MsY0FGL0IsTUFBTTsyRkFFUCxnQ0FBZ0M7a0JBSDVDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgU3RhY2tCbGl0elNESyBmcm9tICdAc3RhY2tibGl0ei9zZGsnO1xuXG5pbXBvcnQge1xuICBPcGVuT3B0aW9ucyBhcyBTdGFja0JsaXR6T3Blbk9wdGlvbnMsXG4gIFByb2plY3QgYXMgU3RhY2tCbGl0elByb2plY3QsXG59IGZyb20gJ0BzdGFja2JsaXR6L3Nkay90eXBpbmdzL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgeyBTa3lEb2NzU291cmNlQ29kZUZpbGUgfSBmcm9tICcuLi9zb3VyY2UtY29kZS9zb3VyY2UtY29kZS1maWxlJztcblxuaW1wb3J0IHsgU2t5RG9jc0NvZGVFeGFtcGxlTW9kdWxlRGVwZW5kZW5jaWVzIH0gZnJvbSAnLi9jb2RlLWV4YW1wbGUtbW9kdWxlLWRlcGVuZGVuY2llcyc7XG5cbmltcG9ydCB7IFNreURvY3NDb2RlRXhhbXBsZVRoZW1lIH0gZnJvbSAnLi9jb2RlLWV4YW1wbGUtdGhlbWUnO1xuXG5pbXBvcnQgeyBTa3lEb2NzQ29kZUV4YW1wbGUgfSBmcm9tICcuL2NvZGUtZXhhbXBsZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEb2NzQ29kZUV4YW1wbGVzRWRpdG9yU2VydmljZSB7XG4gIHB1YmxpYyBsYXVuY2hFZGl0b3IoY29kZUV4YW1wbGU6IFNreURvY3NDb2RlRXhhbXBsZSk6IHZvaWQge1xuICAgIGNvbnN0IHByb2plY3QgPSB0aGlzLmdldFBheWxvYWQoY29kZUV4YW1wbGUpO1xuICAgIGNvbnN0IG9wdGlvbnM6IFN0YWNrQmxpdHpPcGVuT3B0aW9ucyA9IHt9O1xuXG4gICAgU3RhY2tCbGl0elNESy5vcGVuUHJvamVjdChwcm9qZWN0LCBvcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGF5bG9hZChjb2RlRXhhbXBsZTogU2t5RG9jc0NvZGVFeGFtcGxlKTogU3RhY2tCbGl0elByb2plY3Qge1xuICAgIGNvbnN0IGFuZ3VsYXJWZXJzaW9uID0gJ14xMy4wLjAnO1xuICAgIGNvbnN0IHNreXV4VmVyc2lvbiA9ICdeNi4wLjAtMCc7XG5cbiAgICBjb25zdCBkZWZhdWx0RGVwZW5kZW5jaWVzOiBTa3lEb2NzQ29kZUV4YW1wbGVNb2R1bGVEZXBlbmRlbmNpZXMgPSB7XG4gICAgICAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bhbmd1bGFyL2NvbW1vbic6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bhbmd1bGFyL2NvbXBpbGVyJzogYW5ndWxhclZlcnNpb24sXG4gICAgICAnQGFuZ3VsYXIvY29yZSc6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bhbmd1bGFyL2Zvcm1zJzogYW5ndWxhclZlcnNpb24sXG4gICAgICAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXItZHluYW1pYyc6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bhbmd1bGFyL3JvdXRlcic6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9hbmltYXRpb25zJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9hc3NldHMnOiBza3l1eFZlcnNpb24sXG4gICAgICAnQHNreXV4L2NvbmZpZyc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvY29yZSc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvZXJyb3JzJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9mb3Jtcyc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvaHR0cCc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvaTE4bic6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvaW5kaWNhdG9ycyc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvbGF5b3V0Jzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9tb2RhbHMnOiBza3l1eFZlcnNpb24sXG4gICAgICAnQHNreXV4L3BvcG92ZXJzJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9yb3V0ZXInOiBza3l1eFZlcnNpb24sXG4gICAgICAnQHNreXV4L3RoZW1lJzogc2t5dXhWZXJzaW9uLFxuICAgICAgcnhqczogJ143JyxcbiAgICAgIHRzbGliOiAnXjIuMy4wJyxcbiAgICAgICd6b25lLmpzJzogJ34wLjExLjQnLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICBkZWZhdWx0RGVwZW5kZW5jaWVzLFxuICAgICAgY29kZUV4YW1wbGUucGFja2FnZURlcGVuZGVuY2llc1xuICAgICk7XG5cbiAgICAvLyBFbnN1cmUgYW55IEBza3l1eCBkZXBlbmRlbmNpZXMgbGlzdCB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIFNLWSBVWC5cbiAgICAvLyBlLmcuIGBcIkBza3l1eC9jb3JlXCI6IFwiKlwiYCAtLT4gYFwiQHNreXV4L2NvcmVcIjogXCI1LjAuMFwiYFxuICAgIGZvciAoY29uc3QgcGFja2FnZU5hbWUgaW4gbWVyZ2VkRGVwZW5kZW5jaWVzKSB7XG4gICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICAgIGlmIChtZXJnZWREZXBlbmRlbmNpZXMuaGFzT3duUHJvcGVydHkocGFja2FnZU5hbWUpKSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSBtZXJnZWREZXBlbmRlbmNpZXNbcGFja2FnZU5hbWVdO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdmVyc2lvbiA9PT0gJyonICYmXG4gICAgICAgICAgL14oQGJsYWNrYmF1ZFxcL3NreXV4LWxpYi18QHNreXV4KS8udGVzdChwYWNrYWdlTmFtZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgbWVyZ2VkRGVwZW5kZW5jaWVzW3BhY2thZ2VOYW1lXSA9IHNreXV4VmVyc2lvbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZpbGVzID0gdGhpcy5wYXJzZVN0YWNrQmxpdHpGaWxlcyhcbiAgICAgIGNvZGVFeGFtcGxlLnNvdXJjZUNvZGUsXG4gICAgICBtZXJnZWREZXBlbmRlbmNpZXMsXG4gICAgICBjb2RlRXhhbXBsZS50aGVtZSxcbiAgICAgIGNvZGVFeGFtcGxlLnN0eWxlc2hlZXRzXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBmaWxlcyxcbiAgICAgIHRpdGxlOiAnU0tZIFVYIERlbW8nLFxuICAgICAgZGVzY3JpcHRpb246ICdTS1kgVVggRGVtbycsXG4gICAgICB0ZW1wbGF0ZTogJ2FuZ3VsYXItY2xpJyxcbiAgICAgIGRlcGVuZGVuY2llczogbWVyZ2VkRGVwZW5kZW5jaWVzLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgY29tcGlsZToge1xuICAgICAgICAgIGNsZWFyQ29uc29sZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHBhcnNlU3RhY2tCbGl0ekZpbGVzKFxuICAgIHNvdXJjZUNvZGU6IFNreURvY3NTb3VyY2VDb2RlRmlsZVtdLFxuICAgIGRlcGVuZGVuY2llczogU2t5RG9jc0NvZGVFeGFtcGxlTW9kdWxlRGVwZW5kZW5jaWVzLFxuICAgIHRoZW1lOiBTa3lEb2NzQ29kZUV4YW1wbGVUaGVtZSxcbiAgICBzdHlsZXNoZWV0czogc3RyaW5nW10gPSBbXVxuICApOiB7XG4gICAgW3BhdGg6IHN0cmluZ106IHN0cmluZztcbiAgfSB7XG4gICAgY29uc3Qgc3JjUGF0aCA9ICdzcmMvJztcbiAgICBjb25zdCBhcHBQYXRoID0gYCR7c3JjUGF0aH1hcHAvYDtcblxuICAgIGNvbnN0IGJhbm5lciA9IGAvKipcbiAqIFRoaXMgZmlsZSBpcyBuZWVkZWQgZm9yIHRoZSBTdGFja0JsaXR6IGRlbW8gb25seS5cbiAqIEl0IGlzIGF1dG9tYXRpY2FsbHkgcHJvdmlkZWQgd2hlbiB1c2luZyB0aGUgQW5ndWxhciBDTEkuXG4gKiovXG4gYDtcblxuICAgIGNvbnN0IG1vZHVsZUltcG9ydFN0YXRlbWVudHM6IHN0cmluZ1tdID0gW1xuICAgICAgYGltcG9ydCB7XFxuICBOZ01vZHVsZVxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7YCxcbiAgICAgIGBpbXBvcnQge1xcbiAgRm9ybXNNb2R1bGUsXFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlXFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7YCxcbiAgICAgIGBpbXBvcnQge1xcbiAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGVcXG59IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7YCxcbiAgICAgIGBpbXBvcnQge1xcbiAgUm91dGVyTW9kdWxlXFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO2AsXG4gICAgICBgaW1wb3J0IHtcXG4gIFNreUFwcExvY2FsZVByb3ZpZGVyXFxufSBmcm9tICdAc2t5dXgvaTE4bic7YCxcbiAgICAgIGBpbXBvcnQge1xcbiAgU2t5VGhlbWVTZXJ2aWNlXFxufSBmcm9tICdAc2t5dXgvdGhlbWUnO2AsXG4gICAgICBgaW1wb3J0IHtcXG4gIG9mIGFzIG9ic2VydmFibGVPZlxcbn0gZnJvbSAncnhqcyc7YCxcbiAgICAgIGBpbXBvcnQge1xcbiAgQXBwQ29tcG9uZW50XFxufSBmcm9tICcuL2FwcC5jb21wb25lbnQnO2AsXG4gICAgXTtcblxuICAgIGNvbnN0IG1vZHVsZUltcG9ydHM6IHN0cmluZ1tdID0gW1xuICAgICAgJ0Jyb3dzZXJBbmltYXRpb25zTW9kdWxlJyxcbiAgICAgICdGb3Jtc01vZHVsZScsXG4gICAgICAnUmVhY3RpdmVGb3Jtc01vZHVsZScsXG4gICAgICAnUm91dGVyTW9kdWxlLmZvclJvb3QoW10pJyxcbiAgICBdO1xuXG4gICAgY29uc3QgZmlsZXM6IHsgW186IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICBsZXQgYXBwQ29tcG9uZW50VGVtcGxhdGUgPSAnJztcblxuICAgIHNvdXJjZUNvZGUuZm9yRWFjaCgoZmlsZSkgPT4ge1xuICAgICAgZmlsZXNbYCR7YXBwUGF0aH0ke2ZpbGUuZmlsZU5hbWV9YF0gPSBmaWxlLnJhd0NvbnRlbnRzO1xuXG4gICAgICAvLyBTZXR1cCBtb2R1bGUgaW1wb3J0cyBhbmQgY29tcG9uZW50IHNlbGVjdG9ycy5cbiAgICAgIGlmIChmaWxlLmZpbGVOYW1lLmluZGV4T2YoJy5tb2R1bGUudHMnKSA+IC0xKSB7XG4gICAgICAgIGNvbnN0IG1vZHVsZU5hbWUgPSB0aGlzLmdldE1vZHVsZU5hbWUoZmlsZS5yYXdDb250ZW50cyk7XG4gICAgICAgIGNvbnN0IGltcG9ydFBhdGggPSBgLi8ke3RoaXMuZ2V0RmlsZW5hbWVOb0V4dGVuc2lvbihmaWxlLmZpbGVOYW1lKX1gO1xuXG4gICAgICAgIGNvbnN0IGV4cG9ydGVkQ29tcG9uZW50ID0gdGhpcy5nZXRFeHBvcnRlZENvbXBvbmVudChmaWxlLnJhd0NvbnRlbnRzKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50U2VsZWN0b3IgPSB0aGlzLmdldENvbXBvbmVudFNlbGVjdG9yKFxuICAgICAgICAgIGV4cG9ydGVkQ29tcG9uZW50LFxuICAgICAgICAgIHNvdXJjZUNvZGVcbiAgICAgICAgKTtcblxuICAgICAgICBhcHBDb21wb25lbnRUZW1wbGF0ZSArPSBgPCR7Y29tcG9uZW50U2VsZWN0b3J9PjwvJHtjb21wb25lbnRTZWxlY3Rvcn0+YDtcblxuICAgICAgICBtb2R1bGVJbXBvcnRzLnB1c2gobW9kdWxlTmFtZSk7XG4gICAgICAgIG1vZHVsZUltcG9ydFN0YXRlbWVudHMucHVzaChcbiAgICAgICAgICBgaW1wb3J0IHtcXG4gICR7bW9kdWxlTmFtZX1cXG59IGZyb20gJyR7aW1wb3J0UGF0aH0nO2BcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGZpbGVzW2Ake2FwcFBhdGh9YXBwLmNvbXBvbmVudC50c2BdID0gYCR7YmFubmVyfVxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreVRoZW1lLFxuICBTa3lUaGVtZU1vZGUsXG4gIFNreVRoZW1lU2VydmljZSxcbiAgU2t5VGhlbWVTZXR0aW5nc1xufSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZGVtby1hcHAnLFxuICB0ZW1wbGF0ZTogJyR7YXBwQ29tcG9uZW50VGVtcGxhdGV9J1xufSlcbmV4cG9ydCBjbGFzcyBBcHBDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHRoZW1lU3ZjOiBTa3lUaGVtZVNlcnZpY2UsXG4gICAgcmVuZGVyZXI/OiBSZW5kZXJlcjJcbiAgKSB7XG4gICAgY29uc3QgdGhlbWVTZXR0aW5ncyA9IG5ldyBTa3lUaGVtZVNldHRpbmdzKFxuICAgICAgU2t5VGhlbWUucHJlc2V0c1snJHtcbiAgICAgICAgdGhlbWUgPT09IFNreURvY3NDb2RlRXhhbXBsZVRoZW1lLk1vZGVybiA/ICdtb2Rlcm4nIDogJ2RlZmF1bHQnXG4gICAgICB9J10sXG4gICAgICBTa3lUaGVtZU1vZGUucHJlc2V0cy5saWdodFxuICAgICk7XG5cbiAgICB0aGVtZVN2Yy5pbml0KFxuICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgIHJlbmRlcmVyLFxuICAgICAgdGhlbWVTZXR0aW5nc1xuICAgICk7XG4gIH1cblxufWA7XG5cbiAgICBmaWxlc1tgJHthcHBQYXRofWFwcC5tb2R1bGUudHNgXSA9IGAke21vZHVsZUltcG9ydFN0YXRlbWVudHMuam9pbignXFxuXFxuJyl9XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICAke21vZHVsZUltcG9ydHMuam9pbignLFxcbiAgICAnKX1cbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQXBwQ29tcG9uZW50XG4gIF0sXG4gIGJvb3RzdHJhcDogW1xuICAgIEFwcENvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lUaGVtZVNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogU2t5QXBwTG9jYWxlUHJvdmlkZXIsXG4gICAgICB1c2VWYWx1ZToge1xuICAgICAgICBnZXRMb2NhbGVJbmZvOiAoKSA9PiBvYnNlcnZhYmxlT2Yoe1xuICAgICAgICAgIGxvY2FsZTogJ2VuLVVTJ1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBcHBNb2R1bGUgeyB9XG5gO1xuXG4gICAgZmlsZXNbYCR7c3JjUGF0aH1pbmRleC5odG1sYF0gPSBgPCEtLVxuICBUaGUgQ1NTIGxpbmtzIGFyZSBuZWVkZWQgZm9yIHRoZSBTdGFja0JsaXR6IGRlbW8gb25seS5cbiAgVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIGEga25vd24gYnVnIHRoYXQgcHJldmVudHMgZXh0ZXJuYWwgaW1wb3J0cyBpbiBDU1MuXG4gIGh0dHBzOi8vZ2l0aHViLmNvbS9zdGFja2JsaXR6L2NvcmUvaXNzdWVzLzEzM1xuLS0+XG48bGluayByZWw9XCJzdHlsZXNoZWV0XCIgdHlwZT1cInRleHQvY3NzXCIgaHJlZj1cImh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNy4wL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzc1wiIC8+XG48bGluayByZWw9XCJzdHlsZXNoZWV0XCIgdHlwZT1cInRleHQvY3NzXCIgaHJlZj1cImh0dHBzOi8vc2t5LmJsYWNrYmF1ZGNkbi5uZXQvc3RhdGljL3NreXV4LWljb25zLzUuMC4wL2Fzc2V0cy9jc3Mvc2t5dXgtaWNvbnMubWluLmNzc1wiIC8+XG5cbjxza3ktZGVtby1hcHA+XG4gIExvYWRpbmcuLi5cbjwvc2t5LWRlbW8tYXBwPmA7XG5cbiAgICBmaWxlc1tgJHtzcmNQYXRofW1haW4udHNgXSA9IGAke2Jhbm5lcn1cbmltcG9ydCAnLi9wb2x5ZmlsbHMnO1xuXG5pbXBvcnQge1xuICBwbGF0Zm9ybUJyb3dzZXJEeW5hbWljXG59IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXItZHluYW1pYyc7XG5cbmltcG9ydCB7XG4gIEFwcE1vZHVsZVxufSBmcm9tICcuL2FwcC9hcHAubW9kdWxlJztcblxucGxhdGZvcm1Ccm93c2VyRHluYW1pYygpLmJvb3RzdHJhcE1vZHVsZShBcHBNb2R1bGUpLnRoZW4ocmVmID0+IHtcbiAgaWYgKHdpbmRvd1snbmdSZWYnXSkge1xuICAgIHdpbmRvd1snbmdSZWYnXS5kZXN0cm95KCk7XG4gIH1cblxuICB3aW5kb3dbJ25nUmVmJ10gPSByZWY7XG59KS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcbmA7XG5cbiAgICBmaWxlc1tgJHtzcmNQYXRofXBvbHlmaWxscy50c2BdID0gYCR7YmFubmVyfVxuaW1wb3J0ICd6b25lLmpzJztcbmA7XG5cbiAgICBmaWxlc1tgJHtzcmNQYXRofXN0eWxlcy5zY3NzYF0gPSBgQGltcG9ydCAnfkBza3l1eC90aGVtZS9jc3Mvc2t5JztcbkBpbXBvcnQgJ35Ac2t5dXgvdGhlbWUvY3NzL3RoZW1lcy9tb2Rlcm4vc3R5bGVzJztcblxuYm9keSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIG1hcmdpbjogMTVweDtcbn1gO1xuXG4gICAgc3R5bGVzaGVldHMucHVzaCgnc3JjL3N0eWxlcy5zY3NzJyk7XG5cbiAgICBmaWxlc1snYW5ndWxhci5qc29uJ10gPSBge1xuICBcInByb2plY3RzXCI6IHtcbiAgICBcImRlbW9cIjoge1xuICAgICAgXCJhcmNoaXRlY3RcIjoge1xuICAgICAgICBcImJ1aWxkXCI6IHtcbiAgICAgICAgICBcIm9wdGlvbnNcIjoge1xuICAgICAgICAgICAgXCJpbmRleFwiOiBcInNyYy9pbmRleC5odG1sXCIsXG4gICAgICAgICAgICBcInN0eWxlc1wiOiAke0pTT04uc3RyaW5naWZ5KHN0eWxlc2hlZXRzKX1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1gO1xuXG4gICAgZmlsZXNbJ3BhY2thZ2UuanNvbiddID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICB7XG4gICAgICAgIGRlcGVuZGVuY2llcyxcbiAgICAgIH0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICAyXG4gICAgKTtcblxuICAgIGZpbGVzWyd0c2NvbmZpZy5qc29uJ10gPSBge1xuICBcImNvbXBpbGVyT3B0aW9uc1wiOiB7XG4gICAgXCJ0YXJnZXRcIjogXCJlczIwMTdcIixcbiAgICBcIm1vZHVsZVwiOiBcImVzMjAyMFwiLFxuICAgIFwibW9kdWxlUmVzb2x1dGlvblwiOiBcIm5vZGVcIixcbiAgICBcImVtaXREZWNvcmF0b3JNZXRhZGF0YVwiOiB0cnVlLFxuICAgIFwiZXhwZXJpbWVudGFsRGVjb3JhdG9yc1wiOiB0cnVlLFxuICAgIFwiaW1wb3J0SGVscGVyc1wiOiB0cnVlLFxuICAgIFwidHlwZVJvb3RzXCI6IFtcIm5vZGVfbW9kdWxlcy9AdHlwZXNcIl0sXG4gICAgXCJsaWJcIjogW1xuICAgICAgXCJlczIwMjBcIixcbiAgICAgIFwiZG9tXCJcbiAgICBdXG4gIH0sXG4gIFwiYW5ndWxhckNvbXBpbGVyT3B0aW9uc1wiOiB7XG4gICAgXCJmdWxsVGVtcGxhdGVUeXBlQ2hlY2tcIjogdHJ1ZSxcbiAgICBcInN0cmljdEluamVjdGlvblBhcmFtZXRlcnNcIjogdHJ1ZSxcbiAgICBcInN0cmljdElucHV0QWNjZXNzTW9kaWZpZXJzXCI6IHRydWUsXG4gICAgXCJzdHJpY3RUZW1wbGF0ZXNcIjogdHJ1ZSxcbiAgICBcImVuYWJsZUl2eVwiOiB0cnVlXG4gIH1cbn1gO1xuXG4gICAgcmV0dXJuIGZpbGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb2R1bGVOYW1lKGNvbnRlbnRzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb250ZW50cy5zcGxpdCgnZXhwb3J0IGNsYXNzICcpWzFdLnNwbGl0KCcgeycpWzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWxlbmFtZU5vRXh0ZW5zaW9uKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGVOYW1lLnNwbGl0KCcuJykucG9wKCk7XG4gICAgcmV0dXJuIGZpbGVOYW1lLnJlcGxhY2UoYC4ke2V4dGVuc2lvbn1gLCAnJyk7XG4gIH1cblxuICBwcml2YXRlIGdldEV4cG9ydGVkQ29tcG9uZW50KGNvbnRlbnRzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBjb250ZW50cy5yZXBsYWNlKC9cXHMvZywgJycpO1xuXG4gICAgbGV0IGZyYWdtZW50ID0gdHJpbW1lZC5zcGxpdCgnZXhwb3J0czpbJylbMV07XG4gICAgaWYgKCFmcmFnbWVudCkge1xuICAgICAgdGhyb3cgJ1lvdSBtdXN0IGV4cG9ydCBhIGNvbXBvbmVudCBmcm9tIHRoZSBjb2RlIGV4YW1wbGUgbW9kdWxlISc7XG4gICAgfVxuXG4gICAgZnJhZ21lbnQgPSBmcmFnbWVudC5zcGxpdCgnXScpWzBdO1xuXG4gICAgY29uc3QgY29tcG9uZW50cyA9IGZyYWdtZW50LnNwbGl0KCcsJykuZmlsdGVyKCh4KSA9PiB4KTtcblxuICAgIGlmIChjb21wb25lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IChcbiAgICAgICAgJ1lvdSBtYXkgb25seSBleHBvcnQgYSBzaW5nbGUgY29tcG9uZW50IGZyb20gdGhlIGNvZGUgZXhhbXBsZSBtb2R1bGUnICtcbiAgICAgICAgYCh3ZSBmb3VuZCAke2NvbXBvbmVudHMubGVuZ3RofTogJHtjb21wb25lbnRzLmpvaW4oJywgJyl9KS5gICtcbiAgICAgICAgJ0lzIGl0IHBvc3NpYmxlIHRvIGNyZWF0ZSBhIG5ldyBjb2RlIGV4YW1wbGUgd2l0aCB0aGUgZXh0cmEgY29tcG9uZW50cz8nXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBjb21wb25lbnRzWzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb21wb25lbnRTZWxlY3RvcihcbiAgICBjb21wb25lbnRDbGFzc05hbWU6IHN0cmluZyxcbiAgICBzb3VyY2VDb2RlOiBTa3lEb2NzU291cmNlQ29kZUZpbGVbXVxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGZvdW5kID0gc291cmNlQ29kZS5maW5kKChmaWxlKSA9PiB7XG4gICAgICByZXR1cm4gZmlsZS5yYXdDb250ZW50cy5pbmRleE9mKGNvbXBvbmVudENsYXNzTmFtZSkgPiAtMTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRyaW1tZWQgPSBmb3VuZC5yYXdDb250ZW50cy5yZXBsYWNlKC9cXHMvZywgJycpO1xuXG4gICAgcmV0dXJuIHRyaW1tZWQuc3BsaXQoYHNlbGVjdG9yOidgKVsxXS5zcGxpdChgJ2ApWzBdO1xuICB9XG59XG4iXX0=
|