@skyux/docs-tools 11.2.0 → 12.0.0-alpha.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.
Files changed (100) hide show
  1. package/css/docs-tools.css +2 -2
  2. package/fesm2022/skyux-docs-tools.mjs +232 -247
  3. package/fesm2022/skyux-docs-tools.mjs.map +1 -1
  4. package/modules/shared/sky-docs-tools-resources.module.d.ts +0 -4
  5. package/package.json +19 -21
  6. package/esm2022/docs-tools.module.mjs +0 -36
  7. package/esm2022/modules/anatomy/anatomy-item.component.mjs +0 -17
  8. package/esm2022/modules/anatomy/anatomy-thumbnail.component.mjs +0 -27
  9. package/esm2022/modules/anatomy/anatomy.component.mjs +0 -25
  10. package/esm2022/modules/anatomy/anatomy.module.mjs +0 -46
  11. package/esm2022/modules/code-examples/code-example-module-dependencies.mjs +0 -2
  12. package/esm2022/modules/code-examples/code-example-theme.mjs +0 -6
  13. package/esm2022/modules/code-examples/code-example.component.mjs +0 -68
  14. package/esm2022/modules/code-examples/code-example.mjs +0 -2
  15. package/esm2022/modules/code-examples/code-examples-editor.service.mjs +0 -368
  16. package/esm2022/modules/code-examples/code-examples.component.mjs +0 -98
  17. package/esm2022/modules/code-examples/code-examples.module.mjs +0 -41
  18. package/esm2022/modules/demo/demo-content-alignment.mjs +0 -2
  19. package/esm2022/modules/demo/demo-control-panel-change.mjs +0 -2
  20. package/esm2022/modules/demo/demo-control-panel-checkbox.component.mjs +0 -84
  21. package/esm2022/modules/demo/demo-control-panel-radio-choice.mjs +0 -2
  22. package/esm2022/modules/demo/demo-control-panel-radio-group.component.mjs +0 -80
  23. package/esm2022/modules/demo/demo-control-panel-section.component.mjs +0 -22
  24. package/esm2022/modules/demo/demo-control-panel.component.mjs +0 -85
  25. package/esm2022/modules/demo/demo-custom-control-panel.component.mjs +0 -20
  26. package/esm2022/modules/demo/demo.component.mjs +0 -58
  27. package/esm2022/modules/demo/demo.module.mjs +0 -72
  28. package/esm2022/modules/demo-page/demo-page-dom-adapter.service.mjs +0 -75
  29. package/esm2022/modules/demo-page/demo-page-module-info.component.mjs +0 -14
  30. package/esm2022/modules/demo-page/demo-page-section.component.mjs +0 -43
  31. package/esm2022/modules/demo-page/demo-page-summary.component.mjs +0 -21
  32. package/esm2022/modules/demo-page/demo-page-title.service.mjs +0 -28
  33. package/esm2022/modules/demo-page/demo-page-type-definitions.component.mjs +0 -24
  34. package/esm2022/modules/demo-page/demo-page.component.mjs +0 -190
  35. package/esm2022/modules/demo-page/demo-page.module.mjs +0 -94
  36. package/esm2022/modules/design-guidelines/design-guideline-thumbnail.component.mjs +0 -27
  37. package/esm2022/modules/design-guidelines/design-guideline.component.mjs +0 -33
  38. package/esm2022/modules/design-guidelines/design-guidelines.component.mjs +0 -11
  39. package/esm2022/modules/design-guidelines/design-guidelines.module.mjs +0 -34
  40. package/esm2022/modules/heading-anchor/heading-anchor.component.mjs +0 -21
  41. package/esm2022/modules/heading-anchor/heading-anchor.module.mjs +0 -20
  42. package/esm2022/modules/markdown/markdown.module.mjs +0 -17
  43. package/esm2022/modules/markdown/markdown.pipe.mjs +0 -20
  44. package/esm2022/modules/module-info/module-info.component.mjs +0 -72
  45. package/esm2022/modules/module-info/module-info.module.mjs +0 -40
  46. package/esm2022/modules/safe-html/safe-html.component.mjs +0 -20
  47. package/esm2022/modules/safe-html/safe-html.module.mjs +0 -18
  48. package/esm2022/modules/shared/docs-tools-component-info.mjs +0 -2
  49. package/esm2022/modules/shared/docs-tools-options.mjs +0 -3
  50. package/esm2022/modules/shared/docs-tools-site-options.mjs +0 -3
  51. package/esm2022/modules/shared/docs-tools-supportal.service.mjs +0 -23
  52. package/esm2022/modules/shared/sky-docs-tools-resources.module.mjs +0 -55
  53. package/esm2022/modules/source-code/source-code-file.mjs +0 -2
  54. package/esm2022/modules/source-code/source-code-provider.mjs +0 -13
  55. package/esm2022/modules/source-code/source-code.service.mjs +0 -42
  56. package/esm2022/modules/thumbnail/thumbnail.component.mjs +0 -28
  57. package/esm2022/modules/thumbnail/thumbnail.module.mjs +0 -19
  58. package/esm2022/modules/type-definitions/anchor-link-service-config.mjs +0 -2
  59. package/esm2022/modules/type-definitions/anchor-link-service-format.mjs +0 -2
  60. package/esm2022/modules/type-definitions/anchor-link.mjs +0 -2
  61. package/esm2022/modules/type-definitions/anchor-link.service.mjs +0 -106
  62. package/esm2022/modules/type-definitions/call-signature-definition.component.mjs +0 -45
  63. package/esm2022/modules/type-definitions/call-signature-definition.mjs +0 -2
  64. package/esm2022/modules/type-definitions/class-definition.component.mjs +0 -20
  65. package/esm2022/modules/type-definitions/class-definition.mjs +0 -2
  66. package/esm2022/modules/type-definitions/comment-tags.mjs +0 -2
  67. package/esm2022/modules/type-definitions/directive-definition.component.mjs +0 -20
  68. package/esm2022/modules/type-definitions/directive-definition.mjs +0 -2
  69. package/esm2022/modules/type-definitions/entry-child-definition.mjs +0 -2
  70. package/esm2022/modules/type-definitions/entry-definition.mjs +0 -2
  71. package/esm2022/modules/type-definitions/enumeration-definition.component.mjs +0 -19
  72. package/esm2022/modules/type-definitions/enumeration-definition.mjs +0 -2
  73. package/esm2022/modules/type-definitions/enumeration-member-definition.mjs +0 -2
  74. package/esm2022/modules/type-definitions/index-signature-definition.mjs +0 -2
  75. package/esm2022/modules/type-definitions/interface-definition.component.mjs +0 -36
  76. package/esm2022/modules/type-definitions/interface-definition.mjs +0 -2
  77. package/esm2022/modules/type-definitions/interface-property-definition.mjs +0 -2
  78. package/esm2022/modules/type-definitions/method-definition.mjs +0 -2
  79. package/esm2022/modules/type-definitions/method-definitions.component.mjs +0 -72
  80. package/esm2022/modules/type-definitions/parameter-definition.mjs +0 -2
  81. package/esm2022/modules/type-definitions/pipe-definition.component.mjs +0 -20
  82. package/esm2022/modules/type-definitions/pipe-definition.mjs +0 -2
  83. package/esm2022/modules/type-definitions/preview-feature-indicator.component.mjs +0 -13
  84. package/esm2022/modules/type-definitions/property-decorator.mjs +0 -2
  85. package/esm2022/modules/type-definitions/property-definition.mjs +0 -2
  86. package/esm2022/modules/type-definitions/property-definitions.component.mjs +0 -66
  87. package/esm2022/modules/type-definitions/type-alias-definition.component.mjs +0 -37
  88. package/esm2022/modules/type-definitions/type-alias-definition.mjs +0 -2
  89. package/esm2022/modules/type-definitions/type-anchor-links.pipe.mjs +0 -27
  90. package/esm2022/modules/type-definitions/type-definition.mjs +0 -2
  91. package/esm2022/modules/type-definitions/type-definitions-format.service.mjs +0 -254
  92. package/esm2022/modules/type-definitions/type-definitions-provider.mjs +0 -10
  93. package/esm2022/modules/type-definitions/type-definitions.mjs +0 -2
  94. package/esm2022/modules/type-definitions/type-definitions.module.mjs +0 -108
  95. package/esm2022/modules/type-definitions/type-definitions.service.mjs +0 -121
  96. package/esm2022/modules/type-definitions/type-parameter-definition.mjs +0 -2
  97. package/esm2022/modules/type-definitions/typedoc-adapter.service.mjs +0 -614
  98. package/esm2022/modules/type-definitions/typedoc-types.mjs +0 -32
  99. package/esm2022/public-api.mjs +0 -69
  100. package/esm2022/skyux-docs-tools.mjs +0 -5
@@ -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==
@@ -1,98 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, ContentChildren, Input, } from '@angular/core';
2
- import { SkyDocsCodeExampleComponent } from './code-example.component';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./code-examples-editor.service";
5
- import * as i2 from "../source-code/source-code.service";
6
- import * as i3 from "@angular/common";
7
- import * as i4 from "@blackbaud/skyux-lib-code-block";
8
- import * as i5 from "@skyux/icon";
9
- import * as i6 from "@skyux/lists";
10
- import * as i7 from "@skyux/tabs";
11
- import * as i8 from "@skyux/i18n";
12
- /**
13
- * Wraps all code examples and handles their configuration and styles.
14
- * @example
15
- * ```
16
- * <sky-docs-code-examples
17
- * [packageDependencies]="{
18
- * "foobar": "*",
19
- * "baz": "1.2.3"
20
- * }"
21
- * >
22
- * <sky-docs-code-example>
23
- * </sky-docs-code-example>
24
- * </sky-docs-code-examples>
25
- * ```
26
- */
27
- export class SkyDocsCodeExamplesComponent {
28
- /**
29
- * Any extra NPM package dependencies that are needed for the editor to run the code example.
30
- * @default {}
31
- */
32
- set packageDependencies(value) {
33
- this._packageDependencies = value;
34
- }
35
- get packageDependencies() {
36
- return this._packageDependencies || {};
37
- }
38
- constructor(editorService, sourceCodeService) {
39
- this.editorService = editorService;
40
- this.sourceCodeService = sourceCodeService;
41
- this.stylesheets = [];
42
- this.codeExamples = [];
43
- }
44
- ngAfterContentInit() {
45
- this.codeExampleComponents.forEach((component) => {
46
- // Make sure the source code path ends in a slash, so that similarly named directories aren't included.
47
- let sourceCodePath = component.sourceCodePath;
48
- if (sourceCodePath.slice(-1) !== '/') {
49
- sourceCodePath += '/';
50
- }
51
- const sourceCode = this.sourceCodeService.getSourceCode(sourceCodePath);
52
- if (!sourceCode.length) {
53
- console.warn(`Source code not found at location "${sourceCodePath}" for "${component.heading}"!`);
54
- return;
55
- }
56
- this.codeExamples.push({
57
- heading: component.heading,
58
- packageDependencies: this.packageDependencies,
59
- sourceCode,
60
- stylesheets: this.stylesheets,
61
- theme: component.theme,
62
- });
63
- });
64
- }
65
- launchEditor(codeExample, event) {
66
- event.stopPropagation();
67
- this.editorService.launchEditor(codeExample, event.metaKey || event.ctrlKey ? 'node' : 'angular-cli');
68
- }
69
- /**
70
- * Returns a string representing one of PrismJS's supported language types.
71
- * See: https://prismjs.com/#supported-languages
72
- */
73
- parseCodeLanguageType(fileName) {
74
- const extension = fileName.split('.').pop().toLowerCase();
75
- switch (extension) {
76
- case 'ts':
77
- return 'typescript';
78
- case 'html':
79
- return 'markup';
80
- default:
81
- return extension;
82
- }
83
- }
84
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SkyDocsCodeExamplesComponent, deps: [{ token: i1.SkyDocsCodeExamplesEditorService }, { token: i2.SkyDocsSourceCodeService }], target: i0.ɵɵFactoryTarget.Component }); }
85
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: SkyDocsCodeExamplesComponent, selector: "sky-docs-code-examples", inputs: { packageDependencies: "packageDependencies", stylesheets: "stylesheets" }, queries: [{ propertyName: "codeExampleComponents", predicate: SkyDocsCodeExampleComponent }], ngImport: i0, template: "<div *ngIf=\"codeExamples && codeExamples.length\" class=\"sky-docs-code-examples\">\n <sky-repeater\n *ngIf=\"codeExamples.length > 1; else singleCodeExample\"\n expandMode=\"multiple\"\n >\n <sky-repeater-item\n *ngFor=\"let codeExample of codeExamples\"\n [isExpanded]=\"false\"\n >\n <sky-repeater-item-title>\n <ng-container\n *ngTemplateOutlet=\"\n codeExampleHeaderTemplate;\n context: { $implicit: codeExample }\n \"\n >\n </ng-container>\n </sky-repeater-item-title>\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n codeExampleTemplate;\n context: { $implicit: codeExample }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n</div>\n\n<ng-template>\n <ng-content select=\"sky-docs-code-example\"> </ng-content>\n</ng-template>\n\n<ng-template let-item #codeExampleTemplate>\n <div class=\"sky-docs-code-example-wrapper\">\n <sky-vertical-tabset *ngIf=\"item.sourceCode && item.sourceCode.length\">\n <sky-vertical-tab\n *ngFor=\"let file of item.sourceCode; let i = index\"\n [active]=\"i === 0\"\n [tabHeading]=\"file.fileName\"\n >\n <sky-code-block\n [code]=\"file.rawContents\"\n [languageType]=\"parseCodeLanguageType(file.fileName)\"\n >\n </sky-code-block>\n </sky-vertical-tab>\n </sky-vertical-tabset>\n </div>\n</ng-template>\n\n<ng-template #singleCodeExample>\n <ng-container\n *ngTemplateOutlet=\"\n codeExampleHeaderTemplate;\n context: { $implicit: codeExamples[0] }\n \"\n >\n </ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n codeExampleTemplate;\n context: { $implicit: codeExamples[0] }\n \"\n >\n </ng-container>\n</ng-template>\n\n<ng-template let-codeExample #codeExampleHeaderTemplate>\n <div class=\"sky-docs-code-example-header\">\n <div class=\"sky-docs-code-example-header-title sky-emphasized\">\n {{ codeExample.heading }}\n </div>\n <div class=\"sky-docs-code-example-header-controls\">\n <button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n (click)=\"launchEditor(codeExample, $event)\"\n >\n <sky-icon icon=\"pencil\"></sky-icon>\n {{ 'sky-docs-code-example-launch-button-label' | skyLibResources }}\n </button>\n </div>\n </div>\n</ng-template>\n", styles: [".sky-docs-code-examples{margin-top:30px}.sky-docs-code-example-header{display:flex;align-items:baseline}.sky-docs-code-example-header-title{flex-grow:1}.sky-docs-code-example-header-controls{flex-grow:0}.sky-docs-code-example-header-controls .sky-btn{font-weight:400}.sky-docs-code-example-wrapper{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;margin-top:10px}.sky-docs-code-example-wrapper ::ng-deep .sky-vertical-tabset-content{margin:0}.sky-docs-code-example-wrapper ::ng-deep sky-code-block{margin:0!important}.sky-docs-code-example-wrapper ::ng-deep .sky-code-block-header{border:0}.sky-docs-code-example-wrapper ::ng-deep .sky-code-output{border-left:0;border-right:0;border-bottom:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.λ2, selector: "sky-code-block", inputs: ["code", "fileName", "languageType", "hideCopyToClipboard", "hideHeader"] }, { kind: "component", type: i5.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "component", type: i6.λ11, selector: "sky-repeater", inputs: ["activeIndex", "ariaLabel", "reorderable", "expandMode"], outputs: ["activeIndexChange", "orderChange"] }, { kind: "component", type: i6.λ10, selector: "sky-repeater-item", inputs: ["disabled", "itemName", "inlineFormConfig", "inlineFormTemplate", "isExpanded", "isSelected", "reorderable", "selectable", "showInlineForm", "tag"], outputs: ["collapse", "expand", "inlineFormClose", "isSelectedChange"] }, { kind: "component", type: i6.λ8, selector: "sky-repeater-item-content" }, { kind: "component", type: i6.λ12, selector: "sky-repeater-item-title" }, { kind: "component", type: i7.λ6, selector: "sky-vertical-tabset", inputs: ["showTabsText", "ariaLabel", "ariaLabelledBy", "ariaRole", "maintainTabContent"], outputs: ["activeChange"] }, { kind: "component", type: i7.λ4, selector: "sky-vertical-tab", inputs: ["active", "ariaControls", "ariaRole", "disabled", "errorIndicator", "tabHeaderCount", "tabHeading", "showTabRightArrow", "tabId"] }, { kind: "pipe", type: i8.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
86
- }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SkyDocsCodeExamplesComponent, decorators: [{
88
- type: Component,
89
- args: [{ selector: 'sky-docs-code-examples', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"codeExamples && codeExamples.length\" class=\"sky-docs-code-examples\">\n <sky-repeater\n *ngIf=\"codeExamples.length > 1; else singleCodeExample\"\n expandMode=\"multiple\"\n >\n <sky-repeater-item\n *ngFor=\"let codeExample of codeExamples\"\n [isExpanded]=\"false\"\n >\n <sky-repeater-item-title>\n <ng-container\n *ngTemplateOutlet=\"\n codeExampleHeaderTemplate;\n context: { $implicit: codeExample }\n \"\n >\n </ng-container>\n </sky-repeater-item-title>\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n codeExampleTemplate;\n context: { $implicit: codeExample }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n</div>\n\n<ng-template>\n <ng-content select=\"sky-docs-code-example\"> </ng-content>\n</ng-template>\n\n<ng-template let-item #codeExampleTemplate>\n <div class=\"sky-docs-code-example-wrapper\">\n <sky-vertical-tabset *ngIf=\"item.sourceCode && item.sourceCode.length\">\n <sky-vertical-tab\n *ngFor=\"let file of item.sourceCode; let i = index\"\n [active]=\"i === 0\"\n [tabHeading]=\"file.fileName\"\n >\n <sky-code-block\n [code]=\"file.rawContents\"\n [languageType]=\"parseCodeLanguageType(file.fileName)\"\n >\n </sky-code-block>\n </sky-vertical-tab>\n </sky-vertical-tabset>\n </div>\n</ng-template>\n\n<ng-template #singleCodeExample>\n <ng-container\n *ngTemplateOutlet=\"\n codeExampleHeaderTemplate;\n context: { $implicit: codeExamples[0] }\n \"\n >\n </ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n codeExampleTemplate;\n context: { $implicit: codeExamples[0] }\n \"\n >\n </ng-container>\n</ng-template>\n\n<ng-template let-codeExample #codeExampleHeaderTemplate>\n <div class=\"sky-docs-code-example-header\">\n <div class=\"sky-docs-code-example-header-title sky-emphasized\">\n {{ codeExample.heading }}\n </div>\n <div class=\"sky-docs-code-example-header-controls\">\n <button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n (click)=\"launchEditor(codeExample, $event)\"\n >\n <sky-icon icon=\"pencil\"></sky-icon>\n {{ 'sky-docs-code-example-launch-button-label' | skyLibResources }}\n </button>\n </div>\n </div>\n</ng-template>\n", styles: [".sky-docs-code-examples{margin-top:30px}.sky-docs-code-example-header{display:flex;align-items:baseline}.sky-docs-code-example-header-title{flex-grow:1}.sky-docs-code-example-header-controls{flex-grow:0}.sky-docs-code-example-header-controls .sky-btn{font-weight:400}.sky-docs-code-example-wrapper{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;margin-top:10px}.sky-docs-code-example-wrapper ::ng-deep .sky-vertical-tabset-content{margin:0}.sky-docs-code-example-wrapper ::ng-deep sky-code-block{margin:0!important}.sky-docs-code-example-wrapper ::ng-deep .sky-code-block-header{border:0}.sky-docs-code-example-wrapper ::ng-deep .sky-code-output{border-left:0;border-right:0;border-bottom:0}\n"] }]
90
- }], ctorParameters: () => [{ type: i1.SkyDocsCodeExamplesEditorService }, { type: i2.SkyDocsSourceCodeService }], propDecorators: { packageDependencies: [{
91
- type: Input
92
- }], stylesheets: [{
93
- type: Input
94
- }], codeExampleComponents: [{
95
- type: ContentChildren,
96
- args: [SkyDocsCodeExampleComponent]
97
- }] } });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1leGFtcGxlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb2NzLXRvb2xzL3NyYy9tb2R1bGVzL2NvZGUtZXhhbXBsZXMvY29kZS1leGFtcGxlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb2NzLXRvb2xzL3NyYy9tb2R1bGVzL2NvZGUtZXhhbXBsZXMvY29kZS1leGFtcGxlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBTXZCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7O0FBTXZFOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBT0gsTUFBTSxPQUFPLDRCQUE0QjtJQUN2Qzs7O09BR0c7SUFDSCxJQUNXLG1CQUFtQixDQUFDLEtBQTJDO1FBQ3hFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixJQUFJLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBWUQsWUFDVSxhQUErQyxFQUMvQyxpQkFBMkM7UUFEM0Msa0JBQWEsR0FBYixhQUFhLENBQWtDO1FBQy9DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFYOUMsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFFM0IsaUJBQVksR0FBeUIsRUFBRSxDQUFDO0lBVTVDLENBQUM7SUFFRyxrQkFBa0I7UUFDdkIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQy9DLHVHQUF1RztZQUN2RyxJQUFJLGNBQWMsR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDO1lBQzlDLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNyQyxjQUFjLElBQUksR0FBRyxDQUFDO1lBQ3hCLENBQUM7WUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRXhFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQ1Ysc0NBQXNDLGNBQWMsVUFBVSxTQUFTLENBQUMsT0FBTyxJQUFJLENBQ3BGLENBQUM7Z0JBQ0YsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO2dCQUMxQixtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CO2dCQUM3QyxVQUFVO2dCQUNWLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDN0IsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO2FBQ3ZCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFlBQVksQ0FDakIsV0FBK0IsRUFDL0IsS0FBaUI7UUFFakIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUM3QixXQUFXLEVBQ1gsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FDeEQsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSSxxQkFBcUIsQ0FBQyxRQUFnQjtRQUMzQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTFELFFBQVEsU0FBUyxFQUFFLENBQUM7WUFDbEIsS0FBSyxJQUFJO2dCQUNQLE9BQU8sWUFBWSxDQUFDO1lBQ3RCLEtBQUssTUFBTTtnQkFDVCxPQUFPLFFBQVEsQ0FBQztZQUNsQjtnQkFDRSxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQzsrR0FsRlUsNEJBQTRCO21HQUE1Qiw0QkFBNEIsd0xBbUJ0QiwyQkFBMkIsNkJDM0Q5Qyw2K0VBdUZBOzs0RkQvQ2EsNEJBQTRCO2tCQU54QyxTQUFTOytCQUNFLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTTs0SUFRcEMsbUJBQW1CO3NCQUQ3QixLQUFLO2dCQVVDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBTUUscUJBQXFCO3NCQUQ1QixlQUFlO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreURvY3NTb3VyY2VDb2RlU2VydmljZSB9IGZyb20gJy4uL3NvdXJjZS1jb2RlL3NvdXJjZS1jb2RlLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBTa3lEb2NzQ29kZUV4YW1wbGVzRWRpdG9yU2VydmljZSB9IGZyb20gJy4vY29kZS1leGFtcGxlcy1lZGl0b3Iuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreURvY3NDb2RlRXhhbXBsZUNvbXBvbmVudCB9IGZyb20gJy4vY29kZS1leGFtcGxlLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFNreURvY3NDb2RlRXhhbXBsZU1vZHVsZURlcGVuZGVuY2llcyB9IGZyb20gJy4vY29kZS1leGFtcGxlLW1vZHVsZS1kZXBlbmRlbmNpZXMnO1xuXG5pbXBvcnQgeyBTa3lEb2NzQ29kZUV4YW1wbGUgfSBmcm9tICcuL2NvZGUtZXhhbXBsZSc7XG5cbi8qKlxuICogV3JhcHMgYWxsIGNvZGUgZXhhbXBsZXMgYW5kIGhhbmRsZXMgdGhlaXIgY29uZmlndXJhdGlvbiBhbmQgc3R5bGVzLlxuICogQGV4YW1wbGVcbiAqIGBgYFxuICogPHNreS1kb2NzLWNvZGUtZXhhbXBsZXNcbiAqICAgW3BhY2thZ2VEZXBlbmRlbmNpZXNdPVwie1xuICogICAgIFwiZm9vYmFyXCI6IFwiKlwiLFxuICogICAgIFwiYmF6XCI6IFwiMS4yLjNcIlxuICogICB9XCJcbiAqID5cbiAqICAgPHNreS1kb2NzLWNvZGUtZXhhbXBsZT5cbiAqICAgPC9za3ktZG9jcy1jb2RlLWV4YW1wbGU+XG4gKiA8L3NreS1kb2NzLWNvZGUtZXhhbXBsZXM+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWRvY3MtY29kZS1leGFtcGxlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2RlLWV4YW1wbGVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29kZS1leGFtcGxlcy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RG9jc0NvZGVFeGFtcGxlc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAvKipcbiAgICogQW55IGV4dHJhIE5QTSBwYWNrYWdlIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBuZWVkZWQgZm9yIHRoZSBlZGl0b3IgdG8gcnVuIHRoZSBjb2RlIGV4YW1wbGUuXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBhY2thZ2VEZXBlbmRlbmNpZXModmFsdWU6IFNreURvY3NDb2RlRXhhbXBsZU1vZHVsZURlcGVuZGVuY2llcykge1xuICAgIHRoaXMuX3BhY2thZ2VEZXBlbmRlbmNpZXMgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFja2FnZURlcGVuZGVuY2llcygpOiBTa3lEb2NzQ29kZUV4YW1wbGVNb2R1bGVEZXBlbmRlbmNpZXMge1xuICAgIHJldHVybiB0aGlzLl9wYWNrYWdlRGVwZW5kZW5jaWVzIHx8IHt9O1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN0eWxlc2hlZXRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHB1YmxpYyBjb2RlRXhhbXBsZXM6IFNreURvY3NDb2RlRXhhbXBsZVtdID0gW107XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lEb2NzQ29kZUV4YW1wbGVDb21wb25lbnQpXG4gIHByaXZhdGUgY29kZUV4YW1wbGVDb21wb25lbnRzOiBRdWVyeUxpc3Q8U2t5RG9jc0NvZGVFeGFtcGxlQ29tcG9uZW50PjtcblxuICBwcml2YXRlIF9wYWNrYWdlRGVwZW5kZW5jaWVzOiBTa3lEb2NzQ29kZUV4YW1wbGVNb2R1bGVEZXBlbmRlbmNpZXM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBTa3lEb2NzQ29kZUV4YW1wbGVzRWRpdG9yU2VydmljZSxcbiAgICBwcml2YXRlIHNvdXJjZUNvZGVTZXJ2aWNlOiBTa3lEb2NzU291cmNlQ29kZVNlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29kZUV4YW1wbGVDb21wb25lbnRzLmZvckVhY2goKGNvbXBvbmVudCkgPT4ge1xuICAgICAgLy8gTWFrZSBzdXJlIHRoZSBzb3VyY2UgY29kZSBwYXRoIGVuZHMgaW4gYSBzbGFzaCwgc28gdGhhdCBzaW1pbGFybHkgbmFtZWQgZGlyZWN0b3JpZXMgYXJlbid0IGluY2x1ZGVkLlxuICAgICAgbGV0IHNvdXJjZUNvZGVQYXRoID0gY29tcG9uZW50LnNvdXJjZUNvZGVQYXRoO1xuICAgICAgaWYgKHNvdXJjZUNvZGVQYXRoLnNsaWNlKC0xKSAhPT0gJy8nKSB7XG4gICAgICAgIHNvdXJjZUNvZGVQYXRoICs9ICcvJztcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc291cmNlQ29kZSA9IHRoaXMuc291cmNlQ29kZVNlcnZpY2UuZ2V0U291cmNlQ29kZShzb3VyY2VDb2RlUGF0aCk7XG5cbiAgICAgIGlmICghc291cmNlQ29kZS5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBTb3VyY2UgY29kZSBub3QgZm91bmQgYXQgbG9jYXRpb24gXCIke3NvdXJjZUNvZGVQYXRofVwiIGZvciBcIiR7Y29tcG9uZW50LmhlYWRpbmd9XCIhYCxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvZGVFeGFtcGxlcy5wdXNoKHtcbiAgICAgICAgaGVhZGluZzogY29tcG9uZW50LmhlYWRpbmcsXG4gICAgICAgIHBhY2thZ2VEZXBlbmRlbmNpZXM6IHRoaXMucGFja2FnZURlcGVuZGVuY2llcyxcbiAgICAgICAgc291cmNlQ29kZSxcbiAgICAgICAgc3R5bGVzaGVldHM6IHRoaXMuc3R5bGVzaGVldHMsXG4gICAgICAgIHRoZW1lOiBjb21wb25lbnQudGhlbWUsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsYXVuY2hFZGl0b3IoXG4gICAgY29kZUV4YW1wbGU6IFNreURvY3NDb2RlRXhhbXBsZSxcbiAgICBldmVudDogTW91c2VFdmVudCxcbiAgKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmxhdW5jaEVkaXRvcihcbiAgICAgIGNvZGVFeGFtcGxlLFxuICAgICAgZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5ID8gJ25vZGUnIDogJ2FuZ3VsYXItY2xpJyxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIG9uZSBvZiBQcmlzbUpTJ3Mgc3VwcG9ydGVkIGxhbmd1YWdlIHR5cGVzLlxuICAgKiBTZWU6IGh0dHBzOi8vcHJpc21qcy5jb20vI3N1cHBvcnRlZC1sYW5ndWFnZXNcbiAgICovXG4gIHB1YmxpYyBwYXJzZUNvZGVMYW5ndWFnZVR5cGUoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZU5hbWUuc3BsaXQoJy4nKS5wb3AoKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgc3dpdGNoIChleHRlbnNpb24pIHtcbiAgICAgIGNhc2UgJ3RzJzpcbiAgICAgICAgcmV0dXJuICd0eXBlc2NyaXB0JztcbiAgICAgIGNhc2UgJ2h0bWwnOlxuICAgICAgICByZXR1cm4gJ21hcmt1cCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZXh0ZW5zaW9uO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImNvZGVFeGFtcGxlcyAmJiBjb2RlRXhhbXBsZXMubGVuZ3RoXCIgY2xhc3M9XCJza3ktZG9jcy1jb2RlLWV4YW1wbGVzXCI+XG4gIDxza3ktcmVwZWF0ZXJcbiAgICAqbmdJZj1cImNvZGVFeGFtcGxlcy5sZW5ndGggPiAxOyBlbHNlIHNpbmdsZUNvZGVFeGFtcGxlXCJcbiAgICBleHBhbmRNb2RlPVwibXVsdGlwbGVcIlxuICA+XG4gICAgPHNreS1yZXBlYXRlci1pdGVtXG4gICAgICAqbmdGb3I9XCJsZXQgY29kZUV4YW1wbGUgb2YgY29kZUV4YW1wbGVzXCJcbiAgICAgIFtpc0V4cGFuZGVkXT1cImZhbHNlXCJcbiAgICA+XG4gICAgICA8c2t5LXJlcGVhdGVyLWl0ZW0tdGl0bGU+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgY29kZUV4YW1wbGVIZWFkZXJUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2RlRXhhbXBsZSB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc2t5LXJlcGVhdGVyLWl0ZW0tdGl0bGU+XG4gICAgICA8c2t5LXJlcGVhdGVyLWl0ZW0tY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBjb2RlRXhhbXBsZVRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvZGVFeGFtcGxlIH1cbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9za3ktcmVwZWF0ZXItaXRlbS1jb250ZW50PlxuICAgIDwvc2t5LXJlcGVhdGVyLWl0ZW0+XG4gIDwvc2t5LXJlcGVhdGVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWRvY3MtY29kZS1leGFtcGxlXCI+IDwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtaXRlbSAjY29kZUV4YW1wbGVUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInNreS1kb2NzLWNvZGUtZXhhbXBsZS13cmFwcGVyXCI+XG4gICAgPHNreS12ZXJ0aWNhbC10YWJzZXQgKm5nSWY9XCJpdGVtLnNvdXJjZUNvZGUgJiYgaXRlbS5zb3VyY2VDb2RlLmxlbmd0aFwiPlxuICAgICAgPHNreS12ZXJ0aWNhbC10YWJcbiAgICAgICAgKm5nRm9yPVwibGV0IGZpbGUgb2YgaXRlbS5zb3VyY2VDb2RlOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgW2FjdGl2ZV09XCJpID09PSAwXCJcbiAgICAgICAgW3RhYkhlYWRpbmddPVwiZmlsZS5maWxlTmFtZVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktY29kZS1ibG9ja1xuICAgICAgICAgIFtjb2RlXT1cImZpbGUucmF3Q29udGVudHNcIlxuICAgICAgICAgIFtsYW5ndWFnZVR5cGVdPVwicGFyc2VDb2RlTGFuZ3VhZ2VUeXBlKGZpbGUuZmlsZU5hbWUpXCJcbiAgICAgICAgPlxuICAgICAgICA8L3NreS1jb2RlLWJsb2NrPlxuICAgICAgPC9za3ktdmVydGljYWwtdGFiPlxuICAgIDwvc2t5LXZlcnRpY2FsLXRhYnNldD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NpbmdsZUNvZGVFeGFtcGxlPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgIGNvZGVFeGFtcGxlSGVhZGVyVGVtcGxhdGU7XG4gICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29kZUV4YW1wbGVzWzBdIH1cbiAgICBcIlxuICA+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgIGNvZGVFeGFtcGxlVGVtcGxhdGU7XG4gICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29kZUV4YW1wbGVzWzBdIH1cbiAgICBcIlxuICA+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIGxldC1jb2RlRXhhbXBsZSAjY29kZUV4YW1wbGVIZWFkZXJUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInNreS1kb2NzLWNvZGUtZXhhbXBsZS1oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LWRvY3MtY29kZS1leGFtcGxlLWhlYWRlci10aXRsZSBza3ktZW1waGFzaXplZFwiPlxuICAgICAge3sgY29kZUV4YW1wbGUuaGVhZGluZyB9fVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJza3ktZG9jcy1jb2RlLWV4YW1wbGUtaGVhZGVyLWNvbnRyb2xzXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHRcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImxhdW5jaEVkaXRvcihjb2RlRXhhbXBsZSwgJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktaWNvbiBpY29uPVwicGVuY2lsXCI+PC9za3ktaWNvbj5cbiAgICAgICAge3sgJ3NreS1kb2NzLWNvZGUtZXhhbXBsZS1sYXVuY2gtYnV0dG9uLWxhYmVsJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,41 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { SkyCodeBlockModule } from '@blackbaud/skyux-lib-code-block';
4
- import { SkyIconModule } from '@skyux/icon';
5
- import { SkyRepeaterModule } from '@skyux/lists';
6
- import { SkyVerticalTabsetModule } from '@skyux/tabs';
7
- import { SkyDocsToolsResourcesModule } from '../shared/sky-docs-tools-resources.module';
8
- import { SkyDocsCodeExampleComponent } from './code-example.component';
9
- import { SkyDocsCodeExamplesComponent } from './code-examples.component';
10
- import * as i0 from "@angular/core";
11
- export class SkyDocsCodeExamplesModule {
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SkyDocsCodeExamplesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: SkyDocsCodeExamplesModule, declarations: [SkyDocsCodeExampleComponent, SkyDocsCodeExamplesComponent], imports: [CommonModule,
14
- SkyCodeBlockModule,
15
- SkyDocsToolsResourcesModule,
16
- SkyIconModule,
17
- SkyRepeaterModule,
18
- SkyVerticalTabsetModule], exports: [SkyDocsCodeExampleComponent, SkyDocsCodeExamplesComponent] }); }
19
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SkyDocsCodeExamplesModule, imports: [CommonModule,
20
- SkyCodeBlockModule,
21
- SkyDocsToolsResourcesModule,
22
- SkyIconModule,
23
- SkyRepeaterModule,
24
- SkyVerticalTabsetModule] }); }
25
- }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SkyDocsCodeExamplesModule, decorators: [{
27
- type: NgModule,
28
- args: [{
29
- imports: [
30
- CommonModule,
31
- SkyCodeBlockModule,
32
- SkyDocsToolsResourcesModule,
33
- SkyIconModule,
34
- SkyRepeaterModule,
35
- SkyVerticalTabsetModule,
36
- ],
37
- declarations: [SkyDocsCodeExampleComponent, SkyDocsCodeExamplesComponent],
38
- exports: [SkyDocsCodeExampleComponent, SkyDocsCodeExamplesComponent],
39
- }]
40
- }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1leGFtcGxlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb2NzLXRvb2xzL3NyYy9tb2R1bGVzL2NvZGUtZXhhbXBsZXMvY29kZS1leGFtcGxlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFakQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXRELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRXhGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQWN6RSxNQUFNLE9BQU8seUJBQXlCOytHQUF6Qix5QkFBeUI7Z0hBQXpCLHlCQUF5QixpQkFIckIsMkJBQTJCLEVBQUUsNEJBQTRCLGFBUHRFLFlBQVk7WUFDWixrQkFBa0I7WUFDbEIsMkJBQTJCO1lBQzNCLGFBQWE7WUFDYixpQkFBaUI7WUFDakIsdUJBQXVCLGFBR2YsMkJBQTJCLEVBQUUsNEJBQTRCO2dIQUV4RCx5QkFBeUIsWUFWbEMsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQiwyQkFBMkI7WUFDM0IsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQix1QkFBdUI7OzRGQUtkLHlCQUF5QjtrQkFackMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLDJCQUEyQjt3QkFDM0IsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLHVCQUF1QjtxQkFDeEI7b0JBQ0QsWUFBWSxFQUFFLENBQUMsMkJBQTJCLEVBQUUsNEJBQTRCLENBQUM7b0JBQ3pFLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixFQUFFLDRCQUE0QixDQUFDO2lCQUNyRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUNvZGVCbG9ja01vZHVsZSB9IGZyb20gJ0BibGFja2JhdWQvc2t5dXgtbGliLWNvZGUtYmxvY2snO1xuXG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2ljb24nO1xuXG5pbXBvcnQgeyBTa3lSZXBlYXRlck1vZHVsZSB9IGZyb20gJ0Bza3l1eC9saXN0cyc7XG5cbmltcG9ydCB7IFNreVZlcnRpY2FsVGFic2V0TW9kdWxlIH0gZnJvbSAnQHNreXV4L3RhYnMnO1xuXG5pbXBvcnQgeyBTa3lEb2NzVG9vbHNSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWRvY3MtdG9vbHMtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreURvY3NDb2RlRXhhbXBsZUNvbXBvbmVudCB9IGZyb20gJy4vY29kZS1leGFtcGxlLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFNreURvY3NDb2RlRXhhbXBsZXNDb21wb25lbnQgfSBmcm9tICcuL2NvZGUtZXhhbXBsZXMuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTa3lDb2RlQmxvY2tNb2R1bGUsXG4gICAgU2t5RG9jc1Rvb2xzUmVzb3VyY2VzTW9kdWxlLFxuICAgIFNreUljb25Nb2R1bGUsXG4gICAgU2t5UmVwZWF0ZXJNb2R1bGUsXG4gICAgU2t5VmVydGljYWxUYWJzZXRNb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1NreURvY3NDb2RlRXhhbXBsZUNvbXBvbmVudCwgU2t5RG9jc0NvZGVFeGFtcGxlc0NvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtTa3lEb2NzQ29kZUV4YW1wbGVDb21wb25lbnQsIFNreURvY3NDb2RlRXhhbXBsZXNDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEb2NzQ29kZUV4YW1wbGVzTW9kdWxlIHt9XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtby1jb250ZW50LWFsaWdubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RvY3MtdG9vbHMvc3JjL21vZHVsZXMvZGVtby9kZW1vLWNvbnRlbnQtYWxpZ25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBTa3lEb2NzRGVtb0NvbnRlbnRBbGlnbm1lbnQgPSAnbGVmdCcgfCAnY2VudGVyJztcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtby1jb250cm9sLXBhbmVsLWNoYW5nZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RvY3MtdG9vbHMvc3JjL21vZHVsZXMvZGVtby9kZW1vLWNvbnRyb2wtcGFuZWwtY2hhbmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlcHJlc2VudHMgYW55IGNvbnRyb2wgcGFuZWwgc2VsZWN0aW9ucyB0aGF0IGhhdmUgY2hhbmdlZCBkdWUgdG8gdXNlciBpbnRlcmFjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lEb2NzRGVtb0NvbnRyb2xQYW5lbENoYW5nZSB7XG4gIC8qKlxuICAgKiBUaGUga2V5L3ZhbHVlIHBhaXIgcmVwcmVzZW50aW5nIHRoZSBjb250cm9sIHBhbmVsIHNlbGVjdGlvbiB0aGF0IGNoYW5nZWQuXG4gICAqL1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG4iXX0=