@ihk-gfi/lux-components-update 13.2.0 → 14.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.
- package/README.md +2 -2
- package/package.json +10 -8
- package/src/add-lux-components/files/app/app-routing.module.ts +2 -0
- package/src/add-lux-components/files/app/app.component.html +7 -2
- package/src/add-lux-components/files/app/app.component.ts +9 -1
- package/src/add-lux-components/files/app/app.module.ts +6 -1
- package/src/add-lux-components/files/app/base/license-hint/license-hint.component.html +7 -0
- package/src/add-lux-components/files/app/base/license-hint/license-hint.component.ts +18 -0
- package/src/add-lux-components/files/app/home/home.component.scss +3 -0
- package/src/add-lux-components/files/assets/svg/Example.svg +6 -0
- package/src/add-lux-components/files/assets/svg/android.svg +2 -0
- package/src/add-lux-components/files/assets/svg/box.svg +690 -0
- package/src/add-lux-components/files/assets/svg/demoAppLogo.svg +1 -0
- package/src/add-lux-components/files/assets/svg/red_power_button.svg +67 -0
- package/src/add-lux-components/files/assets/svg/svg2009.svg +57457 -0
- package/src/add-lux-components/files/environments/environment.ts +2 -2
- package/src/add-lux-components/files/locale/messages.en.xlf +544 -373
- package/src/add-lux-components/files/locale/messages.xlf +517 -352
- package/src/add-lux-components/files/src/polyfills.ts +29 -39
- package/src/add-lux-components/index.d.ts +1 -1
- package/src/add-lux-components/index.js +47 -26
- package/src/add-lux-components/index.js.map +1 -1
- package/src/add-lux-components/index.ts +50 -31
- package/src/add-lux-components/index_spec.js +3 -3
- package/src/add-lux-components/index_spec.ts +1 -1
- package/src/collection.json +13 -14
- package/src/theme/change-theme-to-authentic/index.d.ts +4 -0
- package/src/theme/change-theme-to-authentic/index.js +129 -0
- package/src/theme/change-theme-to-authentic/index.js.map +1 -0
- package/src/theme/change-theme-to-authentic/index.ts +131 -0
- package/src/{updates/update130000 → theme/change-theme-to-authentic}/index_spec.d.ts +0 -0
- package/src/theme/change-theme-to-authentic/index_spec.js +300 -0
- package/src/theme/change-theme-to-authentic/index_spec.js.map +1 -0
- package/src/theme/change-theme-to-authentic/index_spec.ts +321 -0
- package/src/{updates/update130100 → theme/change-theme-to-authentic}/schema.json +3 -3
- package/src/theme/change-to-lux-icons/index.d.ts +7 -0
- package/src/theme/change-to-lux-icons/index.js +395 -0
- package/src/theme/change-to-lux-icons/index.js.map +1 -0
- package/src/theme/change-to-lux-icons/index.ts +406 -0
- package/src/{updates/update130100 → theme/change-to-lux-icons}/index_spec.d.ts +0 -0
- package/src/theme/change-to-lux-icons/index_spec.js +214 -0
- package/src/theme/change-to-lux-icons/index_spec.js.map +1 -0
- package/src/theme/change-to-lux-icons/index_spec.ts +220 -0
- package/src/{updates/update130200 → theme/change-to-lux-icons}/schema.json +3 -3
- package/src/update-dependencies/index.d.ts +0 -3
- package/src/update-dependencies/index.js +68 -116
- package/src/update-dependencies/index.js.map +1 -1
- package/src/update-dependencies/index.ts +73 -122
- package/src/update-en-messages/index.js +18 -15
- package/src/update-en-messages/index.js.map +1 -1
- package/src/update-en-messages/index.ts +22 -16
- package/src/updates/update140000/files/src/polyfills.ts +70 -0
- package/src/updates/update140000/index.d.ts +8 -0
- package/src/updates/update140000/index.js +83 -0
- package/src/updates/update140000/index.js.map +1 -0
- package/src/updates/update140000/index.ts +97 -0
- package/src/updates/{update130200 → update140000}/index_spec.d.ts +0 -0
- package/src/updates/update140000/index_spec.js +77 -0
- package/src/updates/update140000/index_spec.js.map +1 -0
- package/src/updates/update140000/index_spec.ts +79 -0
- package/src/updates/{update130000 → update140000}/schema.json +0 -0
- package/src/utility/files.d.ts +2 -2
- package/src/utility/files.js +5 -5
- package/src/utility/files.js.map +1 -1
- package/src/utility/files.ts +5 -5
- package/src/utility/html/hit.d.ts +21 -0
- package/src/utility/html/hit.js +27 -0
- package/src/utility/html/hit.js.map +1 -0
- package/src/utility/html/hit.ts +28 -0
- package/src/utility/html/html-manipulator.d.ts +71 -0
- package/src/utility/html/html-manipulator.js +136 -0
- package/src/utility/html/html-manipulator.js.map +1 -0
- package/src/utility/html/html-manipulator.ts +156 -0
- package/src/utility/{html_spec.d.ts → html/html_spec.d.ts} +0 -0
- package/src/utility/{html_spec.js → html/html_spec.js} +232 -100
- package/src/utility/html/html_spec.js.map +1 -0
- package/src/utility/{html_spec.ts → html/html_spec.ts} +282 -106
- package/src/utility/html/manipulator-functions.d.ts +99 -0
- package/src/utility/html/manipulator-functions.js +147 -0
- package/src/utility/html/manipulator-functions.js.map +1 -0
- package/src/utility/html/manipulator-functions.ts +149 -0
- package/src/utility/json.d.ts +2 -2
- package/src/utility/json.js +11 -7
- package/src/utility/json.js.map +1 -1
- package/src/utility/json.ts +42 -26
- package/src/utility/json_spec.js +18 -18
- package/src/utility/json_spec.js.map +1 -1
- package/src/utility/json_spec.ts +136 -66
- package/src/utility/typescript.d.ts +3 -3
- package/src/utility/typescript.js +2 -2
- package/src/utility/typescript.js.map +1 -1
- package/src/utility/typescript.ts +3 -3
- package/src/utility/typescript_spec.js +0 -1
- package/src/utility/typescript_spec.js.map +1 -1
- package/src/utility/typescript_spec.ts +0 -2
- package/src/utility/util.d.ts +7 -6
- package/src/utility/util.js +12 -8
- package/src/utility/util.js.map +1 -1
- package/src/utility/util.ts +13 -10
- package/src/utility/validation.d.ts +2 -3
- package/src/utility/validation.js +2 -3
- package/src/utility/validation.js.map +1 -1
- package/src/utility/validation.ts +2 -3
- package/tsconfig.json +5 -7
- package/src/add-lux-components/files/scripts/.browserslistrc +0 -20
- package/src/updates/update130000/files/root/.browserslistrc +0 -20
- package/src/updates/update130000/index.d.ts +0 -27
- package/src/updates/update130000/index.js +0 -310
- package/src/updates/update130000/index.js.map +0 -1
- package/src/updates/update130000/index.ts +0 -362
- package/src/updates/update130000/index_spec.js +0 -584
- package/src/updates/update130000/index_spec.js.map +0 -1
- package/src/updates/update130000/index_spec.ts +0 -675
- package/src/updates/update130100/index.d.ts +0 -2
- package/src/updates/update130100/index.js +0 -27
- package/src/updates/update130100/index.js.map +0 -1
- package/src/updates/update130100/index.ts +0 -27
- package/src/updates/update130100/index_spec.js +0 -65
- package/src/updates/update130100/index_spec.js.map +0 -1
- package/src/updates/update130100/index_spec.ts +0 -69
- package/src/updates/update130200/index.d.ts +0 -2
- package/src/updates/update130200/index.js +0 -43
- package/src/updates/update130200/index.js.map +0 -1
- package/src/updates/update130200/index.ts +0 -41
- package/src/updates/update130200/index_spec.js +0 -106
- package/src/updates/update130200/index_spec.js.map +0 -1
- package/src/updates/update130200/index_spec.ts +0 -110
- package/src/utility/html.d.ts +0 -49
- package/src/utility/html.js +0 -246
- package/src/utility/html.js.map +0 -1
- package/src/utility/html.ts +0 -288
- package/src/utility/html_spec.js.map +0 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.changeToAcComponents = exports.setAcThemeToAppComponent = exports.changeToThemeAuthentic = void 0;
|
|
4
|
+
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
|
+
const files_1 = require("../../utility/files");
|
|
6
|
+
const html_manipulator_1 = require("../../utility/html/html-manipulator");
|
|
7
|
+
const manipulator_functions_1 = require("../../utility/html/manipulator-functions");
|
|
8
|
+
const logging_1 = require("../../utility/logging");
|
|
9
|
+
const util_1 = require("../../utility/util");
|
|
10
|
+
const index_1 = require("../change-to-lux-icons/index");
|
|
11
|
+
function changeToThemeAuthentic(options) {
|
|
12
|
+
return (_tree, _context) => {
|
|
13
|
+
return (0, schematics_1.chain)([
|
|
14
|
+
(0, util_1.messageInfoRule)(`Das Authentic-Theme wird eingerichtet...`),
|
|
15
|
+
setAcThemeToAppComponent(options),
|
|
16
|
+
changeToAcComponents(options),
|
|
17
|
+
(0, index_1.changeToLuxIcons)(options),
|
|
18
|
+
(0, util_1.messageSuccessRule)(`Das Authentic-Theme wurde eingerichtet.`)
|
|
19
|
+
]);
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
exports.changeToThemeAuthentic = changeToThemeAuthentic;
|
|
23
|
+
function setAcThemeToAppComponent(options) {
|
|
24
|
+
return (0, schematics_1.chain)([
|
|
25
|
+
(0, util_1.messageInfoRule)(`Das Authentic-Theme wird in der app.component.ts gesetzt...`),
|
|
26
|
+
(tree, _context) => {
|
|
27
|
+
var _a;
|
|
28
|
+
const themeName = 'authentic';
|
|
29
|
+
const filePath = ((_a = options.path) !== null && _a !== void 0 ? _a : '.') + '/src/app/app.component.ts';
|
|
30
|
+
if (tree.exists(filePath)) {
|
|
31
|
+
const content = tree.read(filePath).toString();
|
|
32
|
+
let result = content;
|
|
33
|
+
const setThemeRegEx = new RegExp("(\\w*\\.setTheme\\(['|\"'])(.*?)(['|\"']\\);)");
|
|
34
|
+
const loadThemeRegEx = new RegExp('(\\w*\\.loadTheme\\(.*?\\);)');
|
|
35
|
+
if (setThemeRegEx.test(content)) {
|
|
36
|
+
const groups = setThemeRegEx.exec(content);
|
|
37
|
+
if (groups && groups.length > 0) {
|
|
38
|
+
result = result.replace(setThemeRegEx, `$1${themeName}$3`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else if (loadThemeRegEx.test(content)) {
|
|
42
|
+
const groups = loadThemeRegEx.exec(content);
|
|
43
|
+
if (groups && groups.length > 0) {
|
|
44
|
+
result = result.replace(loadThemeRegEx, `themeService.setTheme('${themeName}');\n $1`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (content !== result) {
|
|
48
|
+
(0, logging_1.logInfo)(`Konstruktor angepasst -> themeService.setTheme('${themeName}');`);
|
|
49
|
+
tree.overwrite(filePath, result);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
(0, logging_1.logError)('Das Theme konnte nicht in der app.component.ts gesetzt werden. Bitte manuell setzen.');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
(0, logging_1.logError)(`Der Dateipfad "${filePath}" existiert nicht.`);
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
(0, util_1.messageSuccessRule)(`Das Theme wurde in der app.component.ts gesetzt.`)
|
|
60
|
+
]);
|
|
61
|
+
}
|
|
62
|
+
exports.setAcThemeToAppComponent = setAcThemeToAppComponent;
|
|
63
|
+
function changeToAcComponents(options) {
|
|
64
|
+
return (0, schematics_1.chain)([
|
|
65
|
+
(0, util_1.messageInfoRule)(`Die Standardkomponenten werden durch die AC-Komponenten ersetzt...`),
|
|
66
|
+
(tree, _context) => {
|
|
67
|
+
(0, files_1.iterateFilesAndModifyContent)(tree, options.path, (filePath, content) => {
|
|
68
|
+
let result = content;
|
|
69
|
+
luxComponents.forEach((luxComponent) => {
|
|
70
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, luxComponent.tag, (0, manipulator_functions_1.renameElementFn)(luxComponent.acTag));
|
|
71
|
+
});
|
|
72
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-side-nav-header', manipulator_functions_1.removeElementFn);
|
|
73
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-side-nav-footer', manipulator_functions_1.removeElementFn);
|
|
74
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-app-header-ac-nav-menu', (0, manipulator_functions_1.removeAttrFn)('luxSideNavExpandedChange'));
|
|
75
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-app-header-ac-nav-menu', (0, manipulator_functions_1.removeAttrFn)('luxOpenLinkBlank'));
|
|
76
|
+
if (content !== result) {
|
|
77
|
+
(0, logging_1.logInfo)(filePath + ' wurde angepasst.');
|
|
78
|
+
tree.overwrite(filePath, result);
|
|
79
|
+
}
|
|
80
|
+
}, '.component.html');
|
|
81
|
+
},
|
|
82
|
+
(0, util_1.messageSuccessRule)(`Die Standardkomponenten wurden durch die AC-Komponenten ersetzt.`)
|
|
83
|
+
]);
|
|
84
|
+
}
|
|
85
|
+
exports.changeToAcComponents = changeToAcComponents;
|
|
86
|
+
class LuxComponent {
|
|
87
|
+
constructor(tag, acTag) {
|
|
88
|
+
this.tag = tag;
|
|
89
|
+
this.acTag = acTag;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
const luxComponents = [
|
|
93
|
+
new LuxComponent('lux-master-detail', 'lux-master-detail-ac'),
|
|
94
|
+
new LuxComponent('lux-detail-view', 'lux-detail-view-ac'),
|
|
95
|
+
new LuxComponent('lux-detail-wrapper', 'lux-detail-wrapper-ac'),
|
|
96
|
+
new LuxComponent('lux-detail-header', 'lux-detail-header-ac'),
|
|
97
|
+
new LuxComponent('lux-master-header', 'lux-master-header-ac'),
|
|
98
|
+
new LuxComponent('lux-master-header-content', 'lux-master-header-content-ac'),
|
|
99
|
+
new LuxComponent('lux-master-footer', 'lux-master-footer-ac'),
|
|
100
|
+
new LuxComponent('lux-master-simple', 'lux-master-list-ac'),
|
|
101
|
+
new LuxComponent('lux-app-header', 'lux-app-header-ac'),
|
|
102
|
+
new LuxComponent('lux-app-header-action-nav-item', 'lux-app-header-ac-action-nav-item'),
|
|
103
|
+
new LuxComponent('lux-app-header-action-nav-item-custom', 'lux-app-header-ac-action-nav-item-custom'),
|
|
104
|
+
new LuxComponent('lux-app-header-action-nav', 'lux-app-header-ac-action-nav'),
|
|
105
|
+
new LuxComponent('lux-app-header-nav-menu-item', 'lux-app-header-ac-nav-menu-item'),
|
|
106
|
+
new LuxComponent('lux-app-header-right-nav', 'lux-app-header-ac-user-menu'),
|
|
107
|
+
new LuxComponent('lux-side-nav', 'lux-app-header-ac-nav-menu'),
|
|
108
|
+
new LuxComponent('lux-side-nav-item', 'lux-app-header-ac-nav-menu-item'),
|
|
109
|
+
new LuxComponent('lux-tile', 'lux-tile-ac'),
|
|
110
|
+
new LuxComponent('lux-autocomplete', 'lux-autocomplete-ac'),
|
|
111
|
+
new LuxComponent('lux-checkbox', 'lux-checkbox-ac'),
|
|
112
|
+
new LuxComponent('lux-chips', 'lux-chips-ac'),
|
|
113
|
+
new LuxComponent('lux-chip', 'lux-chip-ac'),
|
|
114
|
+
new LuxComponent('lux-chip-group', 'lux-chip-ac-group'),
|
|
115
|
+
new LuxComponent('lux-datepicker', 'lux-datepicker-ac'),
|
|
116
|
+
new LuxComponent('lux-datetimepicker', 'lux-datetimepicker-ac'),
|
|
117
|
+
new LuxComponent('lux-radio', 'lux-radio-ac'),
|
|
118
|
+
new LuxComponent('lux-select', 'lux-select-ac'),
|
|
119
|
+
new LuxComponent('lux-slider', 'lux-slider-ac'),
|
|
120
|
+
new LuxComponent('lux-toggle', 'lux-toggle-ac'),
|
|
121
|
+
new LuxComponent('lux-textarea', 'lux-textarea-ac'),
|
|
122
|
+
new LuxComponent('lux-file-input', 'lux-file-input-ac'),
|
|
123
|
+
new LuxComponent('lux-input', 'lux-input-ac'),
|
|
124
|
+
new LuxComponent('lux-input-prefix', 'lux-input-ac-prefix'),
|
|
125
|
+
new LuxComponent('lux-input-suffix', 'lux-input-ac-suffix'),
|
|
126
|
+
new LuxComponent('lux-lookup-combobox', 'lux-lookup-combobox-ac'),
|
|
127
|
+
new LuxComponent('lux-lookup-autocomplete', 'lux-lookup-autocomplete-ac')
|
|
128
|
+
];
|
|
129
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { chain, Rule, SchematicContext, Tree } from '@angular-devkit/schematics';
|
|
2
|
+
import { iterateFilesAndModifyContent } from '../../utility/files';
|
|
3
|
+
import { HtmlManipulator as Html } from '../../utility/html/html-manipulator';
|
|
4
|
+
import { removeAttrFn, removeElementFn, renameElementFn } from '../../utility/html/manipulator-functions';
|
|
5
|
+
import { logError, logInfo } from '../../utility/logging';
|
|
6
|
+
import { messageInfoRule, messageSuccessRule } from '../../utility/util';
|
|
7
|
+
import { changeToLuxIcons } from '../change-to-lux-icons/index';
|
|
8
|
+
|
|
9
|
+
export function changeToThemeAuthentic(options: any): Rule {
|
|
10
|
+
return (_tree: Tree, _context: SchematicContext) => {
|
|
11
|
+
return chain([
|
|
12
|
+
messageInfoRule(`Das Authentic-Theme wird eingerichtet...`),
|
|
13
|
+
setAcThemeToAppComponent(options),
|
|
14
|
+
changeToAcComponents(options),
|
|
15
|
+
changeToLuxIcons(options),
|
|
16
|
+
messageSuccessRule(`Das Authentic-Theme wurde eingerichtet.`)
|
|
17
|
+
]);
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function setAcThemeToAppComponent(options: any): Rule {
|
|
22
|
+
return chain([
|
|
23
|
+
messageInfoRule(`Das Authentic-Theme wird in der app.component.ts gesetzt...`),
|
|
24
|
+
(tree: Tree, _context: SchematicContext) => {
|
|
25
|
+
const themeName = 'authentic';
|
|
26
|
+
const filePath = (options.path ?? '.') + '/src/app/app.component.ts';
|
|
27
|
+
if (tree.exists(filePath)) {
|
|
28
|
+
const content = tree.read(filePath)!.toString();
|
|
29
|
+
let result = content;
|
|
30
|
+
|
|
31
|
+
const setThemeRegEx = new RegExp("(\\w*\\.setTheme\\(['|\"'])(.*?)(['|\"']\\);)");
|
|
32
|
+
const loadThemeRegEx = new RegExp('(\\w*\\.loadTheme\\(.*?\\);)');
|
|
33
|
+
|
|
34
|
+
if (setThemeRegEx.test(content)) {
|
|
35
|
+
const groups = setThemeRegEx.exec(content);
|
|
36
|
+
if (groups && groups.length > 0) {
|
|
37
|
+
result = result.replace(setThemeRegEx, `$1${themeName}$3`);
|
|
38
|
+
}
|
|
39
|
+
} else if (loadThemeRegEx.test(content)) {
|
|
40
|
+
const groups = loadThemeRegEx.exec(content);
|
|
41
|
+
if (groups && groups.length > 0) {
|
|
42
|
+
result = result.replace(loadThemeRegEx, `themeService.setTheme('${themeName}');\n $1`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (content !== result) {
|
|
47
|
+
logInfo(`Konstruktor angepasst -> themeService.setTheme('${themeName}');`);
|
|
48
|
+
tree.overwrite(filePath, result);
|
|
49
|
+
} else {
|
|
50
|
+
logError('Das Theme konnte nicht in der app.component.ts gesetzt werden. Bitte manuell setzen.');
|
|
51
|
+
}
|
|
52
|
+
} else {
|
|
53
|
+
logError(`Der Dateipfad "${filePath}" existiert nicht.`);
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
messageSuccessRule(`Das Theme wurde in der app.component.ts gesetzt.`)
|
|
57
|
+
]);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function changeToAcComponents(options: any): Rule {
|
|
61
|
+
return chain([
|
|
62
|
+
messageInfoRule(`Die Standardkomponenten werden durch die AC-Komponenten ersetzt...`),
|
|
63
|
+
(tree: Tree, _context: SchematicContext) => {
|
|
64
|
+
iterateFilesAndModifyContent(
|
|
65
|
+
tree,
|
|
66
|
+
options.path,
|
|
67
|
+
(filePath: string, content: string) => {
|
|
68
|
+
let result = content;
|
|
69
|
+
|
|
70
|
+
luxComponents.forEach((luxComponent) => {
|
|
71
|
+
result = Html.transform(result, luxComponent.tag, renameElementFn(luxComponent.acTag));
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
result = Html.transform(result, 'lux-side-nav-header', removeElementFn);
|
|
75
|
+
result = Html.transform(result, 'lux-side-nav-footer', removeElementFn);
|
|
76
|
+
result = Html.transform(result, 'lux-app-header-ac-nav-menu', removeAttrFn('luxSideNavExpandedChange'));
|
|
77
|
+
result = Html.transform(result, 'lux-app-header-ac-nav-menu', removeAttrFn('luxOpenLinkBlank'));
|
|
78
|
+
|
|
79
|
+
if (content !== result) {
|
|
80
|
+
logInfo(filePath + ' wurde angepasst.');
|
|
81
|
+
tree.overwrite(filePath, result);
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
'.component.html'
|
|
85
|
+
);
|
|
86
|
+
},
|
|
87
|
+
messageSuccessRule(`Die Standardkomponenten wurden durch die AC-Komponenten ersetzt.`)
|
|
88
|
+
]);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
class LuxComponent {
|
|
92
|
+
constructor(public tag: string, public acTag: string) {}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const luxComponents: LuxComponent[] = [
|
|
96
|
+
new LuxComponent('lux-master-detail', 'lux-master-detail-ac'),
|
|
97
|
+
new LuxComponent('lux-detail-view', 'lux-detail-view-ac'),
|
|
98
|
+
new LuxComponent('lux-detail-wrapper', 'lux-detail-wrapper-ac'),
|
|
99
|
+
new LuxComponent('lux-detail-header', 'lux-detail-header-ac'),
|
|
100
|
+
new LuxComponent('lux-master-header', 'lux-master-header-ac'),
|
|
101
|
+
new LuxComponent('lux-master-header-content', 'lux-master-header-content-ac'),
|
|
102
|
+
new LuxComponent('lux-master-footer', 'lux-master-footer-ac'),
|
|
103
|
+
new LuxComponent('lux-master-simple', 'lux-master-list-ac'),
|
|
104
|
+
new LuxComponent('lux-app-header', 'lux-app-header-ac'),
|
|
105
|
+
new LuxComponent('lux-app-header-action-nav-item', 'lux-app-header-ac-action-nav-item'),
|
|
106
|
+
new LuxComponent('lux-app-header-action-nav-item-custom', 'lux-app-header-ac-action-nav-item-custom'),
|
|
107
|
+
new LuxComponent('lux-app-header-action-nav', 'lux-app-header-ac-action-nav'),
|
|
108
|
+
new LuxComponent('lux-app-header-nav-menu-item', 'lux-app-header-ac-nav-menu-item'),
|
|
109
|
+
new LuxComponent('lux-app-header-right-nav', 'lux-app-header-ac-user-menu'),
|
|
110
|
+
new LuxComponent('lux-side-nav', 'lux-app-header-ac-nav-menu'),
|
|
111
|
+
new LuxComponent('lux-side-nav-item', 'lux-app-header-ac-nav-menu-item'),
|
|
112
|
+
new LuxComponent('lux-tile', 'lux-tile-ac'),
|
|
113
|
+
new LuxComponent('lux-autocomplete', 'lux-autocomplete-ac'),
|
|
114
|
+
new LuxComponent('lux-checkbox', 'lux-checkbox-ac'),
|
|
115
|
+
new LuxComponent('lux-chips', 'lux-chips-ac'),
|
|
116
|
+
new LuxComponent('lux-chip', 'lux-chip-ac'),
|
|
117
|
+
new LuxComponent('lux-chip-group', 'lux-chip-ac-group'),
|
|
118
|
+
new LuxComponent('lux-datepicker', 'lux-datepicker-ac'),
|
|
119
|
+
new LuxComponent('lux-datetimepicker', 'lux-datetimepicker-ac'),
|
|
120
|
+
new LuxComponent('lux-radio', 'lux-radio-ac'),
|
|
121
|
+
new LuxComponent('lux-select', 'lux-select-ac'),
|
|
122
|
+
new LuxComponent('lux-slider', 'lux-slider-ac'),
|
|
123
|
+
new LuxComponent('lux-toggle', 'lux-toggle-ac'),
|
|
124
|
+
new LuxComponent('lux-textarea', 'lux-textarea-ac'),
|
|
125
|
+
new LuxComponent('lux-file-input', 'lux-file-input-ac'),
|
|
126
|
+
new LuxComponent('lux-input', 'lux-input-ac'),
|
|
127
|
+
new LuxComponent('lux-input-prefix', 'lux-input-ac-prefix'),
|
|
128
|
+
new LuxComponent('lux-input-suffix', 'lux-input-ac-suffix'),
|
|
129
|
+
new LuxComponent('lux-lookup-combobox', 'lux-lookup-combobox-ac'),
|
|
130
|
+
new LuxComponent('lux-lookup-autocomplete', 'lux-lookup-autocomplete-ac')
|
|
131
|
+
];
|
|
File without changes
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const schematics_1 = require("@angular-devkit/schematics");
|
|
13
|
+
const testing_1 = require("@angular-devkit/schematics/testing");
|
|
14
|
+
const path = require("path");
|
|
15
|
+
const rxjs_1 = require("rxjs");
|
|
16
|
+
const test_1 = require("../../utility/test");
|
|
17
|
+
const util_1 = require("../../utility/util");
|
|
18
|
+
const index_1 = require("./index");
|
|
19
|
+
describe('update140000', () => {
|
|
20
|
+
let appTree;
|
|
21
|
+
let runner;
|
|
22
|
+
let context;
|
|
23
|
+
const testOptions = {
|
|
24
|
+
project: '',
|
|
25
|
+
path: '/',
|
|
26
|
+
verbose: false
|
|
27
|
+
};
|
|
28
|
+
beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
|
+
const collectionPath = path.join(__dirname, '../../collection.json');
|
|
30
|
+
runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
|
|
31
|
+
const collection = '@schematics/angular';
|
|
32
|
+
appTree = yield runner.runExternalSchematicAsync(collection, 'workspace', test_1.workspaceOptions).toPromise();
|
|
33
|
+
appTree = yield runner.runExternalSchematicAsync(collection, 'application', test_1.appOptions, appTree).toPromise();
|
|
34
|
+
context = runner.engine.createContext(runner.engine.createSchematic('change-theme-to-authentic', runner.engine.createCollection(collectionPath)));
|
|
35
|
+
util_1.UtilConfig.defaultWaitMS = 0;
|
|
36
|
+
testOptions.project = test_1.appOptions.name;
|
|
37
|
+
testOptions.path = test_1.workspaceOptions.newProjectRoot + '/' + test_1.appOptions.name;
|
|
38
|
+
testOptions.verbose = true;
|
|
39
|
+
}));
|
|
40
|
+
describe('[Rule] setAcThemeToAppComponent', () => {
|
|
41
|
+
it('Sollte das neue Theme im Konstruktor setzen (nur loadTheme())', (done) => {
|
|
42
|
+
const appComponentTsFilePath = testOptions.path + '/src/app/app.component.ts';
|
|
43
|
+
appTree.overwrite(appComponentTsFilePath, appComponentTsOnlyLoadThemeContent);
|
|
44
|
+
(0, schematics_1.callRule)((0, index_1.setAcThemeToAppComponent)(testOptions), (0, rxjs_1.of)(appTree), context).subscribe({
|
|
45
|
+
next: (success) => {
|
|
46
|
+
var _a;
|
|
47
|
+
const content = (_a = success.read(appComponentTsFilePath)) === null || _a === void 0 ? void 0 : _a.toString();
|
|
48
|
+
expect(content).toContain("themeService.setTheme('authentic');");
|
|
49
|
+
expect(content).toContain('themeService.loadTheme();');
|
|
50
|
+
expect(content).toContain('router.initialNavigation();');
|
|
51
|
+
done();
|
|
52
|
+
},
|
|
53
|
+
error: (reason) => expect(reason).toBeUndefined()
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
it('Sollte das neue Theme im Konstruktor setzen (mit blue)', (done) => {
|
|
57
|
+
const appComponentTsFilePath = testOptions.path + '/src/app/app.component.ts';
|
|
58
|
+
appTree.overwrite(appComponentTsFilePath, appComponentTsBlueThemeContent);
|
|
59
|
+
(0, schematics_1.callRule)((0, index_1.setAcThemeToAppComponent)(testOptions), (0, rxjs_1.of)(appTree), context).subscribe({
|
|
60
|
+
next: (success) => {
|
|
61
|
+
var _a;
|
|
62
|
+
const content = (_a = success.read(appComponentTsFilePath)) === null || _a === void 0 ? void 0 : _a.toString();
|
|
63
|
+
expect(content).toContain("themeService.setTheme('authentic');");
|
|
64
|
+
expect(content).toContain('themeService.loadTheme();');
|
|
65
|
+
expect(content).toContain('router.initialNavigation();');
|
|
66
|
+
done();
|
|
67
|
+
},
|
|
68
|
+
error: (reason) => expect(reason).toBeUndefined()
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('[Rule] changeToAcComponents', () => {
|
|
73
|
+
it('Sollte auf das Authentic-Theme wechseln', (done) => {
|
|
74
|
+
const filePath = testOptions.path + '/changeThemeToAuthentic/Test.component.html';
|
|
75
|
+
appTree.create(filePath, appComponentHtmlContent);
|
|
76
|
+
(0, schematics_1.callRule)((0, index_1.changeToAcComponents)(testOptions), (0, rxjs_1.of)(appTree), context).subscribe({
|
|
77
|
+
next: (success) => {
|
|
78
|
+
var _a;
|
|
79
|
+
const content = (_a = success.read(filePath)) === null || _a === void 0 ? void 0 : _a.toString();
|
|
80
|
+
expect(content).not.toContain('<lux-side-nav-header');
|
|
81
|
+
expect(content).not.toContain('<lux-side-nav-footer');
|
|
82
|
+
expect(content).not.toContain('<lux-app-header\n');
|
|
83
|
+
expect(content).not.toContain('</lux-app-header>');
|
|
84
|
+
expect(content).toContain('<lux-app-header-ac\n');
|
|
85
|
+
expect(content).toContain('</lux-app-header-ac>');
|
|
86
|
+
expect(content).not.toContain('<lux-app-header-action-nav-item');
|
|
87
|
+
expect(content).not.toContain('</lux-app-header-action-nav-item');
|
|
88
|
+
expect(content).toContain('<lux-app-header-ac-action-nav-item');
|
|
89
|
+
expect(content).toContain('</lux-app-header-ac-action-nav-item');
|
|
90
|
+
expect(content).not.toContain('<lux-app-header-action-nav-item-custom');
|
|
91
|
+
expect(content).not.toContain('</lux-app-header-action-nav-item-custom');
|
|
92
|
+
expect(content).toContain('<lux-app-header-ac-action-nav-item-custom');
|
|
93
|
+
expect(content).toContain('</lux-app-header-ac-action-nav-item-custom');
|
|
94
|
+
expect(content).not.toContain('<lux-app-header-action-nav');
|
|
95
|
+
expect(content).not.toContain('</lux-app-header-action-nav');
|
|
96
|
+
expect(content).toContain('<lux-app-header-ac-action-nav');
|
|
97
|
+
expect(content).toContain('</lux-app-header-ac-action-nav');
|
|
98
|
+
expect(content).not.toContain('<lux-app-header-nav-menu-item');
|
|
99
|
+
expect(content).not.toContain('</lux-app-header-nav-menu-item');
|
|
100
|
+
expect(content).toContain('<lux-app-header-ac-nav-menu-item');
|
|
101
|
+
expect(content).toContain('</lux-app-header-ac-nav-menu-item');
|
|
102
|
+
expect(content).not.toContain('<lux-side-nav ');
|
|
103
|
+
expect(content).not.toContain('</lux-side-nav>');
|
|
104
|
+
expect(content).toContain('<lux-app-header-ac-nav-menu');
|
|
105
|
+
expect(content).toContain('</lux-app-header-ac-nav-menu');
|
|
106
|
+
expect(content).not.toContain('<lux-side-nav-item');
|
|
107
|
+
expect(content).not.toContain('</lux-side-nav-item');
|
|
108
|
+
expect(content).toContain('<lux-app-header-ac-nav-menu-item');
|
|
109
|
+
expect(content).toContain('</lux-app-header-ac-nav-menu-item');
|
|
110
|
+
done();
|
|
111
|
+
},
|
|
112
|
+
error: (reason) => expect(reason).toBeUndefined()
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
it('Sollte auf den Authentic-Master-Detail wechseln', (done) => {
|
|
116
|
+
const filePath = testOptions.path + '/changeThemeToAuthentic/MasterDetail.component.html';
|
|
117
|
+
appTree.create(filePath, masterDetailContent);
|
|
118
|
+
(0, schematics_1.callRule)((0, index_1.changeToAcComponents)(testOptions), (0, rxjs_1.of)(appTree), context).subscribe({
|
|
119
|
+
next: (success) => {
|
|
120
|
+
var _a;
|
|
121
|
+
const content = (_a = success.read(filePath)) === null || _a === void 0 ? void 0 : _a.toString();
|
|
122
|
+
expect(content).toEqual(masterDetailResult);
|
|
123
|
+
done();
|
|
124
|
+
},
|
|
125
|
+
error: (reason) => expect(reason).toBeUndefined()
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
const appComponentTsOnlyLoadThemeContent = `
|
|
131
|
+
import { Component } from '@angular/core';
|
|
132
|
+
import { Router } from '@angular/router';
|
|
133
|
+
import { LuxThemeService } from '@ihk-gfi/lux-components';
|
|
134
|
+
|
|
135
|
+
@Component({
|
|
136
|
+
selector: 'app-root',
|
|
137
|
+
templateUrl: './app.component.html',
|
|
138
|
+
styleUrls: ['./app.component.scss']
|
|
139
|
+
})
|
|
140
|
+
export class AppComponent {
|
|
141
|
+
|
|
142
|
+
constructor(public router: Router, themeService: LuxThemeService) {
|
|
143
|
+
themeService.loadTheme();
|
|
144
|
+
router.initialNavigation();
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
}
|
|
148
|
+
`;
|
|
149
|
+
const appComponentTsBlueThemeContent = `
|
|
150
|
+
import { Component } from '@angular/core';
|
|
151
|
+
import { Router } from '@angular/router';
|
|
152
|
+
import { LuxThemeService } from '@ihk-gfi/lux-components';
|
|
153
|
+
|
|
154
|
+
@Component({
|
|
155
|
+
selector: 'app-root',
|
|
156
|
+
templateUrl: './app.component.html',
|
|
157
|
+
styleUrls: ['./app.component.scss']
|
|
158
|
+
})
|
|
159
|
+
export class AppComponent {
|
|
160
|
+
|
|
161
|
+
constructor(public router: Router, themeService: LuxThemeService) {
|
|
162
|
+
themeService.setTheme('blue');
|
|
163
|
+
themeService.loadTheme();
|
|
164
|
+
router.initialNavigation();
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
}
|
|
168
|
+
`;
|
|
169
|
+
const appComponentHtmlContent = `
|
|
170
|
+
<div class="lux-app-container">
|
|
171
|
+
<lux-app-header
|
|
172
|
+
luxAppTitle="LUX Components"
|
|
173
|
+
luxAppTitleShort="Components"
|
|
174
|
+
luxUserName="Max Mustermann"
|
|
175
|
+
luxIconName="far fa-lightbulb"
|
|
176
|
+
luxImageSrc="assets/png/example.png"
|
|
177
|
+
luxAriaTitleIconLabel="Titelicon / Zur Hauptseie"
|
|
178
|
+
luxAriaTitleImageLabel="Titelbild / Zur Hauptseie"
|
|
179
|
+
luxAriaTitleLinkLabel="LUX Components / Zur Hauptseie"
|
|
180
|
+
[luxLocaleSupported]="['de', 'en']"
|
|
181
|
+
*ngIf="this.luxAppHeader !== 'none' && themeName !== 'authentic'"
|
|
182
|
+
(luxClicked)="router.navigate(['/'])"
|
|
183
|
+
>
|
|
184
|
+
<lux-side-nav
|
|
185
|
+
luxDashboardLink="https://github.com/IHK-GfI/lux-components/wiki"
|
|
186
|
+
[luxOpenLinkBlank]="true"
|
|
187
|
+
luxSideNavExpandedChange="onSideNavExpandedChange($event)"
|
|
188
|
+
[luxSideNavExpandedChange]="onSideNavExpandedChange($event)"
|
|
189
|
+
(luxSideNavExpandedChange)="onSideNavExpandedChange($event)"
|
|
190
|
+
[(luxSideNavExpandedChange)]="onSideNavExpandedChange($event)"
|
|
191
|
+
>
|
|
192
|
+
<lux-side-nav-header>
|
|
193
|
+
<h3 class="lux-side-nav-header-greeting">Navigation</h3>
|
|
194
|
+
</lux-side-nav-header>
|
|
195
|
+
<lux-side-nav-item
|
|
196
|
+
luxLabel="Home"
|
|
197
|
+
luxIconName="fas fa-home"
|
|
198
|
+
(luxClicked)="goToHome()"
|
|
199
|
+
luxTagId="home-side-nav-item"
|
|
200
|
+
[luxSelected]="url.endsWith('home')"
|
|
201
|
+
>
|
|
202
|
+
</lux-side-nav-item>
|
|
203
|
+
<lux-side-nav-footer>
|
|
204
|
+
<div fxLayout="row" fxLayoutAlign="center center" fxLayoutGap="8px">
|
|
205
|
+
<lux-button luxLabel="Aufklappen" [luxRaised]="true" (luxClicked)="navigationService.onExpandAll()"></lux-button>
|
|
206
|
+
</div>
|
|
207
|
+
</lux-side-nav-footer>
|
|
208
|
+
</lux-side-nav>
|
|
209
|
+
<lux-app-header-action-nav>
|
|
210
|
+
<lux-app-header-action-nav-item
|
|
211
|
+
fxShow="true" fxShow.xs="false"
|
|
212
|
+
luxIconName="fas fa-bell"
|
|
213
|
+
luxColor="accent"
|
|
214
|
+
luxAriaLabel="Nachrichten anzeigen"
|
|
215
|
+
luxTagId="action0"
|
|
216
|
+
(luxClicked)="actionClicked('#0 Action clicked!')"
|
|
217
|
+
>
|
|
218
|
+
</lux-app-header-action-nav-item>
|
|
219
|
+
<lux-app-header-action-nav-item>
|
|
220
|
+
<lux-app-header-action-nav-item-custom>
|
|
221
|
+
<lux-menu luxMenuLabel="IHK" luxMenuIconName="fas fa-caret-down" [luxMenuTriggerIconShowRight]="true" [luxDisplayExtended]="false">
|
|
222
|
+
<lux-menu-item luxLabel="IHK 101" luxIconName="far fa-building" (luxClicked)="actionClicked('IHK 101-Action clicked!')"></lux-menu-item>
|
|
223
|
+
</lux-menu>
|
|
224
|
+
</lux-app-header-action-nav-item-custom>
|
|
225
|
+
</lux-app-header-action-nav-item>
|
|
226
|
+
</lux-app-header-action-nav>
|
|
227
|
+
<lux-app-header-right-nav>
|
|
228
|
+
<lux-menu-item luxLabel="Abmelden" luxIconName="fa-power-off" luxTagId="abmelden-menu-item"></lux-menu-item>
|
|
229
|
+
</lux-app-header-right-nav>
|
|
230
|
+
</lux-app-header>
|
|
231
|
+
`;
|
|
232
|
+
const masterDetailContent = `
|
|
233
|
+
<lux-master-detail fxFill [luxMasterSpinnerDelay]="500" luxEmptyIconDetail="fas fa-pen" luxEmptyIconMaster="fas fa-pen"
|
|
234
|
+
luxEmptyLabelDetail="Kein Detail selektiert!" [luxMasterIsLoading]="masterIsLoading"
|
|
235
|
+
luxEmptyLabelMaster="Keine Masterelemente gefunden!" [luxSelectedDetail]="masterSelected"
|
|
236
|
+
[luxMasterList]="masterItems" (luxSelectedDetailChange)="loadData($event)"
|
|
237
|
+
(luxScrolled)="loadFurtherEntries()">
|
|
238
|
+
<lux-master-header-content>
|
|
239
|
+
<h2>Master Header</h2>
|
|
240
|
+
</lux-master-header-content>
|
|
241
|
+
|
|
242
|
+
<lux-master-simple luxTitleProp="title" luxSubTitleProp="subtitle">
|
|
243
|
+
<ng-template #luxSimpleIcon let-master>
|
|
244
|
+
<lux-icon [luxIconName]="master.icon"></lux-icon>
|
|
245
|
+
</ng-template>
|
|
246
|
+
<ng-template #luxSimpleContent let-master>
|
|
247
|
+
{{master.content}}
|
|
248
|
+
</ng-template>
|
|
249
|
+
</lux-master-simple>
|
|
250
|
+
|
|
251
|
+
<lux-detail-view>
|
|
252
|
+
<ng-template let-detail>
|
|
253
|
+
<lux-card [luxTitle]="detail.title" fxFill>
|
|
254
|
+
<lux-card-content>
|
|
255
|
+
{{ detail.content }}
|
|
256
|
+
</lux-card-content>
|
|
257
|
+
</lux-card>
|
|
258
|
+
</ng-template>
|
|
259
|
+
</lux-detail-view>
|
|
260
|
+
|
|
261
|
+
<lux-master-footer>
|
|
262
|
+
<h2>Master-Footer</h2>
|
|
263
|
+
</lux-master-footer>
|
|
264
|
+
</lux-master-detail>
|
|
265
|
+
`;
|
|
266
|
+
const masterDetailResult = `
|
|
267
|
+
<lux-master-detail-ac fxFill [luxMasterSpinnerDelay]="500" luxEmptyIconDetail="fas fa-pen" luxEmptyIconMaster="fas fa-pen"
|
|
268
|
+
luxEmptyLabelDetail="Kein Detail selektiert!" [luxMasterIsLoading]="masterIsLoading"
|
|
269
|
+
luxEmptyLabelMaster="Keine Masterelemente gefunden!" [luxSelectedDetail]="masterSelected"
|
|
270
|
+
[luxMasterList]="masterItems" (luxSelectedDetailChange)="loadData($event)"
|
|
271
|
+
(luxScrolled)="loadFurtherEntries()">
|
|
272
|
+
<lux-master-header-content-ac>
|
|
273
|
+
<h2>Master Header</h2>
|
|
274
|
+
</lux-master-header-content-ac>
|
|
275
|
+
|
|
276
|
+
<lux-master-list-ac luxTitleProp="title" luxSubTitleProp="subtitle">
|
|
277
|
+
<ng-template #luxSimpleIcon let-master>
|
|
278
|
+
<lux-icon [luxIconName]="master.icon"></lux-icon>
|
|
279
|
+
</ng-template>
|
|
280
|
+
<ng-template #luxSimpleContent let-master>
|
|
281
|
+
{{master.content}}
|
|
282
|
+
</ng-template>
|
|
283
|
+
</lux-master-list-ac>
|
|
284
|
+
|
|
285
|
+
<lux-detail-view-ac>
|
|
286
|
+
<ng-template let-detail>
|
|
287
|
+
<lux-card [luxTitle]="detail.title" fxFill>
|
|
288
|
+
<lux-card-content>
|
|
289
|
+
{{ detail.content }}
|
|
290
|
+
</lux-card-content>
|
|
291
|
+
</lux-card>
|
|
292
|
+
</ng-template>
|
|
293
|
+
</lux-detail-view-ac>
|
|
294
|
+
|
|
295
|
+
<lux-master-footer-ac>
|
|
296
|
+
<h2>Master-Footer</h2>
|
|
297
|
+
</lux-master-footer-ac>
|
|
298
|
+
</lux-master-detail-ac>
|
|
299
|
+
`;
|
|
300
|
+
//# sourceMappingURL=index_spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index_spec.js","sourceRoot":"","sources":["index_spec.ts"],"names":[],"mappings":"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"}
|