@angular/material 12.0.0 → 12.0.4
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/_index.scss +2 -1
- package/_theming.scss +39 -4
- package/autocomplete/_autocomplete-legacy-index.scss +2 -0
- package/autocomplete/autocomplete.d.ts +4 -2
- package/autocomplete/index.metadata.json +1 -1
- package/badge/_badge-legacy-index.scss +3 -0
- package/bottom-sheet/_bottom-sheet-legacy-index.scss +2 -0
- package/bottom-sheet/bottom-sheet-container.d.ts +0 -2
- package/bottom-sheet/index.metadata.json +1 -1
- package/bundles/material-autocomplete.umd.js.map +1 -1
- package/bundles/material-bottom-sheet.umd.js +7 -15
- package/bundles/material-bottom-sheet.umd.js.map +1 -1
- package/bundles/material-button-toggle.umd.js.map +1 -1
- package/bundles/material-checkbox.umd.js +1 -1
- package/bundles/material-checkbox.umd.js.map +1 -1
- package/bundles/material-core.umd.js +2 -2
- package/bundles/material-core.umd.js.map +1 -1
- package/bundles/material-datepicker.umd.js +17 -19
- package/bundles/material-datepicker.umd.js.map +1 -1
- package/bundles/material-dialog.umd.js +11 -19
- package/bundles/material-dialog.umd.js.map +1 -1
- package/bundles/material-input.umd.js +8 -2
- package/bundles/material-input.umd.js.map +1 -1
- package/bundles/material-radio.umd.js +4 -4
- package/bundles/material-radio.umd.js.map +1 -1
- package/bundles/material-slide-toggle.umd.js +4 -4
- package/bundles/material-slide-toggle.umd.js.map +1 -1
- package/bundles/material-sort.umd.js +7 -1
- package/bundles/material-sort.umd.js.map +1 -1
- package/bundles/material-stepper.umd.js +2 -2
- package/bundles/material-stepper.umd.js.map +1 -1
- package/bundles/material-table.umd.js.map +1 -1
- package/bundles/material-tabs.umd.js +4 -2
- package/bundles/material-tabs.umd.js.map +1 -1
- package/bundles/material-tooltip.umd.js +19 -15
- package/bundles/material-tooltip.umd.js.map +1 -1
- package/button/_button-legacy-index.scss +19 -0
- package/button-toggle/_button-toggle-legacy-index.scss +2 -0
- package/button-toggle/button-toggle.d.ts +4 -0
- package/button-toggle/index.metadata.json +1 -1
- package/card/_card-legacy-index.scss +2 -0
- package/checkbox/_checkbox-legacy-index.scss +2 -0
- package/checkbox/checkbox-config.d.ts +2 -0
- package/checkbox/index.metadata.json +1 -1
- package/chips/_chips-legacy-index.scss +6 -0
- package/core/_core-legacy-index.scss +17 -0
- package/core/color/_color-legacy-index.scss +1 -0
- package/core/density/private/_density-legacy-index.scss +5 -0
- package/core/focus-indicators/_focus-indicators-legacy-index.scss +5 -0
- package/core/focus-indicators/_focus-indicators.import.scss +1 -1
- package/core/focus-indicators/_focus-indicators.scss +4 -0
- package/core/index.metadata.json +1 -1
- package/core/option/_option-legacy-index.scss +5 -0
- package/core/ripple/_ripple-legacy-index.scss +3 -0
- package/core/ripple/ripple.d.ts +8 -6
- package/core/selection/pseudo-checkbox/_pseudo-checkbox-legacy-index.scss +2 -0
- package/core/style/_style-legacy-index.scss +24 -0
- package/core/theming/_theming-legacy-index.scss +22 -0
- package/core/theming/_theming.scss +45 -22
- package/core/typography/_typography-legacy-index.scss +18 -0
- package/core/typography/_typography-utils.scss +27 -8
- package/core/typography/_typography.scss +36 -7
- package/datepicker/_datepicker-legacy-index.scss +9 -0
- package/datepicker/calendar.d.ts +2 -4
- package/datepicker/datepicker-base.d.ts +6 -2
- package/datepicker/index.metadata.json +1 -1
- package/dialog/_dialog-legacy-index.scss +2 -0
- package/dialog/dialog-container.d.ts +0 -2
- package/dialog/index.metadata.json +1 -1
- package/divider/_divider-legacy-index.scss +3 -0
- package/esm2015/autocomplete/autocomplete.js +1 -1
- package/esm2015/bottom-sheet/bottom-sheet-container.js +5 -12
- package/esm2015/button-toggle/button-toggle.js +1 -1
- package/esm2015/checkbox/checkbox-config.js +1 -1
- package/esm2015/checkbox/checkbox.js +2 -2
- package/esm2015/core/common-behaviors/common-module.js +1 -1
- package/esm2015/core/ripple/ripple.js +1 -1
- package/esm2015/core/version.js +1 -1
- package/esm2015/datepicker/calendar.js +3 -5
- package/esm2015/datepicker/date-range-input-parts.js +3 -2
- package/esm2015/datepicker/datepicker-base.js +9 -9
- package/esm2015/datepicker/datepicker-intl.js +3 -3
- package/esm2015/dialog/dialog-container.js +5 -12
- package/esm2015/input/input.js +10 -4
- package/esm2015/radio/radio.js +5 -5
- package/esm2015/slide-toggle/slide-toggle.js +5 -5
- package/esm2015/sort/sort-header.js +8 -2
- package/esm2015/stepper/step-header.js +3 -3
- package/esm2015/table/table-data-source.js +1 -1
- package/esm2015/tabs/tab-group.js +4 -2
- package/esm2015/tabs/tab.js +3 -3
- package/esm2015/tooltip/tooltip.js +12 -8
- package/expansion/_expansion-legacy-index.scss +3 -0
- package/fesm2015/autocomplete.js.map +1 -1
- package/fesm2015/bottom-sheet.js +4 -11
- package/fesm2015/bottom-sheet.js.map +1 -1
- package/fesm2015/button-toggle.js.map +1 -1
- package/fesm2015/checkbox.js +1 -1
- package/fesm2015/checkbox.js.map +1 -1
- package/fesm2015/core.js +2 -2
- package/fesm2015/core.js.map +1 -1
- package/fesm2015/datepicker.js +14 -15
- package/fesm2015/datepicker.js.map +1 -1
- package/fesm2015/dialog.js +4 -11
- package/fesm2015/dialog.js.map +1 -1
- package/fesm2015/input.js +9 -3
- package/fesm2015/input.js.map +1 -1
- package/fesm2015/radio.js +4 -4
- package/fesm2015/radio.js.map +1 -1
- package/fesm2015/slide-toggle.js +4 -4
- package/fesm2015/slide-toggle.js.map +1 -1
- package/fesm2015/sort.js +7 -1
- package/fesm2015/sort.js.map +1 -1
- package/fesm2015/stepper.js +2 -2
- package/fesm2015/stepper.js.map +1 -1
- package/fesm2015/table.js.map +1 -1
- package/fesm2015/tabs.js +4 -2
- package/fesm2015/tabs.js.map +1 -1
- package/fesm2015/tooltip.js +11 -7
- package/fesm2015/tooltip.js.map +1 -1
- package/form-field/_form-field-legacy-index.scss +24 -0
- package/grid-list/_grid-list-legacy-index.scss +2 -0
- package/icon/_icon-legacy-index.scss +2 -0
- package/input/_input-legacy-index.scss +2 -0
- package/input/index.metadata.json +1 -1
- package/list/_list-legacy-index.scss +2 -0
- package/menu/_menu-legacy-index.scss +2 -0
- package/package.json +2 -2
- package/paginator/_paginator-legacy-index.scss +2 -0
- package/progress-bar/_progress-bar-legacy-index.scss +2 -0
- package/progress-spinner/_progress-spinner-legacy-index.scss +2 -0
- package/radio/_radio-legacy-index.scss +2 -0
- package/radio/index.metadata.json +1 -1
- package/radio/radio.d.ts +3 -2
- package/schematics/ng-add/fonts/material-fonts.mjs +46 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-add/index.mjs +55 -0
- package/schematics/ng-add/package-config.mjs +47 -0
- package/schematics/ng-add/schema.mjs +10 -0
- package/schematics/ng-add/setup-project.mjs +121 -0
- package/schematics/ng-add/theming/create-custom-theme.mjs +51 -0
- package/schematics/ng-add/theming/theming.mjs +165 -0
- package/schematics/ng-generate/address-form/index.mjs +49 -0
- package/schematics/ng-generate/address-form/schema.mjs +10 -0
- package/schematics/ng-generate/dashboard/index.mjs +49 -0
- package/schematics/ng-generate/dashboard/schema.mjs +10 -0
- package/schematics/ng-generate/navigation/index.mjs +49 -0
- package/schematics/ng-generate/navigation/schema.mjs +10 -0
- package/schematics/ng-generate/table/index.mjs +46 -0
- package/schematics/ng-generate/table/schema.mjs +10 -0
- package/schematics/ng-generate/tree/index.mjs +46 -0
- package/schematics/ng-generate/tree/schema.mjs +10 -0
- package/schematics/ng-update/data/attribute-selectors.mjs +12 -0
- package/schematics/ng-update/data/class-names.mjs +32 -0
- package/schematics/ng-update/data/constructor-checks.mjs +143 -0
- package/schematics/ng-update/data/css-selectors.mjs +46 -0
- package/schematics/ng-update/data/element-selectors.mjs +18 -0
- package/schematics/ng-update/data/index.mjs +29 -0
- package/schematics/ng-update/data/input-names.mjs +76 -0
- package/schematics/ng-update/data/method-call-checks.mjs +22 -0
- package/schematics/ng-update/data/output-names.mjs +101 -0
- package/schematics/ng-update/data/property-names.mjs +173 -0
- package/schematics/ng-update/index.mjs +78 -0
- package/schematics/ng-update/migrations/hammer-gestures-v9/find-hammer-script-tags.mjs +42 -0
- package/schematics/ng-update/migrations/hammer-gestures-v9/find-main-module.mjs +32 -0
- package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.js +3 -3
- package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.mjs +778 -0
- package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-template-check.mjs +56 -0
- package/schematics/ng-update/migrations/hammer-gestures-v9/import-manager.mjs +370 -0
- package/schematics/ng-update/migrations/hammer-gestures-v9/remove-array-element.mjs +66 -0
- package/schematics/ng-update/migrations/hammer-gestures-v9/remove-element-from-html.mjs +28 -0
- package/schematics/ng-update/migrations/misc-checks/misc-class-inheritance.mjs +48 -0
- package/schematics/ng-update/migrations/misc-checks/misc-class-names.mjs +43 -0
- package/schematics/ng-update/migrations/misc-checks/misc-imports.mjs +54 -0
- package/schematics/ng-update/migrations/misc-checks/misc-property-names.mjs +47 -0
- package/schematics/ng-update/migrations/misc-checks/misc-template.mjs +60 -0
- package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration.mjs +138 -0
- package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor.mjs +30 -0
- package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.js +6 -2
- package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.mjs +173 -0
- package/schematics/ng-update/migrations/theming-api-v12/config.mjs +206 -0
- package/schematics/ng-update/migrations/theming-api-v12/migration.js +6 -1
- package/schematics/ng-update/migrations/theming-api-v12/migration.mjs +239 -0
- package/schematics/ng-update/migrations/theming-api-v12/theming-api-migration.mjs +45 -0
- package/schematics/ng-update/typescript/module-specifiers.mjs +35 -0
- package/schematics/ng-update/upgrade-data.mjs +24 -0
- package/schematics/paths.mjs +16 -0
- package/schematics/schematics.externs.js +0 -0
- package/select/_select-legacy-index.scss +2 -0
- package/sidenav/_sidenav-legacy-index.scss +2 -0
- package/slide-toggle/_slide-toggle-legacy-index.scss +3 -0
- package/slide-toggle/index.metadata.json +1 -1
- package/slide-toggle/slide-toggle.d.ts +3 -2
- package/slider/_slider-legacy-index.scss +2 -0
- package/snack-bar/_snack-bar-legacy-index.scss +2 -0
- package/sort/_sort-legacy-index.scss +2 -0
- package/sort/sort-header.d.ts +1 -1
- package/stepper/_stepper-legacy-index.scss +7 -0
- package/stepper/index.metadata.json +1 -1
- package/table/_table-legacy-index.scss +3 -0
- package/table/index.metadata.json +1 -1
- package/table/table-data-source.d.ts +17 -5
- package/tabs/_tabs-legacy-index.scss +6 -0
- package/tabs/index.metadata.json +1 -1
- package/toolbar/_toolbar-legacy-index.scss +4 -0
- package/tooltip/_tooltip-legacy-index.scss +3 -0
- package/tooltip/index.metadata.json +1 -1
- package/tree/_tree-legacy-index.scss +2 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.io/license
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.migrateFileContent = void 0;
|
|
11
|
+
const config_1 = require("./config");
|
|
12
|
+
/**
|
|
13
|
+
* Migrates the content of a file to the new theming API. Note that this migration is using plain
|
|
14
|
+
* string manipulation, rather than the AST from PostCSS and the schematics string manipulation
|
|
15
|
+
* APIs, because it allows us to run it inside g3 and to avoid introducing new dependencies.
|
|
16
|
+
* @param content Content of the file.
|
|
17
|
+
* @param oldMaterialPrefix Prefix with which the old Material imports should start.
|
|
18
|
+
* Has to end with a slash. E.g. if `@import '~@angular/material/theming'` should be
|
|
19
|
+
* matched, the prefix would be `~@angular/material/`.
|
|
20
|
+
* @param oldCdkPrefix Prefix with which the old CDK imports should start.
|
|
21
|
+
* Has to end with a slash. E.g. if `@import '~@angular/cdk/overlay'` should be
|
|
22
|
+
* matched, the prefix would be `~@angular/cdk/`.
|
|
23
|
+
* @param newMaterialImportPath New import to the Material theming API (e.g. `~@angular/material`).
|
|
24
|
+
* @param newCdkImportPath New import to the CDK Sass APIs (e.g. `~@angular/cdk`).
|
|
25
|
+
*/
|
|
26
|
+
function migrateFileContent(content, oldMaterialPrefix, oldCdkPrefix, newMaterialImportPath, newCdkImportPath) {
|
|
27
|
+
const materialResults = detectImports(content, oldMaterialPrefix);
|
|
28
|
+
const cdkResults = detectImports(content, oldCdkPrefix);
|
|
29
|
+
// Try to migrate the symbols even if there are no imports. This is used
|
|
30
|
+
// to cover the case where the Components symbols were used transitively.
|
|
31
|
+
content = migrateMaterialSymbols(content, newMaterialImportPath, materialResults);
|
|
32
|
+
content = migrateCdkSymbols(content, newCdkImportPath, cdkResults);
|
|
33
|
+
content = replaceRemovedVariables(content, config_1.removedMaterialVariables);
|
|
34
|
+
// We can assume that the migration has taken care of any Components symbols that were
|
|
35
|
+
// imported transitively so we can always drop the old imports. We also assume that imports
|
|
36
|
+
// to the new entry points have been added already.
|
|
37
|
+
if (materialResults.imports.length) {
|
|
38
|
+
content = replaceRemovedVariables(content, config_1.unprefixedRemovedVariables);
|
|
39
|
+
content = removeStrings(content, materialResults.imports);
|
|
40
|
+
}
|
|
41
|
+
if (cdkResults.imports.length) {
|
|
42
|
+
content = removeStrings(content, cdkResults.imports);
|
|
43
|
+
}
|
|
44
|
+
return content;
|
|
45
|
+
}
|
|
46
|
+
exports.migrateFileContent = migrateFileContent;
|
|
47
|
+
/**
|
|
48
|
+
* Counts the number of imports with a specific prefix and extracts their namespaces.
|
|
49
|
+
* @param content File content in which to look for imports.
|
|
50
|
+
* @param prefix Prefix that the imports should start with.
|
|
51
|
+
*/
|
|
52
|
+
function detectImports(content, prefix) {
|
|
53
|
+
if (prefix[prefix.length - 1] !== '/') {
|
|
54
|
+
// Some of the logic further down makes assumptions about the import depth.
|
|
55
|
+
throw Error(`Prefix "${prefix}" has to end in a slash.`);
|
|
56
|
+
}
|
|
57
|
+
// List of `@use` namespaces from which Angular CDK/Material APIs may be referenced.
|
|
58
|
+
// Since we know that the library doesn't have any name collisions, we can treat all of these
|
|
59
|
+
// namespaces as equivalent.
|
|
60
|
+
const namespaces = [];
|
|
61
|
+
const imports = [];
|
|
62
|
+
const pattern = new RegExp(`@(import|use) +['"]${escapeRegExp(prefix)}.*['"].*;?\n`, 'g');
|
|
63
|
+
let match = null;
|
|
64
|
+
while (match = pattern.exec(content)) {
|
|
65
|
+
const [fullImport, type] = match;
|
|
66
|
+
if (type === 'use') {
|
|
67
|
+
const namespace = extractNamespaceFromUseStatement(fullImport);
|
|
68
|
+
if (namespaces.indexOf(namespace) === -1) {
|
|
69
|
+
namespaces.push(namespace);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
imports.push(fullImport);
|
|
73
|
+
}
|
|
74
|
+
return { imports, namespaces };
|
|
75
|
+
}
|
|
76
|
+
/** Migrates the Material symbols in a file. */
|
|
77
|
+
function migrateMaterialSymbols(content, importPath, detectedImports) {
|
|
78
|
+
const initialContent = content;
|
|
79
|
+
const namespace = 'mat';
|
|
80
|
+
// Migrate the mixins.
|
|
81
|
+
content = renameSymbols(content, config_1.materialMixins, detectedImports.namespaces, mixinKeyFormatter, getMixinValueFormatter(namespace));
|
|
82
|
+
// Migrate the functions.
|
|
83
|
+
content = renameSymbols(content, config_1.materialFunctions, detectedImports.namespaces, functionKeyFormatter, getFunctionValueFormatter(namespace));
|
|
84
|
+
// Migrate the variables.
|
|
85
|
+
content = renameSymbols(content, config_1.materialVariables, detectedImports.namespaces, variableKeyFormatter, getVariableValueFormatter(namespace));
|
|
86
|
+
if (content !== initialContent) {
|
|
87
|
+
// Add an import to the new API only if any of the APIs were being used.
|
|
88
|
+
content = insertUseStatement(content, importPath, detectedImports.imports, namespace);
|
|
89
|
+
}
|
|
90
|
+
return content;
|
|
91
|
+
}
|
|
92
|
+
/** Migrates the CDK symbols in a file. */
|
|
93
|
+
function migrateCdkSymbols(content, importPath, detectedImports) {
|
|
94
|
+
const initialContent = content;
|
|
95
|
+
const namespace = 'cdk';
|
|
96
|
+
// Migrate the mixins.
|
|
97
|
+
content = renameSymbols(content, config_1.cdkMixins, detectedImports.namespaces, mixinKeyFormatter, getMixinValueFormatter(namespace));
|
|
98
|
+
// Migrate the variables.
|
|
99
|
+
content = renameSymbols(content, config_1.cdkVariables, detectedImports.namespaces, variableKeyFormatter, getVariableValueFormatter(namespace));
|
|
100
|
+
// Previously the CDK symbols were exposed through `material/theming`, but now we have a
|
|
101
|
+
// dedicated entrypoint for the CDK. Only add an import for it if any of the symbols are used.
|
|
102
|
+
if (content !== initialContent) {
|
|
103
|
+
content = insertUseStatement(content, importPath, detectedImports.imports, namespace);
|
|
104
|
+
}
|
|
105
|
+
return content;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Renames all Sass symbols in a file based on a pre-defined mapping.
|
|
109
|
+
* @param content Content of a file to be migrated.
|
|
110
|
+
* @param mapping Mapping between symbol names and their replacements.
|
|
111
|
+
* @param namespaces Names to iterate over and pass to getKeyPattern.
|
|
112
|
+
* @param getKeyPattern Function used to turn each of the keys into a regex.
|
|
113
|
+
* @param formatValue Formats the value that will replace any matches of the pattern returned by
|
|
114
|
+
* `getKeyPattern`.
|
|
115
|
+
*/
|
|
116
|
+
function renameSymbols(content, mapping, namespaces, getKeyPattern, formatValue) {
|
|
117
|
+
// The null at the end is so that we make one last pass to cover non-namespaced symbols.
|
|
118
|
+
[...namespaces.slice().sort(sortLengthDescending), null].forEach(namespace => {
|
|
119
|
+
// Migrate the longest keys first so that our regex-based replacements don't accidentally
|
|
120
|
+
// capture keys that contain other keys. E.g. `$mat-blue` is contained within `$mat-blue-grey`.
|
|
121
|
+
Object.keys(mapping).sort(sortLengthDescending).forEach(key => {
|
|
122
|
+
const pattern = getKeyPattern(namespace, key);
|
|
123
|
+
// Sanity check since non-global regexes will only replace the first match.
|
|
124
|
+
if (pattern.flags.indexOf('g') === -1) {
|
|
125
|
+
throw Error('Replacement pattern must be global.');
|
|
126
|
+
}
|
|
127
|
+
content = content.replace(pattern, formatValue(mapping[key]));
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
return content;
|
|
131
|
+
}
|
|
132
|
+
/** Inserts an `@use` statement in a string. */
|
|
133
|
+
function insertUseStatement(content, importPath, importsToIgnore, namespace) {
|
|
134
|
+
// If the content already has the `@use` import, we don't need to add anything.
|
|
135
|
+
const alreadyImportedPattern = new RegExp(`@use +['"]${importPath}['"]`, 'g');
|
|
136
|
+
if (alreadyImportedPattern.test(content)) {
|
|
137
|
+
return content;
|
|
138
|
+
}
|
|
139
|
+
// We want to find the first import that isn't in the list of ignored imports or find nothing,
|
|
140
|
+
// because the imports being replaced might be the only ones in the file and they can be further
|
|
141
|
+
// down. An easy way to do this is to replace the imports with a random character and run
|
|
142
|
+
// `indexOf` on the result. This isn't the most efficient way of doing it, but it's more compact
|
|
143
|
+
// and it allows us to easily deal with things like comment nodes.
|
|
144
|
+
const contentToSearch = importsToIgnore.reduce((accumulator, current) => accumulator.replace(current, '◬'.repeat(current.length)), content);
|
|
145
|
+
// Sass has a limitation that all `@use` declarations have to come before `@import` so we have
|
|
146
|
+
// to find the first import and insert before it. Technically we can get away with always
|
|
147
|
+
// inserting at 0, but the file may start with something like a license header.
|
|
148
|
+
const newImportIndex = Math.max(0, contentToSearch.indexOf('@import '));
|
|
149
|
+
return content.slice(0, newImportIndex) + `@use '${importPath}' as ${namespace};\n` +
|
|
150
|
+
content.slice(newImportIndex);
|
|
151
|
+
}
|
|
152
|
+
/** Formats a migration key as a Sass mixin invocation. */
|
|
153
|
+
function mixinKeyFormatter(namespace, name) {
|
|
154
|
+
// Note that adding a `(` at the end of the pattern would be more accurate, but mixin
|
|
155
|
+
// invocations don't necessarily have to include the parentheses. We could add `[(;]`,
|
|
156
|
+
// but then we won't know which character to include in the replacement string.
|
|
157
|
+
return new RegExp(`@include +${escapeRegExp((namespace ? namespace + '.' : '') + name)}`, 'g');
|
|
158
|
+
}
|
|
159
|
+
/** Returns a function that can be used to format a Sass mixin replacement. */
|
|
160
|
+
function getMixinValueFormatter(namespace) {
|
|
161
|
+
// Note that adding a `(` at the end of the pattern would be more accurate,
|
|
162
|
+
// but mixin invocations don't necessarily have to include the parentheses.
|
|
163
|
+
return name => `@include ${namespace}.${name}`;
|
|
164
|
+
}
|
|
165
|
+
/** Formats a migration key as a Sass function invocation. */
|
|
166
|
+
function functionKeyFormatter(namespace, name) {
|
|
167
|
+
return new RegExp(escapeRegExp(`${namespace ? namespace + '.' : ''}${name}(`), 'g');
|
|
168
|
+
}
|
|
169
|
+
/** Returns a function that can be used to format a Sass function replacement. */
|
|
170
|
+
function getFunctionValueFormatter(namespace) {
|
|
171
|
+
return name => `${namespace}.${name}(`;
|
|
172
|
+
}
|
|
173
|
+
/** Formats a migration key as a Sass variable. */
|
|
174
|
+
function variableKeyFormatter(namespace, name) {
|
|
175
|
+
return new RegExp(escapeRegExp(`${namespace ? namespace + '.' : ''}$${name}`), 'g');
|
|
176
|
+
}
|
|
177
|
+
/** Returns a function that can be used to format a Sass variable replacement. */
|
|
178
|
+
function getVariableValueFormatter(namespace) {
|
|
179
|
+
return name => `${namespace}.$${name}`;
|
|
180
|
+
}
|
|
181
|
+
/** Escapes special regex characters in a string. */
|
|
182
|
+
function escapeRegExp(str) {
|
|
183
|
+
return str.replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
|
|
184
|
+
}
|
|
185
|
+
/** Used with `Array.prototype.sort` to order strings in descending length. */
|
|
186
|
+
function sortLengthDescending(a, b) {
|
|
187
|
+
return b.length - a.length;
|
|
188
|
+
}
|
|
189
|
+
/** Removes all strings from another string. */
|
|
190
|
+
function removeStrings(content, toRemove) {
|
|
191
|
+
return toRemove
|
|
192
|
+
.reduce((accumulator, current) => accumulator.replace(current, ''), content)
|
|
193
|
+
.replace(/^\s+/, '');
|
|
194
|
+
}
|
|
195
|
+
/** Parses out the namespace from a Sass `@use` statement. */
|
|
196
|
+
function extractNamespaceFromUseStatement(fullImport) {
|
|
197
|
+
const closeQuoteIndex = Math.max(fullImport.lastIndexOf(`"`), fullImport.lastIndexOf(`'`));
|
|
198
|
+
if (closeQuoteIndex > -1) {
|
|
199
|
+
const asExpression = 'as ';
|
|
200
|
+
const asIndex = fullImport.indexOf(asExpression, closeQuoteIndex);
|
|
201
|
+
// If we found an ` as ` expression, we consider the rest of the text as the namespace.
|
|
202
|
+
if (asIndex > -1) {
|
|
203
|
+
return fullImport.slice(asIndex + asExpression.length).split(';')[0].trim();
|
|
204
|
+
}
|
|
205
|
+
// Otherwise the namespace is the name of the file that is being imported.
|
|
206
|
+
const lastSlashIndex = fullImport.lastIndexOf('/', closeQuoteIndex);
|
|
207
|
+
if (lastSlashIndex > -1) {
|
|
208
|
+
const fileName = fullImport.slice(lastSlashIndex + 1, closeQuoteIndex)
|
|
209
|
+
// Sass allows for leading underscores to be omitted and it technically supports .scss.
|
|
210
|
+
.replace(/^_|(\.import)?\.scss$|\.import$/g, '');
|
|
211
|
+
// Sass ignores `/index` and infers the namespace as the next segment in the path.
|
|
212
|
+
if (fileName === 'index') {
|
|
213
|
+
const nextSlashIndex = fullImport.lastIndexOf('/', lastSlashIndex - 1);
|
|
214
|
+
if (nextSlashIndex > -1) {
|
|
215
|
+
return fullImport.slice(nextSlashIndex + 1, lastSlashIndex);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
return fileName;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
throw Error(`Could not extract namespace from import "${fullImport}".`);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Replaces variables that have been removed with their values.
|
|
227
|
+
* @param content Content of the file to be migrated.
|
|
228
|
+
* @param variables Mapping between variable names and their values.
|
|
229
|
+
*/
|
|
230
|
+
function replaceRemovedVariables(content, variables) {
|
|
231
|
+
Object.keys(variables).sort(sortLengthDescending).forEach(variableName => {
|
|
232
|
+
// Note that the pattern uses a negative lookahead to exclude
|
|
233
|
+
// variable assignments, because they can't be migrated.
|
|
234
|
+
const regex = new RegExp(`\\$${escapeRegExp(variableName)}(?!\\s+:|:)`, 'g');
|
|
235
|
+
content = content.replace(regex, variables[variableName]);
|
|
236
|
+
});
|
|
237
|
+
return content;
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NjaGVtYXRpY3MvbmctdXBkYXRlL21pZ3JhdGlvbnMvdGhlbWluZy1hcGktdjEyL21pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCxxQ0FRa0I7QUFRbEI7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLE9BQWUsRUFDZixpQkFBeUIsRUFDekIsWUFBb0IsRUFDcEIscUJBQTZCLEVBQzdCLGdCQUF3QjtJQUN6RCxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDbEUsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUV4RCx3RUFBd0U7SUFDeEUseUVBQXlFO0lBQ3pFLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbEYsT0FBTyxHQUFHLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNuRSxPQUFPLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxFQUFFLGlDQUF3QixDQUFDLENBQUM7SUFFckUsc0ZBQXNGO0lBQ3RGLDJGQUEyRjtJQUMzRixtREFBbUQ7SUFDbkQsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNsQyxPQUFPLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxFQUFFLG1DQUEwQixDQUFDLENBQUM7UUFDdkUsT0FBTyxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzNEO0lBRUQsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUM3QixPQUFPLEdB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QyxPQUFPLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBtYXRlcmlhbE1peGlucyxcbiAgbWF0ZXJpYWxGdW5jdGlvbnMsXG4gIG1hdGVyaWFsVmFyaWFibGVzLFxuICBjZGtNaXhpbnMsXG4gIGNka1ZhcmlhYmxlcyxcbiAgcmVtb3ZlZE1hdGVyaWFsVmFyaWFibGVzLFxuICB1bnByZWZpeGVkUmVtb3ZlZFZhcmlhYmxlc1xufSBmcm9tICcuL2NvbmZpZyc7XG5cbi8qKiBUaGUgcmVzdWx0IG9mIGEgc2VhcmNoIGZvciBpbXBvcnRzIGFuZCBuYW1lc3BhY2VzIGluIGEgZmlsZS4gKi9cbmludGVyZmFjZSBEZXRlY3RJbXBvcnRSZXN1bHQge1xuICBpbXBvcnRzOiBzdHJpbmdbXTtcbiAgbmFtZXNwYWNlczogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWlncmF0ZXMgdGhlIGNvbnRlbnQgb2YgYSBmaWxlIHRvIHRoZSBuZXcgdGhlbWluZyBBUEkuIE5vdGUgdGhhdCB0aGlzIG1pZ3JhdGlvbiBpcyB1c2luZyBwbGFpblxuICogc3RyaW5nIG1hbmlwdWxhdGlvbiwgcmF0aGVyIHRoYW4gdGhlIEFTVCBmcm9tIFBvc3RDU1MgYW5kIHRoZSBzY2hlbWF0aWNzIHN0cmluZyBtYW5pcHVsYXRpb25cbiAqIEFQSXMsIGJlY2F1c2UgaXQgYWxsb3dzIHVzIHRvIHJ1biBpdCBpbnNpZGUgZzMgYW5kIHRvIGF2b2lkIGludHJvZHVjaW5nIG5ldyBkZXBlbmRlbmNpZXMuXG4gKiBAcGFyYW0gY29udGVudCBDb250ZW50IG9mIHRoZSBmaWxlLlxuICogQHBhcmFtIG9sZE1hdGVyaWFsUHJlZml4IFByZWZpeCB3aXRoIHdoaWNoIHRoZSBvbGQgTWF0ZXJpYWwgaW1wb3J0cyBzaG91bGQgc3RhcnQuXG4gKiAgIEhhcyB0byBlbmQgd2l0aCBhIHNsYXNoLiBFLmcuIGlmIGBAaW1wb3J0ICd+QGFuZ3VsYXIvbWF0ZXJpYWwvdGhlbWluZydgIHNob3VsZCBiZVxuICogICBtYXRjaGVkLCB0aGUgcHJlZml4IHdvdWxkIGJlIGB+QGFuZ3VsYXIvbWF0ZXJpYWwvYC5cbiAqIEBwYXJhbSBvbGRDZGtQcmVmaXggUHJlZml4IHdpdGggd2hpY2ggdGhlIG9sZCBDREsgaW1wb3J0cyBzaG91bGQgc3RhcnQuXG4gKiAgIEhhcyB0byBlbmQgd2l0aCBhIHNsYXNoLiBFLmcuIGlmIGBAaW1wb3J0ICd+QGFuZ3VsYXIvY2RrL292ZXJsYXknYCBzaG91bGQgYmVcbiAqICAgbWF0Y2hlZCwgdGhlIHByZWZpeCB3b3VsZCBiZSBgfkBhbmd1bGFyL2Nkay9gLlxuICogQHBhcmFtIG5ld01hdGVyaWFsSW1wb3J0UGF0aCBOZXcgaW1wb3J0IHRvIHRoZSBNYXRlcmlhbCB0aGVtaW5nIEFQSSAoZS5nLiBgfkBhbmd1bGFyL21hdGVyaWFsYCkuXG4gKiBAcGFyYW0gbmV3Q2RrSW1wb3J0UGF0aCBOZXcgaW1wb3J0IHRvIHRoZSBDREsgU2FzcyBBUElzIChlLmcuIGB+QGFuZ3VsYXIvY2RrYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtaWdyYXRlRmlsZUNvbnRlbnQoY29udGVudDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRNYXRlcmlhbFByZWZpeDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRDZGtQcmVmaXg6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3TWF0ZXJpYWxJbXBvcnRQYXRoOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Nka0ltcG9ydFBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGVyaWFsUmVzdWx0cyA9IGRldGVjdEltcG9ydHMoY29udGVudCwgb2xkTWF0ZXJpYWxQcmVmaXgpO1xuICBjb25zdCBjZGtSZXN1bHRzID0gZGV0ZWN0SW1wb3J0cyhjb250ZW50LCBvbGRDZGtQcmVmaXgpO1xuXG4gIC8vIFRyeSB0byBtaWdyYXRlIHRoZSBzeW1ib2xzIGV2ZW4gaWYgdGhlcmUgYXJlIG5vIGltcG9ydHMuIFRoaXMgaXMgdXNlZFxuICAvLyB0byBjb3ZlciB0aGUgY2FzZSB3aGVyZSB0aGUgQ29tcG9uZW50cyBzeW1ib2xzIHdlcmUgdXNlZCB0cmFuc2l0aXZlbHkuXG4gIGNvbnRlbnQgPSBtaWdyYXRlTWF0ZXJpYWxTeW1ib2xzKGNvbnRlbnQsIG5ld01hdGVyaWFsSW1wb3J0UGF0aCwgbWF0ZXJpYWxSZXN1bHRzKTtcbiAgY29udGVudCA9IG1pZ3JhdGVDZGtTeW1ib2xzKGNvbnRlbnQsIG5ld0Nka0ltcG9ydFBhdGgsIGNka1Jlc3VsdHMpO1xuICBjb250ZW50ID0gcmVwbGFjZVJlbW92ZWRWYXJpYWJsZXMoY29udGVudCwgcmVtb3ZlZE1hdGVyaWFsVmFyaWFibGVzKTtcblxuICAvLyBXZSBjYW4gYXNzdW1lIHRoYXQgdGhlIG1pZ3JhdGlvbiBoYXMgdGFrZW4gY2FyZSBvZiBhbnkgQ29tcG9uZW50cyBzeW1ib2xzIHRoYXQgd2VyZVxuICAvLyBpbXBvcnRlZCB0cmFuc2l0aXZlbHkgc28gd2UgY2FuIGFsd2F5cyBkcm9wIHRoZSBvbGQgaW1wb3J0cy4gV2UgYWxzbyBhc3N1bWUgdGhhdCBpbXBvcnRzXG4gIC8vIHRvIHRoZSBuZXcgZW50cnkgcG9pbnRzIGhhdmUgYmVlbiBhZGRlZCBhbHJlYWR5LlxuICBpZiAobWF0ZXJpYWxSZXN1bHRzLmltcG9ydHMubGVuZ3RoKSB7XG4gICAgY29udGVudCA9IHJlcGxhY2VSZW1vdmVkVmFyaWFibGVzKGNvbnRlbnQsIHVucHJlZml4ZWRSZW1vdmVkVmFyaWFibGVzKTtcbiAgICBjb250ZW50ID0gcmVtb3ZlU3RyaW5ncyhjb250ZW50LCBtYXRlcmlhbFJlc3VsdHMuaW1wb3J0cyk7XG4gIH1cblxuICBpZiAoY2RrUmVzdWx0cy5pbXBvcnRzLmxlbmd0aCkge1xuICAgIGNvbnRlbnQgPSByZW1vdmVTdHJpbmdzKGNvbnRlbnQsIGNka1Jlc3VsdHMuaW1wb3J0cyk7XG4gIH1cblxuICByZXR1cm4gY29udGVudDtcbn1cblxuLyoqXG4gKiBDb3VudHMgdGhlIG51bWJlciBvZiBpbXBvcnRzIHdpdGggYSBzcGVjaWZpYyBwcmVmaXggYW5kIGV4dHJhY3RzIHRoZWlyIG5hbWVzcGFjZXMuXG4gKiBAcGFyYW0gY29udGVudCBGaWxlIGNvbnRlbnQgaW4gd2hpY2ggdG8gbG9vayBmb3IgaW1wb3J0cy5cbiAqIEBwYXJhbSBwcmVmaXggUHJlZml4IHRoYXQgdGhlIGltcG9ydHMgc2hvdWxkIHN0YXJ0IHdpdGguXG4gKi9cbmZ1bmN0aW9uIGRldGVjdEltcG9ydHMoY29udGVudDogc3RyaW5nLCBwcmVmaXg6IHN0cmluZyk6IERldGVjdEltcG9ydFJlc3VsdCB7XG4gIGlmIChwcmVmaXhbcHJlZml4Lmxlbmd0aCAtIDFdICE9PSAnLycpIHtcbiAgICAvLyBTb21lIG9mIHRoZSBsb2dpYyBmdXJ0aGVyIGRvd24gbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGltcG9ydCBkZXB0aC5cbiAgICB0aHJvdyBFcnJvcihgUHJlZml4IFwiJHtwcmVmaXh9XCIgaGFzIHRvIGVuZCBpbiBhIHNsYXNoLmApO1xuICB9XG5cbiAgLy8gTGlzdCBvZiBgQHVzZWAgbmFtZXNwYWNlcyBmcm9tIHdoaWNoIEFuZ3VsYXIgQ0RLL01hdGVyaWFsIEFQSXMgbWF5IGJlIHJlZmVyZW5jZWQuXG4gIC8vIFNpbmNlIHdlIGtub3cgdGhhdCB0aGUgbGlicmFyeSBkb2Vzbid0IGhhdmUgYW55IG5hbWUgY29sbGlzaW9ucywgd2UgY2FuIHRyZWF0IGFsbCBvZiB0aGVzZVxuICAvLyBuYW1lc3BhY2VzIGFzIGVxdWl2YWxlbnQuXG4gIGNvbnN0IG5hbWVzcGFjZXM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGltcG9ydHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKGBAKGltcG9ydHx1c2UpICtbJ1wiXSR7ZXNjYXBlUmVnRXhwKHByZWZpeCl9LipbJ1wiXS4qOz9cXG5gLCAnZycpO1xuICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGwgPSBudWxsO1xuXG4gIHdoaWxlIChtYXRjaCA9IHBhdHRlcm4uZXhlYyhjb250ZW50KSkge1xuICAgIGNvbnN0IFtmdWxsSW1wb3J0LCB0eXBlXSA9IG1hdGNoO1xuXG4gICAgaWYgKHR5cGUgPT09ICd1c2UnKSB7XG4gICAgICBjb25zdCBuYW1lc3BhY2UgPSBleHRyYWN0TmFtZXNwYWNlRnJvbVVzZVN0YXRlbWVudChmdWxsSW1wb3J0KTtcblxuICAgICAgaWYgKG5hbWVzcGFjZXMuaW5kZXhPZihuYW1lc3BhY2UpID09PSAtMSkge1xuICAgICAgICBuYW1lc3BhY2VzLnB1c2gobmFtZXNwYWNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbXBvcnRzLnB1c2goZnVsbEltcG9ydCk7XG4gIH1cblxuICByZXR1cm4ge2ltcG9ydHMsIG5hbWVzcGFjZXN9O1xufVxuXG4vKiogTWlncmF0ZXMgdGhlIE1hdGVyaWFsIHN5bWJvbHMgaW4gYSBmaWxlLiAqL1xuZnVuY3Rpb24gbWlncmF0ZU1hdGVyaWFsU3ltYm9scyhjb250ZW50OiBzdHJpbmcsIGltcG9ydFBhdGg6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZWN0ZWRJbXBvcnRzOiBEZXRlY3RJbXBvcnRSZXN1bHQpOiBzdHJpbmcge1xuICBjb25zdCBpbml0aWFsQ29udGVudCA9IGNvbnRlbnQ7XG4gIGNvbnN0IG5hbWVzcGFjZSA9ICdtYXQnO1xuXG4gIC8vIE1pZ3JhdGUgdGhlIG1peGlucy5cbiAgY29udGVudCA9IHJlbmFtZVN5bWJvbHMoY29udGVudCwgbWF0ZXJpYWxNaXhpbnMsIGRldGVjdGVkSW1wb3J0cy5uYW1lc3BhY2VzLCBtaXhpbktleUZvcm1hdHRlcixcbiAgICBnZXRNaXhpblZhbHVlRm9ybWF0dGVyKG5hbWVzcGFjZSkpO1xuXG4gIC8vIE1pZ3JhdGUgdGhlIGZ1bmN0aW9ucy5cbiAgY29udGVudCA9IHJlbmFtZVN5bWJvbHMoY29udGVudCwgbWF0ZXJpYWxGdW5jdGlvbnMsIGRldGVjdGVkSW1wb3J0cy5uYW1lc3BhY2VzLFxuICAgIGZ1bmN0aW9uS2V5Rm9ybWF0dGVyLCBnZXRGdW5jdGlvblZhbHVlRm9ybWF0dGVyKG5hbWVzcGFjZSkpO1xuXG4gIC8vIE1pZ3JhdGUgdGhlIHZhcmlhYmxlcy5cbiAgY29udGVudCA9IHJlbmFtZVN5bWJvbHMoY29udGVudCwgbWF0ZXJpYWxWYXJpYWJsZXMsIGRldGVjdGVkSW1wb3J0cy5uYW1lc3BhY2VzLFxuICAgIHZhcmlhYmxlS2V5Rm9ybWF0dGVyLCBnZXRWYXJpYWJsZVZhbHVlRm9ybWF0dGVyKG5hbWVzcGFjZSkpO1xuXG4gIGlmIChjb250ZW50ICE9PSBpbml0aWFsQ29udGVudCkge1xuICAgIC8vIEFkZCBhbiBpbXBvcnQgdG8gdGhlIG5ldyBBUEkgb25seSBpZiBhbnkgb2YgdGhlIEFQSXMgd2VyZSBiZWluZyB1c2VkLlxuICAgIGNvbnRlbnQgPSBpbnNlcnRVc2VTdGF0ZW1lbnQoY29udGVudCwgaW1wb3J0UGF0aCwgZGV0ZWN0ZWRJbXBvcnRzLmltcG9ydHMsIG5hbWVzcGFjZSk7XG4gIH1cblxuICByZXR1cm4gY29udGVudDtcbn1cblxuLyoqIE1pZ3JhdGVzIHRoZSBDREsgc3ltYm9scyBpbiBhIGZpbGUuICovXG5mdW5jdGlvbiBtaWdyYXRlQ2RrU3ltYm9scyhjb250ZW50OiBzdHJpbmcsIGltcG9ydFBhdGg6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGVjdGVkSW1wb3J0czogRGV0ZWN0SW1wb3J0UmVzdWx0KTogc3RyaW5nIHtcbiAgY29uc3QgaW5pdGlhbENvbnRlbnQgPSBjb250ZW50O1xuICBjb25zdCBuYW1lc3BhY2UgPSAnY2RrJztcblxuICAvLyBNaWdyYXRlIHRoZSBtaXhpbnMuXG4gIGNvbnRlbnQgPSByZW5hbWVTeW1ib2xzKGNvbnRlbnQsIGNka01peGlucywgZGV0ZWN0ZWRJbXBvcnRzLm5hbWVzcGFjZXMsIG1peGluS2V5Rm9ybWF0dGVyLFxuICAgIGdldE1peGluVmFsdWVGb3JtYXR0ZXIobmFtZXNwYWNlKSk7XG5cbiAgLy8gTWlncmF0ZSB0aGUgdmFyaWFibGVzLlxuICBjb250ZW50ID0gcmVuYW1lU3ltYm9scyhjb250ZW50LCBjZGtWYXJpYWJsZXMsIGRldGVjdGVkSW1wb3J0cy5uYW1lc3BhY2VzLCB2YXJpYWJsZUtleUZvcm1hdHRlcixcbiAgICBnZXRWYXJpYWJsZVZhbHVlRm9ybWF0dGVyKG5hbWVzcGFjZSkpO1xuXG4gIC8vIFByZXZpb3VzbHkgdGhlIENESyBzeW1ib2xzIHdlcmUgZXhwb3NlZCB0aHJvdWdoIGBtYXRlcmlhbC90aGVtaW5nYCwgYnV0IG5vdyB3ZSBoYXZlIGFcbiAgLy8gZGVkaWNhdGVkIGVudHJ5cG9pbnQgZm9yIHRoZSBDREsuIE9ubHkgYWRkIGFuIGltcG9ydCBmb3IgaXQgaWYgYW55IG9mIHRoZSBzeW1ib2xzIGFyZSB1c2VkLlxuICBpZiAoY29udGVudCAhPT0gaW5pdGlhbENvbnRlbnQpIHtcbiAgICBjb250ZW50ID0gaW5zZXJ0VXNlU3RhdGVtZW50KGNvbnRlbnQsIGltcG9ydFBhdGgsIGRldGVjdGVkSW1wb3J0cy5pbXBvcnRzLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbi8qKlxuICogUmVuYW1lcyBhbGwgU2FzcyBzeW1ib2xzIGluIGEgZmlsZSBiYXNlZCBvbiBhIHByZS1kZWZpbmVkIG1hcHBpbmcuXG4gKiBAcGFyYW0gY29udGVudCBDb250ZW50IG9mIGEgZmlsZSB0byBiZSBtaWdyYXRlZC5cbiAqIEBwYXJhbSBtYXBwaW5nIE1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHRoZWlyIHJlcGxhY2VtZW50cy5cbiAqIEBwYXJhbSBuYW1lc3BhY2VzIE5hbWVzIHRvIGl0ZXJhdGUgb3ZlciBhbmQgcGFzcyB0byBnZXRLZXlQYXR0ZXJuLlxuICogQHBhcmFtIGdldEtleVBhdHRlcm4gRnVuY3Rpb24gdXNlZCB0byB0dXJuIGVhY2ggb2YgdGhlIGtleXMgaW50byBhIHJlZ2V4LlxuICogQHBhcmFtIGZvcm1hdFZhbHVlIEZvcm1hdHMgdGhlIHZhbHVlIHRoYXQgd2lsbCByZXBsYWNlIGFueSBtYXRjaGVzIG9mIHRoZSBwYXR0ZXJuIHJldHVybmVkIGJ5XG4gKiAgYGdldEtleVBhdHRlcm5gLlxuICovXG5mdW5jdGlvbiByZW5hbWVTeW1ib2xzKGNvbnRlbnQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlczogc3RyaW5nW10sXG4gICAgICAgICAgICAgICAgICAgICAgIGdldEtleVBhdHRlcm46IChuYW1lc3BhY2U6IHN0cmluZ3xudWxsLCBrZXk6IHN0cmluZykgPT4gUmVnRXhwLFxuICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRWYWx1ZTogKGtleTogc3RyaW5nKSA9PiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBUaGUgbnVsbCBhdCB0aGUgZW5kIGlzIHNvIHRoYXQgd2UgbWFrZSBvbmUgbGFzdCBwYXNzIHRvIGNvdmVyIG5vbi1uYW1lc3BhY2VkIHN5bWJvbHMuXG4gIFsuLi5uYW1lc3BhY2VzLnNsaWNlKCkuc29ydChzb3J0TGVuZ3RoRGVzY2VuZGluZyksIG51bGxdLmZvckVhY2gobmFtZXNwYWNlID0+IHtcbiAgICAvLyBNaWdyYXRlIHRoZSBsb25nZXN0IGtleXMgZmlyc3Qgc28gdGhhdCBvdXIgcmVnZXgtYmFzZWQgcmVwbGFjZW1lbnRzIGRvbid0IGFjY2lkZW50YWxseVxuICAgIC8vIGNhcHR1cmUga2V5cyB0aGF0IGNvbnRhaW4gb3RoZXIga2V5cy4gRS5nLiBgJG1hdC1ibHVlYCBpcyBjb250YWluZWQgd2l0aGluIGAkbWF0LWJsdWUtZ3JleWAuXG4gICAgT2JqZWN0LmtleXMobWFwcGluZykuc29ydChzb3J0TGVuZ3RoRGVzY2VuZGluZykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3QgcGF0dGVybiA9IGdldEtleVBhdHRlcm4obmFtZXNwYWNlLCBrZXkpO1xuXG4gICAgICAvLyBTYW5pdHkgY2hlY2sgc2luY2Ugbm9uLWdsb2JhbCByZWdleGVzIHdpbGwgb25seSByZXBsYWNlIHRoZSBmaXJzdCBtYXRjaC5cbiAgICAgIGlmIChwYXR0ZXJuLmZsYWdzLmluZGV4T2YoJ2cnKSA9PT0gLTEpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ1JlcGxhY2VtZW50IHBhdHRlcm4gbXVzdCBiZSBnbG9iYWwuJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UocGF0dGVybiwgZm9ybWF0VmFsdWUobWFwcGluZ1trZXldKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBjb250ZW50O1xufVxuXG4vKiogSW5zZXJ0cyBhbiBgQHVzZWAgc3RhdGVtZW50IGluIGEgc3RyaW5nLiAqL1xuZnVuY3Rpb24gaW5zZXJ0VXNlU3RhdGVtZW50KGNvbnRlbnQ6IHN0cmluZywgaW1wb3J0UGF0aDogc3RyaW5nLCBpbXBvcnRzVG9JZ25vcmU6IHN0cmluZ1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gSWYgdGhlIGNvbnRlbnQgYWxyZWFkeSBoYXMgdGhlIGBAdXNlYCBpbXBvcnQsIHdlIGRvbid0IG5lZWQgdG8gYWRkIGFueXRoaW5nLlxuICBjb25zdCBhbHJlYWR5SW1wb3J0ZWRQYXR0ZXJuID0gbmV3IFJlZ0V4cChgQHVzZSArWydcIl0ke2ltcG9ydFBhdGh9WydcIl1gLCAnZycpO1xuICBpZiAoYWxyZWFkeUltcG9ydGVkUGF0dGVybi50ZXN0KGNvbnRlbnQpKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cblxuICAvLyBXZSB3YW50IHRvIGZpbmQgdGhlIGZpcnN0IGltcG9ydCB0aGF0IGlzbid0IGluIHRoZSBsaXN0IG9mIGlnbm9yZWQgaW1wb3J0cyBvciBmaW5kIG5vdGhpbmcsXG4gIC8vIGJlY2F1c2UgdGhlIGltcG9ydHMgYmVpbmcgcmVwbGFjZWQgbWlnaHQgYmUgdGhlIG9ubHkgb25lcyBpbiB0aGUgZmlsZSBhbmQgdGhleSBjYW4gYmUgZnVydGhlclxuICAvLyBkb3duLiBBbiBlYXN5IHdheSB0byBkbyB0aGlzIGlzIHRvIHJlcGxhY2UgdGhlIGltcG9ydHMgd2l0aCBhIHJhbmRvbSBjaGFyYWN0ZXIgYW5kIHJ1blxuICAvLyBgaW5kZXhPZmAgb24gdGhlIHJlc3VsdC4gVGhpcyBpc24ndCB0aGUgbW9zdCBlZmZpY2llbnQgd2F5IG9mIGRvaW5nIGl0LCBidXQgaXQncyBtb3JlIGNvbXBhY3RcbiAgLy8gYW5kIGl0IGFsbG93cyB1cyB0byBlYXNpbHkgZGVhbCB3aXRoIHRoaW5ncyBsaWtlIGNvbW1lbnQgbm9kZXMuXG4gIGNvbnN0IGNvbnRlbnRUb1NlYXJjaCA9IGltcG9ydHNUb0lnbm9yZS5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50KSA9PlxuICAgIGFjY3VtdWxhdG9yLnJlcGxhY2UoY3VycmVudCwgJ+KXrCcucmVwZWF0KGN1cnJlbnQubGVuZ3RoKSksIGNvbnRlbnQpO1xuXG4gIC8vIFNhc3MgaGFzIGEgbGltaXRhdGlvbiB0aGF0IGFsbCBgQHVzZWAgZGVjbGFyYXRpb25zIGhhdmUgdG8gY29tZSBiZWZvcmUgYEBpbXBvcnRgIHNvIHdlIGhhdmVcbiAgLy8gdG8gZmluZCB0aGUgZmlyc3QgaW1wb3J0IGFuZCBpbnNlcnQgYmVmb3JlIGl0LiBUZWNobmljYWxseSB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCBhbHdheXNcbiAgLy8gaW5zZXJ0aW5nIGF0IDAsIGJ1dCB0aGUgZmlsZSBtYXkgc3RhcnQgd2l0aCBzb21ldGhpbmcgbGlrZSBhIGxpY2Vuc2UgaGVhZGVyLlxuICBjb25zdCBuZXdJbXBvcnRJbmRleCA9IE1hdGgubWF4KDAsIGNvbnRlbnRUb1NlYXJjaC5pbmRleE9mKCdAaW1wb3J0ICcpKTtcblxuICByZXR1cm4gY29udGVudC5zbGljZSgwLCBuZXdJbXBvcnRJbmRleCkgKyBgQHVzZSAnJHtpbXBvcnRQYXRofScgYXMgJHtuYW1lc3BhY2V9O1xcbmAgK1xuICAgICAgICAgY29udGVudC5zbGljZShuZXdJbXBvcnRJbmRleCk7XG59XG5cbi8qKiBGb3JtYXRzIGEgbWlncmF0aW9uIGtleSBhcyBhIFNhc3MgbWl4aW4gaW52b2NhdGlvbi4gKi9cbmZ1bmN0aW9uIG1peGluS2V5Rm9ybWF0dGVyKG5hbWVzcGFjZTogc3RyaW5nfG51bGwsIG5hbWU6IHN0cmluZyk6IFJlZ0V4cCB7XG4gIC8vIE5vdGUgdGhhdCBhZGRpbmcgYSBgKGAgYXQgdGhlIGVuZCBvZiB0aGUgcGF0dGVybiB3b3VsZCBiZSBtb3JlIGFjY3VyYXRlLCBidXQgbWl4aW5cbiAgLy8gaW52b2NhdGlvbnMgZG9uJ3QgbmVjZXNzYXJpbHkgaGF2ZSB0byBpbmNsdWRlIHRoZSBwYXJlbnRoZXNlcy4gV2UgY291bGQgYWRkIGBbKDtdYCxcbiAgLy8gYnV0IHRoZW4gd2Ugd29uJ3Qga25vdyB3aGljaCBjaGFyYWN0ZXIgdG8gaW5jbHVkZSBpbiB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nLlxuICByZXR1cm4gbmV3IFJlZ0V4cChgQGluY2x1ZGUgKyR7ZXNjYXBlUmVnRXhwKChuYW1lc3BhY2UgPyBuYW1lc3BhY2UgKyAnLicgOiAnJykgKyBuYW1lKX1gLCAnZycpO1xufVxuXG4vKiogUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gZm9ybWF0IGEgU2FzcyBtaXhpbiByZXBsYWNlbWVudC4gKi9cbmZ1bmN0aW9uIGdldE1peGluVmFsdWVGb3JtYXR0ZXIobmFtZXNwYWNlOiBzdHJpbmcpOiAobmFtZTogc3RyaW5nKSA9PiBzdHJpbmcge1xuICAvLyBOb3RlIHRoYXQgYWRkaW5nIGEgYChgIGF0IHRoZSBlbmQgb2YgdGhlIHBhdHRlcm4gd291bGQgYmUgbW9yZSBhY2N1cmF0ZSxcbiAgLy8gYnV0IG1peGluIGludm9jYXRpb25zIGRvbid0IG5lY2Vzc2FyaWx5IGhhdmUgdG8gaW5jbHVkZSB0aGUgcGFyZW50aGVzZXMuXG4gIHJldHVybiBuYW1lID0+IGBAaW5jbHVkZSAke25hbWVzcGFjZX0uJHtuYW1lfWA7XG59XG5cbi8qKiBGb3JtYXRzIGEgbWlncmF0aW9uIGtleSBhcyBhIFNhc3MgZnVuY3Rpb24gaW52b2NhdGlvbi4gKi9cbmZ1bmN0aW9uIGZ1bmN0aW9uS2V5Rm9ybWF0dGVyKG5hbWVzcGFjZTogc3RyaW5nfG51bGwsIG5hbWU6IHN0cmluZyk6IFJlZ0V4cCB7XG4gIHJldHVybiBuZXcgUmVnRXhwKGVzY2FwZVJlZ0V4cChgJHtuYW1lc3BhY2UgPyBuYW1lc3BhY2UgKyAnLicgOiAnJ30ke25hbWV9KGApLCAnZycpO1xufVxuXG4vKiogUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gZm9ybWF0IGEgU2FzcyBmdW5jdGlvbiByZXBsYWNlbWVudC4gKi9cbmZ1bmN0aW9uIGdldEZ1bmN0aW9uVmFsdWVGb3JtYXR0ZXIobmFtZXNwYWNlOiBzdHJpbmcpOiAobmFtZTogc3RyaW5nKSA9PiBzdHJpbmcge1xuICByZXR1cm4gbmFtZSA9PiBgJHtuYW1lc3BhY2V9LiR7bmFtZX0oYDtcbn1cblxuLyoqIEZvcm1hdHMgYSBtaWdyYXRpb24ga2V5IGFzIGEgU2FzcyB2YXJpYWJsZS4gKi9cbmZ1bmN0aW9uIHZhcmlhYmxlS2V5Rm9ybWF0dGVyKG5hbWVzcGFjZTogc3RyaW5nfG51bGwsIG5hbWU6IHN0cmluZyk6IFJlZ0V4cCB7XG4gIHJldHVybiBuZXcgUmVnRXhwKGVzY2FwZVJlZ0V4cChgJHtuYW1lc3BhY2UgPyBuYW1lc3BhY2UgKyAnLicgOiAnJ30kJHtuYW1lfWApLCAnZycpO1xufVxuXG4vKiogUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gZm9ybWF0IGEgU2FzcyB2YXJpYWJsZSByZXBsYWNlbWVudC4gKi9cbmZ1bmN0aW9uIGdldFZhcmlhYmxlVmFsdWVGb3JtYXR0ZXIobmFtZXNwYWNlOiBzdHJpbmcpOiAobmFtZTogc3RyaW5nKSA9PiBzdHJpbmcge1xuICByZXR1cm4gbmFtZSA9PiBgJHtuYW1lc3BhY2V9LiQke25hbWV9YDtcbn1cblxuLyoqIEVzY2FwZXMgc3BlY2lhbCByZWdleCBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nLiAqL1xuZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oWy4qKz9ePSE6JHt9KCl8W1xcXVxcL1xcXFxdKS9nLCAnXFxcXCQxJyk7XG59XG5cbi8qKiBVc2VkIHdpdGggYEFycmF5LnByb3RvdHlwZS5zb3J0YCB0byBvcmRlciBzdHJpbmdzIGluIGRlc2NlbmRpbmcgbGVuZ3RoLiAqL1xuZnVuY3Rpb24gc29ydExlbmd0aERlc2NlbmRpbmcoYTogc3RyaW5nLCBiOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGIubGVuZ3RoIC0gYS5sZW5ndGg7XG59XG5cbi8qKiBSZW1vdmVzIGFsbCBzdHJpbmdzIGZyb20gYW5vdGhlciBzdHJpbmcuICovXG5mdW5jdGlvbiByZW1vdmVTdHJpbmdzKGNvbnRlbnQ6IHN0cmluZywgdG9SZW1vdmU6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRvUmVtb3ZlXG4gICAgLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnQpID0+IGFjY3VtdWxhdG9yLnJlcGxhY2UoY3VycmVudCwgJycpLCBjb250ZW50KVxuICAgIC5yZXBsYWNlKC9eXFxzKy8sICcnKTtcbn1cblxuLyoqIFBhcnNlcyBvdXQgdGhlIG5hbWVzcGFjZSBmcm9tIGEgU2FzcyBgQHVzZWAgc3RhdGVtZW50LiAqL1xuZnVuY3Rpb24gZXh0cmFjdE5hbWVzcGFjZUZyb21Vc2VTdGF0ZW1lbnQoZnVsbEltcG9ydDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgY2xvc2VRdW90ZUluZGV4ID0gTWF0aC5tYXgoZnVsbEltcG9ydC5sYXN0SW5kZXhPZihgXCJgKSwgZnVsbEltcG9ydC5sYXN0SW5kZXhPZihgJ2ApKTtcblxuICBpZiAoY2xvc2VRdW90ZUluZGV4ID4gLTEpIHtcbiAgICBjb25zdCBhc0V4cHJlc3Npb24gPSAnYXMgJztcbiAgICBjb25zdCBhc0luZGV4ID0gZnVsbEltcG9ydC5pbmRleE9mKGFzRXhwcmVzc2lvbiwgY2xvc2VRdW90ZUluZGV4KTtcblxuICAgIC8vIElmIHdlIGZvdW5kIGFuIGAgYXMgYCBleHByZXNzaW9uLCB3ZSBjb25zaWRlciB0aGUgcmVzdCBvZiB0aGUgdGV4dCBhcyB0aGUgbmFtZXNwYWNlLlxuICAgIGlmIChhc0luZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBmdWxsSW1wb3J0LnNsaWNlKGFzSW5kZXggKyBhc0V4cHJlc3Npb24ubGVuZ3RoKS5zcGxpdCgnOycpWzBdLnRyaW0oKTtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UgdGhlIG5hbWVzcGFjZSBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0aGF0IGlzIGJlaW5nIGltcG9ydGVkLlxuICAgIGNvbnN0IGxhc3RTbGFzaEluZGV4ID0gZnVsbEltcG9ydC5sYXN0SW5kZXhPZignLycsIGNsb3NlUXVvdGVJbmRleCk7XG5cbiAgICBpZiAobGFzdFNsYXNoSW5kZXggPiAtMSkge1xuICAgICAgY29uc3QgZmlsZU5hbWUgPSBmdWxsSW1wb3J0LnNsaWNlKGxhc3RTbGFzaEluZGV4ICsgMSwgY2xvc2VRdW90ZUluZGV4KVxuICAgICAgICAvLyBTYXNzIGFsbG93cyBmb3IgbGVhZGluZyB1bmRlcnNjb3JlcyB0byBiZSBvbWl0dGVkIGFuZCBpdCB0ZWNobmljYWxseSBzdXBwb3J0cyAuc2Nzcy5cbiAgICAgICAgLnJlcGxhY2UoL15ffChcXC5pbXBvcnQpP1xcLnNjc3MkfFxcLmltcG9ydCQvZywgJycpO1xuXG4gICAgICAvLyBTYXNzIGlnbm9yZXMgYC9pbmRleGAgYW5kIGluZmVycyB0aGUgbmFtZXNwYWNlIGFzIHRoZSBuZXh0IHNlZ21lbnQgaW4gdGhlIHBhdGguXG4gICAgICBpZiAoZmlsZU5hbWUgPT09ICdpbmRleCcpIHtcbiAgICAgICAgY29uc3QgbmV4dFNsYXNoSW5kZXggPSBmdWxsSW1wb3J0Lmxhc3RJbmRleE9mKCcvJywgbGFzdFNsYXNoSW5kZXggLSAxKTtcblxuICAgICAgICBpZiAobmV4dFNsYXNoSW5kZXggPiAtMSkge1xuICAgICAgICAgIHJldHVybiBmdWxsSW1wb3J0LnNsaWNlKG5leHRTbGFzaEluZGV4ICsgMSwgbGFzdFNsYXNoSW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmlsZU5hbWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgRXJyb3IoYENvdWxkIG5vdCBleHRyYWN0IG5hbWVzcGFjZSBmcm9tIGltcG9ydCBcIiR7ZnVsbEltcG9ydH1cIi5gKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyB2YXJpYWJsZXMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZCB3aXRoIHRoZWlyIHZhbHVlcy5cbiAqIEBwYXJhbSBjb250ZW50IENvbnRlbnQgb2YgdGhlIGZpbGUgdG8gYmUgbWlncmF0ZWQuXG4gKiBAcGFyYW0gdmFyaWFibGVzIE1hcHBpbmcgYmV0d2VlbiB2YXJpYWJsZSBuYW1lcyBhbmQgdGhlaXIgdmFsdWVzLlxuICovXG5mdW5jdGlvbiByZXBsYWNlUmVtb3ZlZFZhcmlhYmxlcyhjb250ZW50OiBzdHJpbmcsIHZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyB7XG4gIE9iamVjdC5rZXlzKHZhcmlhYmxlcykuc29ydChzb3J0TGVuZ3RoRGVzY2VuZGluZykuZm9yRWFjaCh2YXJpYWJsZU5hbWUgPT4ge1xuICAgIC8vIE5vdGUgdGhhdCB0aGUgcGF0dGVybiB1c2VzIGEgbmVnYXRpdmUgbG9va2FoZWFkIHRvIGV4Y2x1ZGVcbiAgICAvLyB2YXJpYWJsZSBhc3NpZ25tZW50cywgYmVjYXVzZSB0aGV5IGNhbid0IGJlIG1pZ3JhdGVkLlxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXFxcXCQke2VzY2FwZVJlZ0V4cCh2YXJpYWJsZU5hbWUpfSg/IVxcXFxzKzp8OilgLCAnZycpO1xuICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UocmVnZXgsIHZhcmlhYmxlc1t2YXJpYWJsZU5hbWVdKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG4iXX0=
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.io/license
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.ThemingApiMigration = void 0;
|
|
11
|
+
const core_1 = require("@angular-devkit/core");
|
|
12
|
+
const schematics_1 = require("@angular/cdk/schematics");
|
|
13
|
+
const migration_1 = require("./migration");
|
|
14
|
+
/** Migration that switches all Sass files using Material theming APIs to `@use`. */
|
|
15
|
+
class ThemingApiMigration extends schematics_1.DevkitMigration {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this.enabled = this.targetVersion === schematics_1.TargetVersion.V12;
|
|
19
|
+
}
|
|
20
|
+
visitStylesheet(stylesheet) {
|
|
21
|
+
if (core_1.extname(stylesheet.filePath) === '.scss') {
|
|
22
|
+
const content = stylesheet.content;
|
|
23
|
+
const migratedContent = content ? migration_1.migrateFileContent(content, '~@angular/material/', '~@angular/cdk/', '~@angular/material', '~@angular/cdk') : content;
|
|
24
|
+
if (migratedContent && migratedContent !== content) {
|
|
25
|
+
this.fileSystem.edit(stylesheet.filePath)
|
|
26
|
+
.remove(0, stylesheet.content.length)
|
|
27
|
+
.insertLeft(0, migratedContent);
|
|
28
|
+
ThemingApiMigration.migratedFileCount++;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** Logs out the number of migrated files at the end of the migration. */
|
|
33
|
+
static globalPostMigration(_tree, context) {
|
|
34
|
+
const count = ThemingApiMigration.migratedFileCount;
|
|
35
|
+
if (count > 0) {
|
|
36
|
+
context.logger.info(`Migrated ${count === 1 ? `1 file` : `${count} files`} to the ` +
|
|
37
|
+
`new Angular Material theming API.`);
|
|
38
|
+
ThemingApiMigration.migratedFileCount = 0;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.ThemingApiMigration = ThemingApiMigration;
|
|
43
|
+
/** Number of files that have been migrated. */
|
|
44
|
+
ThemingApiMigration.migratedFileCount = 0;
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWluZy1hcGktbWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NjaGVtYXRpY3MvbmctdXBkYXRlL21pZ3JhdGlvbnMvdGhlbWluZy1hcGktdjEyL3RoZW1pbmctYXBpLW1pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCwrQ0FBNkM7QUFFN0Msd0RBQXlGO0FBQ3pGLDJDQUErQztBQUUvQyxvRkFBb0Y7QUFDcEYsTUFBYSxtQkFBb0IsU0FBUSw0QkFBcUI7SUFBOUQ7O1FBSUUsWUFBTyxHQUFHLElBQUksQ0FBQyxhQUFhLEtBQUssMEJBQWEsQ0FBQyxHQUFHLENBQUM7SUEyQnJELENBQUM7SUF6QkMsZUFBZSxDQUFDLFVBQTRCO1FBQzFDLElBQUksY0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxPQUFPLEVBQUU7WUFDNUMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUNuQyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUFrQixDQUFDLE9BQU8sRUFDMUQscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUU1RixJQUFJLGVBQWUsSUFBSSxlQUFlLEtBQUssT0FBTyxFQUFFO2dCQUNsRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO3FCQUN0QyxNQUFNLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO3FCQUNwQyxVQUFVLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO2dCQUNsQyxtQkFBbUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2FBQ3pDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQseUVBQXlFO0lBQ3pFLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFjLEVBQUUsT0FBeUI7UUFDbEUsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsaUJBQWlCLENBQUM7UUFFcEQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ2IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxRQUFRLFVBQVU7Z0JBQy9ELG1DQUFtQyxDQUFDLENBQUM7WUFDekQsbUJBQW1CLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1NBQzNDO0lBQ0gsQ0FBQzs7QUE5Qkgsa0RBK0JDO0FBOUJDLCtDQUErQztBQUN4QyxxQ0FBaUIsR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtleHRuYW1lfSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQge1NjaGVtYXRpY0NvbnRleHR9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJztcbmltcG9ydCB7RGV2a2l0TWlncmF0aW9uLCBSZXNvbHZlZFJlc291cmNlLCBUYXJnZXRWZXJzaW9ufSBmcm9tICdAYW5ndWxhci9jZGsvc2NoZW1hdGljcyc7XG5pbXBvcnQge21pZ3JhdGVGaWxlQ29udGVudH0gZnJvbSAnLi9taWdyYXRpb24nO1xuXG4vKiogTWlncmF0aW9uIHRoYXQgc3dpdGNoZXMgYWxsIFNhc3MgZmlsZXMgdXNpbmcgTWF0ZXJpYWwgdGhlbWluZyBBUElzIHRvIGBAdXNlYC4gKi9cbmV4cG9ydCBjbGFzcyBUaGVtaW5nQXBpTWlncmF0aW9uIGV4dGVuZHMgRGV2a2l0TWlncmF0aW9uPG51bGw+IHtcbiAgLyoqIE51bWJlciBvZiBmaWxlcyB0aGF0IGhhdmUgYmVlbiBtaWdyYXRlZC4gKi9cbiAgc3RhdGljIG1pZ3JhdGVkRmlsZUNvdW50ID0gMDtcblxuICBlbmFibGVkID0gdGhpcy50YXJnZXRWZXJzaW9uID09PSBUYXJnZXRWZXJzaW9uLlYxMjtcblxuICB2aXNpdFN0eWxlc2hlZXQoc3R5bGVzaGVldDogUmVzb2x2ZWRSZXNvdXJjZSk6IHZvaWQge1xuICAgIGlmIChleHRuYW1lKHN0eWxlc2hlZXQuZmlsZVBhdGgpID09PSAnLnNjc3MnKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gc3R5bGVzaGVldC5jb250ZW50O1xuICAgICAgY29uc3QgbWlncmF0ZWRDb250ZW50ID0gY29udGVudCA/IG1pZ3JhdGVGaWxlQ29udGVudChjb250ZW50LFxuICAgICAgICAnfkBhbmd1bGFyL21hdGVyaWFsLycsICd+QGFuZ3VsYXIvY2RrLycsICd+QGFuZ3VsYXIvbWF0ZXJpYWwnLCAnfkBhbmd1bGFyL2NkaycpIDogY29udGVudDtcblxuICAgICAgaWYgKG1pZ3JhdGVkQ29udGVudCAmJiBtaWdyYXRlZENvbnRlbnQgIT09IGNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5maWxlU3lzdGVtLmVkaXQoc3R5bGVzaGVldC5maWxlUGF0aClcbiAgICAgICAgICAucmVtb3ZlKDAsIHN0eWxlc2hlZXQuY29udGVudC5sZW5ndGgpXG4gICAgICAgICAgLmluc2VydExlZnQoMCwgbWlncmF0ZWRDb250ZW50KTtcbiAgICAgICAgVGhlbWluZ0FwaU1pZ3JhdGlvbi5taWdyYXRlZEZpbGVDb3VudCsrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBMb2dzIG91dCB0aGUgbnVtYmVyIG9mIG1pZ3JhdGVkIGZpbGVzIGF0IHRoZSBlbmQgb2YgdGhlIG1pZ3JhdGlvbi4gKi9cbiAgc3RhdGljIGdsb2JhbFBvc3RNaWdyYXRpb24oX3RyZWU6IHVua25vd24sIGNvbnRleHQ6IFNjaGVtYXRpY0NvbnRleHQpOiB2b2lkIHtcbiAgICBjb25zdCBjb3VudCA9IFRoZW1pbmdBcGlNaWdyYXRpb24ubWlncmF0ZWRGaWxlQ291bnQ7XG5cbiAgICBpZiAoY291bnQgPiAwKSB7XG4gICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGBNaWdyYXRlZCAke2NvdW50ID09PSAxID8gYDEgZmlsZWAgOiBgJHtjb3VudH0gZmlsZXNgfSB0byB0aGUgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBuZXcgQW5ndWxhciBNYXRlcmlhbCB0aGVtaW5nIEFQSS5gKTtcbiAgICAgIFRoZW1pbmdBcGlNaWdyYXRpb24ubWlncmF0ZWRGaWxlQ291bnQgPSAwO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.io/license
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.isMaterialExportDeclaration = exports.isMaterialImportDeclaration = exports.cdkModuleSpecifier = exports.materialModuleSpecifier = void 0;
|
|
11
|
+
const schematics_1 = require("@angular/cdk/schematics");
|
|
12
|
+
/** Name of the Angular Material module specifier. */
|
|
13
|
+
exports.materialModuleSpecifier = '@angular/material';
|
|
14
|
+
/** Name of the Angular CDK module specifier. */
|
|
15
|
+
exports.cdkModuleSpecifier = '@angular/cdk';
|
|
16
|
+
/** Whether the specified node is part of an Angular Material or CDK import declaration. */
|
|
17
|
+
function isMaterialImportDeclaration(node) {
|
|
18
|
+
return isMaterialDeclaration(schematics_1.getImportDeclaration(node));
|
|
19
|
+
}
|
|
20
|
+
exports.isMaterialImportDeclaration = isMaterialImportDeclaration;
|
|
21
|
+
/** Whether the specified node is part of an Angular Material or CDK import declaration. */
|
|
22
|
+
function isMaterialExportDeclaration(node) {
|
|
23
|
+
return isMaterialDeclaration(schematics_1.getExportDeclaration(node));
|
|
24
|
+
}
|
|
25
|
+
exports.isMaterialExportDeclaration = isMaterialExportDeclaration;
|
|
26
|
+
/** Whether the declaration is part of Angular Material. */
|
|
27
|
+
function isMaterialDeclaration(declaration) {
|
|
28
|
+
if (!declaration.moduleSpecifier) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
const moduleSpecifier = declaration.moduleSpecifier.getText();
|
|
32
|
+
return moduleSpecifier.indexOf(exports.materialModuleSpecifier) !== -1 ||
|
|
33
|
+
moduleSpecifier.indexOf(exports.cdkModuleSpecifier) !== -1;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLXNwZWNpZmllcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvc2NoZW1hdGljcy9uZy11cGRhdGUvdHlwZXNjcmlwdC9tb2R1bGUtc3BlY2lmaWVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCx3REFBbUY7QUFHbkYscURBQXFEO0FBQ3hDLFFBQUEsdUJBQXVCLEdBQUcsbUJBQW1CLENBQUM7QUFFM0QsZ0RBQWdEO0FBQ25DLFFBQUEsa0JBQWtCLEdBQUcsY0FBYyxDQUFDO0FBRWpELDJGQUEyRjtBQUMzRixTQUFnQiwyQkFBMkIsQ0FBQyxJQUFhO0lBQ3ZELE9BQU8scUJBQXFCLENBQUMsaUNBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRkQsa0VBRUM7QUFFRCwyRkFBMkY7QUFDM0YsU0FBZ0IsMkJBQTJCLENBQUMsSUFBYTtJQUN2RCxPQUFPLHFCQUFxQixDQUFDLGlDQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELGtFQUVDO0FBRUQsMkRBQTJEO0FBQzNELFNBQVMscUJBQXFCLENBQUMsV0FBc0Q7SUFDbkYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUU7UUFDaEMsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDOUQsT0FBTyxlQUFlLENBQUMsT0FBTyxDQUFDLCtCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFELGVBQWUsQ0FBQyxPQUFPLENBQUMsMEJBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7Z2V0RXhwb3J0RGVjbGFyYXRpb24sIGdldEltcG9ydERlY2xhcmF0aW9ufSBmcm9tICdAYW5ndWxhci9jZGsvc2NoZW1hdGljcyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuLyoqIE5hbWUgb2YgdGhlIEFuZ3VsYXIgTWF0ZXJpYWwgbW9kdWxlIHNwZWNpZmllci4gKi9cbmV4cG9ydCBjb25zdCBtYXRlcmlhbE1vZHVsZVNwZWNpZmllciA9ICdAYW5ndWxhci9tYXRlcmlhbCc7XG5cbi8qKiBOYW1lIG9mIHRoZSBBbmd1bGFyIENESyBtb2R1bGUgc3BlY2lmaWVyLiAqL1xuZXhwb3J0IGNvbnN0IGNka01vZHVsZVNwZWNpZmllciA9ICdAYW5ndWxhci9jZGsnO1xuXG4vKiogV2hldGhlciB0aGUgc3BlY2lmaWVkIG5vZGUgaXMgcGFydCBvZiBhbiBBbmd1bGFyIE1hdGVyaWFsIG9yIENESyBpbXBvcnQgZGVjbGFyYXRpb24uICovXG5leHBvcnQgZnVuY3Rpb24gaXNNYXRlcmlhbEltcG9ydERlY2xhcmF0aW9uKG5vZGU6IHRzLk5vZGUpIHtcbiAgcmV0dXJuIGlzTWF0ZXJpYWxEZWNsYXJhdGlvbihnZXRJbXBvcnREZWNsYXJhdGlvbihub2RlKSk7XG59XG5cbi8qKiBXaGV0aGVyIHRoZSBzcGVjaWZpZWQgbm9kZSBpcyBwYXJ0IG9mIGFuIEFuZ3VsYXIgTWF0ZXJpYWwgb3IgQ0RLIGltcG9ydCBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01hdGVyaWFsRXhwb3J0RGVjbGFyYXRpb24obm9kZTogdHMuTm9kZSkge1xuICByZXR1cm4gaXNNYXRlcmlhbERlY2xhcmF0aW9uKGdldEV4cG9ydERlY2xhcmF0aW9uKG5vZGUpKTtcbn1cblxuLyoqIFdoZXRoZXIgdGhlIGRlY2xhcmF0aW9uIGlzIHBhcnQgb2YgQW5ndWxhciBNYXRlcmlhbC4gKi9cbmZ1bmN0aW9uIGlzTWF0ZXJpYWxEZWNsYXJhdGlvbihkZWNsYXJhdGlvbjogdHMuSW1wb3J0RGVjbGFyYXRpb258dHMuRXhwb3J0RGVjbGFyYXRpb24pIHtcbiAgaWYgKCFkZWNsYXJhdGlvbi5tb2R1bGVTcGVjaWZpZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBtb2R1bGVTcGVjaWZpZXIgPSBkZWNsYXJhdGlvbi5tb2R1bGVTcGVjaWZpZXIuZ2V0VGV4dCgpO1xuICByZXR1cm4gbW9kdWxlU3BlY2lmaWVyLmluZGV4T2YobWF0ZXJpYWxNb2R1bGVTcGVjaWZpZXIpICE9PSAtMSB8fFxuICAgICAgbW9kdWxlU3BlY2lmaWVyLmluZGV4T2YoY2RrTW9kdWxlU3BlY2lmaWVyKSAhPT0gLTE7XG59XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.io/license
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.materialUpgradeData = void 0;
|
|
11
|
+
const data_1 = require("./data");
|
|
12
|
+
/** Upgrade data that will be used for the Angular Material ng-update schematic. */
|
|
13
|
+
exports.materialUpgradeData = {
|
|
14
|
+
attributeSelectors: data_1.attributeSelectors,
|
|
15
|
+
classNames: data_1.classNames,
|
|
16
|
+
constructorChecks: data_1.constructorChecks,
|
|
17
|
+
cssSelectors: data_1.cssSelectors,
|
|
18
|
+
elementSelectors: data_1.elementSelectors,
|
|
19
|
+
inputNames: data_1.inputNames,
|
|
20
|
+
methodCallChecks: data_1.methodCallChecks,
|
|
21
|
+
outputNames: data_1.outputNames,
|
|
22
|
+
propertyNames: data_1.propertyNames,
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBncmFkZS1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NjaGVtYXRpY3MvbmctdXBkYXRlL3VwZ3JhZGUtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFHSCxpQ0FVZ0I7QUFFaEIsbUZBQW1GO0FBQ3RFLFFBQUEsbUJBQW1CLEdBQWdCO0lBQzlDLGtCQUFrQixFQUFsQix5QkFBa0I7SUFDbEIsVUFBVSxFQUFWLGlCQUFVO0lBQ1YsaUJBQWlCLEVBQWpCLHdCQUFpQjtJQUNqQixZQUFZLEVBQVosbUJBQVk7SUFDWixnQkFBZ0IsRUFBaEIsdUJBQWdCO0lBQ2hCLFVBQVUsRUFBVixpQkFBVTtJQUNWLGdCQUFnQixFQUFoQix1QkFBZ0I7SUFDaEIsV0FBVyxFQUFYLGtCQUFXO0lBQ1gsYUFBYSxFQUFiLG9CQUFhO0NBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1VwZ3JhZGVEYXRhfSBmcm9tICdAYW5ndWxhci9jZGsvc2NoZW1hdGljcyc7XG5pbXBvcnQge1xuICBhdHRyaWJ1dGVTZWxlY3RvcnMsXG4gIGNsYXNzTmFtZXMsXG4gIGNvbnN0cnVjdG9yQ2hlY2tzLFxuICBjc3NTZWxlY3RvcnMsXG4gIGVsZW1lbnRTZWxlY3RvcnMsXG4gIGlucHV0TmFtZXMsXG4gIG1ldGhvZENhbGxDaGVja3MsXG4gIG91dHB1dE5hbWVzLFxuICBwcm9wZXJ0eU5hbWVzLFxufSBmcm9tICcuL2RhdGEnO1xuXG4vKiogVXBncmFkZSBkYXRhIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgQW5ndWxhciBNYXRlcmlhbCBuZy11cGRhdGUgc2NoZW1hdGljLiAqL1xuZXhwb3J0IGNvbnN0IG1hdGVyaWFsVXBncmFkZURhdGE6IFVwZ3JhZGVEYXRhID0ge1xuICBhdHRyaWJ1dGVTZWxlY3RvcnMsXG4gIGNsYXNzTmFtZXMsXG4gIGNvbnN0cnVjdG9yQ2hlY2tzLFxuICBjc3NTZWxlY3RvcnMsXG4gIGVsZW1lbnRTZWxlY3RvcnMsXG4gIGlucHV0TmFtZXMsXG4gIG1ldGhvZENhbGxDaGVja3MsXG4gIG91dHB1dE5hbWVzLFxuICBwcm9wZXJ0eU5hbWVzLFxufTtcbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.io/license
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.MIGRATION_PATH = exports.COLLECTION_PATH = void 0;
|
|
11
|
+
const path_1 = require("path");
|
|
12
|
+
/** Path to the schematic collection for non-migration schematics. */
|
|
13
|
+
exports.COLLECTION_PATH = path_1.join(__dirname, 'collection.json');
|
|
14
|
+
/** Path to the schematic collection that includes the migrations. */
|
|
15
|
+
exports.MIGRATION_PATH = path_1.join(__dirname, 'migration.json');
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvc2NoZW1hdGljcy9wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCwrQkFBMEI7QUFFMUIscUVBQXFFO0FBQ3hELFFBQUEsZUFBZSxHQUFHLFdBQUksQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUVsRSxxRUFBcUU7QUFDeEQsUUFBQSxjQUFjLEdBQUcsV0FBSSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7am9pbn0gZnJvbSAncGF0aCc7XG5cbi8qKiBQYXRoIHRvIHRoZSBzY2hlbWF0aWMgY29sbGVjdGlvbiBmb3Igbm9uLW1pZ3JhdGlvbiBzY2hlbWF0aWNzLiAqL1xuZXhwb3J0IGNvbnN0IENPTExFQ1RJT05fUEFUSCA9IGpvaW4oX19kaXJuYW1lLCAnY29sbGVjdGlvbi5qc29uJyk7XG5cbi8qKiBQYXRoIHRvIHRoZSBzY2hlbWF0aWMgY29sbGVjdGlvbiB0aGF0IGluY2x1ZGVzIHRoZSBtaWdyYXRpb25zLiAqL1xuZXhwb3J0IGNvbnN0IE1JR1JBVElPTl9QQVRIID0gam9pbihfX2Rpcm5hbWUsICdtaWdyYXRpb24uanNvbicpO1xuIl19
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"_MatSlideToggleRequiredValidatorModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":15,"character":1},"arguments":[{"exports":[{"__symbolic":"reference","name":"MatSlideToggleRequiredValidator"}],"declarations":[{"__symbolic":"reference","name":"MatSlideToggleRequiredValidator"}]}]}],"members":{}},"MatSlideToggleModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":21,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"_MatSlideToggleRequiredValidatorModule"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatRippleModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":25,"character":4},{"__symbolic":"reference","module":"@angular/cdk/observers","name":"ObserversModule","line":26,"character":4}],"exports":[{"__symbolic":"reference","name":"_MatSlideToggleRequiredValidatorModule"},{"__symbolic":"reference","name":"MatSlideToggle"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":31,"character":4}],"declarations":[{"__symbolic":"reference","name":"MatSlideToggle"}]}]}],"members":{}},"MAT_SLIDE_TOGGLE_VALUE_ACCESSOR":{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":49,"character":11},"useExisting":{"__symbolic":"reference","name":"MatSlideToggle"},"multi":true},"MatSlideToggleChange":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MatSlideToggle"},{"__symbolic":"reference","name":"boolean"}]}]}},"MatSlideToggle":{"__symbolic":"class","extends":{"__symbolic":"error","message":"Symbol reference expected","line":99,"character":36,"module":"./slide-toggle"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":77,"character":1},"arguments":[{"selector":"mat-slide-toggle","exportAs":"matSlideToggle","host":{"class":"mat-slide-toggle","[id]":"id","[attr.tabindex]":"disabled ? null : -1","[attr.aria-label]":"null","[attr.aria-labelledby]":"null","[class.mat-checked]":"checked","[class.mat-disabled]":"disabled","[class.mat-slide-toggle-label-before]":"labelPosition == \"before\"","[class._mat-animation-noopable]":"_animationMode === \"NoopAnimations\"","$quoted$":["class","[id]","[attr.tabindex]","[attr.aria-label]","[attr.aria-labelledby]","[class.mat-checked]","[class.mat-disabled]","[class.mat-slide-toggle-label-before]","[class._mat-animation-noopable]"]},"providers":[{"__symbolic":"reference","name":"MAT_SLIDE_TOGGLE_VALUE_ACCESSOR"}],"inputs":["disabled","disableRipple","color","tabIndex"],"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":96,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":97,"character":19},"member":"OnPush"},"template":"<label [attr.for]=\"inputId\" class=\"mat-slide-toggle-label\" #label>\n <div #toggleBar class=\"mat-slide-toggle-bar\"\n [class.mat-slide-toggle-bar-no-side-margin]=\"!labelContent.textContent || !labelContent.textContent.trim()\">\n\n <input #input class=\"mat-slide-toggle-input cdk-visually-hidden\" type=\"checkbox\"\n role=\"switch\"\n [id]=\"inputId\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [attr.aria-checked]=\"checked.toString()\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n (change)=\"_onChangeEvent($event)\"\n (click)=\"_onInputClick($event)\">\n\n <div class=\"mat-slide-toggle-thumb-container\" #thumbContainer>\n <div class=\"mat-slide-toggle-thumb\"></div>\n <div class=\"mat-slide-toggle-ripple mat-focus-indicator\" mat-ripple\n [matRippleTrigger]=\"label\"\n [matRippleDisabled]=\"disableRipple || disabled\"\n [matRippleCentered]=\"true\"\n [matRippleRadius]=\"20\"\n [matRippleAnimation]=\"{enterDuration: 150}\">\n\n <div class=\"mat-ripple-element mat-slide-toggle-persistent-ripple\"></div>\n </div>\n </div>\n\n </div>\n\n <span class=\"mat-slide-toggle-content\" #labelContent (cdkObserveContent)=\"_onLabelTextChange()\">\n <!-- Add an invisible span so JAWS can read the label -->\n <span style=\"display:none\"> </span>\n <ng-content></ng-content>\n </span>\n</label>\n","styles":[".mat-slide-toggle{display:inline-block;height:24px;max-width:100%;line-height:24px;white-space:nowrap;outline:none;-webkit-tap-highlight-color:transparent}.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{transform:translate3d(16px, 0, 0)}[dir=rtl] .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{transform:translate3d(-16px, 0, 0)}.mat-slide-toggle.mat-disabled{opacity:.38}.mat-slide-toggle.mat-disabled .mat-slide-toggle-label,.mat-slide-toggle.mat-disabled .mat-slide-toggle-thumb-container{cursor:default}.mat-slide-toggle-label{display:flex;flex:1;flex-direction:row;align-items:center;height:inherit;cursor:pointer}.mat-slide-toggle-content{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-slide-toggle-label-before .mat-slide-toggle-label{order:1}.mat-slide-toggle-label-before .mat-slide-toggle-bar{order:2}[dir=rtl] .mat-slide-toggle-label-before .mat-slide-toggle-bar,.mat-slide-toggle-bar{margin-right:8px;margin-left:0}[dir=rtl] .mat-slide-toggle-bar,.mat-slide-toggle-label-before .mat-slide-toggle-bar{margin-left:8px;margin-right:0}.mat-slide-toggle-bar-no-side-margin{margin-left:0;margin-right:0}.mat-slide-toggle-thumb-container{position:absolute;z-index:1;width:20px;height:20px;top:-3px;left:0;transform:translate3d(0, 0, 0);transition:all 80ms linear;transition-property:transform}._mat-animation-noopable .mat-slide-toggle-thumb-container{transition:none}[dir=rtl] .mat-slide-toggle-thumb-container{left:auto;right:0}.mat-slide-toggle-thumb{height:20px;width:20px;border-radius:50%}.mat-slide-toggle-bar{position:relative;width:36px;height:14px;flex-shrink:0;border-radius:8px}.mat-slide-toggle-input{bottom:0;left:10px}[dir=rtl] .mat-slide-toggle-input{left:auto;right:10px}.mat-slide-toggle-bar,.mat-slide-toggle-thumb{transition:all 80ms linear;transition-property:background-color;transition-delay:50ms}._mat-animation-noopable .mat-slide-toggle-bar,._mat-animation-noopable .mat-slide-toggle-thumb{transition:none}.mat-slide-toggle .mat-slide-toggle-ripple{position:absolute;top:calc(50% - 20px);left:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}.mat-slide-toggle .mat-slide-toggle-ripple .mat-ripple-element:not(.mat-slide-toggle-persistent-ripple){opacity:.12}.mat-slide-toggle-persistent-ripple{width:100%;height:100%;transform:none}.mat-slide-toggle-bar:hover .mat-slide-toggle-persistent-ripple{opacity:.04}.mat-slide-toggle:not(.mat-disabled).cdk-keyboard-focused .mat-slide-toggle-persistent-ripple{opacity:.12}.mat-slide-toggle-persistent-ripple,.mat-slide-toggle.mat-disabled .mat-slide-toggle-bar:hover .mat-slide-toggle-persistent-ripple{opacity:0}@media(hover: none){.mat-slide-toggle-bar:hover .mat-slide-toggle-persistent-ripple{display:none}}.cdk-high-contrast-active .mat-slide-toggle-thumb,.cdk-high-contrast-active .mat-slide-toggle-bar{border:1px solid}.cdk-high-contrast-active .mat-slide-toggle.cdk-keyboard-focused .mat-slide-toggle-bar{outline:2px dotted;outline-offset:5px}\n"]}]}],"members":{"_thumbEl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":112,"character":3},"arguments":["thumbContainer"]}]}],"_thumbBarEl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":115,"character":3},"arguments":["toggleBar"]}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":118,"character":3}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":121,"character":3}}]}],"labelPosition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":124,"character":3}}]}],"ariaLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":127,"character":3},"arguments":["aria-label"]}]}],"ariaLabelledby":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":130,"character":3},"arguments":["aria-labelledby"]}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":133,"character":3}}]}],"checked":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":138,"character":3}}]}],"change":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":145,"character":3}}]}],"toggleChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":153,"character":3}}]}],"_inputElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":159,"character":3},"arguments":["input"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Attribute","line":164,"character":15},"arguments":["tabindex"]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":165,"character":15},"arguments":[{"__symbolic":"reference","name":"MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":167,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":167,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/platform-browser/animations","name":"ANIMATION_MODULE_TYPE","line":167,"character":34}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":161,"character":26},{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"FocusMonitor","line":162,"character":37},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":163,"character":42},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"MatSlideToggleDefaultOptions"},{"__symbolic":"reference","name":"string"}]}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_onChangeEvent":[{"__symbolic":"method"}],"_onInputClick":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"toggle":[{"__symbolic":"method"}],"_emitChangeEvent":[{"__symbolic":"method"}],"_onLabelTextChange":[{"__symbolic":"method"}]}},"MatSlideToggleDefaultOptions":{"__symbolic":"interface"},"MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":22,"character":6},"arguments":["mat-slide-toggle-default-options",{"__symbolic":"error","message":"Lambda not supported","line":24,"character":13,"module":"./slide-toggle-config"}]},"MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR":{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":19,"character":11},"useExisting":{"__symbolic":"reference","name":"MatSlideToggleRequiredValidator"},"multi":true},"MatSlideToggleRequiredValidator":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/forms","name":"CheckboxRequiredValidator","line":37,"character":53},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":32,"character":1},"arguments":[{"selector":"mat-slide-toggle[required][formControlName],\n mat-slide-toggle[required][formControl], mat-slide-toggle[required][ngModel]","providers":[{"__symbolic":"reference","name":"MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR"}]}]}],"members":{}}},"origins":{"_MatSlideToggleRequiredValidatorModule":"./slide-toggle-module","MatSlideToggleModule":"./slide-toggle-module","MAT_SLIDE_TOGGLE_VALUE_ACCESSOR":"./slide-toggle","MatSlideToggleChange":"./slide-toggle","MatSlideToggle":"./slide-toggle","MatSlideToggleDefaultOptions":"./slide-toggle-config","MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS":"./slide-toggle-config","MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR":"./slide-toggle-required-validator","MatSlideToggleRequiredValidator":"./slide-toggle-required-validator"},"importAs":"@angular/material/slide-toggle"}
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"_MatSlideToggleRequiredValidatorModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":15,"character":1},"arguments":[{"exports":[{"__symbolic":"reference","name":"MatSlideToggleRequiredValidator"}],"declarations":[{"__symbolic":"reference","name":"MatSlideToggleRequiredValidator"}]}]}],"members":{}},"MatSlideToggleModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":21,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"_MatSlideToggleRequiredValidatorModule"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatRippleModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":25,"character":4},{"__symbolic":"reference","module":"@angular/cdk/observers","name":"ObserversModule","line":26,"character":4}],"exports":[{"__symbolic":"reference","name":"_MatSlideToggleRequiredValidatorModule"},{"__symbolic":"reference","name":"MatSlideToggle"},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":31,"character":4}],"declarations":[{"__symbolic":"reference","name":"MatSlideToggle"}]}]}],"members":{}},"MAT_SLIDE_TOGGLE_VALUE_ACCESSOR":{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":49,"character":11},"useExisting":{"__symbolic":"reference","name":"MatSlideToggle"},"multi":true},"MatSlideToggleChange":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MatSlideToggle"},{"__symbolic":"reference","name":"boolean"}]}]}},"MatSlideToggle":{"__symbolic":"class","extends":{"__symbolic":"error","message":"Symbol reference expected","line":99,"character":36,"module":"./slide-toggle"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":77,"character":1},"arguments":[{"selector":"mat-slide-toggle","exportAs":"matSlideToggle","host":{"class":"mat-slide-toggle","[id]":"id","[attr.tabindex]":"disabled ? null : -1","[attr.aria-label]":"null","[attr.aria-labelledby]":"null","[class.mat-checked]":"checked","[class.mat-disabled]":"disabled","[class.mat-slide-toggle-label-before]":"labelPosition == \"before\"","[class._mat-animation-noopable]":"_noopAnimations","$quoted$":["class","[id]","[attr.tabindex]","[attr.aria-label]","[attr.aria-labelledby]","[class.mat-checked]","[class.mat-disabled]","[class.mat-slide-toggle-label-before]","[class._mat-animation-noopable]"]},"providers":[{"__symbolic":"reference","name":"MAT_SLIDE_TOGGLE_VALUE_ACCESSOR"}],"inputs":["disabled","disableRipple","color","tabIndex"],"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":96,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":97,"character":19},"member":"OnPush"},"template":"<label [attr.for]=\"inputId\" class=\"mat-slide-toggle-label\" #label>\n <div #toggleBar class=\"mat-slide-toggle-bar\"\n [class.mat-slide-toggle-bar-no-side-margin]=\"!labelContent.textContent || !labelContent.textContent.trim()\">\n\n <input #input class=\"mat-slide-toggle-input cdk-visually-hidden\" type=\"checkbox\"\n role=\"switch\"\n [id]=\"inputId\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [attr.aria-checked]=\"checked.toString()\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n (change)=\"_onChangeEvent($event)\"\n (click)=\"_onInputClick($event)\">\n\n <div class=\"mat-slide-toggle-thumb-container\" #thumbContainer>\n <div class=\"mat-slide-toggle-thumb\"></div>\n <div class=\"mat-slide-toggle-ripple mat-focus-indicator\" mat-ripple\n [matRippleTrigger]=\"label\"\n [matRippleDisabled]=\"disableRipple || disabled\"\n [matRippleCentered]=\"true\"\n [matRippleRadius]=\"20\"\n [matRippleAnimation]=\"{enterDuration: _noopAnimations ? 0 : 150}\">\n\n <div class=\"mat-ripple-element mat-slide-toggle-persistent-ripple\"></div>\n </div>\n </div>\n\n </div>\n\n <span class=\"mat-slide-toggle-content\" #labelContent (cdkObserveContent)=\"_onLabelTextChange()\">\n <!-- Add an invisible span so JAWS can read the label -->\n <span style=\"display:none\"> </span>\n <ng-content></ng-content>\n </span>\n</label>\n","styles":[".mat-slide-toggle{display:inline-block;height:24px;max-width:100%;line-height:24px;white-space:nowrap;outline:none;-webkit-tap-highlight-color:transparent}.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{transform:translate3d(16px, 0, 0)}[dir=rtl] .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{transform:translate3d(-16px, 0, 0)}.mat-slide-toggle.mat-disabled{opacity:.38}.mat-slide-toggle.mat-disabled .mat-slide-toggle-label,.mat-slide-toggle.mat-disabled .mat-slide-toggle-thumb-container{cursor:default}.mat-slide-toggle-label{display:flex;flex:1;flex-direction:row;align-items:center;height:inherit;cursor:pointer}.mat-slide-toggle-content{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-slide-toggle-label-before .mat-slide-toggle-label{order:1}.mat-slide-toggle-label-before .mat-slide-toggle-bar{order:2}[dir=rtl] .mat-slide-toggle-label-before .mat-slide-toggle-bar,.mat-slide-toggle-bar{margin-right:8px;margin-left:0}[dir=rtl] .mat-slide-toggle-bar,.mat-slide-toggle-label-before .mat-slide-toggle-bar{margin-left:8px;margin-right:0}.mat-slide-toggle-bar-no-side-margin{margin-left:0;margin-right:0}.mat-slide-toggle-thumb-container{position:absolute;z-index:1;width:20px;height:20px;top:-3px;left:0;transform:translate3d(0, 0, 0);transition:all 80ms linear;transition-property:transform}._mat-animation-noopable .mat-slide-toggle-thumb-container{transition:none}[dir=rtl] .mat-slide-toggle-thumb-container{left:auto;right:0}.mat-slide-toggle-thumb{height:20px;width:20px;border-radius:50%}.mat-slide-toggle-bar{position:relative;width:36px;height:14px;flex-shrink:0;border-radius:8px}.mat-slide-toggle-input{bottom:0;left:10px}[dir=rtl] .mat-slide-toggle-input{left:auto;right:10px}.mat-slide-toggle-bar,.mat-slide-toggle-thumb{transition:all 80ms linear;transition-property:background-color;transition-delay:50ms}._mat-animation-noopable .mat-slide-toggle-bar,._mat-animation-noopable .mat-slide-toggle-thumb{transition:none}.mat-slide-toggle .mat-slide-toggle-ripple{position:absolute;top:calc(50% - 20px);left:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}.mat-slide-toggle .mat-slide-toggle-ripple .mat-ripple-element:not(.mat-slide-toggle-persistent-ripple){opacity:.12}.mat-slide-toggle-persistent-ripple{width:100%;height:100%;transform:none}.mat-slide-toggle-bar:hover .mat-slide-toggle-persistent-ripple{opacity:.04}.mat-slide-toggle:not(.mat-disabled).cdk-keyboard-focused .mat-slide-toggle-persistent-ripple{opacity:.12}.mat-slide-toggle-persistent-ripple,.mat-slide-toggle.mat-disabled .mat-slide-toggle-bar:hover .mat-slide-toggle-persistent-ripple{opacity:0}@media(hover: none){.mat-slide-toggle-bar:hover .mat-slide-toggle-persistent-ripple{display:none}}.cdk-high-contrast-active .mat-slide-toggle-thumb,.cdk-high-contrast-active .mat-slide-toggle-bar{border:1px solid}.cdk-high-contrast-active .mat-slide-toggle.cdk-keyboard-focused .mat-slide-toggle-bar{outline:2px dotted;outline-offset:5px}\n"]}]}],"members":{"_thumbEl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":115,"character":3},"arguments":["thumbContainer"]}]}],"_thumbBarEl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":118,"character":3},"arguments":["toggleBar"]}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":121,"character":3}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":124,"character":3}}]}],"labelPosition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":127,"character":3}}]}],"ariaLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":130,"character":3},"arguments":["aria-label"]}]}],"ariaLabelledby":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":133,"character":3},"arguments":["aria-labelledby"]}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":136,"character":3}}]}],"checked":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":141,"character":3}}]}],"change":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":148,"character":3}}]}],"toggleChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":156,"character":3}}]}],"_inputElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":162,"character":3},"arguments":["input"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Attribute","line":167,"character":15},"arguments":["tabindex"]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":168,"character":15},"arguments":[{"__symbolic":"reference","name":"MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":170,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":170,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/platform-browser/animations","name":"ANIMATION_MODULE_TYPE","line":170,"character":34}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":164,"character":26},{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"FocusMonitor","line":165,"character":37},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":166,"character":42},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"MatSlideToggleDefaultOptions"},{"__symbolic":"reference","name":"string"}]}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_onChangeEvent":[{"__symbolic":"method"}],"_onInputClick":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"toggle":[{"__symbolic":"method"}],"_emitChangeEvent":[{"__symbolic":"method"}],"_onLabelTextChange":[{"__symbolic":"method"}]}},"MatSlideToggleDefaultOptions":{"__symbolic":"interface"},"MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":22,"character":6},"arguments":["mat-slide-toggle-default-options",{"__symbolic":"error","message":"Lambda not supported","line":24,"character":13,"module":"./slide-toggle-config"}]},"MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR":{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":19,"character":11},"useExisting":{"__symbolic":"reference","name":"MatSlideToggleRequiredValidator"},"multi":true},"MatSlideToggleRequiredValidator":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/forms","name":"CheckboxRequiredValidator","line":37,"character":53},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":32,"character":1},"arguments":[{"selector":"mat-slide-toggle[required][formControlName],\n mat-slide-toggle[required][formControl], mat-slide-toggle[required][ngModel]","providers":[{"__symbolic":"reference","name":"MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR"}]}]}],"members":{}}},"origins":{"_MatSlideToggleRequiredValidatorModule":"./slide-toggle-module","MatSlideToggleModule":"./slide-toggle-module","MAT_SLIDE_TOGGLE_VALUE_ACCESSOR":"./slide-toggle","MatSlideToggleChange":"./slide-toggle","MatSlideToggle":"./slide-toggle","MatSlideToggleDefaultOptions":"./slide-toggle-config","MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS":"./slide-toggle-config","MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR":"./slide-toggle-required-validator","MatSlideToggleRequiredValidator":"./slide-toggle-required-validator"},"importAs":"@angular/material/slide-toggle"}
|
|
@@ -36,12 +36,13 @@ export declare class MatSlideToggle extends _MatSlideToggleMixinBase implements
|
|
|
36
36
|
private _focusMonitor;
|
|
37
37
|
private _changeDetectorRef;
|
|
38
38
|
defaults: MatSlideToggleDefaultOptions;
|
|
39
|
-
_animationMode?: string | undefined;
|
|
40
39
|
private _onChange;
|
|
41
40
|
private _onTouched;
|
|
42
41
|
private _uniqueId;
|
|
43
42
|
private _required;
|
|
44
43
|
private _checked;
|
|
44
|
+
/** Whether noop animations are enabled. */
|
|
45
|
+
_noopAnimations: boolean;
|
|
45
46
|
/** Reference to the thumb HTMLElement. */
|
|
46
47
|
_thumbEl: ElementRef;
|
|
47
48
|
/** Reference to the thumb bar HTMLElement. */
|
|
@@ -74,7 +75,7 @@ export declare class MatSlideToggle extends _MatSlideToggleMixinBase implements
|
|
|
74
75
|
get inputId(): string;
|
|
75
76
|
/** Reference to the underlying input element. */
|
|
76
77
|
_inputElement: ElementRef<HTMLInputElement>;
|
|
77
|
-
constructor(elementRef: ElementRef, _focusMonitor: FocusMonitor, _changeDetectorRef: ChangeDetectorRef, tabIndex: string, defaults: MatSlideToggleDefaultOptions,
|
|
78
|
+
constructor(elementRef: ElementRef, _focusMonitor: FocusMonitor, _changeDetectorRef: ChangeDetectorRef, tabIndex: string, defaults: MatSlideToggleDefaultOptions, animationMode?: string);
|
|
78
79
|
ngAfterContentInit(): void;
|
|
79
80
|
ngOnDestroy(): void;
|
|
80
81
|
/** Method being called whenever the underlying input emits a change event. */
|
package/sort/sort-header.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ export declare type ArrowViewState = SortDirection | 'hint' | 'active';
|
|
|
32
32
|
*/
|
|
33
33
|
export interface ArrowViewStateTransition {
|
|
34
34
|
fromState?: ArrowViewState;
|
|
35
|
-
toState
|
|
35
|
+
toState?: ArrowViewState;
|
|
36
36
|
}
|
|
37
37
|
/** Column definition associated with a `MatSortHeader`. */
|
|
38
38
|
interface MatSortHeaderColumnDef {
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
@forward 'stepper-variables' as mat-* hide $mat-density-config, $mat-header-height,
|
|
2
|
+
$mat-header-maximum-height, $mat-header-minimum-height, $mat-label-header-height,
|
|
3
|
+
$mat-label-min-width, $mat-label-position-bottom-top-gap, $mat-line-gap, $mat-line-width,
|
|
4
|
+
$mat-side-gap;
|
|
5
|
+
@forward 'stepper-variables' as mat-stepper-* hide $mat-stepper-step-header-icon-size,
|
|
6
|
+
$mat-stepper-step-sub-label-font-size, $mat-stepper-vertical-stepper-content-margin;
|
|
7
|
+
@forward 'stepper-theme' as mat-stepper-*;
|