@taiga-ui/cdk 4.37.0 → 4.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/constants/version.d.ts +1 -1
- package/constants/version.js +1 -1
- package/esm2022/constants/version.mjs +2 -2
- package/esm2022/pipes/index.mjs +2 -1
- package/esm2022/pipes/obfuscate/index.mjs +3 -0
- package/esm2022/pipes/obfuscate/obfuscate.options.mjs +10 -0
- package/esm2022/pipes/obfuscate/obfuscate.pipe.mjs +44 -0
- package/esm2022/pipes/obfuscate/taiga-ui-cdk-pipes-obfuscate.mjs +5 -0
- package/esm2022/utils/dom/index.mjs +2 -1
- package/esm2022/utils/dom/value-binding.mjs +2 -1
- package/esm2022/utils/dom/value.mjs +71 -0
- package/esm2022/utils/miscellaneous/index.mjs +2 -1
- package/esm2022/utils/miscellaneous/obfuscate.mjs +53 -0
- package/fesm2022/taiga-ui-cdk-constants.mjs +1 -1
- package/fesm2022/taiga-ui-cdk-constants.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-pipes-obfuscate.mjs +59 -0
- package/fesm2022/taiga-ui-cdk-pipes-obfuscate.mjs.map +1 -0
- package/fesm2022/taiga-ui-cdk-pipes.mjs +1 -0
- package/fesm2022/taiga-ui-cdk-pipes.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-utils-dom.mjs +73 -2
- package/fesm2022/taiga-ui-cdk-utils-dom.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs +54 -1
- package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs.map +1 -1
- package/package.json +7 -1
- package/pipes/index.d.ts +1 -0
- package/pipes/obfuscate/index.d.ts +2 -0
- package/pipes/obfuscate/obfuscate.options.d.ts +19 -0
- package/pipes/obfuscate/obfuscate.pipe.d.ts +16 -0
- package/schematics/collection.json +5 -0
- package/schematics/migrate-tui-let/index.d.ts +3 -0
- package/schematics/migrate-tui-let/index.js +71 -0
- package/schematics/ng-update/steps/index.d.ts +1 -1
- package/schematics/ng-update/steps/index.js +1 -1
- package/schematics/ng-update/v4/migrate-addon-doc/index.js +1 -1
- package/schematics/ng-update/v4/migrate-css-vars/palette.d.ts +1 -1
- package/schematics/ng-update/v4/migrate-css-vars/palette.js +1 -1
- package/schematics/ng-update/v4/steps/templates/migrate-badge.js +1 -1
- package/schematics/ng-update/v4/steps/templates/migrate-badged-content.js +1 -1
- package/schematics/ng-update/v4/steps/templates/migrate-button-appearance.js +1 -1
- package/schematics/ng-update/v4/steps/templates/migrate-expandable.js +1 -1
- package/schematics/ng-update/v4/steps/templates/migrate-overscroll.js +1 -1
- package/schematics/utils/create-angular-json.d.ts +3 -2
- package/schematics/utils/create-angular-json.js +2 -2
- package/schematics/utils/get-projects.d.ts +1 -1
- package/schematics/{ng-update/steps → utils}/remove-module.d.ts +2 -2
- package/schematics/{ng-update/steps → utils}/remove-module.js +2 -2
- package/utils/dom/index.d.ts +1 -0
- package/utils/dom/value.d.ts +4 -0
- package/utils/miscellaneous/index.d.ts +1 -0
- package/utils/miscellaneous/obfuscate.d.ts +14 -0
package/constants/version.d.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export declare const TUI_VERSION = "4.
|
1
|
+
export declare const TUI_VERSION = "4.38.0";
|
package/constants/version.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export const TUI_VERSION = '4.
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
1
|
+
export const TUI_VERSION = '4.38.0';
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9jb25zdGFudHMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFRVSV9WRVJTSU9OID0gJzQuMzguMCc7XG4iXX0=
|
package/esm2022/pipes/index.mjs
CHANGED
@@ -3,7 +3,8 @@ export * from '@taiga-ui/cdk/pipes/filter';
|
|
3
3
|
export * from '@taiga-ui/cdk/pipes/is-present';
|
4
4
|
export * from '@taiga-ui/cdk/pipes/keys';
|
5
5
|
export * from '@taiga-ui/cdk/pipes/mapper';
|
6
|
+
export * from '@taiga-ui/cdk/pipes/obfuscate';
|
6
7
|
export * from '@taiga-ui/cdk/pipes/repeat-times';
|
7
8
|
export * from '@taiga-ui/cdk/pipes/replace';
|
8
9
|
export * from '@taiga-ui/cdk/pipes/to-array';
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvcGlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICdAdGFpZ2EtdWkvY2RrL3BpcGVzL2FuaW1hdGlvbic7XG5leHBvcnQgKiBmcm9tICdAdGFpZ2EtdWkvY2RrL3BpcGVzL2ZpbHRlcic7XG5leHBvcnQgKiBmcm9tICdAdGFpZ2EtdWkvY2RrL3BpcGVzL2lzLXByZXNlbnQnO1xuZXhwb3J0ICogZnJvbSAnQHRhaWdhLXVpL2Nkay9waXBlcy9rZXlzJztcbmV4cG9ydCAqIGZyb20gJ0B0YWlnYS11aS9jZGsvcGlwZXMvbWFwcGVyJztcbmV4cG9ydCAqIGZyb20gJ0B0YWlnYS11aS9jZGsvcGlwZXMvb2JmdXNjYXRlJztcbmV4cG9ydCAqIGZyb20gJ0B0YWlnYS11aS9jZGsvcGlwZXMvcmVwZWF0LXRpbWVzJztcbmV4cG9ydCAqIGZyb20gJ0B0YWlnYS11aS9jZGsvcGlwZXMvcmVwbGFjZSc7XG5leHBvcnQgKiBmcm9tICdAdGFpZ2EtdWkvY2RrL3BpcGVzL3RvLWFycmF5JztcbiJdfQ==
|
@@ -0,0 +1,3 @@
|
|
1
|
+
export * from './obfuscate.options';
|
2
|
+
export * from './obfuscate.pipe';
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvcGlwZXMvb2JmdXNjYXRlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vb2JmdXNjYXRlLm9wdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9vYmZ1c2NhdGUucGlwZSc7XG4iXX0=
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { tuiCreateOptions, tuiObfuscate } from '@taiga-ui/cdk/utils';
|
2
|
+
export const TUI_OBFUSCATE_DEFAULT_OPTIONS = {
|
3
|
+
default: (value, symbol = '*') => tuiObfuscate(value, symbol),
|
4
|
+
recipes: {},
|
5
|
+
};
|
6
|
+
/**
|
7
|
+
* Injection token for obfuscation options.
|
8
|
+
*/
|
9
|
+
export const [TUI_OBFUSCATE_OPTIONS, tuiObfuscateOptionsProvider] = tuiCreateOptions(TUI_OBFUSCATE_DEFAULT_OPTIONS);
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JmdXNjYXRlLm9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvcGlwZXMvb2JmdXNjYXRlL29iZnVzY2F0ZS5vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQWtCbkUsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQXdCO0lBQzlELE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUM3RCxPQUFPLEVBQUUsRUFBRTtDQUNkLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsMkJBQTJCLENBQUMsR0FBRyxnQkFBZ0IsQ0FDaEYsNkJBQTZCLENBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3R1aUNyZWF0ZU9wdGlvbnMsIHR1aU9iZnVzY2F0ZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscyc7XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgb3B0aW9ucyBmb3Igb2JmdXNjYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHVpT2JmdXNjYXRlT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogRGVmYXVsdCBmdW5jdGlvbiB1c2VkIHRvIG9iZnVzY2F0ZSBhIHN0cmluZ1xuICAgICAqIGlmIG5vIHJlY2lwZSB3YXMgZm91bmQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVmYXVsdDogKHZhbHVlOiBzdHJpbmcsIHN5bWJvbD86IHN0cmluZykgPT4gc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQ29sbGVjdGlvbiBvZiBuYW1lZCByZWNpcGVzIGZvciBkaWZmZXJlbnQgb2JmdXNjYXRpb24gc2NlbmFyaW9zLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHJlY2lwZXM6IFJlY29yZDxzdHJpbmcsICh2YWx1ZTogc3RyaW5nKSA9PiBzdHJpbmc+O1xufVxuXG5leHBvcnQgY29uc3QgVFVJX09CRlVTQ0FURV9ERUZBVUxUX09QVElPTlM6IFR1aU9iZnVzY2F0ZU9wdGlvbnMgPSB7XG4gICAgZGVmYXVsdDogKHZhbHVlLCBzeW1ib2wgPSAnKicpID0+IHR1aU9iZnVzY2F0ZSh2YWx1ZSwgc3ltYm9sKSxcbiAgICByZWNpcGVzOiB7fSxcbn07XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciBvYmZ1c2NhdGlvbiBvcHRpb25zLlxuICovXG5leHBvcnQgY29uc3QgW1RVSV9PQkZVU0NBVEVfT1BUSU9OUywgdHVpT2JmdXNjYXRlT3B0aW9uc1Byb3ZpZGVyXSA9IHR1aUNyZWF0ZU9wdGlvbnMoXG4gICAgVFVJX09CRlVTQ0FURV9ERUZBVUxUX09QVElPTlMsXG4pO1xuIl19
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import { inject, Pipe } from '@angular/core';
|
2
|
+
import { TUI_OBFUSCATE_OPTIONS } from './obfuscate.options';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
class TuiObfuscatePipe {
|
5
|
+
constructor() {
|
6
|
+
this.option = inject(TUI_OBFUSCATE_OPTIONS);
|
7
|
+
}
|
8
|
+
/**
|
9
|
+
* Transforms the input value by obfuscating it according to the specified recipe or symbol.
|
10
|
+
*
|
11
|
+
* @param value The value to be obfuscated should be a string.
|
12
|
+
* @param recipe The name of the recipe to use for obfuscation or a single character symbol for custom obfuscation.
|
13
|
+
* @returns The obfuscated string.
|
14
|
+
* @throws Will throw an error if the specified recipe is not found.
|
15
|
+
*/
|
16
|
+
transform(value, recipe = '') {
|
17
|
+
if (!value) {
|
18
|
+
return value;
|
19
|
+
}
|
20
|
+
if (!recipe) {
|
21
|
+
return this.option.default(value);
|
22
|
+
}
|
23
|
+
const obfuscate = this.option.recipes[recipe];
|
24
|
+
if (obfuscate) {
|
25
|
+
return obfuscate(value);
|
26
|
+
}
|
27
|
+
if (recipe.length === 1) {
|
28
|
+
return this.option.default(value, recipe[0]);
|
29
|
+
}
|
30
|
+
const availableRecipes = Object.keys(this.option.recipes).sort();
|
31
|
+
throw new Error(`Obfuscate recipe "${recipe}" not found. Available recipes: [${availableRecipes}]`);
|
32
|
+
}
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiObfuscatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
34
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: TuiObfuscatePipe, isStandalone: true, name: "tuiObfuscate" }); }
|
35
|
+
}
|
36
|
+
export { TuiObfuscatePipe };
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiObfuscatePipe, decorators: [{
|
38
|
+
type: Pipe,
|
39
|
+
args: [{
|
40
|
+
standalone: true,
|
41
|
+
name: 'tuiObfuscate',
|
42
|
+
}]
|
43
|
+
}] });
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JmdXNjYXRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvcGlwZXMvb2JmdXNjYXRlL29iZnVzY2F0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDOztBQUUxRCxNQUlhLGdCQUFnQjtJQUo3QjtRQUtxQixXQUFNLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7S0FtQzNEO0lBakNHOzs7Ozs7O09BT0c7SUFDSSxTQUFTLENBQUMsS0FBYSxFQUFFLE1BQU0sR0FBRyxFQUFFO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3JDO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFOUMsSUFBSSxTQUFTLEVBQUU7WUFDWCxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQjtRQUVELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEQ7UUFFRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVqRSxNQUFNLElBQUksS0FBSyxDQUNYLHFCQUFxQixNQUFNLG9DQUFvQyxnQkFBZ0IsR0FBRyxDQUNyRixDQUFDO0lBQ04sQ0FBQzsrR0FuQ1EsZ0JBQWdCOzZHQUFoQixnQkFBZ0I7O1NBQWhCLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQUo1QixJQUFJO21CQUFDO29CQUNGLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUUsY0FBYztpQkFDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7UGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2luamVjdCwgUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7VFVJX09CRlVTQ0FURV9PUFRJT05TfSBmcm9tICcuL29iZnVzY2F0ZS5vcHRpb25zJztcblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3R1aU9iZnVzY2F0ZScsXG59KVxuZXhwb3J0IGNsYXNzIFR1aU9iZnVzY2F0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbiA9IGluamVjdChUVUlfT0JGVVNDQVRFX09QVElPTlMpO1xuXG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtcyB0aGUgaW5wdXQgdmFsdWUgYnkgb2JmdXNjYXRpbmcgaXQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgcmVjaXBlIG9yIHN5bWJvbC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gYmUgb2JmdXNjYXRlZCBzaG91bGQgYmUgYSBzdHJpbmcuXG4gICAgICogQHBhcmFtIHJlY2lwZSBUaGUgbmFtZSBvZiB0aGUgcmVjaXBlIHRvIHVzZSBmb3Igb2JmdXNjYXRpb24gb3IgYSBzaW5nbGUgY2hhcmFjdGVyIHN5bWJvbCBmb3IgY3VzdG9tIG9iZnVzY2F0aW9uLlxuICAgICAqIEByZXR1cm5zIFRoZSBvYmZ1c2NhdGVkIHN0cmluZy5cbiAgICAgKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHNwZWNpZmllZCByZWNpcGUgaXMgbm90IGZvdW5kLlxuICAgICAqL1xuICAgIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgcmVjaXBlID0gJycpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJlY2lwZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uLmRlZmF1bHQodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb2JmdXNjYXRlID0gdGhpcy5vcHRpb24ucmVjaXBlc1tyZWNpcGVdO1xuXG4gICAgICAgIGlmIChvYmZ1c2NhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmZ1c2NhdGUodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlY2lwZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbi5kZWZhdWx0KHZhbHVlLCByZWNpcGVbMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXZhaWxhYmxlUmVjaXBlcyA9IE9iamVjdC5rZXlzKHRoaXMub3B0aW9uLnJlY2lwZXMpLnNvcnQoKTtcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgT2JmdXNjYXRlIHJlY2lwZSBcIiR7cmVjaXBlfVwiIG5vdCBmb3VuZC4gQXZhaWxhYmxlIHJlY2lwZXM6IFske2F2YWlsYWJsZVJlY2lwZXN9XWAsXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/**
|
2
|
+
* Generated bundle index. Do not edit.
|
3
|
+
*/
|
4
|
+
export * from './index';
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpZ2EtdWktY2RrLXBpcGVzLW9iZnVzY2F0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9waXBlcy9vYmZ1c2NhdGUvdGFpZ2EtdWktY2RrLXBpcGVzLW9iZnVzY2F0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
@@ -15,5 +15,6 @@ export * from './is-inside-iframe';
|
|
15
15
|
export * from './is-node-in';
|
16
16
|
export * from './point-to-client-rect';
|
17
17
|
export * from './retarget-boundary-crossing';
|
18
|
+
export * from './value';
|
18
19
|
export * from './value-binding';
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvZG9tL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29udGFpbnMtb3ItYWZ0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9lbGVtZW50LWNoZWNrcyc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50LWNoZWNrcyc7XG5leHBvcnQgKiBmcm9tICcuL2dldC1hY3R1YWwtdGFyZ2V0JztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0LWNsaXBib2FyZC1kYXRhLXRleHQnO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtZG9jdW1lbnQtb3Itc2hhZG93LXJvb3QnO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtZWxlbWVudC1vYnNjdXJlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtZWxlbWVudC1vZmZzZXQnO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtZWxlbWVudC1wb2ludCc7XG5leHBvcnQgKiBmcm9tICcuL2dldC1zZWxlY3RlZC10ZXh0JztcbmV4cG9ydCAqIGZyb20gJy4vaW5qZWN0LWVsZW1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pcy1jdXJyZW50LXRhcmdldCc7XG5leHBvcnQgKiBmcm9tICcuL2lzLWVsZW1lbnQtZWRpdGFibGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pcy1pbnNpZGUtaWZyYW1lJztcbmV4cG9ydCAqIGZyb20gJy4vaXMtbm9kZS1pbic7XG5leHBvcnQgKiBmcm9tICcuL3BvaW50LXRvLWNsaWVudC1yZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vcmV0YXJnZXQtYm91bmRhcnktY3Jvc3NpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi92YWx1ZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZhbHVlLWJpbmRpbmcnO1xuIl19
|
@@ -6,6 +6,7 @@ import { tuiInjectElement } from './inject-element';
|
|
6
6
|
* `TuiTextfieldDirective` has host binding which depends on native input's value.
|
7
7
|
* Host bindings of the host directives are re-calculated BEFORE component's ones –
|
8
8
|
* native input's value should be updated SYNCHRONOUSLY before next change detection iteration.
|
9
|
+
* @deprecated
|
9
10
|
*/
|
10
11
|
export function tuiValueBinding(value = signal(tuiInjectElement().value || '')) {
|
11
12
|
const el = tuiInjectElement();
|
@@ -25,4 +26,4 @@ export function tuiValueBinding(value = signal(tuiInjectElement().value || ''))
|
|
25
26
|
});
|
26
27
|
return value;
|
27
28
|
}
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtYmluZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay91dGlscy9kb20vdmFsdWUtYmluZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUtsRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDM0IsUUFBd0IsTUFBTSxDQUFDLGdCQUFnQixFQUFvQixDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFFaEYsTUFBTSxFQUFFLEdBQUcsZ0JBQWdCLEVBQW9CLENBQUM7SUFFaEQsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUNSLElBQUksRUFBRSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRTtZQUN0QixPQUFPO1NBQ1Y7UUFFRCxNQUFNLEVBQUMsY0FBYyxFQUFFLFlBQVksRUFBQyxHQUFHLEVBQUUsQ0FBQztRQUUxQyxFQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDO1FBRW5CLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN0Qjs7O2VBR0c7WUFDSCxFQUFFLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ3REO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1NpZ25hbCwgV3JpdGFibGVTaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtlZmZlY3QsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnLi9pbmplY3QtZWxlbWVudCc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlWYWx1ZUJpbmRpbmcodmFsdWU/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+KTogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbmV4cG9ydCBmdW5jdGlvbiB0dWlWYWx1ZUJpbmRpbmcodmFsdWU/OiBTaWduYWw8c3RyaW5nPik6IFNpZ25hbDxzdHJpbmc+O1xuXG4vKipcbiAqIEhvc3QgYmluZGluZyBgaG9zdDogeydbdmFsdWVdJzogJ3lvdXJTaWduYWwoKSd9YCBpcyBub3QgYW4gb3B0aW9uIGZvciBvdXIgdGV4dGZpZWxkcyDigJNcbiAqIHRoZXkgdXNlIHtAbGluayBUdWlUZXh0ZmllbGREaXJlY3RpdmV9IGFzIGEgaG9zdCBkaXJlY3RpdmUuXG4gKiBgVHVpVGV4dGZpZWxkRGlyZWN0aXZlYCBoYXMgaG9zdCBiaW5kaW5nIHdoaWNoIGRlcGVuZHMgb24gbmF0aXZlIGlucHV0J3MgdmFsdWUuXG4gKiBIb3N0IGJpbmRpbmdzIG9mIHRoZSBob3N0IGRpcmVjdGl2ZXMgYXJlIHJlLWNhbGN1bGF0ZWQgQkVGT1JFIGNvbXBvbmVudCdzIG9uZXMg4oCTXG4gKiBuYXRpdmUgaW5wdXQncyB2YWx1ZSBzaG91bGQgYmUgdXBkYXRlZCBTWU5DSFJPTk9VU0xZIGJlZm9yZSBuZXh0IGNoYW5nZSBkZXRlY3Rpb24gaXRlcmF0aW9uLlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHR1aVZhbHVlQmluZGluZyhcbiAgICB2YWx1ZTogU2lnbmFsPHN0cmluZz4gPSBzaWduYWwodHVpSW5qZWN0RWxlbWVudDxIVE1MSW5wdXRFbGVtZW50PigpLnZhbHVlIHx8ICcnKSxcbik6IFNpZ25hbDxzdHJpbmc+IHtcbiAgICBjb25zdCBlbCA9IHR1aUluamVjdEVsZW1lbnQ8SFRNTElucHV0RWxlbWVudD4oKTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChlbC52YWx1ZSA9PT0gdmFsdWUoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge3NlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmR9ID0gZWw7XG5cbiAgICAgICAgZWwudmFsdWUgPSB2YWx1ZSgpO1xuXG4gICAgICAgIGlmIChlbC5tYXRjaGVzKCc6Zm9jdXMnKSkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBZnRlciBwcm9ncmFtbWF0aWMgdXBkYXRlcyBvZiBpbnB1dCdzIHZhbHVlLCBjYXJldCBpcyBhdXRvbWF0aWNhbGx5IHBsYWNlZCBhdCB0aGUgZW5kIOKAk1xuICAgICAgICAgICAgICogcmV2ZXJ0IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBlbC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xufVxuIl19
|
@@ -0,0 +1,71 @@
|
|
1
|
+
import { coerceElement } from '@angular/cdk/coercion';
|
2
|
+
import { isPlatformBrowser } from '@angular/common';
|
3
|
+
import { DestroyRef, effect, inject, INJECTOR, isSignal, PLATFORM_ID, signal, } from '@angular/core';
|
4
|
+
import { WA_WINDOW } from '@ng-web-apis/common';
|
5
|
+
import { TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
|
6
|
+
export function tuiValue(input, injector = inject(INJECTOR)) {
|
7
|
+
const win = injector.get(WA_WINDOW);
|
8
|
+
if (!win.tuiInputPatched && isPlatformBrowser(injector.get(PLATFORM_ID))) {
|
9
|
+
win.tuiInputPatched = true;
|
10
|
+
patch(win.HTMLInputElement.prototype);
|
11
|
+
patch(win.HTMLTextAreaElement.prototype);
|
12
|
+
patch(win.HTMLSelectElement.prototype);
|
13
|
+
}
|
14
|
+
let element = isSignal(input) ? undefined : coerceElement(input);
|
15
|
+
let cleanup = () => { };
|
16
|
+
const options = { injector, ...TUI_ALLOW_SIGNAL_WRITES };
|
17
|
+
const value = signal(element?.value || '');
|
18
|
+
const process = (el) => {
|
19
|
+
const update = () => value.set(el.value);
|
20
|
+
el.addEventListener('input', update);
|
21
|
+
el.addEventListener('tui-input', update);
|
22
|
+
return () => {
|
23
|
+
el.removeEventListener('input', update);
|
24
|
+
el.removeEventListener('tui-input', update);
|
25
|
+
};
|
26
|
+
};
|
27
|
+
injector.get(DestroyRef).onDestroy(() => cleanup());
|
28
|
+
if (isSignal(input)) {
|
29
|
+
effect(() => {
|
30
|
+
element = coerceElement(input());
|
31
|
+
cleanup();
|
32
|
+
if (element) {
|
33
|
+
value.set(element.value);
|
34
|
+
cleanup = process(element);
|
35
|
+
}
|
36
|
+
}, options);
|
37
|
+
}
|
38
|
+
else if (element) {
|
39
|
+
cleanup = process(element);
|
40
|
+
}
|
41
|
+
effect(() => {
|
42
|
+
const v = value();
|
43
|
+
if (element?.matches(':focus') && 'selectionStart' in element) {
|
44
|
+
const { selectionStart, selectionEnd } = element;
|
45
|
+
/**
|
46
|
+
* After programmatic updates of input's value, caret is automatically placed at the end –
|
47
|
+
* revert to the previous position
|
48
|
+
*/
|
49
|
+
element.value = v;
|
50
|
+
element.setSelectionRange(selectionStart, selectionEnd);
|
51
|
+
}
|
52
|
+
else if (element) {
|
53
|
+
element.value = v;
|
54
|
+
}
|
55
|
+
}, options);
|
56
|
+
return value;
|
57
|
+
}
|
58
|
+
function patch(prototype) {
|
59
|
+
const { set } = Object.getOwnPropertyDescriptor(prototype, 'value');
|
60
|
+
Object.defineProperty(prototype, 'value', {
|
61
|
+
set(detail) {
|
62
|
+
const value = this.value;
|
63
|
+
const event = new CustomEvent('tui-input', { detail, bubbles: true });
|
64
|
+
set.call(this, detail);
|
65
|
+
if (value !== detail) {
|
66
|
+
this.dispatchEvent(event);
|
67
|
+
}
|
68
|
+
},
|
69
|
+
});
|
70
|
+
}
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvZG9tL3ZhbHVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUVsRCxPQUFPLEVBQ0gsVUFBVSxFQUNWLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLFFBQVEsRUFDUixXQUFXLEVBQ1gsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUloRSxNQUFNLFVBQVUsUUFBUSxDQUNwQixLQUllLEVBQ2YsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFFM0IsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBTSxTQUFTLENBQUMsQ0FBQztJQUV6QyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUU7UUFDdEUsR0FBRyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFFM0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxLQUFLLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLEtBQUssQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDMUM7SUFFRCxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYSxD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QUFFO2dCQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzdCO1FBQ0wsQ0FBQztLQUNKLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NvZXJjZUVsZW1lbnR9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge2lzUGxhdGZvcm1Ccm93c2VyfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHR5cGUge0VsZW1lbnRSZWYsIFNpZ25hbCwgV3JpdGFibGVTaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBEZXN0cm95UmVmLFxuICAgIGVmZmVjdCxcbiAgICBpbmplY3QsXG4gICAgSU5KRUNUT1IsXG4gICAgaXNTaWduYWwsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V0FfV0lORE9XfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7VFVJX0FMTE9XX1NJR05BTF9XUklURVN9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcblxudHlwZSBXaXRoVmFsdWUgPSBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50O1xuXG5leHBvcnQgZnVuY3Rpb24gdHVpVmFsdWUoXG4gICAgaW5wdXQ6XG4gICAgICAgIHwgRWxlbWVudFJlZjxXaXRoVmFsdWU+XG4gICAgICAgIHwgU2lnbmFsPEVsZW1lbnRSZWY8V2l0aFZhbHVlPiB8IHVuZGVmaW5lZD5cbiAgICAgICAgfCBTaWduYWw8V2l0aFZhbHVlIHwgdW5kZWZpbmVkPlxuICAgICAgICB8IFdpdGhWYWx1ZSxcbiAgICBpbmplY3RvciA9IGluamVjdChJTkpFQ1RPUiksXG4pOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+IHtcbiAgICBjb25zdCB3aW4gPSBpbmplY3Rvci5nZXQ8YW55PihXQV9XSU5ET1cpO1xuXG4gICAgaWYgKCF3aW4udHVpSW5wdXRQYXRjaGVkICYmIGlzUGxhdGZvcm1Ccm93c2VyKGluamVjdG9yLmdldChQTEFURk9STV9JRCkpKSB7XG4gICAgICAgIHdpbi50dWlJbnB1dFBhdGNoZWQgPSB0cnVlO1xuXG4gICAgICAgIHBhdGNoKHdpbi5IVE1MSW5wdXRFbGVtZW50LnByb3RvdHlwZSk7XG4gICAgICAgIHBhdGNoKHdpbi5IVE1MVGV4dEFyZWFFbGVtZW50LnByb3RvdHlwZSk7XG4gICAgICAgIHBhdGNoKHdpbi5IVE1MU2VsZWN0RWxlbWVudC5wcm90b3R5cGUpO1xuICAgIH1cblxuICAgIGxldCBlbGVtZW50ID0gaXNTaWduYWwoaW5wdXQpID8gdW5kZWZpbmVkIDogY29lcmNlRWxlbWVudChpbnB1dCk7XG4gICAgbGV0IGNsZWFudXAgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB7aW5qZWN0b3IsIC4uLlRVSV9BTExPV19TSUdOQUxfV1JJVEVTfTtcbiAgICBjb25zdCB2YWx1ZSA9IHNpZ25hbChlbGVtZW50Py52YWx1ZSB8fCAnJyk7XG4gICAgY29uc3QgcHJvY2VzcyA9IChlbDogV2l0aFZhbHVlKTogKCgpID0+IHZvaWQpID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlID0gKCk6IHZvaWQgPT4gdmFsdWUuc2V0KGVsLnZhbHVlKTtcblxuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIHVwZGF0ZSk7XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3R1aS1pbnB1dCcsIHVwZGF0ZSk7XG5cbiAgICAgICAgcmV0dXJuICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2lucHV0JywgdXBkYXRlKTtcbiAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3R1aS1pbnB1dCcsIHVwZGF0ZSk7XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGluamVjdG9yLmdldChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4gY2xlYW51cCgpKTtcblxuICAgIGlmIChpc1NpZ25hbChpbnB1dCkpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSBjb2VyY2VFbGVtZW50KGlucHV0KCkpO1xuICAgICAgICAgICAgY2xlYW51cCgpO1xuXG4gICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHZhbHVlLnNldChlbGVtZW50LnZhbHVlKTtcbiAgICAgICAgICAgICAgICBjbGVhbnVwID0gcHJvY2VzcyhlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50KSB7XG4gICAgICAgIGNsZWFudXAgPSBwcm9jZXNzKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHYgPSB2YWx1ZSgpO1xuXG4gICAgICAgIGlmIChlbGVtZW50Py5tYXRjaGVzKCc6Zm9jdXMnKSAmJiAnc2VsZWN0aW9uU3RhcnQnIGluIGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHtzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kfSA9IGVsZW1lbnQ7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWZ0ZXIgcHJvZ3JhbW1hdGljIHVwZGF0ZXMgb2YgaW5wdXQncyB2YWx1ZSwgY2FyZXQgaXMgYXV0b21hdGljYWxseSBwbGFjZWQgYXQgdGhlIGVuZCDigJNcbiAgICAgICAgICAgICAqIHJldmVydCB0byB0aGUgcHJldmlvdXMgcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9IHY7XG4gICAgICAgICAgICBlbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSB2O1xuICAgICAgICB9XG4gICAgfSwgb3B0aW9ucyk7XG5cbiAgICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIHBhdGNoKHByb3RvdHlwZTogV2l0aFZhbHVlKTogdm9pZCB7XG4gICAgY29uc3Qge3NldH0gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvdHlwZSwgJ3ZhbHVlJykhO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgJ3ZhbHVlJywge1xuICAgICAgICBzZXQodGhpczogV2l0aFZhbHVlLCBkZXRhaWw6IHN0cmluZykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3R1aS1pbnB1dCcsIHtkZXRhaWwsIGJ1YmJsZXM6IHRydWV9KTtcblxuICAgICAgICAgICAgc2V0IS5jYWxsKHRoaXMsIGRldGFpbCk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gZGV0YWlsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbiJdfQ==
|
@@ -21,10 +21,11 @@ export * from './is-string';
|
|
21
21
|
export * from './is-valid-url';
|
22
22
|
export * from './mark-control-as-touched-and-validate';
|
23
23
|
export * from './nullable-same';
|
24
|
+
export * from './obfuscate';
|
24
25
|
export * from './provide';
|
25
26
|
export * from './provide-options';
|
26
27
|
export * from './pure';
|
27
28
|
export * from './px';
|
28
29
|
export * from './uniq-by';
|
29
30
|
export * from './with-styles';
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLE1BQU0sQ0FBQztBQUNyQixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXJyYXktcmVtb3ZlJztcbmV4cG9ydCAqIGZyb20gJy4vYXJyYXktc2hhbGxvdy1lcXVhbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9hcnJheS10b2dnbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jaGFuZ2UtZGF0ZS1zZXBhcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9jb3VudC1maWxsZWQtY29udHJvbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGUtdG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9kZWZhdWx0LXNvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmUtYmluZGluZyc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZS1saXN0ZW5lcic7XG5leHBvcnQgKiBmcm9tICcuL2Rpc3RhbmNlLWJldHdlZW4tdG91Y2hlcyc7XG5leHBvcnQgKiBmcm9tICcuL2Vhc2UtaW4tb3V0LXF1YWQnO1xuZXhwb3J0ICogZnJvbSAnLi9mbGF0LWxlbmd0aCc7XG5leHBvcnQgKiBmcm9tICcuL2ZvbnQtc2l6ZS13YXRjaGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0LW9yaWdpbmFsLWFycmF5LWZyb20tcXVlcnktbGlzdCc7XG5leHBvcnQgKiBmcm9tICcuL2lzLWNvbnRyb2wtZW1wdHknO1xuZXhwb3J0ICogZnJvbSAnLi9pcy1mYWxzeSc7XG5leHBvcnQgKiBmcm9tICcuL2lzLW51bWJlcic7XG5leHBvcnQgKiBmcm9tICcuL2lzLW9iamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2lzLXByZXNlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pcy1zdHJpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9pcy12YWxpZC11cmwnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXJrLWNvbnRyb2wtYXMtdG91Y2hlZC1hbmQtdmFsaWRhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9udWxsYWJsZS1zYW1lJztcbmV4cG9ydCAqIGZyb20gJy4vb2JmdXNjYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZSc7XG5leHBvcnQgKiBmcm9tICcuL3Byb3ZpZGUtb3B0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3B1cmUnO1xuZXhwb3J0ICogZnJvbSAnLi9weCc7XG5leHBvcnQgKiBmcm9tICcuL3VuaXEtYnknO1xuZXhwb3J0ICogZnJvbSAnLi93aXRoLXN0eWxlcyc7XG4iXX0=
|
@@ -0,0 +1,53 @@
|
|
1
|
+
/**
|
2
|
+
* Obfuscates a string by replacing certain characters with a symbol.
|
3
|
+
*
|
4
|
+
* @param value the input string to obfuscate
|
5
|
+
* @param symbol the symbol for obfuscation
|
6
|
+
* @return the obfuscated string
|
7
|
+
*
|
8
|
+
* The function determines which characters to obfuscate using a regular expression and the string's length:
|
9
|
+
* - 8 or more: show first 2 and last 2 characters
|
10
|
+
* - 4 to 7: show first and last character
|
11
|
+
* - less than 4: obfuscate all characters
|
12
|
+
* - obfuscates only alphanumeric characters
|
13
|
+
*/
|
14
|
+
export function tuiObfuscate(value, symbol) {
|
15
|
+
if (!value) {
|
16
|
+
return value;
|
17
|
+
}
|
18
|
+
const match = /[\p{L}\p{N}]/gu;
|
19
|
+
let visible = 0;
|
20
|
+
let obfuscateIndexes = getObfuscateIndexes(value, match);
|
21
|
+
if (obfuscateIndexes.length >= 8) {
|
22
|
+
visible = 2;
|
23
|
+
}
|
24
|
+
else if (obfuscateIndexes.length >= 4) {
|
25
|
+
visible = 1;
|
26
|
+
}
|
27
|
+
obfuscateIndexes = obfuscateIndexes.slice(visible, obfuscateIndexes.length);
|
28
|
+
const lastIndex = Number(obfuscateIndexes.length) - visible;
|
29
|
+
obfuscateIndexes = obfuscateIndexes.slice(0, lastIndex < 0 ? 0 : lastIndex);
|
30
|
+
const result = value.split('');
|
31
|
+
obfuscateIndexes.forEach((index) => {
|
32
|
+
result[index] = symbol;
|
33
|
+
});
|
34
|
+
return result.join('');
|
35
|
+
}
|
36
|
+
function getObfuscateIndexes(value, match) {
|
37
|
+
if (!match) {
|
38
|
+
return Array.from({ length: value.length }).map((_, index) => index);
|
39
|
+
}
|
40
|
+
const obfuscateIndexes = [];
|
41
|
+
let matchResult;
|
42
|
+
let count = 0;
|
43
|
+
while ((matchResult = match.exec(value)) !== null && count < value.length) {
|
44
|
+
const start = matchResult.index;
|
45
|
+
const end = match.lastIndex - 1;
|
46
|
+
for (let i = start; i <= end; i++) {
|
47
|
+
obfuscateIndexes.push(i);
|
48
|
+
}
|
49
|
+
count++;
|
50
|
+
}
|
51
|
+
return obfuscateIndexes;
|
52
|
+
}
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JmdXNjYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMvb2JmdXNjYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBYSxFQUFFLE1BQWM7SUFDdEQsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNSLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBRUQsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUM7SUFFL0IsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLElBQUksZ0JBQWdCLEdBQWEsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRW5FLElBQUksZ0JBQWdCLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtRQUM5QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0tBQ2Y7U0FBTSxJQUFJLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7UUFDckMsT0FBTyxHQUFHLENBQUMsQ0FBQztLQUNmO0lBRUQsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUU1RSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBRTVELGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU1RSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRS9CLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQy9CLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsS0FBYSxFQUFFLEtBQWM7SUFDdEQsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNSLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN0RTtJQUVELE1BQU0sZ0JBQWdCLEdBQWEsRUFBRSxDQUFDO0lBQ3RDLElBQUksV0FBVyxDQUFDO0lBQ2hCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUVkLE9BQU8sQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRTtRQUN2RSxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRWhDLEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDL0IsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVCO1FBRUQsS0FBSyxFQUFFLENBQUM7S0FDWDtJQUVELE9BQU8sZ0JBQWdCLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogT2JmdXNjYXRlcyBhIHN0cmluZyBieSByZXBsYWNpbmcgY2VydGFpbiBjaGFyYWN0ZXJzIHdpdGggYSBzeW1ib2wuXG4gKlxuICogQHBhcmFtIHZhbHVlIHRoZSBpbnB1dCBzdHJpbmcgdG8gb2JmdXNjYXRlXG4gKiBAcGFyYW0gc3ltYm9sIHRoZSBzeW1ib2wgZm9yIG9iZnVzY2F0aW9uXG4gKiBAcmV0dXJuIHRoZSBvYmZ1c2NhdGVkIHN0cmluZ1xuICpcbiAqIFRoZSBmdW5jdGlvbiBkZXRlcm1pbmVzIHdoaWNoIGNoYXJhY3RlcnMgdG8gb2JmdXNjYXRlIHVzaW5nIGEgcmVndWxhciBleHByZXNzaW9uIGFuZCB0aGUgc3RyaW5nJ3MgbGVuZ3RoOlxuICogLSA4IG9yIG1vcmU6IHNob3cgZmlyc3QgMiBhbmQgbGFzdCAyIGNoYXJhY3RlcnNcbiAqIC0gNCB0byA3OiBzaG93IGZpcnN0IGFuZCBsYXN0IGNoYXJhY3RlclxuICogLSBsZXNzIHRoYW4gNDogb2JmdXNjYXRlIGFsbCBjaGFyYWN0ZXJzXG4gKiAtIG9iZnVzY2F0ZXMgb25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdHVpT2JmdXNjYXRlKHZhbHVlOiBzdHJpbmcsIHN5bWJvbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaCA9IC9bXFxwe0x9XFxwe059XS9ndTtcblxuICAgIGxldCB2aXNpYmxlID0gMDtcbiAgICBsZXQgb2JmdXNjYXRlSW5kZXhlczogbnVtYmVyW10gPSBnZXRPYmZ1c2NhdGVJbmRleGVzKHZhbHVlLCBtYXRjaCk7XG5cbiAgICBpZiAob2JmdXNjYXRlSW5kZXhlcy5sZW5ndGggPj0gOCkge1xuICAgICAgICB2aXNpYmxlID0gMjtcbiAgICB9IGVsc2UgaWYgKG9iZnVzY2F0ZUluZGV4ZXMubGVuZ3RoID49IDQpIHtcbiAgICAgICAgdmlzaWJsZSA9IDE7XG4gICAgfVxuXG4gICAgb2JmdXNjYXRlSW5kZXhlcyA9IG9iZnVzY2F0ZUluZGV4ZXMuc2xpY2UodmlzaWJsZSwgb2JmdXNjYXRlSW5kZXhlcy5sZW5ndGgpO1xuXG4gICAgY29uc3QgbGFzdEluZGV4ID0gTnVtYmVyKG9iZnVzY2F0ZUluZGV4ZXMubGVuZ3RoKSAtIHZpc2libGU7XG5cbiAgICBvYmZ1c2NhdGVJbmRleGVzID0gb2JmdXNjYXRlSW5kZXhlcy5zbGljZSgwLCBsYXN0SW5kZXggPCAwID8gMCA6IGxhc3RJbmRleCk7XG5cbiAgICBjb25zdCByZXN1bHQgPSB2YWx1ZS5zcGxpdCgnJyk7XG5cbiAgICBvYmZ1c2NhdGVJbmRleGVzLmZvckVhY2goKGluZGV4KSA9PiB7XG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSBzeW1ib2w7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0LmpvaW4oJycpO1xufVxuXG5mdW5jdGlvbiBnZXRPYmZ1c2NhdGVJbmRleGVzKHZhbHVlOiBzdHJpbmcsIG1hdGNoPzogUmVnRXhwKTogbnVtYmVyW10ge1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oe2xlbmd0aDogdmFsdWUubGVuZ3RofSkubWFwKChfLCBpbmRleCkgPT4gaW5kZXgpO1xuICAgIH1cblxuICAgIGNvbnN0IG9iZnVzY2F0ZUluZGV4ZXM6IG51bWJlcltdID0gW107XG4gICAgbGV0IG1hdGNoUmVzdWx0O1xuICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICB3aGlsZSAoKG1hdGNoUmVzdWx0ID0gbWF0Y2guZXhlYyh2YWx1ZSkpICE9PSBudWxsICYmIGNvdW50IDwgdmFsdWUubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbWF0Y2hSZXN1bHQuaW5kZXg7XG4gICAgICAgIGNvbnN0IGVuZCA9IG1hdGNoLmxhc3RJbmRleCAtIDE7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKSB7XG4gICAgICAgICAgICBvYmZ1c2NhdGVJbmRleGVzLnB1c2goaSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb3VudCsrO1xuICAgIH1cblxuICAgIHJldHVybiBvYmZ1c2NhdGVJbmRleGVzO1xufVxuIl19
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-constants.mjs","sources":["../../../projects/cdk/constants/allow-signal-writes.ts","../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/handlers.ts","../../../projects/cdk/constants/matchers.ts","../../../projects/cdk/constants/regexp.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/constants/unicode-chars.ts","../../../projects/cdk/constants/used-icons.ts","../../../projects/cdk/constants/version.ts","../../../projects/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["import type {CreateEffectOptions} from '@angular/core';\nimport {VERSION} from '@angular/core';\n\nexport const TUI_ALLOW_SIGNAL_WRITES: CreateEffectOptions =\n parseInt(VERSION.major, 10) >= 19 ? {} : {allowSignalWrites: true};\n","import {QueryList} from '@angular/core';\n\nconst rect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n x: 0,\n y: 0,\n} as const;\n\n/**\n * For type safety when using @ContentChildren and @ViewChildren\n *\n * NOTE: Be careful subscribing to 'changes'\n */\nexport const EMPTY_QUERY = new QueryList<any>();\nexport const EMPTY_ARRAY: [] = [];\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\nexport const EMPTY_CLIENT_RECT: DOMRect = {\n ...rect,\n toJSON: () => rect,\n};\n","/**\n * Handler that always returns `false`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_FALSE_HANDLER = (): false => false;\n\n/**\n * Handler that always returns `true`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_TRUE_HANDLER = (): true => true;\n","import type {TuiHandler, TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\n\n/**\n * Default handler for matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_DEFAULT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase().includes(search.toLowerCase());\n\n/**\n * Default handler for strict matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_STRICT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase() === search.toLowerCase();\n\n/**\n * Default handler to match equality of two elements\n * ATTENTION: considers two empty arrays equal\n *\n * @param item1 first element\n * @param item2 second element\n */\nexport const TUI_DEFAULT_IDENTITY_MATCHER: TuiIdentityMatcher<unknown> = (item1, item2) =>\n item1 === item2 || bothEmpty(item1, item2);\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\n","export const svgNodeFilter: Exclude<NodeFilter, (node: Node) => number> = {\n acceptNode(node: Node): number {\n return 'ownerSVGElement' in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT;\n },\n};\n","/**\n * {@link https://unicode-table.com/en/00A0/ Non-breaking space}.\n */\nexport const CHAR_NO_BREAK_SPACE = '\\u00A0';\n\n/**\n * {@link https://unicode-table.com/en/2013/ EN dash}\n * is used to indicate a range of numbers or a span of time.\n * @example 2006–2022\n * ___\n * Don't confuse with {@link CHAR_EM_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EN_DASH = '\\u2013';\n\n/**\n * {@link https://unicode-table.com/en/2014/ EM dash}\n * is used to mark a break in a sentence.\n * @example Taiga UI — powerful set of open source components for Angular\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EM_DASH = '\\u2014';\n\n/**\n * {@link https://unicode-table.com/en/00AB/ Left-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_LAQUO = '\\u00AB';\n\n/**\n * {@link https://unicode-table.com/en/00BB/ Right-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_RAQUO = '\\u00BB';\n\n/**\n * {@link https://unicode-table.com/en/002D/ Hyphen (minus sign)}\n * is used to combine words.\n * @example well-behaved\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_EM_DASH}!\n */\nexport const CHAR_HYPHEN = '\\u002D';\n\n/**\n * {@link https://unicode-table.com/en/2212/ Minus}\n * is used as math operator symbol or before negative digits.\n * ---\n * Can be used as `−`. Don't confuse with {@link CHAR_HYPHEN}\n */\nexport const CHAR_MINUS = '\\u2212';\n\n/**\n * {@link https://unicode-table.com/en/002B/ Plus}\n */\nexport const CHAR_PLUS = '\\u002B';\n\n/**\n * {@link https://unicode-table.com/en/2022/ Bullet}.\n */\nexport const CHAR_BULLET = '\\u2022';\n\n/**\n * {@link https://unicode-table.com/en/2026/ Suspension points}.\n */\nexport const CHAR_ELLIPSIS = '\\u2026';\n\n/**\n * {@link https://unicode-table.com/en/00A4/ Suspension points}.\n */\nexport const CHAR_CURRENCY_SIGN = '\\u00A4';\n\n/**\n * {@link https://unicode-table.com/en/200b/ Suspension points}.\n */\nexport const CHAR_ZERO_WIDTH_SPACE = '\\u200B';\n","/**\n * @description:\n * AUTOGENERATED\n *\n * Array of icons used in taiga-ui components\n */\nexport const TUI_USED_ICONS = [\n '@tui.mir',\n '@tui.visa',\n '@tui.electron',\n '@tui.mastercard',\n '@tui.maestro',\n '@tui.amex',\n '@tui.diners-club',\n '@tui.discover',\n '@tui.humo',\n '@tui.jcb',\n '@tui.ru-pay',\n '@tui.union-pay',\n '@tui.uzcard',\n '@tui.verve',\n '@tui.external-link',\n '@tui.search',\n '@tui.sun',\n '@tui.moon',\n '@tui.code',\n '@tui.menu',\n '@tui.copy',\n '@tui.check',\n '@tui.link',\n '@tui.languages',\n '@tui.shrink',\n '@tui.expand',\n '@tui.eye-off',\n '@tui.eye',\n '@tui.grip-vertical',\n '@tui.chevron-up',\n '@tui.chevron-down',\n '@tui.chevrons-up-down',\n '@tui.info',\n '@tui.circle-check',\n '@tui.circle-x',\n '@tui.circle-alert',\n '@tui.circle-help',\n '@tui.x',\n '@tui.chevron-right',\n '@tui.ellipsis',\n '@tui.chevron-left',\n '@tui.clock',\n '@tui.trash',\n '@tui.minus',\n '@tui.file',\n '@tui.calendar',\n '@tui.plus',\n '@tui.phone',\n '@tui.heart',\n '@tui.heart-filled',\n '@tui.star',\n '@tui.rotate-ccw-square',\n '@tui.arrow-left',\n '@tui.arrow-right',\n '@tui.minimize',\n '@tui.filter',\n '@tui.layout-grid',\n '@tui.move-up-right',\n '@tui.move-right',\n '@tui.move-down-right',\n '@tui.move-down',\n '@tui.move-down-left',\n '@tui.move-left',\n '@tui.move-up-left',\n '@tui.move-up',\n] as const;\n","export const TUI_VERSION = '4.
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-constants.mjs","sources":["../../../projects/cdk/constants/allow-signal-writes.ts","../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/handlers.ts","../../../projects/cdk/constants/matchers.ts","../../../projects/cdk/constants/regexp.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/constants/unicode-chars.ts","../../../projects/cdk/constants/used-icons.ts","../../../projects/cdk/constants/version.ts","../../../projects/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["import type {CreateEffectOptions} from '@angular/core';\nimport {VERSION} from '@angular/core';\n\nexport const TUI_ALLOW_SIGNAL_WRITES: CreateEffectOptions =\n parseInt(VERSION.major, 10) >= 19 ? {} : {allowSignalWrites: true};\n","import {QueryList} from '@angular/core';\n\nconst rect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n x: 0,\n y: 0,\n} as const;\n\n/**\n * For type safety when using @ContentChildren and @ViewChildren\n *\n * NOTE: Be careful subscribing to 'changes'\n */\nexport const EMPTY_QUERY = new QueryList<any>();\nexport const EMPTY_ARRAY: [] = [];\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\nexport const EMPTY_CLIENT_RECT: DOMRect = {\n ...rect,\n toJSON: () => rect,\n};\n","/**\n * Handler that always returns `false`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_FALSE_HANDLER = (): false => false;\n\n/**\n * Handler that always returns `true`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_TRUE_HANDLER = (): true => true;\n","import type {TuiHandler, TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\n\n/**\n * Default handler for matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_DEFAULT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase().includes(search.toLowerCase());\n\n/**\n * Default handler for strict matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_STRICT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase() === search.toLowerCase();\n\n/**\n * Default handler to match equality of two elements\n * ATTENTION: considers two empty arrays equal\n *\n * @param item1 first element\n * @param item2 second element\n */\nexport const TUI_DEFAULT_IDENTITY_MATCHER: TuiIdentityMatcher<unknown> = (item1, item2) =>\n item1 === item2 || bothEmpty(item1, item2);\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\n","export const svgNodeFilter: Exclude<NodeFilter, (node: Node) => number> = {\n acceptNode(node: Node): number {\n return 'ownerSVGElement' in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT;\n },\n};\n","/**\n * {@link https://unicode-table.com/en/00A0/ Non-breaking space}.\n */\nexport const CHAR_NO_BREAK_SPACE = '\\u00A0';\n\n/**\n * {@link https://unicode-table.com/en/2013/ EN dash}\n * is used to indicate a range of numbers or a span of time.\n * @example 2006–2022\n * ___\n * Don't confuse with {@link CHAR_EM_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EN_DASH = '\\u2013';\n\n/**\n * {@link https://unicode-table.com/en/2014/ EM dash}\n * is used to mark a break in a sentence.\n * @example Taiga UI — powerful set of open source components for Angular\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EM_DASH = '\\u2014';\n\n/**\n * {@link https://unicode-table.com/en/00AB/ Left-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_LAQUO = '\\u00AB';\n\n/**\n * {@link https://unicode-table.com/en/00BB/ Right-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_RAQUO = '\\u00BB';\n\n/**\n * {@link https://unicode-table.com/en/002D/ Hyphen (minus sign)}\n * is used to combine words.\n * @example well-behaved\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_EM_DASH}!\n */\nexport const CHAR_HYPHEN = '\\u002D';\n\n/**\n * {@link https://unicode-table.com/en/2212/ Minus}\n * is used as math operator symbol or before negative digits.\n * ---\n * Can be used as `−`. Don't confuse with {@link CHAR_HYPHEN}\n */\nexport const CHAR_MINUS = '\\u2212';\n\n/**\n * {@link https://unicode-table.com/en/002B/ Plus}\n */\nexport const CHAR_PLUS = '\\u002B';\n\n/**\n * {@link https://unicode-table.com/en/2022/ Bullet}.\n */\nexport const CHAR_BULLET = '\\u2022';\n\n/**\n * {@link https://unicode-table.com/en/2026/ Suspension points}.\n */\nexport const CHAR_ELLIPSIS = '\\u2026';\n\n/**\n * {@link https://unicode-table.com/en/00A4/ Suspension points}.\n */\nexport const CHAR_CURRENCY_SIGN = '\\u00A4';\n\n/**\n * {@link https://unicode-table.com/en/200b/ Suspension points}.\n */\nexport const CHAR_ZERO_WIDTH_SPACE = '\\u200B';\n","/**\n * @description:\n * AUTOGENERATED\n *\n * Array of icons used in taiga-ui components\n */\nexport const TUI_USED_ICONS = [\n '@tui.mir',\n '@tui.visa',\n '@tui.electron',\n '@tui.mastercard',\n '@tui.maestro',\n '@tui.amex',\n '@tui.diners-club',\n '@tui.discover',\n '@tui.humo',\n '@tui.jcb',\n '@tui.ru-pay',\n '@tui.union-pay',\n '@tui.uzcard',\n '@tui.verve',\n '@tui.external-link',\n '@tui.search',\n '@tui.sun',\n '@tui.moon',\n '@tui.code',\n '@tui.menu',\n '@tui.copy',\n '@tui.check',\n '@tui.link',\n '@tui.languages',\n '@tui.shrink',\n '@tui.expand',\n '@tui.eye-off',\n '@tui.eye',\n '@tui.grip-vertical',\n '@tui.chevron-up',\n '@tui.chevron-down',\n '@tui.chevrons-up-down',\n '@tui.info',\n '@tui.circle-check',\n '@tui.circle-x',\n '@tui.circle-alert',\n '@tui.circle-help',\n '@tui.x',\n '@tui.chevron-right',\n '@tui.ellipsis',\n '@tui.chevron-left',\n '@tui.clock',\n '@tui.trash',\n '@tui.minus',\n '@tui.file',\n '@tui.calendar',\n '@tui.plus',\n '@tui.phone',\n '@tui.heart',\n '@tui.heart-filled',\n '@tui.star',\n '@tui.rotate-ccw-square',\n '@tui.arrow-left',\n '@tui.arrow-right',\n '@tui.minimize',\n '@tui.filter',\n '@tui.layout-grid',\n '@tui.move-up-right',\n '@tui.move-right',\n '@tui.move-down-right',\n '@tui.move-down',\n '@tui.move-down-left',\n '@tui.move-left',\n '@tui.move-up-left',\n '@tui.move-up',\n] as const;\n","export const TUI_VERSION = '4.38.0';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
import { tuiObfuscate, tuiCreateOptions } from '@taiga-ui/cdk/utils';
|
2
|
+
import * as i0 from '@angular/core';
|
3
|
+
import { inject, Pipe } from '@angular/core';
|
4
|
+
|
5
|
+
const TUI_OBFUSCATE_DEFAULT_OPTIONS = {
|
6
|
+
default: (value, symbol = '*') => tuiObfuscate(value, symbol),
|
7
|
+
recipes: {},
|
8
|
+
};
|
9
|
+
/**
|
10
|
+
* Injection token for obfuscation options.
|
11
|
+
*/
|
12
|
+
const [TUI_OBFUSCATE_OPTIONS, tuiObfuscateOptionsProvider] = tuiCreateOptions(TUI_OBFUSCATE_DEFAULT_OPTIONS);
|
13
|
+
|
14
|
+
class TuiObfuscatePipe {
|
15
|
+
constructor() {
|
16
|
+
this.option = inject(TUI_OBFUSCATE_OPTIONS);
|
17
|
+
}
|
18
|
+
/**
|
19
|
+
* Transforms the input value by obfuscating it according to the specified recipe or symbol.
|
20
|
+
*
|
21
|
+
* @param value The value to be obfuscated should be a string.
|
22
|
+
* @param recipe The name of the recipe to use for obfuscation or a single character symbol for custom obfuscation.
|
23
|
+
* @returns The obfuscated string.
|
24
|
+
* @throws Will throw an error if the specified recipe is not found.
|
25
|
+
*/
|
26
|
+
transform(value, recipe = '') {
|
27
|
+
if (!value) {
|
28
|
+
return value;
|
29
|
+
}
|
30
|
+
if (!recipe) {
|
31
|
+
return this.option.default(value);
|
32
|
+
}
|
33
|
+
const obfuscate = this.option.recipes[recipe];
|
34
|
+
if (obfuscate) {
|
35
|
+
return obfuscate(value);
|
36
|
+
}
|
37
|
+
if (recipe.length === 1) {
|
38
|
+
return this.option.default(value, recipe[0]);
|
39
|
+
}
|
40
|
+
const availableRecipes = Object.keys(this.option.recipes).sort();
|
41
|
+
throw new Error(`Obfuscate recipe "${recipe}" not found. Available recipes: [${availableRecipes}]`);
|
42
|
+
}
|
43
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiObfuscatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
44
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: TuiObfuscatePipe, isStandalone: true, name: "tuiObfuscate" }); }
|
45
|
+
}
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiObfuscatePipe, decorators: [{
|
47
|
+
type: Pipe,
|
48
|
+
args: [{
|
49
|
+
standalone: true,
|
50
|
+
name: 'tuiObfuscate',
|
51
|
+
}]
|
52
|
+
}] });
|
53
|
+
|
54
|
+
/**
|
55
|
+
* Generated bundle index. Do not edit.
|
56
|
+
*/
|
57
|
+
|
58
|
+
export { TUI_OBFUSCATE_DEFAULT_OPTIONS, TUI_OBFUSCATE_OPTIONS, TuiObfuscatePipe, tuiObfuscateOptionsProvider };
|
59
|
+
//# sourceMappingURL=taiga-ui-cdk-pipes-obfuscate.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-pipes-obfuscate.mjs","sources":["../../../projects/cdk/pipes/obfuscate/obfuscate.options.ts","../../../projects/cdk/pipes/obfuscate/obfuscate.pipe.ts","../../../projects/cdk/pipes/obfuscate/taiga-ui-cdk-pipes-obfuscate.ts"],"sourcesContent":["import {tuiCreateOptions, tuiObfuscate} from '@taiga-ui/cdk/utils';\n\n/**\n * Defines the options for obfuscation.\n */\nexport interface TuiObfuscateOptions {\n /**\n * Default function used to obfuscate a string\n * if no recipe was found.\n */\n readonly default: (value: string, symbol?: string) => string;\n\n /**\n * Collection of named recipes for different obfuscation scenarios.\n */\n readonly recipes: Record<string, (value: string) => string>;\n}\n\nexport const TUI_OBFUSCATE_DEFAULT_OPTIONS: TuiObfuscateOptions = {\n default: (value, symbol = '*') => tuiObfuscate(value, symbol),\n recipes: {},\n};\n\n/**\n * Injection token for obfuscation options.\n */\nexport const [TUI_OBFUSCATE_OPTIONS, tuiObfuscateOptionsProvider] = tuiCreateOptions(\n TUI_OBFUSCATE_DEFAULT_OPTIONS,\n);\n","import type {PipeTransform} from '@angular/core';\nimport {inject, Pipe} from '@angular/core';\n\nimport {TUI_OBFUSCATE_OPTIONS} from './obfuscate.options';\n\n@Pipe({\n standalone: true,\n name: 'tuiObfuscate',\n})\nexport class TuiObfuscatePipe implements PipeTransform {\n private readonly option = inject(TUI_OBFUSCATE_OPTIONS);\n\n /**\n * Transforms the input value by obfuscating it according to the specified recipe or symbol.\n *\n * @param value The value to be obfuscated should be a string.\n * @param recipe The name of the recipe to use for obfuscation or a single character symbol for custom obfuscation.\n * @returns The obfuscated string.\n * @throws Will throw an error if the specified recipe is not found.\n */\n public transform(value: string, recipe = ''): string {\n if (!value) {\n return value;\n }\n\n if (!recipe) {\n return this.option.default(value);\n }\n\n const obfuscate = this.option.recipes[recipe];\n\n if (obfuscate) {\n return obfuscate(value);\n }\n\n if (recipe.length === 1) {\n return this.option.default(value, recipe[0]);\n }\n\n const availableRecipes = Object.keys(this.option.recipes).sort();\n\n throw new Error(\n `Obfuscate recipe \"${recipe}\" not found. Available recipes: [${availableRecipes}]`,\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAkBa,MAAA,6BAA6B,GAAwB;AAC9D,IAAA,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,KAAK,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC;AAC7D,IAAA,OAAO,EAAE,EAAE;EACb;AAEF;;AAEG;AACI,MAAM,CAAC,qBAAqB,EAAE,2BAA2B,CAAC,GAAG,gBAAgB,CAChF,6BAA6B;;ACtBjC,MAIa,gBAAgB,CAAA;AAJ7B,IAAA,WAAA,GAAA;AAKqB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAmC3D,KAAA;AAjCG;;;;;;;AAOG;AACI,IAAA,SAAS,CAAC,KAAa,EAAE,MAAM,GAAG,EAAE,EAAA;QACvC,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QAED,IAAI,CAAC,MAAM,EAAE;YACT,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrC,SAAA;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9C,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3B,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,SAAA;AAED,QAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAEjE,MAAM,IAAI,KAAK,CACX,CAAA,kBAAA,EAAqB,MAAM,CAAoC,iCAAA,EAAA,gBAAgB,CAAG,CAAA,CAAA,CACrF,CAAC;KACL;+GAnCQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA,EAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,cAAc;AACvB,iBAAA,CAAA;;;ACRD;;AAEG;;;;"}
|
@@ -3,6 +3,7 @@ export * from '@taiga-ui/cdk/pipes/filter';
|
|
3
3
|
export * from '@taiga-ui/cdk/pipes/is-present';
|
4
4
|
export * from '@taiga-ui/cdk/pipes/keys';
|
5
5
|
export * from '@taiga-ui/cdk/pipes/mapper';
|
6
|
+
export * from '@taiga-ui/cdk/pipes/obfuscate';
|
6
7
|
export * from '@taiga-ui/cdk/pipes/repeat-times';
|
7
8
|
export * from '@taiga-ui/cdk/pipes/replace';
|
8
9
|
export * from '@taiga-ui/cdk/pipes/to-array';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-pipes.mjs","sources":["../../../projects/cdk/pipes/taiga-ui-cdk-pipes.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-pipes.mjs","sources":["../../../projects/cdk/pipes/taiga-ui-cdk-pipes.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;AAAA;;AAEG"}
|
@@ -1,6 +1,10 @@
|
|
1
1
|
import { tuiClamp } from '@taiga-ui/cdk/utils/math';
|
2
2
|
import { tuiIsPresent } from '@taiga-ui/cdk/utils/miscellaneous';
|
3
|
-
import { inject, ElementRef,
|
3
|
+
import { inject, ElementRef, PLATFORM_ID, isSignal, signal, DestroyRef, effect, INJECTOR } from '@angular/core';
|
4
|
+
import { coerceElement } from '@angular/cdk/coercion';
|
5
|
+
import { isPlatformBrowser } from '@angular/common';
|
6
|
+
import { WA_WINDOW } from '@ng-web-apis/common';
|
7
|
+
import { TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
|
4
8
|
|
5
9
|
function tuiContainsOrAfter(current, node) {
|
6
10
|
try {
|
@@ -205,12 +209,79 @@ function tuiRetargetedBoundaryCrossing(event) {
|
|
205
209
|
return false;
|
206
210
|
}
|
207
211
|
|
212
|
+
function tuiValue(input, injector = inject(INJECTOR)) {
|
213
|
+
const win = injector.get(WA_WINDOW);
|
214
|
+
if (!win.tuiInputPatched && isPlatformBrowser(injector.get(PLATFORM_ID))) {
|
215
|
+
win.tuiInputPatched = true;
|
216
|
+
patch(win.HTMLInputElement.prototype);
|
217
|
+
patch(win.HTMLTextAreaElement.prototype);
|
218
|
+
patch(win.HTMLSelectElement.prototype);
|
219
|
+
}
|
220
|
+
let element = isSignal(input) ? undefined : coerceElement(input);
|
221
|
+
let cleanup = () => { };
|
222
|
+
const options = { injector, ...TUI_ALLOW_SIGNAL_WRITES };
|
223
|
+
const value = signal(element?.value || '');
|
224
|
+
const process = (el) => {
|
225
|
+
const update = () => value.set(el.value);
|
226
|
+
el.addEventListener('input', update);
|
227
|
+
el.addEventListener('tui-input', update);
|
228
|
+
return () => {
|
229
|
+
el.removeEventListener('input', update);
|
230
|
+
el.removeEventListener('tui-input', update);
|
231
|
+
};
|
232
|
+
};
|
233
|
+
injector.get(DestroyRef).onDestroy(() => cleanup());
|
234
|
+
if (isSignal(input)) {
|
235
|
+
effect(() => {
|
236
|
+
element = coerceElement(input());
|
237
|
+
cleanup();
|
238
|
+
if (element) {
|
239
|
+
value.set(element.value);
|
240
|
+
cleanup = process(element);
|
241
|
+
}
|
242
|
+
}, options);
|
243
|
+
}
|
244
|
+
else if (element) {
|
245
|
+
cleanup = process(element);
|
246
|
+
}
|
247
|
+
effect(() => {
|
248
|
+
const v = value();
|
249
|
+
if (element?.matches(':focus') && 'selectionStart' in element) {
|
250
|
+
const { selectionStart, selectionEnd } = element;
|
251
|
+
/**
|
252
|
+
* After programmatic updates of input's value, caret is automatically placed at the end –
|
253
|
+
* revert to the previous position
|
254
|
+
*/
|
255
|
+
element.value = v;
|
256
|
+
element.setSelectionRange(selectionStart, selectionEnd);
|
257
|
+
}
|
258
|
+
else if (element) {
|
259
|
+
element.value = v;
|
260
|
+
}
|
261
|
+
}, options);
|
262
|
+
return value;
|
263
|
+
}
|
264
|
+
function patch(prototype) {
|
265
|
+
const { set } = Object.getOwnPropertyDescriptor(prototype, 'value');
|
266
|
+
Object.defineProperty(prototype, 'value', {
|
267
|
+
set(detail) {
|
268
|
+
const value = this.value;
|
269
|
+
const event = new CustomEvent('tui-input', { detail, bubbles: true });
|
270
|
+
set.call(this, detail);
|
271
|
+
if (value !== detail) {
|
272
|
+
this.dispatchEvent(event);
|
273
|
+
}
|
274
|
+
},
|
275
|
+
});
|
276
|
+
}
|
277
|
+
|
208
278
|
/**
|
209
279
|
* Host binding `host: {'[value]': 'yourSignal()'}` is not an option for our textfields –
|
210
280
|
* they use {@link TuiTextfieldDirective} as a host directive.
|
211
281
|
* `TuiTextfieldDirective` has host binding which depends on native input's value.
|
212
282
|
* Host bindings of the host directives are re-calculated BEFORE component's ones –
|
213
283
|
* native input's value should be updated SYNCHRONOUSLY before next change detection iteration.
|
284
|
+
* @deprecated
|
214
285
|
*/
|
215
286
|
function tuiValueBinding(value = signal(tuiInjectElement().value || '')) {
|
216
287
|
const el = tuiInjectElement();
|
@@ -235,5 +306,5 @@ function tuiValueBinding(value = signal(tuiInjectElement().value || '')) {
|
|
235
306
|
* Generated bundle index. Do not edit.
|
236
307
|
*/
|
237
308
|
|
238
|
-
export { tuiContainsOrAfter, tuiGetActualTarget, tuiGetClipboardDataText, tuiGetDocumentOrShadowRoot, tuiGetElementObscures, tuiGetElementOffset, tuiGetElementPoint, tuiGetSelectedText, tuiInjectElement, tuiIsCurrentTarget, tuiIsElement, tuiIsElementEditable, tuiIsHTMLElement, tuiIsInput, tuiIsInputEvent, tuiIsInsideIframe, tuiIsNodeIn, tuiIsTextNode, tuiIsTextarea, tuiIsTextfield, tuiPointToClientRect, tuiRetargetedBoundaryCrossing, tuiValueBinding };
|
309
|
+
export { tuiContainsOrAfter, tuiGetActualTarget, tuiGetClipboardDataText, tuiGetDocumentOrShadowRoot, tuiGetElementObscures, tuiGetElementOffset, tuiGetElementPoint, tuiGetSelectedText, tuiInjectElement, tuiIsCurrentTarget, tuiIsElement, tuiIsElementEditable, tuiIsHTMLElement, tuiIsInput, tuiIsInputEvent, tuiIsInsideIframe, tuiIsNodeIn, tuiIsTextNode, tuiIsTextarea, tuiIsTextfield, tuiPointToClientRect, tuiRetargetedBoundaryCrossing, tuiValue, tuiValueBinding };
|
239
310
|
//# sourceMappingURL=taiga-ui-cdk-utils-dom.mjs.map
|