@scania-nl/tegel-angular-extensions 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +390 -33
- package/docker/docker-entrypoint.sh +13 -0
- package/docker/extract-env-vars.sh +114 -0
- package/docker/nginx.conf +69 -0
- package/esm2022/index.mjs +24 -5
- package/esm2022/lib/components/tae-footer/tae-footer.component.mjs +48 -0
- package/esm2022/lib/directives/hard-refresh.directive.mjs +83 -0
- package/esm2022/lib/env/angular/provide-runtime-config.mjs +161 -0
- package/esm2022/lib/env/angular/provide-static-config.mjs +44 -0
- package/esm2022/lib/env/core/create-env-kit.mjs +81 -0
- package/esm2022/lib/env/core/env-types.mjs +2 -0
- package/esm2022/lib/env/core/parse-env-file.mjs +140 -0
- package/esm2022/lib/toast/toast.component.mjs +5 -5
- package/esm2022/lib/toast/toast.service.mjs +3 -3
- package/index.d.ts +547 -4
- package/package.json +18 -6
- package/lib/toast/models/toast-state.enum.d.ts +0 -17
- package/lib/toast/models/toast-type.d.ts +0 -8
- package/lib/toast/models/toast.model.d.ts +0 -73
- package/lib/toast/provide-toast.d.ts +0 -3
- package/lib/toast/toast.component.d.ts +0 -24
- package/lib/toast/toast.config.d.ts +0 -35
- package/lib/toast/toast.service.d.ts +0 -98
- package/lib/utils/bootstrap-global-component.d.ts +0 -23
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parses the contents of a `.env`-style file into a nested JavaScript object.
|
|
3
|
+
*
|
|
4
|
+
* Each line in the input string is expected to follow the format `KEY=VALUE`.
|
|
5
|
+
* Nested keys can be created using a configurable delimiter (default: `"__"`).
|
|
6
|
+
* Lines starting with `#` or containing only whitespace are ignored.
|
|
7
|
+
*
|
|
8
|
+
* Examples:
|
|
9
|
+
* ```env
|
|
10
|
+
* API_URL=https://api.local
|
|
11
|
+
* LOG__LEVEL=debug
|
|
12
|
+
* DB__CONNECTION__TIMEOUT=30
|
|
13
|
+
* ```
|
|
14
|
+
* Produces:
|
|
15
|
+
* ```ts
|
|
16
|
+
* {
|
|
17
|
+
* API_URL: "https://api.local",
|
|
18
|
+
* LOG: { LEVEL: "debug" },
|
|
19
|
+
* DB: { CONNECTION: { TIMEOUT: "30" } }
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @param raw - The raw `.env` file content as a string.
|
|
24
|
+
* @param delimiter - The delimiter used to represent nested keys (default: `"__"`).
|
|
25
|
+
* @returns A nested object representing all parsed key-value pairs.
|
|
26
|
+
*/
|
|
27
|
+
export function parseEnvFile(raw, delimiter = '__') {
|
|
28
|
+
const result = {};
|
|
29
|
+
// Normalize CRLF -> LF and split into lines
|
|
30
|
+
const lines = raw.replace(/\r/g, '').split('\n');
|
|
31
|
+
for (const rawLine of lines) {
|
|
32
|
+
const line = rawLine.trim();
|
|
33
|
+
// Skip blank lines and comments
|
|
34
|
+
if (!line || line.startsWith('#'))
|
|
35
|
+
continue;
|
|
36
|
+
// Split "KEY=VALUE" (first '=' only)
|
|
37
|
+
const { key, value } = splitEnvLine(line);
|
|
38
|
+
if (!key)
|
|
39
|
+
continue; // malformed line with no key
|
|
40
|
+
// Support nesting via delimiter: "A__B__C" -> ["A","B","C"]
|
|
41
|
+
const path = key.split(delimiter).filter(Boolean);
|
|
42
|
+
// Coerce value (handles simple arrays)
|
|
43
|
+
const parsedValue = parseEnvValue(value);
|
|
44
|
+
// Write into `result` at nested path, creating objects as needed
|
|
45
|
+
assignNested(result, path, parsedValue);
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Parses an environment variable value into a typed representation.
|
|
51
|
+
*
|
|
52
|
+
* Supports array syntax in square brackets:
|
|
53
|
+
* ```
|
|
54
|
+
* [one, two, three] -> ['one', 'two', 'three']
|
|
55
|
+
* ["a", "b", "c"] -> ['"a"', '"b"', '"c"']
|
|
56
|
+
* ```
|
|
57
|
+
* All other values are returned as raw strings.
|
|
58
|
+
*
|
|
59
|
+
* @param value - The raw string value to parse from a `.env` line.
|
|
60
|
+
* @returns The parsed value (string or array of strings).
|
|
61
|
+
*/
|
|
62
|
+
function parseEnvValue(value) {
|
|
63
|
+
// Remove leading/trailing whitespace
|
|
64
|
+
const trimmed = value.trim();
|
|
65
|
+
// Detect array syntax: [item1, item2, item3]
|
|
66
|
+
if (trimmed.startsWith('[') && trimmed.endsWith(']')) {
|
|
67
|
+
// Remove surrounding brackets and trim inner content
|
|
68
|
+
const inner = trimmed.slice(1, -1).trim();
|
|
69
|
+
if (!inner)
|
|
70
|
+
return []; // Empty array → []
|
|
71
|
+
// Split by comma and trim each entry
|
|
72
|
+
return inner.split(',').map((item) => item.trim());
|
|
73
|
+
}
|
|
74
|
+
// For non-array values, return as-is
|
|
75
|
+
return value;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Writes a value into a nested object structure using a key path.
|
|
79
|
+
*
|
|
80
|
+
* Example:
|
|
81
|
+
* ```ts
|
|
82
|
+
* const obj = {};
|
|
83
|
+
* assignNested(obj, ['Database', 'Host'], 'localhost');
|
|
84
|
+
* // Result: { Database: { Host: 'localhost' } }
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* Intermediate objects are created automatically if they do not exist.
|
|
88
|
+
*
|
|
89
|
+
* @typeParam T - The type of the value being assigned.
|
|
90
|
+
* @param target - The root object to modify.
|
|
91
|
+
* @param path - The array of path segments (e.g., ['A','B','C']).
|
|
92
|
+
* @param value - The value to assign at the final key.
|
|
93
|
+
*/
|
|
94
|
+
function assignNested(target, path, value) {
|
|
95
|
+
// Start from the root object reference
|
|
96
|
+
let ref = target;
|
|
97
|
+
// Walk through all path segments except the last one
|
|
98
|
+
for (let i = 0; i < path.length - 1; i++) {
|
|
99
|
+
const seg = path[i];
|
|
100
|
+
// Ensure that each segment points to a plain object;
|
|
101
|
+
// replace invalid types (null, arrays, primitives) with {}
|
|
102
|
+
if (typeof ref[seg] !== 'object' ||
|
|
103
|
+
ref[seg] === null ||
|
|
104
|
+
Array.isArray(ref[seg])) {
|
|
105
|
+
ref[seg] = {};
|
|
106
|
+
}
|
|
107
|
+
// Move deeper into the structure
|
|
108
|
+
ref = ref[seg];
|
|
109
|
+
}
|
|
110
|
+
// Set the final property to the given value
|
|
111
|
+
ref[path[path.length - 1]] = value;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Splits a `.env` line into its key and value components.
|
|
115
|
+
*
|
|
116
|
+
* Example:
|
|
117
|
+
* ```
|
|
118
|
+
* "API_URL=https://api.example.com"
|
|
119
|
+
* -> { key: "API_URL", value: "https://api.example.com" }
|
|
120
|
+
* ```
|
|
121
|
+
*
|
|
122
|
+
* The split occurs at the **first** '=' character only.
|
|
123
|
+
* If the line does not contain '=', an empty `{ key: '', value: '' }` is returned.
|
|
124
|
+
*
|
|
125
|
+
* @param line - A single `.env` line to split.
|
|
126
|
+
* @returns An object containing the key and value strings.
|
|
127
|
+
*/
|
|
128
|
+
function splitEnvLine(line) {
|
|
129
|
+
// Find first '='; keys in .env files never contain '='
|
|
130
|
+
const eq = line.indexOf('=');
|
|
131
|
+
// Skip malformed lines
|
|
132
|
+
if (eq === -1)
|
|
133
|
+
return { key: '', value: '' };
|
|
134
|
+
// Extract key before '=' and value after '='
|
|
135
|
+
const key = line.slice(0, eq).trim();
|
|
136
|
+
const value = line.slice(eq + 1).trim();
|
|
137
|
+
// Return key-value pair
|
|
138
|
+
return { key, value };
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtZW52LWZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3RlZ2VsLWFuZ3VsYXItZXh0ZW5zaW9ucy9zcmMvbGliL2Vudi9jb3JlL3BhcnNlLWVudi1maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsR0FBVyxFQUNYLFNBQVMsR0FBRyxJQUFJO0lBRWhCLE1BQU0sTUFBTSxHQUE0QixFQUFFLENBQUM7SUFFM0MsNENBQTRDO0lBQzVDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVqRCxLQUFLLE1BQU0sT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU1QixnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUFFLFNBQVM7UUFFNUMscUNBQXFDO1FBQ3JDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxHQUFHO1lBQUUsU0FBUyxDQUFDLDZCQUE2QjtRQUVqRCw0REFBNEQ7UUFDNUQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbEQsdUNBQXVDO1FBQ3ZDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6QyxpRUFBaUU7UUFDakUsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxTQUFTLGFBQWEsQ0FBQyxLQUFhO0lBQ2xDLHFDQUFxQztJQUNyQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFN0IsNkNBQTZDO0lBQzdDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDckQscURBQXFEO1FBQ3JELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQjtRQUUxQyxxQ0FBcUM7UUFDckMsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELHFDQUFxQztJQUNyQyxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILFNBQVMsWUFBWSxDQUNuQixNQUF5QixFQUN6QixJQUFjLEVBQ2QsS0FBUTtJQUVSLHVDQUF1QztJQUN2QyxJQUFJLEdBQUcsR0FBNEIsTUFBTSxDQUFDO0lBRTFDLHFEQUFxRDtJQUNyRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEIscURBQXFEO1FBQ3JELDJEQUEyRDtRQUMzRCxJQUNFLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVE7WUFDNUIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUk7WUFDakIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDdkIsQ0FBQztZQUNELEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDaEIsQ0FBQztRQUVELGlDQUFpQztRQUNqQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBNEIsQ0FBQztJQUM1QyxDQUFDO0lBRUQsNENBQTRDO0lBQzVDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNyQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxTQUFTLFlBQVksQ0FBQyxJQUFZO0lBQ2hDLHVEQUF1RDtJQUN2RCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTdCLHVCQUF1QjtJQUN2QixJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFFN0MsNkNBQTZDO0lBQzdDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBRXhDLHdCQUF3QjtJQUN4QixPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBhcnNlcyB0aGUgY29udGVudHMgb2YgYSBgLmVudmAtc3R5bGUgZmlsZSBpbnRvIGEgbmVzdGVkIEphdmFTY3JpcHQgb2JqZWN0LlxuICpcbiAqIEVhY2ggbGluZSBpbiB0aGUgaW5wdXQgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGZvbGxvdyB0aGUgZm9ybWF0IGBLRVk9VkFMVUVgLlxuICogTmVzdGVkIGtleXMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgYSBjb25maWd1cmFibGUgZGVsaW1pdGVyIChkZWZhdWx0OiBgXCJfX1wiYCkuXG4gKiBMaW5lcyBzdGFydGluZyB3aXRoIGAjYCBvciBjb250YWluaW5nIG9ubHkgd2hpdGVzcGFjZSBhcmUgaWdub3JlZC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqIGBgYGVudlxuICogQVBJX1VSTD1odHRwczovL2FwaS5sb2NhbFxuICogTE9HX19MRVZFTD1kZWJ1Z1xuICogREJfX0NPTk5FQ1RJT05fX1RJTUVPVVQ9MzBcbiAqIGBgYFxuICogUHJvZHVjZXM6XG4gKiBgYGB0c1xuICoge1xuICogICBBUElfVVJMOiBcImh0dHBzOi8vYXBpLmxvY2FsXCIsXG4gKiAgIExPRzogeyBMRVZFTDogXCJkZWJ1Z1wiIH0sXG4gKiAgIERCOiB7IENPTk5FQ1RJT046IHsgVElNRU9VVDogXCIzMFwiIH0gfVxuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIHJhdyAtIFRoZSByYXcgYC5lbnZgIGZpbGUgY29udGVudCBhcyBhIHN0cmluZy5cbiAqIEBwYXJhbSBkZWxpbWl0ZXIgLSBUaGUgZGVsaW1pdGVyIHVzZWQgdG8gcmVwcmVzZW50IG5lc3RlZCBrZXlzIChkZWZhdWx0OiBgXCJfX1wiYCkuXG4gKiBAcmV0dXJucyBBIG5lc3RlZCBvYmplY3QgcmVwcmVzZW50aW5nIGFsbCBwYXJzZWQga2V5LXZhbHVlIHBhaXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VFbnZGaWxlKFxuICByYXc6IHN0cmluZyxcbiAgZGVsaW1pdGVyID0gJ19fJ1xuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgLy8gTm9ybWFsaXplIENSTEYgLT4gTEYgYW5kIHNwbGl0IGludG8gbGluZXNcbiAgY29uc3QgbGluZXMgPSByYXcucmVwbGFjZSgvXFxyL2csICcnKS5zcGxpdCgnXFxuJyk7XG5cbiAgZm9yIChjb25zdCByYXdMaW5lIG9mIGxpbmVzKSB7XG4gICAgY29uc3QgbGluZSA9IHJhd0xpbmUudHJpbSgpO1xuXG4gICAgLy8gU2tpcCBibGFuayBsaW5lcyBhbmQgY29tbWVudHNcbiAgICBpZiAoIWxpbmUgfHwgbGluZS5zdGFydHNXaXRoKCcjJykpIGNvbnRpbnVlO1xuXG4gICAgLy8gU3BsaXQgXCJLRVk9VkFMVUVcIiAoZmlyc3QgJz0nIG9ubHkpXG4gICAgY29uc3QgeyBrZXksIHZhbHVlIH0gPSBzcGxpdEVudkxpbmUobGluZSk7XG4gICAgaWYgKCFrZXkpIGNvbnRpbnVlOyAvLyBtYWxmb3JtZWQgbGluZSB3aXRoIG5vIGtleVxuXG4gICAgLy8gU3VwcG9ydCBuZXN0aW5nIHZpYSBkZWxpbWl0ZXI6IFwiQV9fQl9fQ1wiIC0+IFtcIkFcIixcIkJcIixcIkNcIl1cbiAgICBjb25zdCBwYXRoID0ga2V5LnNwbGl0KGRlbGltaXRlcikuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgLy8gQ29lcmNlIHZhbHVlIChoYW5kbGVzIHNpbXBsZSBhcnJheXMpXG4gICAgY29uc3QgcGFyc2VkVmFsdWUgPSBwYXJzZUVudlZhbHVlKHZhbHVlKTtcblxuICAgIC8vIFdyaXRlIGludG8gYHJlc3VsdGAgYXQgbmVzdGVkIHBhdGgsIGNyZWF0aW5nIG9iamVjdHMgYXMgbmVlZGVkXG4gICAgYXNzaWduTmVzdGVkKHJlc3VsdCwgcGF0aCwgcGFyc2VkVmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBQYXJzZXMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWUgaW50byBhIHR5cGVkIHJlcHJlc2VudGF0aW9uLlxuICpcbiAqIFN1cHBvcnRzIGFycmF5IHN5bnRheCBpbiBzcXVhcmUgYnJhY2tldHM6XG4gKiBgYGBcbiAqIFtvbmUsIHR3bywgdGhyZWVdICAtPiBbJ29uZScsICd0d28nLCAndGhyZWUnXVxuICogW1wiYVwiLCBcImJcIiwgXCJjXCJdICAgIC0+IFsnXCJhXCInLCAnXCJiXCInLCAnXCJjXCInXVxuICogYGBgXG4gKiBBbGwgb3RoZXIgdmFsdWVzIGFyZSByZXR1cm5lZCBhcyByYXcgc3RyaW5ncy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgcmF3IHN0cmluZyB2YWx1ZSB0byBwYXJzZSBmcm9tIGEgYC5lbnZgIGxpbmUuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIHZhbHVlIChzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5ncykuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRW52VmFsdWUodmFsdWU6IHN0cmluZyk6IHVua25vd24ge1xuICAvLyBSZW1vdmUgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlXG4gIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgLy8gRGV0ZWN0IGFycmF5IHN5bnRheDogW2l0ZW0xLCBpdGVtMiwgaXRlbTNdXG4gIGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJ1snKSAmJiB0cmltbWVkLmVuZHNXaXRoKCddJykpIHtcbiAgICAvLyBSZW1vdmUgc3Vycm91bmRpbmcgYnJhY2tldHMgYW5kIHRyaW0gaW5uZXIgY29udGVudFxuICAgIGNvbnN0IGlubmVyID0gdHJpbW1lZC5zbGljZSgxLCAtMSkudHJpbSgpO1xuICAgIGlmICghaW5uZXIpIHJldHVybiBbXTsgLy8gRW1wdHkgYXJyYXkg4oaSIFtdXG5cbiAgICAvLyBTcGxpdCBieSBjb21tYSBhbmQgdHJpbSBlYWNoIGVudHJ5XG4gICAgcmV0dXJuIGlubmVyLnNwbGl0KCcsJykubWFwKChpdGVtKSA9PiBpdGVtLnRyaW0oKSk7XG4gIH1cblxuICAvLyBGb3Igbm9uLWFycmF5IHZhbHVlcywgcmV0dXJuIGFzLWlzXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBXcml0ZXMgYSB2YWx1ZSBpbnRvIGEgbmVzdGVkIG9iamVjdCBzdHJ1Y3R1cmUgdXNpbmcgYSBrZXkgcGF0aC5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHNcbiAqIGNvbnN0IG9iaiA9IHt9O1xuICogYXNzaWduTmVzdGVkKG9iaiwgWydEYXRhYmFzZScsICdIb3N0J10sICdsb2NhbGhvc3QnKTtcbiAqIC8vIFJlc3VsdDogeyBEYXRhYmFzZTogeyBIb3N0OiAnbG9jYWxob3N0JyB9IH1cbiAqIGBgYFxuICpcbiAqIEludGVybWVkaWF0ZSBvYmplY3RzIGFyZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgaWYgdGhleSBkbyBub3QgZXhpc3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGJlaW5nIGFzc2lnbmVkLlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSByb290IG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBhcnJheSBvZiBwYXRoIHNlZ21lbnRzIChlLmcuLCBbJ0EnLCdCJywnQyddKS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBhc3NpZ24gYXQgdGhlIGZpbmFsIGtleS5cbiAqL1xuZnVuY3Rpb24gYXNzaWduTmVzdGVkPFQ+KFxuICB0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIFQ+LFxuICBwYXRoOiBzdHJpbmdbXSxcbiAgdmFsdWU6IFRcbik6IHZvaWQge1xuICAvLyBTdGFydCBmcm9tIHRoZSByb290IG9iamVjdCByZWZlcmVuY2VcbiAgbGV0IHJlZjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB0YXJnZXQ7XG5cbiAgLy8gV2FsayB0aHJvdWdoIGFsbCBwYXRoIHNlZ21lbnRzIGV4Y2VwdCB0aGUgbGFzdCBvbmVcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIGNvbnN0IHNlZyA9IHBhdGhbaV07XG5cbiAgICAvLyBFbnN1cmUgdGhhdCBlYWNoIHNlZ21lbnQgcG9pbnRzIHRvIGEgcGxhaW4gb2JqZWN0O1xuICAgIC8vIHJlcGxhY2UgaW52YWxpZCB0eXBlcyAobnVsbCwgYXJyYXlzLCBwcmltaXRpdmVzKSB3aXRoIHt9XG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHJlZltzZWddICE9PSAnb2JqZWN0JyB8fFxuICAgICAgcmVmW3NlZ10gPT09IG51bGwgfHxcbiAgICAgIEFycmF5LmlzQXJyYXkocmVmW3NlZ10pXG4gICAgKSB7XG4gICAgICByZWZbc2VnXSA9IHt9O1xuICAgIH1cblxuICAgIC8vIE1vdmUgZGVlcGVyIGludG8gdGhlIHN0cnVjdHVyZVxuICAgIHJlZiA9IHJlZltzZWddIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9XG5cbiAgLy8gU2V0IHRoZSBmaW5hbCBwcm9wZXJ0eSB0byB0aGUgZ2l2ZW4gdmFsdWVcbiAgcmVmW3BhdGhbcGF0aC5sZW5ndGggLSAxXV0gPSB2YWx1ZTtcbn1cblxuLyoqXG4gKiBTcGxpdHMgYSBgLmVudmAgbGluZSBpbnRvIGl0cyBrZXkgYW5kIHZhbHVlIGNvbXBvbmVudHMuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYFxuICogXCJBUElfVVJMPWh0dHBzOi8vYXBpLmV4YW1wbGUuY29tXCJcbiAqICAgLT4geyBrZXk6IFwiQVBJX1VSTFwiLCB2YWx1ZTogXCJodHRwczovL2FwaS5leGFtcGxlLmNvbVwiIH1cbiAqIGBgYFxuICpcbiAqIFRoZSBzcGxpdCBvY2N1cnMgYXQgdGhlICoqZmlyc3QqKiAnPScgY2hhcmFjdGVyIG9ubHkuXG4gKiBJZiB0aGUgbGluZSBkb2VzIG5vdCBjb250YWluICc9JywgYW4gZW1wdHkgYHsga2V5OiAnJywgdmFsdWU6ICcnIH1gIGlzIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSBsaW5lIC0gQSBzaW5nbGUgYC5lbnZgIGxpbmUgdG8gc3BsaXQuXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUga2V5IGFuZCB2YWx1ZSBzdHJpbmdzLlxuICovXG5mdW5jdGlvbiBzcGxpdEVudkxpbmUobGluZTogc3RyaW5nKTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9IHtcbiAgLy8gRmluZCBmaXJzdCAnPSc7IGtleXMgaW4gLmVudiBmaWxlcyBuZXZlciBjb250YWluICc9J1xuICBjb25zdCBlcSA9IGxpbmUuaW5kZXhPZignPScpO1xuXG4gIC8vIFNraXAgbWFsZm9ybWVkIGxpbmVzXG4gIGlmIChlcSA9PT0gLTEpIHJldHVybiB7IGtleTogJycsIHZhbHVlOiAnJyB9O1xuXG4gIC8vIEV4dHJhY3Qga2V5IGJlZm9yZSAnPScgYW5kIHZhbHVlIGFmdGVyICc9J1xuICBjb25zdCBrZXkgPSBsaW5lLnNsaWNlKDAsIGVxKS50cmltKCk7XG4gIGNvbnN0IHZhbHVlID0gbGluZS5zbGljZShlcSArIDEpLnRyaW0oKTtcblxuICAvLyBSZXR1cm4ga2V5LXZhbHVlIHBhaXJcbiAgcmV0dXJuIHsga2V5LCB2YWx1ZSB9O1xufVxuIl19
|
|
@@ -24,11 +24,11 @@ export class ToastComponent {
|
|
|
24
24
|
* @returns void
|
|
25
25
|
*/
|
|
26
26
|
closeToast = (toast) => this.toastService.close(toast.id);
|
|
27
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
28
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
27
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: ToastComponent, isStandalone: true, selector: "tae-toast", ngImport: i0, template: "<ul class=\"toast-list\" aria-live=\"polite\" aria-atomic=\"true\">\n @for (toast of toastsSignal(); track toast.id) {\n <li\n class=\"toast-item\"\n [class]=\"'toast-' + toast.type\"\n [class.toast-closing]=\"toast.state === 'closing'\"\n [style.--duration.ms]=\"toast.duration\"\n [style.--close-duration.ms]=\"toast.closeDuration\"\n role=\"status\"\n >\n <tds-toast\n [variant]=\"toast.type\"\n [header]=\"toast.title\"\n [subheader]=\"toast.description\"\n [closable]=\"toast.closable\"\n tds-close-aria-label=\"Toast close button\"\n >\n @if (toast.link) {\n <tds-link slot=\"actions\">\n <a [routerLink]=\"toast.link\">\n {{ toast.linkText ?? 'Click here' }}\n </a>\n </tds-link>\n } @else if (toast.action) {\n <tds-link slot=\"actions\">\n <a href=\"#\" (click)=\"toast.action()\">\n {{ toast.linkText ?? 'Click here' }}\n </a>\n </tds-link>\n }\n </tds-toast>\n @if (toast.closable) {\n <button\n class=\"toast-close\"\n (click)=\"closeToast(toast)\"\n aria-label=\"Close toast\"\n ></button>\n }\n </li>\n }\n</ul>\n", styles: [":host{position:fixed;right:0;bottom:0;overflow:hidden;z-index:9999}.toast-list{display:grid;grid-template-columns:1fr;gap:6px;list-style:none;padding:6px;margin:0}.toast-item{position:relative;animation:fadeIn .3s ease-in forwards}.toast-item.toast-closing{animation-name:fadeOut;animation-duration:var(--close-duration, .3s);animation-fill-mode:forwards;pointer-events:none}.toast-item:before{content:\"\";position:absolute;height:3px;width:100%;bottom:0;left:4px;right:0;animation:progress var(--duration, 7s) linear forwards;border-top-right-radius:4px;border-bottom-right-radius:4px}.toast-item.toast-information:before{background:var(--tds-information)}.toast-item.toast-success:before{background:var(--tds-positive)}.toast-item.toast-warning:before{background:var(--tds-warning)}.toast-item.toast-error:before{background:var(--tds-negative)}.toast-item .toast-close{height:20px;width:20px;box-sizing:border-box;cursor:pointer;position:absolute;top:14px;right:14px;border:0;background:transparent}.toast-item .toast-close:active{border:2px solid var(--tds-blue-400);outline-offset:-2px}@keyframes fadeIn{0%{transform:translateY(40%);opacity:0;margin-bottom:-25%}to{transform:translateY(0);opacity:1;margin-bottom:0%}}@keyframes fadeOut{0%{transform:translateY(0);opacity:1;margin-top:0}to{opacity:0;transform:translateY(75%);margin-top:-25%}}@keyframes progress{to{width:0%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TegelModule }, { kind: "component", type: i1.TdsLink, selector: "tds-link", inputs: ["disabled", "standalone", "underline"] }, { kind: "component", type: i1.TdsToast, selector: "tds-toast", inputs: ["closable", "header", "hidden", "subheader", "tdsAriaLive", "tdsCloseAriaLabel", "toastId", "toastRole", "variant"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
29
29
|
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ToastComponent, decorators: [{
|
|
31
31
|
type: Component,
|
|
32
|
-
args: [{ selector: '
|
|
32
|
+
args: [{ selector: 'tae-toast', imports: [CommonModule, TegelModule, RouterLink], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ul class=\"toast-list\" aria-live=\"polite\" aria-atomic=\"true\">\n @for (toast of toastsSignal(); track toast.id) {\n <li\n class=\"toast-item\"\n [class]=\"'toast-' + toast.type\"\n [class.toast-closing]=\"toast.state === 'closing'\"\n [style.--duration.ms]=\"toast.duration\"\n [style.--close-duration.ms]=\"toast.closeDuration\"\n role=\"status\"\n >\n <tds-toast\n [variant]=\"toast.type\"\n [header]=\"toast.title\"\n [subheader]=\"toast.description\"\n [closable]=\"toast.closable\"\n tds-close-aria-label=\"Toast close button\"\n >\n @if (toast.link) {\n <tds-link slot=\"actions\">\n <a [routerLink]=\"toast.link\">\n {{ toast.linkText ?? 'Click here' }}\n </a>\n </tds-link>\n } @else if (toast.action) {\n <tds-link slot=\"actions\">\n <a href=\"#\" (click)=\"toast.action()\">\n {{ toast.linkText ?? 'Click here' }}\n </a>\n </tds-link>\n }\n </tds-toast>\n @if (toast.closable) {\n <button\n class=\"toast-close\"\n (click)=\"closeToast(toast)\"\n aria-label=\"Close toast\"\n ></button>\n }\n </li>\n }\n</ul>\n", styles: [":host{position:fixed;right:0;bottom:0;overflow:hidden;z-index:9999}.toast-list{display:grid;grid-template-columns:1fr;gap:6px;list-style:none;padding:6px;margin:0}.toast-item{position:relative;animation:fadeIn .3s ease-in forwards}.toast-item.toast-closing{animation-name:fadeOut;animation-duration:var(--close-duration, .3s);animation-fill-mode:forwards;pointer-events:none}.toast-item:before{content:\"\";position:absolute;height:3px;width:100%;bottom:0;left:4px;right:0;animation:progress var(--duration, 7s) linear forwards;border-top-right-radius:4px;border-bottom-right-radius:4px}.toast-item.toast-information:before{background:var(--tds-information)}.toast-item.toast-success:before{background:var(--tds-positive)}.toast-item.toast-warning:before{background:var(--tds-warning)}.toast-item.toast-error:before{background:var(--tds-negative)}.toast-item .toast-close{height:20px;width:20px;box-sizing:border-box;cursor:pointer;position:absolute;top:14px;right:14px;border:0;background:transparent}.toast-item .toast-close:active{border:2px solid var(--tds-blue-400);outline-offset:-2px}@keyframes fadeIn{0%{transform:translateY(40%);opacity:0;margin-bottom:-25%}to{transform:translateY(0);opacity:1;margin-bottom:0%}}@keyframes fadeOut{0%{transform:translateY(0);opacity:1;margin-top:0}to{opacity:0;transform:translateY(75%);margin-top:-25%}}@keyframes progress{to{width:0%}}\n"] }]
|
|
33
33
|
}] });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy90ZWdlbC1hbmd1bGFyLWV4dGVuc2lvbnMvc3JjL2xpYi90b2FzdC90b2FzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3RlZ2VsLWFuZ3VsYXItZXh0ZW5zaW9ucy9zcmMvbGliL3RvYXN0L3RvYXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRS9DOzs7OztHQUtHO0FBUUgsTUFBTSxPQUFPLGNBQWM7SUFDUixZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXJEOztPQUVHO0lBQ00sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO0lBRXZEOzs7OztPQUtHO0lBQ0gsVUFBVSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7d0dBZHRELGNBQWM7NEZBQWQsY0FBYyxxRUNyQjNCLDBxQ0F5Q0EsKzVDRHZCWSxZQUFZLDhCQUFFLFdBQVcsOFVBQUUsVUFBVTs7NEZBR3BDLGNBQWM7a0JBUDFCLFNBQVM7K0JBQ0UsV0FBVyxXQUdaLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsbUJBQy9CLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRlZ2VsTW9kdWxlIH0gZnJvbSAnQHNjYW5pYS90ZWdlbC1hbmd1bGFyLTE3JztcblxuaW1wb3J0IHsgVG9hc3QgfSBmcm9tICcuL21vZGVscy90b2FzdC5tb2RlbCc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuL3RvYXN0LnNlcnZpY2UnO1xuXG4vKipcbiAqIERpc3BsYXlzIHRvYXN0IG5vdGlmaWNhdGlvbnMgcHJvdmlkZWQgYnkgdGhlIFRvYXN0U2VydmljZS5cbiAqXG4gKiBUb2FzdHMgYXJlIG5vbi1ibG9ja2luZyBtZXNzYWdlcyB0aGF0IGF1dG9tYXRpY2FsbHkgZGlzYXBwZWFyIGFmdGVyIGEgc2V0IGR1cmF0aW9uXG4gKiBvciBjYW4gYmUgZGlzbWlzc2VkIG1hbnVhbGx5IGJ5IHRoZSB1c2VyLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YWUtdG9hc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9hc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90b2FzdC5jb21wb25lbnQuc2NzcyddLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUZWdlbE1vZHVsZSwgUm91dGVyTGlua10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUb2FzdENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RTZXJ2aWNlID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIEEgcmVhY3RpdmUgc2lnbmFsIG9mIGFsbCBjdXJyZW50bHkgYWN0aXZlIHRvYXN0cyAob3BlbiBvciBjbG9zaW5nKS5cbiAgICovXG4gIHJlYWRvbmx5IHRvYXN0c1NpZ25hbCA9IHRoaXMudG9hc3RTZXJ2aWNlLmFjdGl2ZVRvYXN0cztcblxuICAvKipcbiAgICogSW5pdGlhdGVzIHRoZSBjbG9zaW5nIHByb2Nlc3MgZm9yIHRoZSBnaXZlbiB0b2FzdC5cbiAgICpcbiAgICogQHBhcmFtIHRvYXN0IFRoZSB0b2FzdCB0byBiZSBjbG9zZWQuXG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIGNsb3NlVG9hc3QgPSAodG9hc3Q6IFRvYXN0KSA9PiB0aGlzLnRvYXN0U2VydmljZS5jbG9zZSh0b2FzdC5pZCk7XG59XG4iLCI8dWwgY2xhc3M9XCJ0b2FzdC1saXN0XCIgYXJpYS1saXZlPVwicG9saXRlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCI+XG4gIEBmb3IgKHRvYXN0IG9mIHRvYXN0c1NpZ25hbCgpOyB0cmFjayB0b2FzdC5pZCkge1xuICA8bGlcbiAgICBjbGFzcz1cInRvYXN0LWl0ZW1cIlxuICAgIFtjbGFzc109XCIndG9hc3QtJyArIHRvYXN0LnR5cGVcIlxuICAgIFtjbGFzcy50b2FzdC1jbG9zaW5nXT1cInRvYXN0LnN0YXRlID09PSAnY2xvc2luZydcIlxuICAgIFtzdHlsZS4tLWR1cmF0aW9uLm1zXT1cInRvYXN0LmR1cmF0aW9uXCJcbiAgICBbc3R5bGUuLS1jbG9zZS1kdXJhdGlvbi5tc109XCJ0b2FzdC5jbG9zZUR1cmF0aW9uXCJcbiAgICByb2xlPVwic3RhdHVzXCJcbiAgPlxuICAgIDx0ZHMtdG9hc3RcbiAgICAgIFt2YXJpYW50XT1cInRvYXN0LnR5cGVcIlxuICAgICAgW2hlYWRlcl09XCJ0b2FzdC50aXRsZVwiXG4gICAgICBbc3ViaGVhZGVyXT1cInRvYXN0LmRlc2NyaXB0aW9uXCJcbiAgICAgIFtjbG9zYWJsZV09XCJ0b2FzdC5jbG9zYWJsZVwiXG4gICAgICB0ZHMtY2xvc2UtYXJpYS1sYWJlbD1cIlRvYXN0IGNsb3NlIGJ1dHRvblwiXG4gICAgPlxuICAgICAgQGlmICh0b2FzdC5saW5rKSB7XG4gICAgICA8dGRzLWxpbmsgc2xvdD1cImFjdGlvbnNcIj5cbiAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwidG9hc3QubGlua1wiPlxuICAgICAgICAgIHt7IHRvYXN0LmxpbmtUZXh0ID8/ICdDbGljayBoZXJlJyB9fVxuICAgICAgICA8L2E+XG4gICAgICA8L3Rkcy1saW5rPlxuICAgICAgfSBAZWxzZSBpZiAodG9hc3QuYWN0aW9uKSB7XG4gICAgICA8dGRzLWxpbmsgc2xvdD1cImFjdGlvbnNcIj5cbiAgICAgICAgPGEgaHJlZj1cIiNcIiAoY2xpY2spPVwidG9hc3QuYWN0aW9uKClcIj5cbiAgICAgICAgICB7eyB0b2FzdC5saW5rVGV4dCA/PyAnQ2xpY2sgaGVyZScgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC90ZHMtbGluaz5cbiAgICAgIH1cbiAgICA8L3Rkcy10b2FzdD5cbiAgICBAaWYgKHRvYXN0LmNsb3NhYmxlKSB7XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJ0b2FzdC1jbG9zZVwiXG4gICAgICAoY2xpY2spPVwiY2xvc2VUb2FzdCh0b2FzdClcIlxuICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIHRvYXN0XCJcbiAgICA+PC9idXR0b24+XG4gICAgfVxuICA8L2xpPlxuICB9XG48L3VsPlxuIl19
|
|
@@ -194,10 +194,10 @@ export class ToastService {
|
|
|
194
194
|
const num = typeof value === 'number' ? value : fallback;
|
|
195
195
|
return !Number.isFinite(num) || num < 0 ? 0 : num;
|
|
196
196
|
}
|
|
197
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
198
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
197
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
198
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ToastService, providedIn: 'root' });
|
|
199
199
|
}
|
|
200
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
200
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ToastService, decorators: [{
|
|
201
201
|
type: Injectable,
|
|
202
202
|
args: [{
|
|
203
203
|
providedIn: 'root',
|