valtech-components 2.0.323 → 2.0.325

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.
@@ -1,12 +1,12 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Injectable, inject } from '@angular/core';
2
2
  import { TextContent } from './lang-provider/types';
3
+ import { ValtechConfigService } from './types';
3
4
  import * as i0 from "@angular/core";
4
- import * as i1 from "./lang-provider/lang-provider.service";
5
5
  /**
6
6
  * ContentLoader Service - Dynamic content loading system.
7
7
  *
8
- * Allows loading content from distributed .content.ts files throughout the project,
9
- * keeping content close to where it's used instead of centralizing everything in main.ts.
8
+ * REFACTORED: Now uses ValtechConfigService properly instead of hacking LangService.
9
+ * This provides a clean, maintainable way to register content dynamically.
10
10
  *
11
11
  * @example Basic usage:
12
12
  * ```typescript
@@ -16,30 +16,36 @@ import * as i1 from "./lang-provider/lang-provider.service";
16
16
  * en: { title: 'My User Page', welcome: 'Welcome {{name}}' }
17
17
  * };
18
18
  *
19
- * // In component or main.ts
19
+ * // In component
20
20
  * import { UserPageContent } from './user-page.content';
21
- * contentLoader.registerContent('UserPage', UserPageContent);
21
+ * registerContent('UserPage', UserPageContent);
22
22
  * ```
23
23
  */
24
24
  export class ContentLoaderService {
25
- constructor(langService) {
26
- this.langService = langService;
25
+ constructor() {
26
+ this.valtechConfig = inject(ValtechConfigService);
27
27
  this.registeredContent = new Map();
28
28
  }
29
29
  /**
30
30
  * Register content for a specific component/page class.
31
+ * ✅ CLEAN: Uses proper ValtechConfigService API instead of hacking LangService
31
32
  */
32
33
  registerContent(className, content) {
34
+ // Store locally for tracking
33
35
  this.registeredContent.set(className, content);
34
- this.addContentToLangService(className, content);
36
+ // Update the configuration properly
37
+ this.addContentToProvider(className, content);
38
+ console.log(`✅ ContentLoader: Registered content for "${className}"`);
35
39
  }
36
40
  /**
37
41
  * Register multiple content modules at once.
38
42
  */
39
43
  loadContent(contentModules) {
44
+ console.log(`🔄 ContentLoader: Loading ${contentModules.length} content modules...`);
40
45
  contentModules.forEach(module => {
41
46
  this.registerContent(module.className, module.content);
42
47
  });
48
+ console.log('✅ ContentLoader: All content modules loaded successfully');
43
49
  }
44
50
  /**
45
51
  * Check if content is registered for a class.
@@ -65,6 +71,13 @@ export class ContentLoaderService {
65
71
  unregisterContent(className) {
66
72
  const existed = this.registeredContent.has(className);
67
73
  this.registeredContent.delete(className);
74
+ // Also remove from the provider
75
+ if (existed && this.valtechConfig.content) {
76
+ const updatedContent = { ...this.valtechConfig.content };
77
+ delete updatedContent[className];
78
+ this.valtechConfig.content = updatedContent;
79
+ console.log(`🗑️ ContentLoader: Unregistered content for "${className}"`);
80
+ }
68
81
  return existed;
69
82
  }
70
83
  /**
@@ -72,26 +85,39 @@ export class ContentLoaderService {
72
85
  */
73
86
  clearAllContent() {
74
87
  this.registeredContent.clear();
88
+ console.log('🧹 ContentLoader: Cleared all registered content');
89
+ }
90
+ /**
91
+ * Get current content provider state.
92
+ * Useful for debugging.
93
+ */
94
+ getContentProvider() {
95
+ return this.valtechConfig.content;
75
96
  }
76
97
  /**
77
- * Add content to the LangService content provider.
98
+ * ✅ CLEAN: Add content to provider using proper API
78
99
  * @private
79
100
  */
80
- addContentToLangService(className, content) {
81
- const langServiceAny = this.langService;
82
- if (langServiceAny.content) {
101
+ addContentToProvider(className, content) {
102
+ try {
103
+ // Get current content provider
104
+ const currentContent = this.valtechConfig.content || {};
105
+ // Create TextContent instance
83
106
  const textContent = new TextContent(content);
84
- langServiceAny.content[className] = textContent;
85
- if (langServiceAny.detectAvailableLanguages) {
86
- langServiceAny.detectAvailableLanguages();
87
- }
88
- console.log(`ContentLoader: Registered content for "${className}"`);
107
+ // Update the content provider properly
108
+ const updatedContent = {
109
+ ...currentContent,
110
+ [className]: textContent,
111
+ };
112
+ // Set the updated content - this is the clean way
113
+ this.valtechConfig.content = updatedContent;
114
+ console.log(`📝 ContentLoader: Added "${className}" to content provider`);
89
115
  }
90
- else {
91
- console.error('ContentLoader: Unable to access LangService content provider');
116
+ catch (error) {
117
+ console.error(`❌ ContentLoader: Error adding content for "${className}":`, error);
92
118
  }
93
119
  }
94
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContentLoaderService, deps: [{ token: i1.LangService }], target: i0.ɵɵFactoryTarget.Injectable }); }
120
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContentLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
95
121
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContentLoaderService, providedIn: 'root' }); }
96
122
  }
97
123
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContentLoaderService, decorators: [{
@@ -99,26 +125,61 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
99
125
  args: [{
100
126
  providedIn: 'root',
101
127
  }]
102
- }], ctorParameters: () => [{ type: i1.LangService }] });
128
+ }] });
103
129
  /**
104
130
  * Helper function to create a content module.
105
131
  */
106
132
  export function createContentModule(className, content) {
107
133
  return { className, content };
108
134
  }
135
+ /**
136
+ * ✅ CLEAN: Global registry using proper array instead of globalThis hack
137
+ */
138
+ const globalContentRegistry = [];
109
139
  /**
110
140
  * Simple function to register content directly.
141
+ * ✅ IMPROVED: Cleaner global registry management
111
142
  */
112
143
  export function registerContent(className, content) {
113
- globalThis.__valtechContentRegistry = globalThis.__valtechContentRegistry || [];
114
- globalThis.__valtechContentRegistry.push({ className, content });
144
+ // Add to global registry
145
+ globalContentRegistry.push({ className, content });
146
+ console.log(`📝 registerContent: Queued "${className}" for registration`);
115
147
  }
116
148
  /**
117
149
  * Load all content from the global registry.
150
+ * ✅ IMPROVED: Better error handling and logging
118
151
  */
119
152
  export function loadRegisteredContent(contentLoader) {
120
- const registeredContent = globalThis.__valtechContentRegistry || [];
121
- contentLoader.loadContent(registeredContent);
122
- globalThis.__valtechContentRegistry = [];
153
+ if (globalContentRegistry.length === 0) {
154
+ console.log('ℹ️ ContentLoader: No content registered to load');
155
+ return;
156
+ }
157
+ console.log(`🚀 ContentLoader: Loading ${globalContentRegistry.length} registered content modules...`);
158
+ try {
159
+ // Load all content
160
+ contentLoader.loadContent([...globalContentRegistry]);
161
+ // Clear the registry after loading
162
+ globalContentRegistry.length = 0;
163
+ console.log('🎉 ContentLoader: All registered content loaded and registry cleared');
164
+ }
165
+ catch (error) {
166
+ console.error('❌ ContentLoader: Error loading registered content:', error);
167
+ }
168
+ }
169
+ /**
170
+ * ✅ NEW: Debugging helper
171
+ * Get current global registry state
172
+ */
173
+ export function getRegisteredContentQueue() {
174
+ return [...globalContentRegistry];
175
+ }
176
+ /**
177
+ * ✅ NEW: Debugging helper
178
+ * Clear the global registry without loading
179
+ */
180
+ export function clearRegisteredContentQueue() {
181
+ const count = globalContentRegistry.length;
182
+ globalContentRegistry.length = 0;
183
+ console.log(`🧹 ContentLoader: Cleared ${count} items from registration queue`);
123
184
  }
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1sb2FkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL2NvbnRlbnQtbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQW9CLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFDdEU7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUlILE1BQU0sT0FBTyxvQkFBb0I7SUFHL0IsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFGcEMsc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7SUFFakIsQ0FBQztJQUVoRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxTQUFpQixFQUFFLE9BQXlCO1FBQzFELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLGNBQStCO1FBQ3pDLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWEsQ0FBQyxTQUFpQjtRQUM3QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhLENBQUMsU0FBaUI7UUFDN0IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQixDQUFDLFNBQWlCO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFDSyx1QkFBdUIsQ0FBQyxTQUFpQixFQUFFLE9BQXlCO1FBQzFFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFrQixDQUFDO1FBRS9DLElBQUksY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzNCLE1BQU0sV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdDLGNBQWMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBVyxDQUFDO1lBRWhELElBQUksY0FBYyxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQzVDLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQzVDLENBQUM7WUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO1FBQ2hGLENBQUM7SUFDSCxDQUFDOytHQTlFVSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZuQixNQUFNOzs0RkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQTBGRDs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxTQUFpQixFQUFFLE9BQXlCO0lBQzlFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDaEMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxTQUFpQixFQUFFLE9BQXlCO0lBQ3pFLFVBQWtCLENBQUMsd0JBQXdCLEdBQUksVUFBa0IsQ0FBQyx3QkFBd0IsSUFBSSxFQUFFLENBQUM7SUFDakcsVUFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUM1RSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsYUFBbUM7SUFDdkUsTUFBTSxpQkFBaUIsR0FBSSxVQUFrQixDQUFDLHdCQUF3QixJQUFJLEVBQUUsQ0FBQztJQUM3RSxhQUFhLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUMsVUFBa0IsQ0FBQyx3QkFBd0IsR0FBRyxFQUFFLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExhbmdTZXJ2aWNlIH0gZnJvbSAnLi9sYW5nLXByb3ZpZGVyL2xhbmctcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBMYW5ndWFnZXNDb250ZW50LCBUZXh0Q29udGVudCB9IGZyb20gJy4vbGFuZy1wcm92aWRlci90eXBlcyc7XG4vKipcbiAqIENvbnRlbnRMb2FkZXIgU2VydmljZSAtIER5bmFtaWMgY29udGVudCBsb2FkaW5nIHN5c3RlbS5cbiAqXG4gKiBBbGxvd3MgbG9hZGluZyBjb250ZW50IGZyb20gZGlzdHJpYnV0ZWQgLmNvbnRlbnQudHMgZmlsZXMgdGhyb3VnaG91dCB0aGUgcHJvamVjdCxcbiAqIGtlZXBpbmcgY29udGVudCBjbG9zZSB0byB3aGVyZSBpdCdzIHVzZWQgaW5zdGVhZCBvZiBjZW50cmFsaXppbmcgZXZlcnl0aGluZyBpbiBtYWluLnRzLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlOlxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gdXNlci1wYWdlLmNvbnRlbnQudHNcbiAqIGV4cG9ydCBjb25zdCBVc2VyUGFnZUNvbnRlbnQgPSB7XG4gKiAgIGVzOiB7IHRpdGxlOiAnTWkgUMOhZ2luYSBkZSBVc3VhcmlvJywgd2VsY29tZTogJ0JpZW52ZW5pZG8ge3tuYW1lfX0nIH0sXG4gKiAgIGVuOiB7IHRpdGxlOiAnTXkgVXNlciBQYWdlJywgd2VsY29tZTogJ1dlbGNvbWUge3tuYW1lfX0nIH1cbiAqIH07XG4gKlxuICogLy8gSW4gY29tcG9uZW50IG9yIG1haW4udHNcbiAqIGltcG9ydCB7IFVzZXJQYWdlQ29udGVudCB9IGZyb20gJy4vdXNlci1wYWdlLmNvbnRlbnQnO1xuICogY29udGVudExvYWRlci5yZWdpc3RlckNvbnRlbnQoJ1VzZXJQYWdlJywgVXNlclBhZ2VDb250ZW50KTtcbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudExvYWRlclNlcnZpY2Uge1xuICBwcml2YXRlIHJlZ2lzdGVyZWRDb250ZW50ID0gbmV3IE1hcDxzdHJpbmcsIExhbmd1YWdlc0NvbnRlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsYW5nU2VydmljZTogTGFuZ1NlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGNvbnRlbnQgZm9yIGEgc3BlY2lmaWMgY29tcG9uZW50L3BhZ2UgY2xhc3MuXG4gICAqL1xuICByZWdpc3RlckNvbnRlbnQoY2xhc3NOYW1lOiBzdHJpbmcsIGNvbnRlbnQ6IExhbmd1YWdlc0NvbnRlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2lzdGVyZWRDb250ZW50LnNldChjbGFzc05hbWUsIGNvbnRlbnQpO1xuICAgIHRoaXMuYWRkQ29udGVudFRvTGFuZ1NlcnZpY2UoY2xhc3NOYW1lLCBjb250ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBtdWx0aXBsZSBjb250ZW50IG1vZHVsZXMgYXQgb25jZS5cbiAgICovXG4gIGxvYWRDb250ZW50KGNvbnRlbnRNb2R1bGVzOiBDb250ZW50TW9kdWxlW10pOiB2b2lkIHtcbiAgICBjb250ZW50TW9kdWxlcy5mb3JFYWNoKG1vZHVsZSA9PiB7XG4gICAgICB0aGlzLnJlZ2lzdGVyQ29udGVudChtb2R1bGUuY2xhc3NOYW1lLCBtb2R1bGUuY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY29udGVudCBpcyByZWdpc3RlcmVkIGZvciBhIGNsYXNzLlxuICAgKi9cbiAgaGFzQ29udGVudEZvcihjbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyZWRDb250ZW50LmhhcyhjbGFzc05hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgcmVnaXN0ZXJlZCBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGdldFJlZ2lzdGVyZWRDbGFzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnJlZ2lzdGVyZWRDb250ZW50LmtleXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHJlZ2lzdGVyZWQgY29udGVudCBmb3IgYSBzcGVjaWZpYyBjbGFzcy5cbiAgICovXG4gIGdldENvbnRlbnRGb3IoY2xhc3NOYW1lOiBzdHJpbmcpOiBMYW5ndWFnZXNDb250ZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RlcmVkQ29udGVudC5nZXQoY2xhc3NOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgY29udGVudCByZWdpc3RyYXRpb24gZm9yIGEgY2xhc3MuXG4gICAqL1xuICB1bnJlZ2lzdGVyQ29udGVudChjbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4aXN0ZWQgPSB0aGlzLnJlZ2lzdGVyZWRDb250ZW50LmhhcyhjbGFzc05hbWUpO1xuICAgIHRoaXMucmVnaXN0ZXJlZENvbnRlbnQuZGVsZXRlKGNsYXNzTmFtZSk7XG4gICAgcmV0dXJuIGV4aXN0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgYWxsIHJlZ2lzdGVyZWQgY29udGVudC5cbiAgICovXG4gIGNsZWFyQWxsQ29udGVudCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2lzdGVyZWRDb250ZW50LmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGNvbnRlbnQgdG8gdGhlIExhbmdTZXJ2aWNlIGNvbnRlbnQgcHJvdmlkZXIuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGFkZENvbnRlbnRUb0xhbmdTZXJ2aWNlKGNsYXNzTmFtZTogc3RyaW5nLCBjb250ZW50OiBMYW5ndWFnZXNDb250ZW50KTogdm9pZCB7XG4gICAgY29uc3QgbGFuZ1NlcnZpY2VBbnkgPSB0aGlzLmxhbmdTZXJ2aWNlIGFzIGFueTtcblxuICAgIGlmIChsYW5nU2VydmljZUFueS5jb250ZW50KSB7XG4gICAgICBjb25zdCB0ZXh0Q29udGVudCA9IG5ldyBUZXh0Q29udGVudChjb250ZW50KTtcbiAgICAgIGxhbmdTZXJ2aWNlQW55LmNvbnRlbnRbY2xhc3NOYW1lXSA9IHRleHRDb250ZW50O1xuXG4gICAgICBpZiAobGFuZ1NlcnZpY2VBbnkuZGV0ZWN0QXZhaWxhYmxlTGFuZ3VhZ2VzKSB7XG4gICAgICAgIGxhbmdTZXJ2aWNlQW55LmRldGVjdEF2YWlsYWJsZUxhbmd1YWdlcygpO1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZyhgQ29udGVudExvYWRlcjogUmVnaXN0ZXJlZCBjb250ZW50IGZvciBcIiR7Y2xhc3NOYW1lfVwiYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NvbnRlbnRMb2FkZXI6IFVuYWJsZSB0byBhY2Nlc3MgTGFuZ1NlcnZpY2UgY29udGVudCBwcm92aWRlcicpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgY29udGVudCBtb2R1bGUgcmVnaXN0cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRNb2R1bGUge1xuICBjbGFzc05hbWU6IHN0cmluZztcbiAgY29udGVudDogTGFuZ3VhZ2VzQ29udGVudDtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgY29udGVudCBtb2R1bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZW50TW9kdWxlKGNsYXNzTmFtZTogc3RyaW5nLCBjb250ZW50OiBMYW5ndWFnZXNDb250ZW50KTogQ29udGVudE1vZHVsZSB7XG4gIHJldHVybiB7IGNsYXNzTmFtZSwgY29udGVudCB9O1xufVxuXG4vKipcbiAqIFNpbXBsZSBmdW5jdGlvbiB0byByZWdpc3RlciBjb250ZW50IGRpcmVjdGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJDb250ZW50KGNsYXNzTmFtZTogc3RyaW5nLCBjb250ZW50OiBMYW5ndWFnZXNDb250ZW50KTogdm9pZCB7XG4gIChnbG9iYWxUaGlzIGFzIGFueSkuX192YWx0ZWNoQ29udGVudFJlZ2lzdHJ5ID0gKGdsb2JhbFRoaXMgYXMgYW55KS5fX3ZhbHRlY2hDb250ZW50UmVnaXN0cnkgfHwgW107XG4gIChnbG9iYWxUaGlzIGFzIGFueSkuX192YWx0ZWNoQ29udGVudFJlZ2lzdHJ5LnB1c2goeyBjbGFzc05hbWUsIGNvbnRlbnQgfSk7XG59XG5cbi8qKlxuICogTG9hZCBhbGwgY29udGVudCBmcm9tIHRoZSBnbG9iYWwgcmVnaXN0cnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkUmVnaXN0ZXJlZENvbnRlbnQoY29udGVudExvYWRlcjogQ29udGVudExvYWRlclNlcnZpY2UpOiB2b2lkIHtcbiAgY29uc3QgcmVnaXN0ZXJlZENvbnRlbnQgPSAoZ2xvYmFsVGhpcyBhcyBhbnkpLl9fdmFsdGVjaENvbnRlbnRSZWdpc3RyeSB8fCBbXTtcbiAgY29udGVudExvYWRlci5sb2FkQ29udGVudChyZWdpc3RlcmVkQ29udGVudCk7XG4gIChnbG9iYWxUaGlzIGFzIGFueSkuX192YWx0ZWNoQ29udGVudFJlZ2lzdHJ5ID0gW107XG59XG4iXX0=
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1sb2FkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL2NvbnRlbnQtbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFvQixXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBQy9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFJSCxNQUFNLE9BQU8sb0JBQW9CO0lBSGpDO1FBSVUsa0JBQWEsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUM3QyxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBNEIsQ0FBQztLQThHakU7SUE1R0M7OztPQUdHO0lBQ0gsZUFBZSxDQUFDLFNBQWlCLEVBQUUsT0FBeUI7UUFDMUQsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRS9DLG9DQUFvQztRQUNwQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsNENBQTRDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLGNBQStCO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLGNBQWMsQ0FBQyxNQUFNLHFCQUFxQixDQUFDLENBQUM7UUFFckYsY0FBYyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxTQUFT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QUFxQixDQUFDLE1BQU0sQ0FBQztJQUMzQyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEtBQUssZ0NBQWdDLENBQUMsQ0FBQztBQUNsRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJy4vbGFuZy1wcm92aWRlci9jb250ZW50JztcbmltcG9ydCB7IExhbmd1YWdlc0NvbnRlbnQsIFRleHRDb250ZW50IH0gZnJvbSAnLi9sYW5nLXByb3ZpZGVyL3R5cGVzJztcbmltcG9ydCB7IFZhbHRlY2hDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi90eXBlcyc7XG4vKipcbiAqIENvbnRlbnRMb2FkZXIgU2VydmljZSAtIER5bmFtaWMgY29udGVudCBsb2FkaW5nIHN5c3RlbS5cbiAqXG4gKiBSRUZBQ1RPUkVEOiBOb3cgdXNlcyBWYWx0ZWNoQ29uZmlnU2VydmljZSBwcm9wZXJseSBpbnN0ZWFkIG9mIGhhY2tpbmcgTGFuZ1NlcnZpY2UuXG4gKiBUaGlzIHByb3ZpZGVzIGEgY2xlYW4sIG1haW50YWluYWJsZSB3YXkgdG8gcmVnaXN0ZXIgY29udGVudCBkeW5hbWljYWxseS5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIHVzZXItcGFnZS5jb250ZW50LnRzXG4gKiBleHBvcnQgY29uc3QgVXNlclBhZ2VDb250ZW50ID0ge1xuICogICBlczogeyB0aXRsZTogJ01pIFDDoWdpbmEgZGUgVXN1YXJpbycsIHdlbGNvbWU6ICdCaWVudmVuaWRvIHt7bmFtZX19JyB9LFxuICogICBlbjogeyB0aXRsZTogJ015IFVzZXIgUGFnZScsIHdlbGNvbWU6ICdXZWxjb21lIHt7bmFtZX19JyB9XG4gKiB9O1xuICpcbiAqIC8vIEluIGNvbXBvbmVudFxuICogaW1wb3J0IHsgVXNlclBhZ2VDb250ZW50IH0gZnJvbSAnLi91c2VyLXBhZ2UuY29udGVudCc7XG4gKiByZWdpc3RlckNvbnRlbnQoJ1VzZXJQYWdlJywgVXNlclBhZ2VDb250ZW50KTtcbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudExvYWRlclNlcnZpY2Uge1xuICBwcml2YXRlIHZhbHRlY2hDb25maWcgPSBpbmplY3QoVmFsdGVjaENvbmZpZ1NlcnZpY2UpO1xuICBwcml2YXRlIHJlZ2lzdGVyZWRDb250ZW50ID0gbmV3IE1hcDxzdHJpbmcsIExhbmd1YWdlc0NvbnRlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGNvbnRlbnQgZm9yIGEgc3BlY2lmaWMgY29tcG9uZW50L3BhZ2UgY2xhc3MuXG4gICAqIOKchSBDTEVBTjogVXNlcyBwcm9wZXIgVmFsdGVjaENvbmZpZ1NlcnZpY2UgQVBJIGluc3RlYWQgb2YgaGFja2luZyBMYW5nU2VydmljZVxuICAgKi9cbiAgcmVnaXN0ZXJDb250ZW50KGNsYXNzTmFtZTogc3RyaW5nLCBjb250ZW50OiBMYW5ndWFnZXNDb250ZW50KTogdm9pZCB7XG4gICAgLy8gU3RvcmUgbG9jYWxseSBmb3IgdHJhY2tpbmdcbiAgICB0aGlzLnJlZ2lzdGVyZWRDb250ZW50LnNldChjbGFzc05hbWUsIGNvbnRlbnQpO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBjb25maWd1cmF0aW9uIHByb3Blcmx5XG4gICAgdGhpcy5hZGRDb250ZW50VG9Qcm92aWRlcihjbGFzc05hbWUsIGNvbnRlbnQpO1xuXG4gICAgY29uc29sZS5sb2coYOKchSBDb250ZW50TG9hZGVyOiBSZWdpc3RlcmVkIGNvbnRlbnQgZm9yIFwiJHtjbGFzc05hbWV9XCJgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBtdWx0aXBsZSBjb250ZW50IG1vZHVsZXMgYXQgb25jZS5cbiAgICovXG4gIGxvYWRDb250ZW50KGNvbnRlbnRNb2R1bGVzOiBDb250ZW50TW9kdWxlW10pOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhg8J+UhCBDb250ZW50TG9hZGVyOiBMb2FkaW5nICR7Y29udGVudE1vZHVsZXMubGVuZ3RofSBjb250ZW50IG1vZHVsZXMuLi5gKTtcblxuICAgIGNvbnRlbnRNb2R1bGVzLmZvckVhY2gobW9kdWxlID0+IHtcbiAgICAgIHRoaXMucmVnaXN0ZXJDb250ZW50KG1vZHVsZS5jbGFzc05hbWUsIG1vZHVsZS5jb250ZW50KTtcbiAgICB9KTtcblxuICAgIGNvbnNvbGUubG9nKCfinIUgQ29udGVudExvYWRlcjogQWxsIGNvbnRlbnQgbW9kdWxlcyBsb2FkZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY29udGVudCBpcyByZWdpc3RlcmVkIGZvciBhIGNsYXNzLlxuICAgKi9cbiAgaGFzQ29udGVudEZvcihjbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyZWRDb250ZW50LmhhcyhjbGFzc05hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgcmVnaXN0ZXJlZCBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGdldFJlZ2lzdGVyZWRDbGFzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnJlZ2lzdGVyZWRDb250ZW50LmtleXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHJlZ2lzdGVyZWQgY29udGVudCBmb3IgYSBzcGVjaWZpYyBjbGFzcy5cbiAgICovXG4gIGdldENvbnRlbnRGb3IoY2xhc3NOYW1lOiBzdHJpbmcpOiBMYW5ndWFnZXNDb250ZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RlcmVkQ29udGVudC5nZXQoY2xhc3NOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgY29udGVudCByZWdpc3RyYXRpb24gZm9yIGEgY2xhc3MuXG4gICAqL1xuICB1bnJlZ2lzdGVyQ29udGVudChjbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4aXN0ZWQgPSB0aGlzLnJlZ2lzdGVyZWRDb250ZW50LmhhcyhjbGFzc05hbWUpO1xuICAgIHRoaXMucmVnaXN0ZXJlZENvbnRlbnQuZGVsZXRlKGNsYXNzTmFtZSk7XG5cbiAgICAvLyBBbHNvIHJlbW92ZSBmcm9tIHRoZSBwcm92aWRlclxuICAgIGlmIChleGlzdGVkICYmIHRoaXMudmFsdGVjaENvbmZpZy5jb250ZW50KSB7XG4gICAgICBjb25zdCB1cGRhdGVkQ29udGVudCA9IHsgLi4udGhpcy52YWx0ZWNoQ29uZmlnLmNvbnRlbnQgfTtcbiAgICAgIGRlbGV0ZSB1cGRhdGVkQ29udGVudFtjbGFzc05hbWVdO1xuICAgICAgdGhpcy52YWx0ZWNoQ29uZmlnLmNvbnRlbnQgPSB1cGRhdGVkQ29udGVudDtcbiAgICAgIGNvbnNvbGUubG9nKGDwn5eR77iPIENvbnRlbnRMb2FkZXI6IFVucmVnaXN0ZXJlZCBjb250ZW50IGZvciBcIiR7Y2xhc3NOYW1lfVwiYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4aXN0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgYWxsIHJlZ2lzdGVyZWQgY29udGVudC5cbiAgICovXG4gIGNsZWFyQWxsQ29udGVudCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2lzdGVyZWRDb250ZW50LmNsZWFyKCk7XG4gICAgY29uc29sZS5sb2coJ/Cfp7kgQ29udGVudExvYWRlcjogQ2xlYXJlZCBhbGwgcmVnaXN0ZXJlZCBjb250ZW50Jyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgY29udGVudCBwcm92aWRlciBzdGF0ZS5cbiAgICogVXNlZnVsIGZvciBkZWJ1Z2dpbmcuXG4gICAqL1xuICBnZXRDb250ZW50UHJvdmlkZXIoKTogUHJvdmlkZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnZhbHRlY2hDb25maWcuY29udGVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiDinIUgQ0xFQU46IEFkZCBjb250ZW50IHRvIHByb3ZpZGVyIHVzaW5nIHByb3BlciBBUElcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYWRkQ29udGVudFRvUHJvdmlkZXIoY2xhc3NOYW1lOiBzdHJpbmcsIGNvbnRlbnQ6IExhbmd1YWdlc0NvbnRlbnQpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgLy8gR2V0IGN1cnJlbnQgY29udGVudCBwcm92aWRlclxuICAgICAgY29uc3QgY3VycmVudENvbnRlbnQgPSB0aGlzLnZhbHRlY2hDb25maWcuY29udGVudCB8fCB7fTtcblxuICAgICAgLy8gQ3JlYXRlIFRleHRDb250ZW50IGluc3RhbmNlXG4gICAgICBjb25zdCB0ZXh0Q29udGVudCA9IG5ldyBUZXh0Q29udGVudChjb250ZW50KTtcblxuICAgICAgLy8gVXBkYXRlIHRoZSBjb250ZW50IHByb3ZpZGVyIHByb3Blcmx5XG4gICAgICBjb25zdCB1cGRhdGVkQ29udGVudDogUHJvdmlkZXIgPSB7XG4gICAgICAgIC4uLmN1cnJlbnRDb250ZW50LFxuICAgICAgICBbY2xhc3NOYW1lXTogdGV4dENvbnRlbnQsXG4gICAgICB9O1xuXG4gICAgICAvLyBTZXQgdGhlIHVwZGF0ZWQgY29udGVudCAtIHRoaXMgaXMgdGhlIGNsZWFuIHdheVxuICAgICAgdGhpcy52YWx0ZWNoQ29uZmlnLmNvbnRlbnQgPSB1cGRhdGVkQ29udGVudDtcblxuICAgICAgY29uc29sZS5sb2coYPCfk50gQ29udGVudExvYWRlcjogQWRkZWQgXCIke2NsYXNzTmFtZX1cIiB0byBjb250ZW50IHByb3ZpZGVyYCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYOKdjCBDb250ZW50TG9hZGVyOiBFcnJvciBhZGRpbmcgY29udGVudCBmb3IgXCIke2NsYXNzTmFtZX1cIjpgLCBlcnJvcik7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBjb250ZW50IG1vZHVsZSByZWdpc3RyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudE1vZHVsZSB7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBjb250ZW50OiBMYW5ndWFnZXNDb250ZW50O1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBjb250ZW50IG1vZHVsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRlbnRNb2R1bGUoY2xhc3NOYW1lOiBzdHJpbmcsIGNvbnRlbnQ6IExhbmd1YWdlc0NvbnRlbnQpOiBDb250ZW50TW9kdWxlIHtcbiAgcmV0dXJuIHsgY2xhc3NOYW1lLCBjb250ZW50IH07XG59XG5cbi8qKlxuICog4pyFIENMRUFOOiBHbG9iYWwgcmVnaXN0cnkgdXNpbmcgcHJvcGVyIGFycmF5IGluc3RlYWQgb2YgZ2xvYmFsVGhpcyBoYWNrXG4gKi9cbmNvbnN0IGdsb2JhbENvbnRlbnRSZWdpc3RyeTogQ29udGVudE1vZHVsZVtdID0gW107XG5cbi8qKlxuICogU2ltcGxlIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyIGNvbnRlbnQgZGlyZWN0bHkuXG4gKiDinIUgSU1QUk9WRUQ6IENsZWFuZXIgZ2xvYmFsIHJlZ2lzdHJ5IG1hbmFnZW1lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQ29udGVudChjbGFzc05hbWU6IHN0cmluZywgY29udGVudDogTGFuZ3VhZ2VzQ29udGVudCk6IHZvaWQge1xuICAvLyBBZGQgdG8gZ2xvYmFsIHJlZ2lzdHJ5XG4gIGdsb2JhbENvbnRlbnRSZWdpc3RyeS5wdXNoKHsgY2xhc3NOYW1lLCBjb250ZW50IH0pO1xuICBjb25zb2xlLmxvZyhg8J+TnSByZWdpc3RlckNvbnRlbnQ6IFF1ZXVlZCBcIiR7Y2xhc3NOYW1lfVwiIGZvciByZWdpc3RyYXRpb25gKTtcbn1cblxuLyoqXG4gKiBMb2FkIGFsbCBjb250ZW50IGZyb20gdGhlIGdsb2JhbCByZWdpc3RyeS5cbiAqIOKchSBJTVBST1ZFRDogQmV0dGVyIGVycm9yIGhhbmRsaW5nIGFuZCBsb2dnaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkUmVnaXN0ZXJlZENvbnRlbnQoY29udGVudExvYWRlcjogQ29udGVudExvYWRlclNlcnZpY2UpOiB2b2lkIHtcbiAgaWYgKGdsb2JhbENvbnRlbnRSZWdpc3RyeS5sZW5ndGggPT09IDApIHtcbiAgICBjb25zb2xlLmxvZygn4oS577iPIENvbnRlbnRMb2FkZXI6IE5vIGNvbnRlbnQgcmVnaXN0ZXJlZCB0byBsb2FkJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc29sZS5sb2coXG4gICAgYPCfmoAgQ29udGVudExvYWRlcjogTG9hZGluZyAke2dsb2JhbENvbnRlbnRSZWdpc3RyeS5sZW5ndGh9IHJlZ2lzdGVyZWQgY29udGVudCBtb2R1bGVzLi4uYFxuICApO1xuXG4gIHRyeSB7XG4gICAgLy8gTG9hZCBhbGwgY29udGVudFxuICAgIGNvbnRlbnRMb2FkZXIubG9hZENvbnRlbnQoWy4uLmdsb2JhbENvbnRlbnRSZWdpc3RyeV0pO1xuXG4gICAgLy8gQ2xlYXIgdGhlIHJlZ2lzdHJ5IGFmdGVyIGxvYWRpbmdcbiAgICBnbG9iYWxDb250ZW50UmVnaXN0cnkubGVuZ3RoID0gMDtcblxuICAgIGNvbnNvbGUubG9nKCfwn46JIENvbnRlbnRMb2FkZXI6IEFsbCByZWdpc3RlcmVkIGNvbnRlbnQgbG9hZGVkIGFuZCByZWdpc3RyeSBjbGVhcmVkJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcign4p2MIENvbnRlbnRMb2FkZXI6IEVycm9yIGxvYWRpbmcgcmVnaXN0ZXJlZCBjb250ZW50OicsIGVycm9yKTtcbiAgfVxufVxuXG4vKipcbiAqIOKchSBORVc6IERlYnVnZ2luZyBoZWxwZXJcbiAqIEdldCBjdXJyZW50IGdsb2JhbCByZWdpc3RyeSBzdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVnaXN0ZXJlZENvbnRlbnRRdWV1ZSgpOiBDb250ZW50TW9kdWxlW10ge1xuICByZXR1cm4gWy4uLmdsb2JhbENvbnRlbnRSZWdpc3RyeV07XG59XG5cbi8qKlxuICog4pyFIE5FVzogRGVidWdnaW5nIGhlbHBlclxuICogQ2xlYXIgdGhlIGdsb2JhbCByZWdpc3RyeSB3aXRob3V0IGxvYWRpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyUmVnaXN0ZXJlZENvbnRlbnRRdWV1ZSgpOiB2b2lkIHtcbiAgY29uc3QgY291bnQgPSBnbG9iYWxDb250ZW50UmVnaXN0cnkubGVuZ3RoO1xuICBnbG9iYWxDb250ZW50UmVnaXN0cnkubGVuZ3RoID0gMDtcbiAgY29uc29sZS5sb2coYPCfp7kgQ29udGVudExvYWRlcjogQ2xlYXJlZCAke2NvdW50fSBpdGVtcyBmcm9tIHJlZ2lzdHJhdGlvbiBxdWV1ZWApO1xufVxuIl19
@@ -8112,8 +8112,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
8112
8112
  /**
8113
8113
  * ContentLoader Service - Dynamic content loading system.
8114
8114
  *
8115
- * Allows loading content from distributed .content.ts files throughout the project,
8116
- * keeping content close to where it's used instead of centralizing everything in main.ts.
8115
+ * REFACTORED: Now uses ValtechConfigService properly instead of hacking LangService.
8116
+ * This provides a clean, maintainable way to register content dynamically.
8117
8117
  *
8118
8118
  * @example Basic usage:
8119
8119
  * ```typescript
@@ -8123,30 +8123,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
8123
8123
  * en: { title: 'My User Page', welcome: 'Welcome {{name}}' }
8124
8124
  * };
8125
8125
  *
8126
- * // In component or main.ts
8126
+ * // In component
8127
8127
  * import { UserPageContent } from './user-page.content';
8128
- * contentLoader.registerContent('UserPage', UserPageContent);
8128
+ * registerContent('UserPage', UserPageContent);
8129
8129
  * ```
8130
8130
  */
8131
8131
  class ContentLoaderService {
8132
- constructor(langService) {
8133
- this.langService = langService;
8132
+ constructor() {
8133
+ this.valtechConfig = inject(ValtechConfigService);
8134
8134
  this.registeredContent = new Map();
8135
8135
  }
8136
8136
  /**
8137
8137
  * Register content for a specific component/page class.
8138
+ * ✅ CLEAN: Uses proper ValtechConfigService API instead of hacking LangService
8138
8139
  */
8139
8140
  registerContent(className, content) {
8141
+ // Store locally for tracking
8140
8142
  this.registeredContent.set(className, content);
8141
- this.addContentToLangService(className, content);
8143
+ // Update the configuration properly
8144
+ this.addContentToProvider(className, content);
8145
+ console.log(`✅ ContentLoader: Registered content for "${className}"`);
8142
8146
  }
8143
8147
  /**
8144
8148
  * Register multiple content modules at once.
8145
8149
  */
8146
8150
  loadContent(contentModules) {
8151
+ console.log(`🔄 ContentLoader: Loading ${contentModules.length} content modules...`);
8147
8152
  contentModules.forEach(module => {
8148
8153
  this.registerContent(module.className, module.content);
8149
8154
  });
8155
+ console.log('✅ ContentLoader: All content modules loaded successfully');
8150
8156
  }
8151
8157
  /**
8152
8158
  * Check if content is registered for a class.
@@ -8172,6 +8178,13 @@ class ContentLoaderService {
8172
8178
  unregisterContent(className) {
8173
8179
  const existed = this.registeredContent.has(className);
8174
8180
  this.registeredContent.delete(className);
8181
+ // Also remove from the provider
8182
+ if (existed && this.valtechConfig.content) {
8183
+ const updatedContent = { ...this.valtechConfig.content };
8184
+ delete updatedContent[className];
8185
+ this.valtechConfig.content = updatedContent;
8186
+ console.log(`🗑️ ContentLoader: Unregistered content for "${className}"`);
8187
+ }
8175
8188
  return existed;
8176
8189
  }
8177
8190
  /**
@@ -8179,26 +8192,39 @@ class ContentLoaderService {
8179
8192
  */
8180
8193
  clearAllContent() {
8181
8194
  this.registeredContent.clear();
8195
+ console.log('🧹 ContentLoader: Cleared all registered content');
8196
+ }
8197
+ /**
8198
+ * Get current content provider state.
8199
+ * Useful for debugging.
8200
+ */
8201
+ getContentProvider() {
8202
+ return this.valtechConfig.content;
8182
8203
  }
8183
8204
  /**
8184
- * Add content to the LangService content provider.
8205
+ * ✅ CLEAN: Add content to provider using proper API
8185
8206
  * @private
8186
8207
  */
8187
- addContentToLangService(className, content) {
8188
- const langServiceAny = this.langService;
8189
- if (langServiceAny.content) {
8208
+ addContentToProvider(className, content) {
8209
+ try {
8210
+ // Get current content provider
8211
+ const currentContent = this.valtechConfig.content || {};
8212
+ // Create TextContent instance
8190
8213
  const textContent = new TextContent(content);
8191
- langServiceAny.content[className] = textContent;
8192
- if (langServiceAny.detectAvailableLanguages) {
8193
- langServiceAny.detectAvailableLanguages();
8194
- }
8195
- console.log(`ContentLoader: Registered content for "${className}"`);
8214
+ // Update the content provider properly
8215
+ const updatedContent = {
8216
+ ...currentContent,
8217
+ [className]: textContent,
8218
+ };
8219
+ // Set the updated content - this is the clean way
8220
+ this.valtechConfig.content = updatedContent;
8221
+ console.log(`📝 ContentLoader: Added "${className}" to content provider`);
8196
8222
  }
8197
- else {
8198
- console.error('ContentLoader: Unable to access LangService content provider');
8223
+ catch (error) {
8224
+ console.error(`❌ ContentLoader: Error adding content for "${className}":`, error);
8199
8225
  }
8200
8226
  }
8201
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContentLoaderService, deps: [{ token: LangService }], target: i0.ɵɵFactoryTarget.Injectable }); }
8227
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContentLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
8202
8228
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContentLoaderService, providedIn: 'root' }); }
8203
8229
  }
8204
8230
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContentLoaderService, decorators: [{
@@ -8206,27 +8232,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
8206
8232
  args: [{
8207
8233
  providedIn: 'root',
8208
8234
  }]
8209
- }], ctorParameters: () => [{ type: LangService }] });
8235
+ }] });
8210
8236
  /**
8211
8237
  * Helper function to create a content module.
8212
8238
  */
8213
8239
  function createContentModule(className, content) {
8214
8240
  return { className, content };
8215
8241
  }
8242
+ /**
8243
+ * ✅ CLEAN: Global registry using proper array instead of globalThis hack
8244
+ */
8245
+ const globalContentRegistry = [];
8216
8246
  /**
8217
8247
  * Simple function to register content directly.
8248
+ * ✅ IMPROVED: Cleaner global registry management
8218
8249
  */
8219
8250
  function registerContent(className, content) {
8220
- globalThis.__valtechContentRegistry = globalThis.__valtechContentRegistry || [];
8221
- globalThis.__valtechContentRegistry.push({ className, content });
8251
+ // Add to global registry
8252
+ globalContentRegistry.push({ className, content });
8253
+ console.log(`📝 registerContent: Queued "${className}" for registration`);
8222
8254
  }
8223
8255
  /**
8224
8256
  * Load all content from the global registry.
8257
+ * ✅ IMPROVED: Better error handling and logging
8225
8258
  */
8226
8259
  function loadRegisteredContent(contentLoader) {
8227
- const registeredContent = globalThis.__valtechContentRegistry || [];
8228
- contentLoader.loadContent(registeredContent);
8229
- globalThis.__valtechContentRegistry = [];
8260
+ if (globalContentRegistry.length === 0) {
8261
+ console.log('ℹ️ ContentLoader: No content registered to load');
8262
+ return;
8263
+ }
8264
+ console.log(`🚀 ContentLoader: Loading ${globalContentRegistry.length} registered content modules...`);
8265
+ try {
8266
+ // Load all content
8267
+ contentLoader.loadContent([...globalContentRegistry]);
8268
+ // Clear the registry after loading
8269
+ globalContentRegistry.length = 0;
8270
+ console.log('🎉 ContentLoader: All registered content loaded and registry cleared');
8271
+ }
8272
+ catch (error) {
8273
+ console.error('❌ ContentLoader: Error loading registered content:', error);
8274
+ }
8275
+ }
8276
+ /**
8277
+ * ✅ NEW: Debugging helper
8278
+ * Get current global registry state
8279
+ */
8280
+ function getRegisteredContentQueue() {
8281
+ return [...globalContentRegistry];
8282
+ }
8283
+ /**
8284
+ * ✅ NEW: Debugging helper
8285
+ * Clear the global registry without loading
8286
+ */
8287
+ function clearRegisteredContentQueue() {
8288
+ const count = globalContentRegistry.length;
8289
+ globalContentRegistry.length = 0;
8290
+ console.log(`🧹 ContentLoader: Cleared ${count} items from registration queue`);
8230
8291
  }
8231
8292
 
8232
8293
  const text = {
@@ -8403,5 +8464,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
8403
8464
  * Generated bundle index. Do not edit.
8404
8465
  */
8405
8466
 
8406
- export { ARTICLE_SPACING, ActionType, AlertBoxComponent, ArticleBuilder, ArticleComponent, AvatarComponent, BannerComponent, BaseDefault, BoxComponent, ButtonComponent, ButtonGroupComponent, CardComponent, CardSection, CardType, CheckInputComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CommentInputComponent, ComponentContentHelper, ComponentStates, ContentLoaderComponent, ContentLoaderService, ContentService, DateInputComponent, DisplayComponent, DividerComponent, DownloadService, EmailInputComponent, ExpandableTextComponent, FileInputComponent, FooterComponent, FormComponent, FormFooterComponent, GlobalContent, HeaderComponent, HintComponent, HourInputComponent, HrefComponent, Icon, IconComponent, IconService, ImageComponent, InAppBrowserService, InputType, ItemListComponent, LANGUAGES, LangService, LanguageSelectorComponent, LayeredCardComponent, LayoutComponent, LinkComponent, LinkProcessorService, LinksCakeComponent, ListContentHelper, LocalStorageService, MOTION, NavigationService, NoContentComponent, NotesBoxComponent, NumberInputComponent, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PasswordInputComponent, PinInputComponent, PopoverSelectorComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProgressBarComponent, ProgressStatusComponent, PrompterComponent, RadioInputComponent, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SelectSearchComponent, SimpleComponent, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, TextComponent, TextContent, TextInputComponent, ThemeOption, ThemeService, TitleBlockComponent, TitleComponent, ToastService, ToolbarActionType, ToolbarComponent, ValtechConfigService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, content, createButtonProps, createComponentContentHelper, createContentHelper, createContentModule, createDisplayProps, createReactiveProps, createTextProps, createTitleProps, fromContent, fromContentWithInterpolation, fromMultipleContent, globalContentData, goToTop, interpolateContent, isAtEnd, loadRegisteredContent, maxLength, registerContent, replaceSpecialChars, resolveColor, resolveInputDefaultValue, shouldUseReactiveContent };
8467
+ export { ARTICLE_SPACING, ActionType, AlertBoxComponent, ArticleBuilder, ArticleComponent, AvatarComponent, BannerComponent, BaseDefault, BoxComponent, ButtonComponent, ButtonGroupComponent, CardComponent, CardSection, CardType, CheckInputComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CommentInputComponent, ComponentContentHelper, ComponentStates, ContentLoaderComponent, ContentLoaderService, ContentService, DateInputComponent, DisplayComponent, DividerComponent, DownloadService, EmailInputComponent, ExpandableTextComponent, FileInputComponent, FooterComponent, FormComponent, FormFooterComponent, GlobalContent, HeaderComponent, HintComponent, HourInputComponent, HrefComponent, Icon, IconComponent, IconService, ImageComponent, InAppBrowserService, InputType, ItemListComponent, LANGUAGES, LangService, LanguageSelectorComponent, LayeredCardComponent, LayoutComponent, LinkComponent, LinkProcessorService, LinksCakeComponent, ListContentHelper, LocalStorageService, MOTION, NavigationService, NoContentComponent, NotesBoxComponent, NumberInputComponent, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PasswordInputComponent, PinInputComponent, PopoverSelectorComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProgressBarComponent, ProgressStatusComponent, PrompterComponent, RadioInputComponent, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SelectSearchComponent, SimpleComponent, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, TextComponent, TextContent, TextInputComponent, ThemeOption, ThemeService, TitleBlockComponent, TitleComponent, ToastService, ToolbarActionType, ToolbarComponent, ValtechConfigService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, clearRegisteredContentQueue, content, createButtonProps, createComponentContentHelper, createContentHelper, createContentModule, createDisplayProps, createReactiveProps, createTextProps, createTitleProps, fromContent, fromContentWithInterpolation, fromMultipleContent, getRegisteredContentQueue, globalContentData, goToTop, interpolateContent, isAtEnd, loadRegisteredContent, maxLength, registerContent, replaceSpecialChars, resolveColor, resolveInputDefaultValue, shouldUseReactiveContent };
8407
8468
  //# sourceMappingURL=valtech-components.mjs.map