@ng-formworks/core 17.2.7 → 18.0.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 (177) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +834 -0
  3. package/esm2022/lib/framework-library/framework-library.service.mjs +175 -0
  4. package/esm2022/lib/framework-library/framework.mjs +15 -0
  5. package/esm2022/lib/framework-library/no-framework.component.mjs +18 -0
  6. package/esm2022/lib/framework-library/no-framework.module.mjs +27 -0
  7. package/esm2022/lib/framework-library/no.framework.mjs +19 -0
  8. package/esm2022/lib/json-schema-form.component.mjs +765 -0
  9. package/esm2022/lib/json-schema-form.module.mjs +26 -0
  10. package/esm2022/lib/json-schema-form.service.mjs +676 -0
  11. package/esm2022/lib/locale/de-validation-messages.mjs +60 -0
  12. package/esm2022/lib/locale/en-validation-messages.mjs +60 -0
  13. package/esm2022/lib/locale/es-validation-messages.mjs +57 -0
  14. package/esm2022/lib/locale/fr-validation-messages.mjs +60 -0
  15. package/esm2022/lib/locale/index.mjs +8 -0
  16. package/esm2022/lib/locale/it-validation-messages.mjs +60 -0
  17. package/esm2022/lib/locale/pt-validation-messages.mjs +60 -0
  18. package/esm2022/lib/locale/zh-validation-messages.mjs +60 -0
  19. package/esm2022/lib/shared/convert-schema-to-draft6.function.mjs +300 -0
  20. package/esm2022/lib/shared/form-group.functions.mjs +442 -0
  21. package/esm2022/lib/shared/format-regex.constants.mjs +54 -0
  22. package/esm2022/lib/shared/index.mjs +12 -0
  23. package/esm2022/lib/shared/json-schema.functions.mjs +784 -0
  24. package/esm2022/lib/shared/json.validators.mjs +884 -0
  25. package/esm2022/lib/shared/jsonpointer.functions.mjs +1026 -0
  26. package/esm2022/lib/shared/layout.functions.mjs +1158 -0
  27. package/esm2022/lib/shared/merge-schemas.function.mjs +345 -0
  28. package/esm2022/lib/shared/utility.functions.mjs +380 -0
  29. package/esm2022/lib/shared/validator.functions.mjs +584 -0
  30. package/esm2022/lib/widget-library/add-reference.component.mjs +61 -0
  31. package/esm2022/lib/widget-library/button.component.mjs +72 -0
  32. package/esm2022/lib/widget-library/checkbox.component.mjs +105 -0
  33. package/esm2022/lib/widget-library/checkboxes.component.mjs +147 -0
  34. package/esm2022/lib/widget-library/file.component.mjs +35 -0
  35. package/esm2022/lib/widget-library/hidden.component.mjs +54 -0
  36. package/esm2022/lib/widget-library/index.mjs +55 -0
  37. package/esm2022/lib/widget-library/input.component.mjs +119 -0
  38. package/esm2022/lib/widget-library/message.component.mjs +38 -0
  39. package/esm2022/lib/widget-library/none.component.mjs +21 -0
  40. package/esm2022/lib/widget-library/number.component.mjs +123 -0
  41. package/esm2022/lib/widget-library/one-of.component.mjs +35 -0
  42. package/esm2022/lib/widget-library/orderable.directive.mjs +123 -0
  43. package/esm2022/lib/widget-library/radios.component.mjs +153 -0
  44. package/esm2022/lib/widget-library/root.component.mjs +79 -0
  45. package/esm2022/lib/widget-library/section.component.mjs +199 -0
  46. package/esm2022/lib/widget-library/select-framework.component.mjs +51 -0
  47. package/esm2022/lib/widget-library/select-widget.component.mjs +46 -0
  48. package/esm2022/lib/widget-library/select.component.mjs +150 -0
  49. package/esm2022/lib/widget-library/submit.component.mjs +82 -0
  50. package/esm2022/lib/widget-library/tab.component.mjs +41 -0
  51. package/esm2022/lib/widget-library/tabs.component.mjs +108 -0
  52. package/esm2022/lib/widget-library/template.component.mjs +46 -0
  53. package/esm2022/lib/widget-library/textarea.component.mjs +104 -0
  54. package/esm2022/lib/widget-library/widget-library.module.mjs +42 -0
  55. package/esm2022/lib/widget-library/widget-library.service.mjs +226 -0
  56. package/esm2022/ng-formworks-core.mjs +5 -0
  57. package/esm2022/public_api.mjs +13 -0
  58. package/fesm2022/ng-formworks-core.mjs +10151 -0
  59. package/fesm2022/ng-formworks-core.mjs.map +1 -0
  60. package/index.d.ts +5 -0
  61. package/lib/framework-library/framework-library.service.d.ts +55 -0
  62. package/lib/framework-library/framework.d.ts +13 -0
  63. package/lib/framework-library/no-framework.component.d.ts +8 -0
  64. package/lib/framework-library/no-framework.module.d.ts +9 -0
  65. package/lib/framework-library/no.framework.d.ts +10 -0
  66. package/lib/json-schema-form.component.d.ts +218 -0
  67. package/lib/json-schema-form.module.d.ts +11 -0
  68. package/lib/json-schema-form.service.d.ts +115 -0
  69. package/lib/locale/de-validation-messages.d.ts +1 -0
  70. package/lib/locale/en-validation-messages.d.ts +1 -0
  71. package/lib/locale/es-validation-messages.d.ts +1 -0
  72. package/lib/locale/fr-validation-messages.d.ts +1 -0
  73. package/{src/lib/locale/index.ts → lib/locale/index.d.ts} +7 -7
  74. package/lib/locale/it-validation-messages.d.ts +1 -0
  75. package/lib/locale/pt-validation-messages.d.ts +1 -0
  76. package/lib/locale/zh-validation-messages.d.ts +1 -0
  77. package/lib/shared/convert-schema-to-draft6.function.d.ts +21 -0
  78. package/lib/shared/form-group.functions.d.ts +100 -0
  79. package/lib/shared/format-regex.constants.d.ts +19 -0
  80. package/lib/shared/index.d.ts +9 -0
  81. package/lib/shared/json-schema.functions.d.ts +193 -0
  82. package/lib/shared/json.validators.d.ts +441 -0
  83. package/lib/shared/jsonpointer.functions.d.ts +416 -0
  84. package/lib/shared/layout.functions.d.ts +83 -0
  85. package/lib/shared/merge-schemas.function.d.ts +19 -0
  86. package/lib/shared/utility.functions.d.ts +165 -0
  87. package/{src/lib/shared/validator.functions.ts → lib/shared/validator.functions.d.ts} +364 -601
  88. package/lib/widget-library/add-reference.component.d.ts +20 -0
  89. package/lib/widget-library/button.component.d.ts +21 -0
  90. package/lib/widget-library/checkbox.component.d.ts +24 -0
  91. package/lib/widget-library/checkboxes.component.d.ts +24 -0
  92. package/lib/widget-library/file.component.d.ts +21 -0
  93. package/lib/widget-library/hidden.component.d.ts +19 -0
  94. package/{src/lib/widget-library/index.ts → lib/widget-library/index.d.ts} +47 -56
  95. package/lib/widget-library/input.component.d.ts +22 -0
  96. package/lib/widget-library/message.component.d.ts +15 -0
  97. package/lib/widget-library/none.component.d.ts +8 -0
  98. package/lib/widget-library/number.component.d.ts +25 -0
  99. package/lib/widget-library/one-of.component.d.ts +21 -0
  100. package/lib/widget-library/orderable.directive.d.ts +41 -0
  101. package/lib/widget-library/radios.component.d.ts +23 -0
  102. package/lib/widget-library/root.component.d.ts +17 -0
  103. package/lib/widget-library/section.component.d.ts +19 -0
  104. package/lib/widget-library/select-framework.component.d.ts +18 -0
  105. package/lib/widget-library/select-widget.component.d.ts +18 -0
  106. package/lib/widget-library/select.component.d.ts +24 -0
  107. package/lib/widget-library/submit.component.d.ts +24 -0
  108. package/lib/widget-library/tab.component.d.ts +14 -0
  109. package/lib/widget-library/tabs.component.d.ts +20 -0
  110. package/lib/widget-library/template.component.d.ts +18 -0
  111. package/lib/widget-library/textarea.component.d.ts +21 -0
  112. package/lib/widget-library/widget-library.module.d.ts +31 -0
  113. package/lib/widget-library/widget-library.service.d.ts +22 -0
  114. package/package.json +66 -53
  115. package/{src/public_api.ts → public_api.d.ts} +9 -21
  116. package/karma.conf.js +0 -46
  117. package/ng-package.json +0 -11
  118. package/src/lib/framework-library/framework-library.service.ts +0 -195
  119. package/src/lib/framework-library/framework.ts +0 -11
  120. package/src/lib/framework-library/no-framework.component.html +0 -2
  121. package/src/lib/framework-library/no-framework.component.ts +0 -11
  122. package/src/lib/framework-library/no-framework.module.ts +0 -18
  123. package/src/lib/framework-library/no.framework.ts +0 -11
  124. package/src/lib/json-schema-form.component.html +0 -7
  125. package/src/lib/json-schema-form.component.ts +0 -809
  126. package/src/lib/json-schema-form.module.ts +0 -17
  127. package/src/lib/json-schema-form.service.ts +0 -907
  128. package/src/lib/locale/de-validation-messages.ts +0 -58
  129. package/src/lib/locale/en-validation-messages.ts +0 -58
  130. package/src/lib/locale/es-validation-messages.ts +0 -55
  131. package/src/lib/locale/fr-validation-messages.ts +0 -58
  132. package/src/lib/locale/it-validation-messages.ts +0 -58
  133. package/src/lib/locale/pt-validation-messages.ts +0 -58
  134. package/src/lib/locale/zh-validation-messages.ts +0 -58
  135. package/src/lib/locale-dates/en-US.ts +0 -5
  136. package/src/lib/shared/convert-schema-to-draft6.function.ts +0 -321
  137. package/src/lib/shared/form-group.functions.ts +0 -522
  138. package/src/lib/shared/format-regex.constants.ts +0 -73
  139. package/src/lib/shared/index.ts +0 -40
  140. package/src/lib/shared/json-schema.functions.ts +0 -788
  141. package/src/lib/shared/json.validators.ts +0 -878
  142. package/src/lib/shared/jsonpointer.functions.ts +0 -1012
  143. package/src/lib/shared/jspointer.functions.json.spec.ts +0 -103
  144. package/src/lib/shared/layout.functions.ts +0 -1233
  145. package/src/lib/shared/merge-schemas.function.ts +0 -329
  146. package/src/lib/shared/utility.functions.ts +0 -373
  147. package/src/lib/shared/validator.functions.spec.ts +0 -55
  148. package/src/lib/widget-library/add-reference.component.ts +0 -59
  149. package/src/lib/widget-library/button.component.ts +0 -54
  150. package/src/lib/widget-library/checkbox.component.ts +0 -74
  151. package/src/lib/widget-library/checkboxes.component.ts +0 -104
  152. package/src/lib/widget-library/file.component.ts +0 -36
  153. package/src/lib/widget-library/hidden.component.ts +0 -39
  154. package/src/lib/widget-library/input.component.ts +0 -76
  155. package/src/lib/widget-library/message.component.ts +0 -29
  156. package/src/lib/widget-library/none.component.ts +0 -12
  157. package/src/lib/widget-library/number.component.ts +0 -79
  158. package/src/lib/widget-library/one-of.component.ts +0 -36
  159. package/src/lib/widget-library/orderable.directive.ts +0 -130
  160. package/src/lib/widget-library/radios.component.ts +0 -101
  161. package/src/lib/widget-library/root.component.ts +0 -78
  162. package/src/lib/widget-library/section.component.ts +0 -133
  163. package/src/lib/widget-library/select-framework.component.ts +0 -50
  164. package/src/lib/widget-library/select-widget.component.ts +0 -46
  165. package/src/lib/widget-library/select.component.ts +0 -96
  166. package/src/lib/widget-library/submit.component.ts +0 -68
  167. package/src/lib/widget-library/tab.component.ts +0 -29
  168. package/src/lib/widget-library/tabs.component.ts +0 -83
  169. package/src/lib/widget-library/template.component.ts +0 -52
  170. package/src/lib/widget-library/textarea.component.ts +0 -68
  171. package/src/lib/widget-library/widget-library.module.ts +0 -13
  172. package/src/lib/widget-library/widget-library.service.ts +0 -234
  173. package/src/test.ts +0 -18
  174. package/tsconfig.lib.json +0 -25
  175. package/tsconfig.lib.prod.json +0 -9
  176. package/tsconfig.spec.json +0 -17
  177. package/tslint.json +0 -11
@@ -0,0 +1,175 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { Subject, lastValueFrom } from 'rxjs';
3
+ import { hasOwn } from '../shared/utility.functions';
4
+ import { WidgetLibraryService } from '../widget-library/widget-library.service';
5
+ import { Framework } from './framework';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common/http";
8
+ import * as i2 from "../widget-library/widget-library.service";
9
+ // Possible future frameworks:
10
+ // - Foundation 6:
11
+ // http://justindavis.co/2017/06/15/using-foundation-6-in-angular-4/
12
+ // https://github.com/zurb/foundation-sites
13
+ // - Semantic UI:
14
+ // https://github.com/edcarroll/ng2-semantic-ui
15
+ // https://github.com/vladotesanovic/ngSemantic
16
+ export class FrameworkLibraryService {
17
+ constructor(frameworks, widgetLibrary, http) {
18
+ this.frameworks = frameworks;
19
+ this.widgetLibrary = widgetLibrary;
20
+ this.http = http;
21
+ this.activeFramework = null;
22
+ this.loadExternalAssets = false;
23
+ this.frameworkLibrary = {};
24
+ this.frameworks.forEach(framework => this.frameworkLibrary[framework.name] = framework);
25
+ this.defaultFramework = this.frameworks[0].name;
26
+ //this.setFramework(this.defaultFramework);
27
+ this.activeFrameworkName = this.defaultFramework;
28
+ this.activeFrameworkNameSubject = new Subject();
29
+ this.activeFrameworkName$ = this.activeFrameworkNameSubject.asObservable();
30
+ this.setFramework(this.defaultFramework);
31
+ }
32
+ setLoadExternalAssets(loadExternalAssets = true) {
33
+ this.loadExternalAssets = !!loadExternalAssets;
34
+ }
35
+ setFramework(framework = this.defaultFramework, loadExternalAssets = this.loadExternalAssets) {
36
+ this.activeFramework =
37
+ typeof framework === 'string' && this.hasFramework(framework) ?
38
+ this.frameworkLibrary[framework] :
39
+ typeof framework === 'object' && hasOwn(framework, 'framework') ?
40
+ framework :
41
+ this.frameworkLibrary[this.defaultFramework];
42
+ if (this.activeFramework.name != this.activeFrameworkName) {
43
+ this.activeFrameworkName = this.activeFramework.name;
44
+ this.activeFrameworkNameSubject.next(this.activeFrameworkName);
45
+ }
46
+ return this.registerFrameworkWidgets(this.activeFramework);
47
+ }
48
+ registerFrameworkWidgets(framework) {
49
+ return hasOwn(framework, 'widgets') ?
50
+ this.widgetLibrary.registerFrameworkWidgets(framework.widgets) :
51
+ this.widgetLibrary.unRegisterFrameworkWidgets();
52
+ }
53
+ hasFramework(type) {
54
+ return hasOwn(this.frameworkLibrary, type);
55
+ }
56
+ getFramework() {
57
+ if (!this.activeFramework) {
58
+ this.setFramework('default', true);
59
+ }
60
+ return this.activeFramework.framework;
61
+ }
62
+ getFrameworkList() {
63
+ return this.frameworks.map(fw => {
64
+ return { name: fw.name, text: fw.text };
65
+ });
66
+ }
67
+ getFrameworkWidgets() {
68
+ return this.activeFramework.widgets || {};
69
+ }
70
+ getFrameworkStylesheets(load = this.loadExternalAssets) {
71
+ return (load && this.activeFramework.stylesheets) || [];
72
+ }
73
+ getFrameworkScripts(load = this.loadExternalAssets) {
74
+ return (load && this.activeFramework.scripts) || [];
75
+ }
76
+ //applies to CssFramework classes
77
+ getFrameworkConfig(existingFramework) {
78
+ let actFramework = existingFramework || this.activeFramework;
79
+ return actFramework.config;
80
+ }
81
+ //this will load the list of assets to be loaded at runtime in case the dependent framework
82
+ //scripts and styles are include locally with the parent app
83
+ getFrameworkAssetConfig(existingFramework, useAssetRelPath = true) {
84
+ let actFramework = existingFramework || this.activeFramework;
85
+ //TODO move this into config
86
+ const assetConfigPath = `assets/${actFramework.name}/cssframework`;
87
+ const assetConfigURL = `${assetConfigPath}/assets.json`;
88
+ let subs = this.http
89
+ .get(assetConfigURL, { responseType: 'text' });
90
+ //.subscribe(assetConfig => {
91
+ // assetConfig
92
+ //})
93
+ return lastValueFrom(subs).then(assetCfgText => {
94
+ let assetCfg = JSON.parse(assetCfgText);
95
+ if (useAssetRelPath) {
96
+ assetCfg.stylesheets = assetCfg.stylesheets.map(styleLink => {
97
+ //ignore relative path if url starts with known protocol or //
98
+ let nonRelPrefixes = ["/", "//", "http:", "https:"]; //"//" list for completeness
99
+ let isNonRel = false;
100
+ nonRelPrefixes.forEach(prefix => {
101
+ isNonRel = isNonRel || styleLink.indexOf(prefix) == 0;
102
+ });
103
+ if (isNonRel) {
104
+ return styleLink;
105
+ }
106
+ return `${assetConfigPath}/${styleLink}`;
107
+ });
108
+ assetCfg.scripts = assetCfg.scripts.map(scriptLink => {
109
+ return `${assetConfigPath}/${scriptLink}`;
110
+ });
111
+ }
112
+ return assetCfg;
113
+ });
114
+ }
115
+ //applies to CssFramework classes
116
+ getFrameworkThemes() {
117
+ let cssfwConfig = this.getFrameworkConfig();
118
+ let themes;
119
+ if (cssfwConfig) {
120
+ themes = cssfwConfig?.widgetstyles?.__themes__ || [];
121
+ }
122
+ return themes;
123
+ }
124
+ //applies to CssFramework classes
125
+ requestThemeChange(name, validateThemeExists = false, existingFramework) {
126
+ let actFramework = existingFramework || this.activeFramework;
127
+ if (actFramework.requestThemeChange) {
128
+ if (validateThemeExists) {
129
+ let themes = this.getFrameworkThemes();
130
+ let foundThemes = themes.filter(thm => { return thm.name == name; });
131
+ if (!foundThemes || foundThemes.length == 0) {
132
+ return false;
133
+ }
134
+ }
135
+ actFramework.requestThemeChange(name);
136
+ return true;
137
+ }
138
+ }
139
+ //applies to CssFramework classes
140
+ getActiveTheme(existingFramework) {
141
+ let actFramework = existingFramework || this.activeFramework;
142
+ if (actFramework.getActiveTheme) {
143
+ return actFramework.getActiveTheme();
144
+ }
145
+ }
146
+ //applies to CssFramework classes
147
+ registerTheme(newTheme, existingFramework) {
148
+ let actFramework = existingFramework || this.activeFramework;
149
+ if (actFramework.registerTheme) {
150
+ return actFramework.registerTheme(newTheme);
151
+ }
152
+ }
153
+ //applies to CssFramework classes
154
+ unregisterTheme(name, existingFramework) {
155
+ let actFramework = existingFramework || this.activeFramework;
156
+ if (actFramework.registerTheme) {
157
+ return actFramework.unregisterTheme(name);
158
+ }
159
+ }
160
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FrameworkLibraryService, deps: [{ token: Framework }, { token: WidgetLibraryService }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
161
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FrameworkLibraryService, providedIn: 'root' }); }
162
+ }
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FrameworkLibraryService, decorators: [{
164
+ type: Injectable,
165
+ args: [{
166
+ providedIn: 'root',
167
+ }]
168
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
169
+ type: Inject,
170
+ args: [Framework]
171
+ }] }, { type: i2.WidgetLibraryService, decorators: [{
172
+ type: Inject,
173
+ args: [WidgetLibraryService]
174
+ }] }, { type: i1.HttpClient }] });
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLWxpYnJhcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWZvcm13b3Jrcy1jb3JlL3NyYy9saWIvZnJhbWV3b3JrLWxpYnJhcnkvZnJhbWV3b3JrLWxpYnJhcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQUV4Qyw4QkFBOEI7QUFDOUIsa0JBQWtCO0FBQ2xCLHNFQUFzRTtBQUN0RSw2Q0FBNkM7QUFDN0MsaUJBQWlCO0FBQ2pCLGlEQUFpRDtBQUNqRCxpREFBaUQ7QUFLakQsTUFBTSxPQUFPLHVCQUF1QjtJQVlsQyxZQUM2QixVQUFpQixFQUNOLGFBQW1DLEVBQ2pFLElBQWdCO1FBRkcsZUFBVSxHQUFWLFVBQVUsQ0FBTztRQUNOLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQUNqRSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBZDFCLG9CQUFlLEdBQWMsSUFBSSxDQUFDO1FBR2xDLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUUzQixxQkFBZ0IsR0FBa0MsRUFBRSxDQUFDO1FBV25ELElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUNsRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGdCQUFnQixHQUFH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QUFZLENBQUMsYUFBYSxFQUFDLENBQUM7WUFDN0IsT0FBTyxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDOzhHQS9LUSx1QkFBdUIsa0JBYXhCLFNBQVMsYUFDVCxvQkFBb0I7a0hBZG5CLHVCQUF1QixjQUZ0QixNQUFNOzsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFjSSxNQUFNOzJCQUFDLFNBQVM7OzBCQUNoQixNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGhhc093biB9IGZyb20gJy4uL3NoYXJlZC91dGlsaXR5LmZ1bmN0aW9ucyc7XHJcbmltcG9ydCB7IFdpZGdldExpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vd2lkZ2V0LWxpYnJhcnkvd2lkZ2V0LWxpYnJhcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IEZyYW1ld29yayB9IGZyb20gJy4vZnJhbWV3b3JrJztcclxuXHJcbi8vIFBvc3NpYmxlIGZ1dHVyZSBmcmFtZXdvcmtzOlxyXG4vLyAtIEZvdW5kYXRpb24gNjpcclxuLy8gICBodHRwOi8vanVzdGluZGF2aXMuY28vMjAxNy8wNi8xNS91c2luZy1mb3VuZGF0aW9uLTYtaW4tYW5ndWxhci00L1xyXG4vLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS96dXJiL2ZvdW5kYXRpb24tc2l0ZXNcclxuLy8gLSBTZW1hbnRpYyBVSTpcclxuLy8gICBodHRwczovL2dpdGh1Yi5jb20vZWRjYXJyb2xsL25nMi1zZW1hbnRpYy11aVxyXG4vLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS92bGFkb3Rlc2Fub3ZpYy9uZ1NlbWFudGljXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRnJhbWV3b3JrTGlicmFyeVNlcnZpY2Uge1xyXG4gIGFjdGl2ZUZyYW1ld29yazogRnJhbWV3b3JrID0gbnVsbDtcclxuICBzdHlsZXNoZWV0czogKEhUTUxTdHlsZUVsZW1lbnR8SFRNTExpbmtFbGVtZW50KVtdO1xyXG4gIHNjcmlwdHM6IEhUTUxTY3JpcHRFbGVtZW50W107XHJcbiAgbG9hZEV4dGVybmFsQXNzZXRzID0gZmFsc2U7XHJcbiAgZGVmYXVsdEZyYW1ld29yazogc3RyaW5nO1xyXG4gIGZyYW1ld29ya0xpYnJhcnk6IHsgW25hbWU6IHN0cmluZ106IEZyYW1ld29yayB9ID0ge307XHJcblxyXG4gIGFjdGl2ZUZyYW1ld29ya05hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz47XHJcbiAgcHJpdmF0ZSBhY3RpdmVGcmFtZXdvcmtOYW1lU3ViamVjdDogU3ViamVjdDxzdHJpbmc+O1xyXG4gIHByaXZhdGUgYWN0aXZlRnJhbWV3b3JrTmFtZTpzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChGcmFtZXdvcmspIHByaXZhdGUgZnJhbWV3b3JrczogYW55W10sXHJcbiAgICBASW5qZWN0KFdpZGdldExpYnJhcnlTZXJ2aWNlKSBwcml2YXRlIHdpZGdldExpYnJhcnk6IFdpZGdldExpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICkge1xyXG4gICAgdGhpcy5mcmFtZXdvcmtzLmZvckVhY2goZnJhbWV3b3JrID0+XHJcbiAgICAgIHRoaXMuZnJhbWV3b3JrTGlicmFyeVtmcmFtZXdvcmsubmFtZV0gPSBmcmFtZXdvcmtcclxuICAgICk7XHJcbiAgICB0aGlzLmRlZmF1bHRGcmFtZXdvcmsgPSB0aGlzLmZyYW1ld29ya3NbMF0ubmFtZTtcclxuICAgIC8vdGhpcy5zZXRGcmFtZXdvcmsodGhpcy5kZWZhdWx0RnJhbWV3b3JrKTtcclxuICAgIFxyXG4gICAgdGhpcy5hY3RpdmVGcmFtZXdvcmtOYW1lPXRoaXMuZGVmYXVsdEZyYW1ld29yaztcclxuICAgIHRoaXMuYWN0aXZlRnJhbWV3b3JrTmFtZVN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgICB0aGlzLmFjdGl2ZUZyYW1ld29ya05hbWUkID0gdGhpcy5hY3RpdmVGcmFtZXdvcmtOYW1lU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgIHRoaXMuc2V0RnJhbWV3b3JrKHRoaXMuZGVmYXVsdEZyYW1ld29yayk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0TG9hZEV4dGVybmFsQXNzZXRzKGxvYWRFeHRlcm5hbEFzc2V0cyA9IHRydWUpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZEV4dGVybmFsQXNzZXRzID0gISFsb2FkRXh0ZXJuYWxBc3NldHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RnJhbWV3b3JrKFxyXG4gICAgZnJhbWV3b3JrOiBzdHJpbmd8RnJhbWV3b3JrID0gdGhpcy5kZWZhdWx0RnJhbWV3b3JrLFxyXG4gICAgbG9hZEV4dGVybmFsQXNzZXRzID0gdGhpcy5sb2FkRXh0ZXJuYWxBc3NldHNcclxuICApOiBib29sZWFuIHtcclxuICAgIHRoaXMuYWN0aXZlRnJhbWV3b3JrID1cclxuICAgICAgdHlwZW9mIGZyYW1ld29yayA9PT0gJ3N0cmluZycgJiYgdGhpcy5oYXNGcmFtZXdvcmsoZnJhbWV3b3JrKSA/XHJcbiAgICAgICAgdGhpcy5mcmFtZXdvcmtMaWJyYXJ5W2ZyYW1ld29ya10gOlxyXG4gICAgICB0eXBlb2YgZnJhbWV3b3JrID09PSAnb2JqZWN0JyAmJiBoYXNPd24oZnJhbWV3b3JrLCAnZnJhbWV3b3JrJykgP1xyXG4gICAgICAgIGZyYW1ld29yayA6XHJcbiAgICAgICAgdGhpcy5mcmFtZXdvcmtMaWJyYXJ5W3RoaXMuZGVmYXVsdEZyYW1ld29ya107XHJcbiAgICBpZih0aGlzLmFjdGl2ZUZyYW1ld29yay5uYW1lICE9dGhpcy5hY3RpdmVGcmFtZXdvcmtOYW1lKXtcclxuICAgICAgdGhpcy5hY3RpdmVGcmFtZXdvcmtOYW1lPXRoaXMuYWN0aXZlRnJhbWV3b3JrLm5hbWU7XHJcbiAgICAgIHRoaXMuYWN0aXZlRnJhbWV3b3JrTmFtZVN1YmplY3QubmV4dCh0aGlzLmFjdGl2ZUZyYW1ld29ya05hbWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucmVnaXN0ZXJGcmFtZXdvcmtXaWRnZXRzKHRoaXMuYWN0aXZlRnJhbWV3b3JrKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyRnJhbWV3b3JrV2lkZ2V0cyhmcmFtZXdvcms6IEZyYW1ld29yayk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGhhc093bihmcmFtZXdvcmssICd3aWRnZXRzJykgP1xyXG4gICAgICB0aGlzLndpZGdldExpYnJhcnkucmVnaXN0ZXJGcmFtZXdvcmtXaWRnZXRzKGZyYW1ld29yay53aWRnZXRzKSA6XHJcbiAgICAgIHRoaXMud2lkZ2V0TGlicmFyeS51blJlZ2lzdGVyRnJhbWV3b3JrV2lkZ2V0cygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhc0ZyYW1ld29yayh0eXBlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBoYXNPd24odGhpcy5mcmFtZXdvcmtMaWJyYXJ5LCB0eXBlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRGcmFtZXdvcmsoKTogYW55IHtcclxuICAgIGlmICghdGhpcy5hY3RpdmVGcmFtZXdvcmspIHsgdGhpcy5zZXRGcmFtZXdvcmsoJ2RlZmF1bHQnLCB0cnVlKTsgfVxyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRnJhbWV3b3JrLmZyYW1ld29yaztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRGcmFtZXdvcmtMaXN0KCk6e25hbWU6c3RyaW5nLHRleHQ6c3RyaW5nfVtdIHtcclxuICAgIHJldHVybiB0aGlzLmZyYW1ld29ya3MubWFwKGZ3PT57XHJcbiAgICAgIHJldHVybiB7bmFtZTpmdy5uYW1lLHRleHQ6ZncudGV4dH07XHJcbiAgICB9KVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RnJhbWV3b3JrV2lkZ2V0cygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRnJhbWV3b3JrLndpZGdldHMgfHwge307XHJcbiAgfVxyXG5cclxuICBcclxuXHJcbiAgcHVibGljIGdldEZyYW1ld29ya1N0eWxlc2hlZXRzKGxvYWQ6IGJvb2xlYW4gPSB0aGlzLmxvYWRFeHRlcm5hbEFzc2V0cyk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiAobG9hZCAmJiB0aGlzLmFjdGl2ZUZyYW1ld29yay5zdHlsZXNoZWV0cykgfHwgW107XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RnJhbWV3b3JrU2NyaXB0cyhsb2FkOiBib29sZWFuID0gdGhpcy5sb2FkRXh0ZXJuYWxBc3NldHMpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gKGxvYWQgJiYgdGhpcy5hY3RpdmVGcmFtZXdvcmsuc2NyaXB0cykgfHwgW107XHJcbiAgfVxyXG5cclxuICAvL2FwcGxpZXMgdG8gQ3NzRnJhbWV3b3JrIGNsYXNzZXNcclxuICBwdWJsaWMgZ2V0RnJhbWV3b3JrQ29uZmlnKGV4aXN0aW5nRnJhbWV3b3JrPzphbnkpOiBhbnkge1xyXG4gICAgbGV0IGFjdEZyYW1ld29yazpGcmFtZXdvcmsmIHsgW2tleTogc3RyaW5nXTogYW55OyB9PWV4aXN0aW5nRnJhbWV3b3JrfHx0aGlzLmFjdGl2ZUZyYW1ld29yaztcclxuICAgIHJldHVybiBhY3RGcmFtZXdvcmsuY29uZmlnO1xyXG4gIH1cclxuXHJcbiAgLy90aGlzIHdpbGwgbG9hZCB0aGUgbGlzdCBvZiBhc3NldHMgdG8gYmUgbG9hZGVkIGF0IHJ1bnRpbWUgaW4gY2FzZSB0aGUgZGVwZW5kZW50IGZyYW1ld29ya1xyXG4gIC8vc2NyaXB0cyBhbmQgc3R5bGVzIGFyZSBpbmNsdWRlIGxvY2FsbHkgd2l0aCB0aGUgcGFyZW50IGFwcFxyXG4gIHB1YmxpYyBnZXRGcmFtZXdvcmtBc3NldENvbmZpZyhleGlzdGluZ0ZyYW1ld29yaz86YW55LHVzZUFzc2V0UmVsUGF0aD10cnVlKTpQcm9taXNlPHtzdHlsZXNoZWV0czpzdHJpbmdbXSxzY3JpcHRzOnN0cmluZ1tdfT57XHJcbiAgICBsZXQgYWN0RnJhbWV3b3JrOkZyYW1ld29yayYgeyBba2V5OiBzdHJpbmddOiBhbnk7IH09ZXhpc3RpbmdGcmFtZXdvcmt8fHRoaXMuYWN0aXZlRnJhbWV3b3JrO1xyXG4gICAgLy9UT0RPIG1vdmUgdGhpcyBpbnRvIGNvbmZpZ1xyXG4gICAgY29uc3QgYXNzZXRDb25maWdQYXRoID0gYGFzc2V0cy8ke2FjdEZyYW1ld29yay5uYW1lfS9jc3NmcmFtZXdvcmtgXHJcbiAgICBjb25zdCBhc3NldENvbmZpZ1VSTCA9IGAke2Fzc2V0Q29uZmlnUGF0aH0vYXNzZXRzLmpzb25gO1xyXG4gICAgbGV0IHN1YnM9dGhpcy5odHRwXHJcbiAgICAgIC5nZXQoYXNzZXRDb25maWdVUkwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgLy8uc3Vic2NyaWJlKGFzc2V0Q29uZmlnID0+IHtcclxuICAgICAgLy8gIGFzc2V0Q29uZmlnXHJcbiAgICAgIC8vfSlcclxuICAgICAgXHJcbiAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHN1YnMpLnRoZW4oYXNzZXRDZmdUZXh0PT57XHJcbiAgICAgICAgbGV0IGFzc2V0Q2ZnPUpTT04ucGFyc2UoYXNzZXRDZmdUZXh0KTtcclxuICAgICAgICBpZih1c2VBc3NldFJlbFBhdGgpe1xyXG4gICAgICAgICAgYXNzZXRDZmcuc3R5bGVzaGVldHM9YXNzZXRDZmcuc3R5bGVzaGVldHMubWFwKHN0eWxlTGluaz0+e1xyXG4gICAgICAgICAgICAvL2lnbm9yZSByZWxhdGl2ZSBwYXRoIGlmIHVybCBzdGFydHMgd2l0aCBrbm93biBwcm90b2NvbCBvciAvL1xyXG4gICAgICAgICAgICBsZXQgbm9uUmVsUHJlZml4ZXM9W1wiL1wiLFwiLy9cIixcImh0dHA6XCIsXCJodHRwczpcIl07Ly9cIi8vXCIgbGlzdCBmb3IgY29tcGxldGVuZXNzIFxyXG4gICAgICAgICAgICBsZXQgaXNOb25SZWw9ZmFsc2U7XHJcbiAgICAgICAgICAgIG5vblJlbFByZWZpeGVzLmZvckVhY2gocHJlZml4PT57XHJcbiAgICAgICAgICAgICAgaXNOb25SZWw9aXNOb25SZWx8fHN0eWxlTGluay5pbmRleE9mKHByZWZpeCk9PTA7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGlmKGlzTm9uUmVsKXtcclxuICAgICAgICAgICAgICByZXR1cm4gc3R5bGVMaW5rO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBgJHthc3NldENvbmZpZ1BhdGh9LyR7c3R5bGVMaW5rfWA7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgYXNzZXRDZmcuc2NyaXB0cz1hc3NldENmZy5zY3JpcHRzLm1hcChzY3JpcHRMaW5rPT57XHJcbiAgICAgICAgICAgIHJldHVybiBgJHthc3NldENvbmZpZ1BhdGh9LyR7c2NyaXB0TGlua31gO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9ICAgXHJcbiAgICAgICAgcmV0dXJuIGFzc2V0Q2ZnXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9hcHBsaWVzIHRvIENzc0ZyYW1ld29yayBjbGFzc2VzXHJcbiAgcHVibGljIGdldEZyYW1ld29ya1RoZW1lcygpOntuYW1lOnN0cmluZyx0ZXh0OnN0cmluZ31bXSB7XHJcbiAgICBsZXQgY3NzZndDb25maWc9dGhpcy5nZXRGcmFtZXdvcmtDb25maWcoKTtcclxuICAgIGxldCB0aGVtZXM7XHJcbiAgICBpZihjc3Nmd0NvbmZpZyl7XHJcbiAgICAgIHRoZW1lcz1jc3Nmd0NvbmZpZz8ud2lkZ2V0c3R5bGVzPy5fX3RoZW1lc19ffHxbXVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoZW1lc1xyXG4gIH1cclxuXHJcbiAgLy9hcHBsaWVzIHRvIENzc0ZyYW1ld29yayBjbGFzc2VzXHJcbiAgcHVibGljIHJlcXVlc3RUaGVtZUNoYW5nZShuYW1lOnN0cmluZyx2YWxpZGF0ZVRoZW1lRXhpc3RzOmJvb2xlYW49ZmFsc2UsZXhpc3RpbmdGcmFtZXdvcms/OmFueSl7XHJcbiAgICBsZXQgYWN0RnJhbWV3b3JrOkZyYW1ld29yayYgeyBba2V5OiBzdHJpbmddOiBhbnk7IH09ZXhpc3RpbmdGcmFtZXdvcmt8fHRoaXMuYWN0aXZlRnJhbWV3b3JrO1xyXG4gICAgaWYoYWN0RnJhbWV3b3JrLnJlcXVlc3RUaGVtZUNoYW5nZSl7XHJcbiAgICAgIGlmKHZhbGlkYXRlVGhlbWVFeGlzdHMpeyAgXHJcbiAgICAgICAgbGV0IHRoZW1lcz10aGlzLmdldEZyYW1ld29ya1RoZW1lcygpO1xyXG4gICAgICAgIGxldCBmb3VuZFRoZW1lcz10aGVtZXMuZmlsdGVyKHRobT0+e3JldHVybiB0aG0ubmFtZT09bmFtZX0pO1xyXG4gICAgICAgIGlmKCFmb3VuZFRoZW1lc3x8IGZvdW5kVGhlbWVzLmxlbmd0aD09MCl7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGFjdEZyYW1ld29yay5yZXF1ZXN0VGhlbWVDaGFuZ2UobmFtZSk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvL2FwcGxpZXMgdG8gQ3NzRnJhbWV3b3JrIGNsYXNzZXNcclxuICBwdWJsaWMgZ2V0QWN0aXZlVGhlbWUoZXhpc3RpbmdGcmFtZXdvcms/OmFueSk6e25hbWU6c3RyaW5nLHRleHQ6c3RyaW5nfXtcclxuICAgIGxldCBhY3RGcmFtZXdvcms6RnJhbWV3b3JrJiB7IFtrZXk6IHN0cmluZ106IGFueTsgfT1leGlzdGluZ0ZyYW1ld29ya3x8dGhpcy5hY3RpdmVGcmFtZXdvcms7XHJcbiAgICBpZihhY3RGcmFtZXdvcmsuZ2V0QWN0aXZlVGhlbWUpe1xyXG4gICAgICByZXR1cm4gYWN0RnJhbWV3b3JrLmdldEFjdGl2ZVRoZW1lKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL2FwcGxpZXMgdG8gQ3NzRnJhbWV3b3JrIGNsYXNzZXNcclxuICBwdWJsaWMgcmVnaXN0ZXJUaGVtZShuZXdUaGVtZTp7bmFtZTpzdHJpbmcsdGV4dDpzdHJpbmd9LGV4aXN0aW5nRnJhbWV3b3JrPzphbnkpOmJvb2xlYW57XHJcbiAgICBsZXQgYWN0RnJhbWV3b3JrOkZyYW1ld29yayYgeyBba2V5OiBzdHJpbmddOiBhbnk7IH09ZXhpc3RpbmdGcmFtZXdvcmt8fHRoaXMuYWN0aXZlRnJhbWV3b3JrO1xyXG4gICAgaWYoYWN0RnJhbWV3b3JrLnJlZ2lzdGVyVGhlbWUpe1xyXG4gICAgICByZXR1cm4gYWN0RnJhbWV3b3JrLnJlZ2lzdGVyVGhlbWUobmV3VGhlbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgICAvL2FwcGxpZXMgdG8gQ3NzRnJhbWV3b3JrIGNsYXNzZXNcclxuICAgIHB1YmxpYyB1bnJlZ2lzdGVyVGhlbWUobmFtZTpzdHJpbmcsZXhpc3RpbmdGcmFtZXdvcms/OmFueSk6Ym9vbGVhbntcclxuICAgICAgbGV0IGFjdEZyYW1ld29yazpGcmFtZXdvcmsmIHsgW2tleTogc3RyaW5nXTogYW55OyB9PWV4aXN0aW5nRnJhbWV3b3JrfHx0aGlzLmFjdGl2ZUZyYW1ld29yaztcclxuICAgICAgaWYoYWN0RnJhbWV3b3JrLnJlZ2lzdGVyVGhlbWUpe1xyXG4gICAgICAgIHJldHVybiBhY3RGcmFtZXdvcmsudW5yZWdpc3RlclRoZW1lKG5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,15 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class Framework {
4
+ constructor() {
5
+ this.widgets = {};
6
+ this.stylesheets = [];
7
+ this.scripts = [];
8
+ }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: Framework, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
10
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: Framework }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: Framework, decorators: [{
13
+ type: Injectable
14
+ }] });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZm9ybXdvcmtzLWNvcmUvc3JjL2xpYi9mcmFtZXdvcmstbGlicmFyeS9mcmFtZXdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLFNBQVM7SUFEdEI7UUFLRSxZQUFPLEdBQTRCLEVBQUUsQ0FBQztRQUN0QyxnQkFBVyxHQUFjLEVBQUUsQ0FBQztRQUM1QixZQUFPLEdBQWMsRUFBRSxDQUFDO0tBQ3pCOzhHQVBZLFNBQVM7a0hBQVQsU0FBUzs7MkZBQVQsU0FBUztrQkFEckIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEZyYW1ld29yayB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRleHQ6c3RyaW5nO1xyXG4gIGZyYW1ld29yazogYW55O1xyXG4gIHdpZGdldHM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgc3R5bGVzaGVldHM/OiBzdHJpbmdbXSA9IFtdO1xyXG4gIHNjcmlwdHM/OiBzdHJpbmdbXSA9IFtdO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../widget-library/select-widget.component";
4
+ export class NoFrameworkComponent {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NoFrameworkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: NoFrameworkComponent, selector: "no-framework", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<select-widget-widget [dataIndex]=\"dataIndex\" [layoutIndex]=\"layoutIndex\" [layoutNode]=\"layoutNode\">\r\n</select-widget-widget>", dependencies: [{ kind: "component", type: i1.SelectWidgetComponent, selector: "select-widget-widget", inputs: ["layoutNode", "layoutIndex", "dataIndex"] }] }); }
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NoFrameworkComponent, decorators: [{
9
+ type: Component,
10
+ args: [{ selector: 'no-framework', template: "<select-widget-widget [dataIndex]=\"dataIndex\" [layoutIndex]=\"layoutIndex\" [layoutNode]=\"layoutNode\">\r\n</select-widget-widget>" }]
11
+ }], propDecorators: { layoutNode: [{
12
+ type: Input
13
+ }], layoutIndex: [{
14
+ type: Input
15
+ }], dataIndex: [{
16
+ type: Input
17
+ }] } });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tZnJhbWV3b3JrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWZvcm13b3Jrcy1jb3JlL3NyYy9saWIvZnJhbWV3b3JrLWxpYnJhcnkvbm8tZnJhbWV3b3JrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWZvcm13b3Jrcy1jb3JlL3NyYy9saWIvZnJhbWV3b3JrLWxpYnJhcnkvbm8tZnJhbWV3b3JrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNakQsTUFBTSxPQUFPLG9CQUFvQjs4R0FBcEIsb0JBQW9CO2tHQUFwQixvQkFBb0IsOElDTmpDLHVJQUN1Qjs7MkZES1Ysb0JBQW9CO2tCQUpoQyxTQUFTOytCQUNFLGNBQWM7OEJBSWYsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25vLWZyYW1ld29yaycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25vLWZyYW1ld29yay5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOb0ZyYW1ld29ya0NvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgbGF5b3V0Tm9kZTogYW55O1xyXG4gIEBJbnB1dCgpIGxheW91dEluZGV4OiBudW1iZXJbXTtcclxuICBASW5wdXQoKSBkYXRhSW5kZXg6IG51bWJlcltdO1xyXG59XHJcbiIsIjxzZWxlY3Qtd2lkZ2V0LXdpZGdldCBbZGF0YUluZGV4XT1cImRhdGFJbmRleFwiIFtsYXlvdXRJbmRleF09XCJsYXlvdXRJbmRleFwiIFtsYXlvdXROb2RlXT1cImxheW91dE5vZGVcIj5cclxuPC9zZWxlY3Qtd2lkZ2V0LXdpZGdldD4iXX0=
@@ -0,0 +1,27 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Framework } from './framework';
3
+ import { NgModule } from '@angular/core';
4
+ import { NoFramework } from './no.framework';
5
+ import { NoFrameworkComponent } from './no-framework.component';
6
+ import { WidgetLibraryModule } from '../widget-library/widget-library.module';
7
+ import * as i0 from "@angular/core";
8
+ // No framework - plain HTML controls (styles from form layout only)
9
+ export class NoFrameworkModule {
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NoFrameworkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: NoFrameworkModule, declarations: [NoFrameworkComponent], imports: [CommonModule, WidgetLibraryModule], exports: [NoFrameworkComponent] }); }
12
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NoFrameworkModule, providers: [
13
+ { provide: Framework, useClass: NoFramework, multi: true }
14
+ ], imports: [CommonModule, WidgetLibraryModule] }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NoFrameworkModule, decorators: [{
17
+ type: NgModule,
18
+ args: [{
19
+ imports: [CommonModule, WidgetLibraryModule],
20
+ declarations: [NoFrameworkComponent],
21
+ exports: [NoFrameworkComponent],
22
+ providers: [
23
+ { provide: Framework, useClass: NoFramework, multi: true }
24
+ ]
25
+ }]
26
+ }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tZnJhbWV3b3JrLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWZvcm13b3Jrcy1jb3JlL3NyYy9saWIvZnJhbWV3b3JrLWxpYnJhcnkvbm8tZnJhbWV3b3JrLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7QUFFOUUsb0VBQW9FO0FBVXBFLE1BQU0sT0FBTyxpQkFBaUI7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQU5YLG9CQUFvQixhQUR6QixZQUFZLEVBQUUsbUJBQW1CLGFBRWpDLG9CQUFvQjsrR0FLckIsaUJBQWlCLGFBSmY7WUFDUCxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1NBQzdELFlBTFMsWUFBWSxFQUFFLG1CQUFtQjs7MkZBT2xDLGlCQUFpQjtrQkFSN0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLENBQUM7b0JBQzVDLFlBQVksRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUNwQyxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDL0IsU0FBUyxFQUFFO3dCQUNQLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7cUJBQzdEO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRnJhbWV3b3JrIH0gZnJvbSAnLi9mcmFtZXdvcmsnO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOb0ZyYW1ld29yayB9IGZyb20gJy4vbm8uZnJhbWV3b3JrJztcclxuaW1wb3J0IHsgTm9GcmFtZXdvcmtDb21wb25lbnQgfSBmcm9tICcuL25vLWZyYW1ld29yay5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXaWRnZXRMaWJyYXJ5TW9kdWxlIH0gZnJvbSAnLi4vd2lkZ2V0LWxpYnJhcnkvd2lkZ2V0LWxpYnJhcnkubW9kdWxlJztcclxuXHJcbi8vIE5vIGZyYW1ld29yayAtIHBsYWluIEhUTUwgY29udHJvbHMgKHN0eWxlcyBmcm9tIGZvcm0gbGF5b3V0IG9ubHkpXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgV2lkZ2V0TGlicmFyeU1vZHVsZV0sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFtOb0ZyYW1ld29ya0NvbXBvbmVudF0sXHJcbiAgICBleHBvcnRzOiBbTm9GcmFtZXdvcmtDb21wb25lbnRdLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBGcmFtZXdvcmssIHVzZUNsYXNzOiBOb0ZyYW1ld29yaywgbXVsdGk6IHRydWUgfVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTm9GcmFtZXdvcmtNb2R1bGUgeyB9XHJcbiJdfQ==
@@ -0,0 +1,19 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Framework } from './framework';
3
+ import { NoFrameworkComponent } from './no-framework.component';
4
+ import * as i0 from "@angular/core";
5
+ // No framework - plain HTML controls (styles from form layout only)
6
+ export class NoFramework extends Framework {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.name = 'no-framework';
10
+ this.text = 'None (plain HTML)';
11
+ this.framework = NoFrameworkComponent;
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NoFramework, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
14
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NoFramework }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: NoFramework, decorators: [{
17
+ type: Injectable
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8uZnJhbWV3b3JrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZm9ybXdvcmtzLWNvcmUvc3JjL2xpYi9mcmFtZXdvcmstbGlicmFyeS9uby5mcmFtZXdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUNoRSxvRUFBb0U7QUFHcEUsTUFBTSxPQUFPLFdBQVksU0FBUSxTQUFTO0lBRDFDOztRQUVFLFNBQUksR0FBRyxjQUFjLENBQUM7UUFDdEIsU0FBSSxHQUFFLG1CQUFtQixDQUFDO1FBQzFCLGNBQVMsR0FBRyxvQkFBb0IsQ0FBQztLQUNsQzs4R0FKWSxXQUFXO2tIQUFYLFdBQVc7OzJGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZyYW1ld29yayB9IGZyb20gJy4vZnJhbWV3b3JrJztcclxuaW1wb3J0IHsgTm9GcmFtZXdvcmtDb21wb25lbnQgfSBmcm9tICcuL25vLWZyYW1ld29yay5jb21wb25lbnQnO1xyXG4vLyBObyBmcmFtZXdvcmsgLSBwbGFpbiBIVE1MIGNvbnRyb2xzIChzdHlsZXMgZnJvbSBmb3JtIGxheW91dCBvbmx5KVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTm9GcmFtZXdvcmsgZXh0ZW5kcyBGcmFtZXdvcmsge1xyXG4gIG5hbWUgPSAnbm8tZnJhbWV3b3JrJztcclxuICB0ZXh0ID0nTm9uZSAocGxhaW4gSFRNTCknO1xyXG4gIGZyYW1ld29yayA9IE5vRnJhbWV3b3JrQ29tcG9uZW50O1xyXG59XHJcbiJdfQ==