@taiga-ui/legacy 4.52.0-canary.3915ce7 → 4.52.0-canary.46625cf
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/components/combo-box/combo-box.module.d.ts +1 -1
- package/components/dialog/dialog.component.d.ts +20 -0
- package/components/dialog/dialog.directive.d.ts +7 -0
- package/components/dialog/dialog.factory.d.ts +16 -0
- package/components/dialog/dialog.interfaces.d.ts +31 -0
- package/components/dialog/dialog.service.d.ts +7 -0
- package/components/dialog/dialog.tokens.d.ts +8 -0
- package/components/dialog/index.d.ts +6 -0
- package/components/index.d.ts +2 -1
- package/components/input/input.module.d.ts +1 -1
- package/components/input-date-range/input-date-range.module.d.ts +1 -1
- package/components/input-date-time/input-date-time.component.d.ts +4 -3
- package/components/input-date-time/input-date-time.module.d.ts +1 -1
- package/components/input-month-range/input-month-range.module.d.ts +1 -1
- package/components/input-range/input-range.component.d.ts +1 -1
- package/components/input-tag/input-tag.module.d.ts +1 -1
- package/components/multi-select/multi-select.module.d.ts +1 -1
- package/components/pdf-viewer/index.d.ts +4 -0
- package/components/pdf-viewer/pdf-viewer.component.d.ts +12 -0
- package/components/pdf-viewer/pdf-viewer.directive.d.ts +7 -0
- package/components/pdf-viewer/pdf-viewer.options.d.ts +13 -0
- package/components/pdf-viewer/pdf-viewer.service.d.ts +13 -0
- package/components/select/select.module.d.ts +1 -1
- package/fesm2022/taiga-ui-legacy-components-arrow.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-combo-box.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-combo-box.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-dialog.mjs +130 -0
- package/fesm2022/taiga-ui-legacy-components-dialog.mjs.map +1 -0
- package/fesm2022/taiga-ui-legacy-components-input-date-range.mjs +3 -3
- package/fesm2022/taiga-ui-legacy-components-input-date-range.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-date-time.mjs +3 -3
- package/fesm2022/taiga-ui-legacy-components-input-date-time.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-month-range.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-input-month-range.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-number.mjs +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-number.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-range.mjs +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-range.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-slider.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-tag.mjs +3 -3
- package/fesm2022/taiga-ui-legacy-components-input-tag.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-input.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-multi-select-option.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-multi-select.mjs +4 -4
- package/fesm2022/taiga-ui-legacy-components-multi-select.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-pdf-viewer.mjs +83 -0
- package/fesm2022/taiga-ui-legacy-components-pdf-viewer.mjs.map +1 -0
- package/fesm2022/taiga-ui-legacy-components-primitive-textfield.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-select-option.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-select.mjs +6 -6
- package/fesm2022/taiga-ui-legacy-components-select.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-tag.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-textarea.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components.mjs +2 -1
- package/fesm2022/taiga-ui-legacy-components.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy.mjs +0 -2
- package/fesm2022/taiga-ui-legacy.mjs.map +1 -1
- package/index.d.ts +0 -2
- package/package.json +32 -48
- package/utils/icons-path-factory.d.ts +1 -1
- package/components/svg/content-processor.d.ts +0 -19
- package/components/svg/deprecated-icons.d.ts +0 -5
- package/components/svg/index.d.ts +0 -5
- package/components/svg/svg-options.d.ts +0 -50
- package/components/svg/svg.component.d.ts +0 -50
- package/components/svg/svg.service.d.ts +0 -21
- package/fesm2022/taiga-ui-legacy-components-svg.mjs +0 -387
- package/fesm2022/taiga-ui-legacy-components-svg.mjs.map +0 -1
- package/fesm2022/taiga-ui-legacy-pipes-format-phone.mjs +0 -59
- package/fesm2022/taiga-ui-legacy-pipes-format-phone.mjs.map +0 -1
- package/fesm2022/taiga-ui-legacy-pipes-iso-to-country-code.mjs +0 -50
- package/fesm2022/taiga-ui-legacy-pipes-iso-to-country-code.mjs.map +0 -1
- package/fesm2022/taiga-ui-legacy-pipes-to-country-code.mjs +0 -80
- package/fesm2022/taiga-ui-legacy-pipes-to-country-code.mjs.map +0 -1
- package/fesm2022/taiga-ui-legacy-pipes.mjs +0 -8
- package/fesm2022/taiga-ui-legacy-pipes.mjs.map +0 -1
- package/fesm2022/taiga-ui-legacy-services.mjs +0 -42
- package/fesm2022/taiga-ui-legacy-services.mjs.map +0 -1
- package/pipes/format-phone/format-phone.pipe.d.ts +0 -37
- package/pipes/format-phone/index.d.ts +0 -1
- package/pipes/index.d.ts +0 -3
- package/pipes/iso-to-country-code/index.d.ts +0 -1
- package/pipes/iso-to-country-code/iso-to-country-code.pipe.d.ts +0 -30
- package/pipes/to-country-code/index.d.ts +0 -1
- package/pipes/to-country-code/to-country-code.pipe.d.ts +0 -38
- package/services/index.d.ts +0 -1
- package/services/static-request.service.d.ts +0 -11
|
@@ -1,387 +0,0 @@
|
|
|
1
|
-
import { tuiIsString, tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
2
|
-
import { __decorate } from 'tslib';
|
|
3
|
-
import { DOCUMENT, AsyncPipe } from '@angular/common';
|
|
4
|
-
import * as i0 from '@angular/core';
|
|
5
|
-
import { inject, SecurityContext, Injectable, InjectionToken, SkipSelf, Optional, Input, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
6
|
-
import { DomSanitizer } from '@angular/platform-browser';
|
|
7
|
-
import { WA_WINDOW } from '@ng-web-apis/common';
|
|
8
|
-
import { TUI_BASE_HREF } from '@taiga-ui/cdk/tokens';
|
|
9
|
-
import { tuiInjectElement, tuiGetDocumentOrShadowRoot } from '@taiga-ui/cdk/utils/dom';
|
|
10
|
-
import { TuiStaticRequestService } from '@taiga-ui/legacy/services';
|
|
11
|
-
import { TUI_SANITIZER, TUI_ICON_STARTS } from '@taiga-ui/legacy/tokens';
|
|
12
|
-
import { tuiProcessIcon, tuiIconsPathFactory, TUI_CACHE_BUSTING_PAYLOAD, tuiIsPresumedHTMLString } from '@taiga-ui/legacy/utils';
|
|
13
|
-
import { BehaviorSubject, identity, ReplaySubject, switchMap, of, startWith, catchError, map } from 'rxjs';
|
|
14
|
-
|
|
15
|
-
function makeRandomSalt() {
|
|
16
|
-
return Math.floor(Math.random() * Date.now());
|
|
17
|
-
}
|
|
18
|
-
function extractLinearGradientIdsFromSvg(svg) {
|
|
19
|
-
const ids = (svg.match(/url\(("?)('*)#(.*?)('*)\)/g) ?? []).map((url) => url.slice(4, url.length - 1).replaceAll(/['"#]+/g, ''));
|
|
20
|
-
return Array.from(new Set(ids));
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* @deprecated: drop in v5.0 use {@link TuiIcon}
|
|
24
|
-
* https://taiga-ui.dev/components/icon
|
|
25
|
-
*
|
|
26
|
-
* @description:
|
|
27
|
-
* Any ‘linearGradient’ attributes which are defined on the referenced
|
|
28
|
-
* element which are not defined on this element are inherited by this element.
|
|
29
|
-
* If this element has no defined gradient stops, and the referenced element does
|
|
30
|
-
* (possibly due to its own ‘xlink:href’ attribute), then this element inherits
|
|
31
|
-
* the gradient stop from the referenced element. Inheritance can be indirect
|
|
32
|
-
* to an arbitrary level; thus, if the referenced element inherits attribute
|
|
33
|
-
* or gradient stops due to its own ‘xlink:href’ attribute, then the current
|
|
34
|
-
* element can inherit those attributes or gradient stops.
|
|
35
|
-
*
|
|
36
|
-
* Documentation: https://www.w3.org/TR/SVG11/pservers.html
|
|
37
|
-
*
|
|
38
|
-
*/
|
|
39
|
-
function tuiSvgLinearGradientProcessor(svg, salt = makeRandomSalt()) {
|
|
40
|
-
if (tuiIsString(svg)) {
|
|
41
|
-
const uniqueIds = extractLinearGradientIdsFromSvg(svg);
|
|
42
|
-
return uniqueIds.reduce((newSvg, previousId) => {
|
|
43
|
-
const newId = `id_${salt}_${previousId}`;
|
|
44
|
-
return newSvg
|
|
45
|
-
.replaceAll(`"${previousId}"`, `"${newId}"`)
|
|
46
|
-
.replaceAll(`'${previousId}'`, `'${newId}'`)
|
|
47
|
-
.replaceAll(`url('#${previousId}')`, `url('#${newId}')`)
|
|
48
|
-
.replaceAll(`url("#${previousId}")`, `url("#${newId}")`)
|
|
49
|
-
.replaceAll(`url(#${previousId})`, `url(#${newId})`);
|
|
50
|
-
}, svg);
|
|
51
|
-
}
|
|
52
|
-
return svg;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* @deprecated: drop in v5.0 use {@link TuiIcon}
|
|
57
|
-
* https://taiga-ui.dev/components/icon
|
|
58
|
-
*/
|
|
59
|
-
const TUI_DEPRECATED_ICONS = {
|
|
60
|
-
tuiIconAttach: 'tuiIconPaperclip',
|
|
61
|
-
tuiIconAttention: 'tuiIconAlertCircle',
|
|
62
|
-
tuiIconBackCircle: 'tuiIconArrowLeftCircle',
|
|
63
|
-
tuiIconCall: 'tuiIconPhone',
|
|
64
|
-
tuiIconCallIn: 'tuiIconPhoneIncoming',
|
|
65
|
-
tuiIconCallOut: 'tuiIconPhoneOutgoing',
|
|
66
|
-
tuiIconCallTransfer: 'tuiIconPhoneForwarded',
|
|
67
|
-
tuiIconCancel: 'tuiIconXCircle',
|
|
68
|
-
tuiIconCancelCircle: 'tuiIconSlash',
|
|
69
|
-
tuiIconCard: 'tuiIconCreditCard',
|
|
70
|
-
tuiIconCards: 'tuiIconCreditCard',
|
|
71
|
-
tuiIconChartBar: 'tuiIconBarChart',
|
|
72
|
-
tuiIconChart: 'tuiIconBarChart',
|
|
73
|
-
tuiIconCheckList: 'tuiIconClipboard',
|
|
74
|
-
tuiIconCloseCircle: 'tuiIconXCircle',
|
|
75
|
-
tuiIconCollapse: 'tuiIconMinimize',
|
|
76
|
-
tuiIconComment: 'tuiIconMessageSquare',
|
|
77
|
-
tuiIconCommentFw: 'tuiIconMessageForward',
|
|
78
|
-
tuiIconCompany: 'tuiIconBriefcase',
|
|
79
|
-
tuiIconDefaultDoc: 'tuiIconFile',
|
|
80
|
-
tuiIconDesktop: 'tuiIconMonitor',
|
|
81
|
-
tuiIconDesktopOff: 'tuiIconMonitorOff',
|
|
82
|
-
tuiIconDislike: 'tuiIconThumbsDown',
|
|
83
|
-
tuiIconDone: 'tuiIconCheckCircle',
|
|
84
|
-
tuiIconDraft: 'tuiIconEdit2',
|
|
85
|
-
tuiIconEyeOpen: 'tuiIconEye',
|
|
86
|
-
tuiIconEyeClosed: 'tuiIconEyeOff',
|
|
87
|
-
tuiIconExpand: 'tuiIconMaximize',
|
|
88
|
-
tuiIconExternal: 'tuiIconExternalLink',
|
|
89
|
-
tuiIconFrame: 'tuiIconLayout',
|
|
90
|
-
tuiIconGeo: 'tuiIconMapPin',
|
|
91
|
-
tuiIconHeartFilled: 'tuiIconHeart',
|
|
92
|
-
tuiIconHide: 'tuiIconEyeOff',
|
|
93
|
-
tuiIconImg: 'tuiIconImage',
|
|
94
|
-
tuiIconInfoCircle: 'tuiIconInfo',
|
|
95
|
-
tuiIconLike: 'tuiIconThumbsUp',
|
|
96
|
-
tuiIconLockOpen: 'tuiIconUnlock',
|
|
97
|
-
tuiIconMobile: 'tuiIconSmartphone',
|
|
98
|
-
tuiIconMoreHor: 'tuiIconMoreHorizontal',
|
|
99
|
-
tuiIconMoreVer: 'tuiIconMoreVertical',
|
|
100
|
-
tuiIconMoreVert: 'tuiIconMoreVertical',
|
|
101
|
-
tuiIconPicture: 'tuiIconImage',
|
|
102
|
-
tuiIconPin: 'tuiIconMapPin',
|
|
103
|
-
tuiIconPrint: 'tuiIconPrinter',
|
|
104
|
-
tuiIconRefresh: 'tuiIconRefreshCw',
|
|
105
|
-
tuiIconRemove: 'tuiIconX',
|
|
106
|
-
tuiIconShow: 'tuiIconEye',
|
|
107
|
-
tuiIconSound: 'tuiIconVolume',
|
|
108
|
-
tuiIconSoundOff: 'tuiIconVolumeX',
|
|
109
|
-
tuiIconStarFilled: 'tuiIconStar',
|
|
110
|
-
tuiIconStop: 'tuiIconSquare',
|
|
111
|
-
tuiIconStructure: 'tuiIconLayoutGrid',
|
|
112
|
-
tuiIconTime: 'tuiIconClock',
|
|
113
|
-
tuiIconTooltip: 'tuiIconHelpCircle',
|
|
114
|
-
tuiIconViewList: 'tuiIconList',
|
|
115
|
-
tuiIconWifiOn: 'tuiIconWifi',
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
/// <reference types="@taiga-ui/tsconfig/ng-dev-mode" />
|
|
119
|
-
/**
|
|
120
|
-
* @deprecated: drop in v5.0 use {@link TuiIcon}
|
|
121
|
-
* Service for reusing SVGs without inlining each instance
|
|
122
|
-
*/
|
|
123
|
-
class TuiSvgService {
|
|
124
|
-
constructor() {
|
|
125
|
-
this.tuiSanitizer = inject(TUI_SANITIZER, { optional: true });
|
|
126
|
-
this.sanitizer = inject(DomSanitizer);
|
|
127
|
-
this.originals = {};
|
|
128
|
-
this.items$ = new BehaviorSubject(new Map());
|
|
129
|
-
this.define(inject(TUI_ICON_STARTS));
|
|
130
|
-
}
|
|
131
|
-
define(icons) {
|
|
132
|
-
const { value } = this.items$;
|
|
133
|
-
Object.keys(icons).forEach((key) => {
|
|
134
|
-
this.defineIcon(key, icons[key] ?? '', value);
|
|
135
|
-
});
|
|
136
|
-
this.items$.next(value);
|
|
137
|
-
}
|
|
138
|
-
getOriginal(name) {
|
|
139
|
-
return this.originals[name] || null;
|
|
140
|
-
}
|
|
141
|
-
defineIcon(name, src, map) {
|
|
142
|
-
if (map.has(name)) {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
const parsed = this.parseSrc(name, src);
|
|
146
|
-
if (!parsed) {
|
|
147
|
-
ngDevMode && console.assert(false, 'Unable to parse given SVG src');
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
map.set(name, parsed);
|
|
151
|
-
this.originals = {
|
|
152
|
-
...this.originals,
|
|
153
|
-
[name]: src,
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
parseSrc(name, src) {
|
|
157
|
-
return this.sanitize(tuiProcessIcon(src, name));
|
|
158
|
-
}
|
|
159
|
-
sanitize(src) {
|
|
160
|
-
return this.sanitizer.bypassSecurityTrustHtml((this.tuiSanitizer
|
|
161
|
-
? this.tuiSanitizer.sanitize(SecurityContext.HTML, src)
|
|
162
|
-
: this.sanitizer.sanitize(SecurityContext.HTML, src)) || '');
|
|
163
|
-
}
|
|
164
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiSvgService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
165
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiSvgService, providedIn: 'root' }); }
|
|
166
|
-
}
|
|
167
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiSvgService, decorators: [{
|
|
168
|
-
type: Injectable,
|
|
169
|
-
args: [{
|
|
170
|
-
providedIn: 'root',
|
|
171
|
-
}]
|
|
172
|
-
}], ctorParameters: () => [] });
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* @deprecated: drop in v5.0 use {@link TuiIcon}
|
|
176
|
-
* https://taiga-ui.dev/components/icon
|
|
177
|
-
*/
|
|
178
|
-
const TUI_DEFAULT_ICONS_PLACE = 'assets/taiga-ui/icons';
|
|
179
|
-
/**
|
|
180
|
-
* @deprecated: drop in v5.0 use {@link TuiIcon}
|
|
181
|
-
* https://taiga-ui.dev/components/icon
|
|
182
|
-
*/
|
|
183
|
-
const TUI_SVG_DEFAULT_OPTIONS = {
|
|
184
|
-
iconsPlace: TUI_DEFAULT_ICONS_PLACE,
|
|
185
|
-
path: tuiIconsPathFactory(TUI_DEFAULT_ICONS_PLACE),
|
|
186
|
-
srcProcessor: identity,
|
|
187
|
-
contentProcessor: tuiSvgLinearGradientProcessor,
|
|
188
|
-
deprecated: (src) => {
|
|
189
|
-
const oldIcon = src.replace('Large', '').replace('Outline', '');
|
|
190
|
-
const newIcon = TUI_DEPRECATED_ICONS[oldIcon];
|
|
191
|
-
return newIcon
|
|
192
|
-
? `${oldIcon}/(Large|Outline) is deprecated, use ${newIcon}/(Large|Outline) instead`
|
|
193
|
-
: '';
|
|
194
|
-
},
|
|
195
|
-
};
|
|
196
|
-
/**
|
|
197
|
-
* @deprecated: drop in v5.0 use {@link TuiIcon}
|
|
198
|
-
* https://taiga-ui.dev/components/icon
|
|
199
|
-
*/
|
|
200
|
-
const TUI_SVG_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_SVG_OPTIONS' : '', {
|
|
201
|
-
factory: () => ({
|
|
202
|
-
iconsPlace: TUI_DEFAULT_ICONS_PLACE,
|
|
203
|
-
path: tuiIconsPathFactory(TUI_DEFAULT_ICONS_PLACE),
|
|
204
|
-
deprecated: TUI_SVG_DEFAULT_OPTIONS.deprecated,
|
|
205
|
-
srcProcessor: identity,
|
|
206
|
-
contentProcessor: tuiSvgLinearGradientProcessor,
|
|
207
|
-
}),
|
|
208
|
-
});
|
|
209
|
-
/**
|
|
210
|
-
* @deprecated: drop in v5.0 use {@link TuiIcon}
|
|
211
|
-
* https://taiga-ui.dev/components/icon
|
|
212
|
-
*/
|
|
213
|
-
const TUI_SVG_SRC_INTERCEPTORS = new InjectionToken(ngDevMode ? 'TUI_SVG_SRC_INTERCEPTORS' : '');
|
|
214
|
-
/**
|
|
215
|
-
* @deprecated: drop in v5.0 use {@link TuiIcon}
|
|
216
|
-
* https://taiga-ui.dev/components/icon
|
|
217
|
-
*/
|
|
218
|
-
function tuiSvgSrcInterceptors(interceptor) {
|
|
219
|
-
return {
|
|
220
|
-
provide: TUI_SVG_SRC_INTERCEPTORS,
|
|
221
|
-
useValue: interceptor,
|
|
222
|
-
multi: true,
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* @deprecated: drop in v5.0 use {@link TuiIcon}
|
|
227
|
-
* https://taiga-ui.dev/components/icon
|
|
228
|
-
*/
|
|
229
|
-
const tuiSvgOptionsProvider = (options) => ({
|
|
230
|
-
provide: TUI_SVG_OPTIONS,
|
|
231
|
-
deps: [[new SkipSelf(), new Optional(), TUI_SVG_OPTIONS]],
|
|
232
|
-
useFactory: (fallback) => ({
|
|
233
|
-
iconsPlace: options.iconsPlace ??
|
|
234
|
-
fallback?.iconsPlace ??
|
|
235
|
-
TUI_SVG_DEFAULT_OPTIONS.iconsPlace,
|
|
236
|
-
path: tuiIsString(options.path)
|
|
237
|
-
? tuiIconsPathFactory(options.path)
|
|
238
|
-
: (options.path ?? fallback?.path ?? TUI_SVG_DEFAULT_OPTIONS.path),
|
|
239
|
-
deprecated: options.deprecated ??
|
|
240
|
-
fallback?.deprecated ??
|
|
241
|
-
TUI_SVG_DEFAULT_OPTIONS.deprecated,
|
|
242
|
-
srcProcessor: options.srcProcessor ??
|
|
243
|
-
fallback?.srcProcessor ??
|
|
244
|
-
TUI_SVG_DEFAULT_OPTIONS.srcProcessor,
|
|
245
|
-
contentProcessor: options.contentProcessor ??
|
|
246
|
-
fallback?.contentProcessor ??
|
|
247
|
-
TUI_SVG_DEFAULT_OPTIONS.contentProcessor,
|
|
248
|
-
}),
|
|
249
|
-
});
|
|
250
|
-
|
|
251
|
-
const UNDEFINED_NAMED_ICON = 'Attempted to use undefined named icon';
|
|
252
|
-
const MISSING_EXTERNAL_ICON = 'External icon is missing on the given URL';
|
|
253
|
-
const FAILED_EXTERNAL_ICON = 'Failed to load external SVG';
|
|
254
|
-
/**
|
|
255
|
-
* @deprecated: drop in v5.0 use {@link TuiIcon}
|
|
256
|
-
* https://taiga-ui.dev/components/icon
|
|
257
|
-
*/
|
|
258
|
-
class TuiSvgComponent {
|
|
259
|
-
constructor() {
|
|
260
|
-
this.icon = '';
|
|
261
|
-
this.doc = inject(DOCUMENT);
|
|
262
|
-
this.win = inject(WA_WINDOW);
|
|
263
|
-
this.options = inject(TUI_SVG_OPTIONS);
|
|
264
|
-
this.tuiSanitizer = inject(TUI_SANITIZER, { optional: true });
|
|
265
|
-
this.svgService = inject(TuiSvgService);
|
|
266
|
-
this.staticRequestService = inject(TuiStaticRequestService);
|
|
267
|
-
this.sanitizer = inject(DomSanitizer);
|
|
268
|
-
this.el = tuiInjectElement();
|
|
269
|
-
this.baseHref = inject(TUI_BASE_HREF);
|
|
270
|
-
this.src$ = new ReplaySubject(1);
|
|
271
|
-
this.srcInterceptors = inject(TUI_SVG_SRC_INTERCEPTORS, {
|
|
272
|
-
optional: true,
|
|
273
|
-
});
|
|
274
|
-
this.innerHTML$ = this.src$.pipe(switchMap(() => {
|
|
275
|
-
if (tuiIsString(this.icon)) {
|
|
276
|
-
return this.isExternal
|
|
277
|
-
? this.getExternalIcon(this.icon)
|
|
278
|
-
: of(this.getSafeHtml(this.icon));
|
|
279
|
-
}
|
|
280
|
-
return of(this.icon);
|
|
281
|
-
}), startWith(''));
|
|
282
|
-
}
|
|
283
|
-
set src(src) {
|
|
284
|
-
const deprecated = this.options.deprecated(String(src));
|
|
285
|
-
ngDevMode && console.assert(!deprecated, deprecated);
|
|
286
|
-
this.icon = (this.srcInterceptors ?? []).reduce((newSrc, interceptor) => interceptor(newSrc, this.options), this.options.srcProcessor(src || ''));
|
|
287
|
-
this.src$.next();
|
|
288
|
-
}
|
|
289
|
-
get src() {
|
|
290
|
-
return this.icon;
|
|
291
|
-
}
|
|
292
|
-
get use() {
|
|
293
|
-
if (tuiIsString(this.icon)) {
|
|
294
|
-
return this.icon.includes('.svg#')
|
|
295
|
-
? this.icon
|
|
296
|
-
: this.resolveName(this.icon, this.options.path);
|
|
297
|
-
}
|
|
298
|
-
return '';
|
|
299
|
-
}
|
|
300
|
-
get isInnerHTML() {
|
|
301
|
-
return (!tuiIsString(this.icon) ||
|
|
302
|
-
this.isSrc ||
|
|
303
|
-
this.isExternal ||
|
|
304
|
-
(this.isName && this.isShadowDOM));
|
|
305
|
-
}
|
|
306
|
-
onError(message = MISSING_EXTERNAL_ICON) {
|
|
307
|
-
const { icon } = this;
|
|
308
|
-
const event = new CustomEvent('tui-icon-error', {
|
|
309
|
-
bubbles: true,
|
|
310
|
-
detail: {
|
|
311
|
-
message,
|
|
312
|
-
icon: icon,
|
|
313
|
-
},
|
|
314
|
-
});
|
|
315
|
-
ngDevMode && console.assert(false, message, icon);
|
|
316
|
-
this.el.dispatchEvent(event);
|
|
317
|
-
}
|
|
318
|
-
get isShadowDOM() {
|
|
319
|
-
return tuiGetDocumentOrShadowRoot(this.el) !== this.doc;
|
|
320
|
-
}
|
|
321
|
-
get isUse() {
|
|
322
|
-
return this.use.replace(TUI_CACHE_BUSTING_PAYLOAD, '').includes('.svg#');
|
|
323
|
-
}
|
|
324
|
-
get isExternal() {
|
|
325
|
-
return (this.isUrl ||
|
|
326
|
-
this.isCrossDomain ||
|
|
327
|
-
(!this.isSrc && !this.svgService.getOriginal(String(this.icon))));
|
|
328
|
-
}
|
|
329
|
-
get isUrl() {
|
|
330
|
-
return (tuiIsString(this.icon) &&
|
|
331
|
-
this.icon.replace(TUI_CACHE_BUSTING_PAYLOAD, '').endsWith('.svg'));
|
|
332
|
-
}
|
|
333
|
-
get isSrc() {
|
|
334
|
-
return tuiIsString(this.icon) && tuiIsPresumedHTMLString(this.icon);
|
|
335
|
-
}
|
|
336
|
-
get isName() {
|
|
337
|
-
return !this.isUrl && !this.isUse && !this.isSrc;
|
|
338
|
-
}
|
|
339
|
-
get isCrossDomain() {
|
|
340
|
-
const { use, isUse, win } = this;
|
|
341
|
-
return (isUse && use.startsWith('http') && !!win.origin && !use.startsWith(win.origin));
|
|
342
|
-
}
|
|
343
|
-
resolveName(name, iconsPath) {
|
|
344
|
-
return iconsPath(name, this.baseHref);
|
|
345
|
-
}
|
|
346
|
-
getSafeHtml(src) {
|
|
347
|
-
return this.isSrc ? this.sanitize(src) : this.process(src);
|
|
348
|
-
}
|
|
349
|
-
process(src) {
|
|
350
|
-
const icon = this.svgService.getOriginal(src);
|
|
351
|
-
if (this.isName && !icon && !!src) {
|
|
352
|
-
this.onError(UNDEFINED_NAMED_ICON);
|
|
353
|
-
}
|
|
354
|
-
return this.sanitize(icon || '');
|
|
355
|
-
}
|
|
356
|
-
sanitize(src) {
|
|
357
|
-
src = this.options.contentProcessor(src);
|
|
358
|
-
return this.tuiSanitizer && tuiIsString(src)
|
|
359
|
-
? this.sanitizer.bypassSecurityTrustHtml(this.tuiSanitizer.sanitize(SecurityContext.HTML, src) || '')
|
|
360
|
-
: src;
|
|
361
|
-
}
|
|
362
|
-
getExternalIcon(src) {
|
|
363
|
-
const url = src.includes('.svg') ? src : this.use;
|
|
364
|
-
return this.staticRequestService.request(url).pipe(catchError(() => {
|
|
365
|
-
this.onError(FAILED_EXTERNAL_ICON);
|
|
366
|
-
return of('');
|
|
367
|
-
}), map((response) => this.sanitize(response.replace('<svg', '<svg focusable="false"'))));
|
|
368
|
-
}
|
|
369
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiSvgComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
370
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TuiSvgComponent, isStandalone: true, selector: "tui-svg", inputs: { src: "src" }, ngImport: i0, template: "<div\n class=\"t-src\"\n [innerHTML]=\"innerHTML$ | async\"\n></div>\n", styles: [":host{display:inline-flex;vertical-align:middle;flex-shrink:0;align-items:center;justify-content:center;line-height:0;block-size:1.5rem;inline-size:1.5rem;fill:transparent;stroke:transparent;font-size:1rem}.t-src{display:flex;inline-size:100%;block-size:100%;align-items:center;justify-content:center}.t-svg{overflow:visible}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
371
|
-
}
|
|
372
|
-
__decorate([
|
|
373
|
-
tuiPure
|
|
374
|
-
], TuiSvgComponent.prototype, "resolveName", null);
|
|
375
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiSvgComponent, decorators: [{
|
|
376
|
-
type: Component,
|
|
377
|
-
args: [{ selector: 'tui-svg', imports: [AsyncPipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"t-src\"\n [innerHTML]=\"innerHTML$ | async\"\n></div>\n", styles: [":host{display:inline-flex;vertical-align:middle;flex-shrink:0;align-items:center;justify-content:center;line-height:0;block-size:1.5rem;inline-size:1.5rem;fill:transparent;stroke:transparent;font-size:1rem}.t-src{display:flex;inline-size:100%;block-size:100%;align-items:center;justify-content:center}.t-svg{overflow:visible}\n"] }]
|
|
378
|
-
}], propDecorators: { src: [{
|
|
379
|
-
type: Input
|
|
380
|
-
}], resolveName: [] } });
|
|
381
|
-
|
|
382
|
-
/**
|
|
383
|
-
* Generated bundle index. Do not edit.
|
|
384
|
-
*/
|
|
385
|
-
|
|
386
|
-
export { TUI_DEFAULT_ICONS_PLACE, TUI_DEPRECATED_ICONS, TUI_SVG_DEFAULT_OPTIONS, TUI_SVG_OPTIONS, TUI_SVG_SRC_INTERCEPTORS, TuiSvgComponent, TuiSvgService, tuiSvgLinearGradientProcessor, tuiSvgOptionsProvider, tuiSvgSrcInterceptors };
|
|
387
|
-
//# sourceMappingURL=taiga-ui-legacy-components-svg.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-legacy-components-svg.mjs","sources":["../../../projects/legacy/components/svg/content-processor.ts","../../../projects/legacy/components/svg/deprecated-icons.ts","../../../projects/legacy/components/svg/svg.service.ts","../../../projects/legacy/components/svg/svg-options.ts","../../../projects/legacy/components/svg/svg.component.ts","../../../projects/legacy/components/svg/svg.template.html","../../../projects/legacy/components/svg/taiga-ui-legacy-components-svg.ts"],"sourcesContent":["import {type TuiSafeHtml} from '@taiga-ui/cdk/types';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\n\nfunction makeRandomSalt(): number {\n return Math.floor(Math.random() * Date.now());\n}\n\nfunction extractLinearGradientIdsFromSvg(svg: string): string[] {\n const ids = (svg.match(/url\\((\"?)('*)#(.*?)('*)\\)/g) ?? []).map((url) =>\n url.slice(4, url.length - 1).replaceAll(/['\"#]+/g, ''),\n );\n\n return Array.from(new Set(ids));\n}\n\n/**\n * @deprecated: drop in v5.0 use {@link TuiIcon}\n * https://taiga-ui.dev/components/icon\n *\n * @description:\n * Any ‘linearGradient’ attributes which are defined on the referenced\n * element which are not defined on this element are inherited by this element.\n * If this element has no defined gradient stops, and the referenced element does\n * (possibly due to its own ‘xlink:href’ attribute), then this element inherits\n * the gradient stop from the referenced element. Inheritance can be indirect\n * to an arbitrary level; thus, if the referenced element inherits attribute\n * or gradient stops due to its own ‘xlink:href’ attribute, then the current\n * element can inherit those attributes or gradient stops.\n *\n * Documentation: https://www.w3.org/TR/SVG11/pservers.html\n *\n */\nexport function tuiSvgLinearGradientProcessor(\n svg: TuiSafeHtml,\n salt: number | string = makeRandomSalt(),\n): TuiSafeHtml {\n if (tuiIsString(svg)) {\n const uniqueIds = extractLinearGradientIdsFromSvg(svg);\n\n return uniqueIds.reduce((newSvg, previousId) => {\n const newId = `id_${salt}_${previousId}`;\n\n return newSvg\n .replaceAll(`\"${previousId}\"`, `\"${newId}\"`)\n .replaceAll(`'${previousId}'`, `'${newId}'`)\n .replaceAll(`url('#${previousId}')`, `url('#${newId}')`)\n .replaceAll(`url(\"#${previousId}\")`, `url(\"#${newId}\")`)\n .replaceAll(`url(#${previousId})`, `url(#${newId})`);\n }, svg);\n }\n\n return svg;\n}\n","/**\n * @deprecated: drop in v5.0 use {@link TuiIcon}\n * https://taiga-ui.dev/components/icon\n */\nexport const TUI_DEPRECATED_ICONS: Record<string, string> = {\n tuiIconAttach: 'tuiIconPaperclip',\n tuiIconAttention: 'tuiIconAlertCircle',\n tuiIconBackCircle: 'tuiIconArrowLeftCircle',\n tuiIconCall: 'tuiIconPhone',\n tuiIconCallIn: 'tuiIconPhoneIncoming',\n tuiIconCallOut: 'tuiIconPhoneOutgoing',\n tuiIconCallTransfer: 'tuiIconPhoneForwarded',\n tuiIconCancel: 'tuiIconXCircle',\n tuiIconCancelCircle: 'tuiIconSlash',\n tuiIconCard: 'tuiIconCreditCard',\n tuiIconCards: 'tuiIconCreditCard',\n tuiIconChartBar: 'tuiIconBarChart',\n tuiIconChart: 'tuiIconBarChart',\n tuiIconCheckList: 'tuiIconClipboard',\n tuiIconCloseCircle: 'tuiIconXCircle',\n tuiIconCollapse: 'tuiIconMinimize',\n tuiIconComment: 'tuiIconMessageSquare',\n tuiIconCommentFw: 'tuiIconMessageForward',\n tuiIconCompany: 'tuiIconBriefcase',\n tuiIconDefaultDoc: 'tuiIconFile',\n tuiIconDesktop: 'tuiIconMonitor',\n tuiIconDesktopOff: 'tuiIconMonitorOff',\n tuiIconDislike: 'tuiIconThumbsDown',\n tuiIconDone: 'tuiIconCheckCircle',\n tuiIconDraft: 'tuiIconEdit2',\n tuiIconEyeOpen: 'tuiIconEye',\n tuiIconEyeClosed: 'tuiIconEyeOff',\n tuiIconExpand: 'tuiIconMaximize',\n tuiIconExternal: 'tuiIconExternalLink',\n tuiIconFrame: 'tuiIconLayout',\n tuiIconGeo: 'tuiIconMapPin',\n tuiIconHeartFilled: 'tuiIconHeart',\n tuiIconHide: 'tuiIconEyeOff',\n tuiIconImg: 'tuiIconImage',\n tuiIconInfoCircle: 'tuiIconInfo',\n tuiIconLike: 'tuiIconThumbsUp',\n tuiIconLockOpen: 'tuiIconUnlock',\n tuiIconMobile: 'tuiIconSmartphone',\n tuiIconMoreHor: 'tuiIconMoreHorizontal',\n tuiIconMoreVer: 'tuiIconMoreVertical',\n tuiIconMoreVert: 'tuiIconMoreVertical',\n tuiIconPicture: 'tuiIconImage',\n tuiIconPin: 'tuiIconMapPin',\n tuiIconPrint: 'tuiIconPrinter',\n tuiIconRefresh: 'tuiIconRefreshCw',\n tuiIconRemove: 'tuiIconX',\n tuiIconShow: 'tuiIconEye',\n tuiIconSound: 'tuiIconVolume',\n tuiIconSoundOff: 'tuiIconVolumeX',\n tuiIconStarFilled: 'tuiIconStar',\n tuiIconStop: 'tuiIconSquare',\n tuiIconStructure: 'tuiIconLayoutGrid',\n tuiIconTime: 'tuiIconClock',\n tuiIconTooltip: 'tuiIconHelpCircle',\n tuiIconViewList: 'tuiIconList',\n tuiIconWifiOn: 'tuiIconWifi',\n};\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {inject, Injectable, SecurityContext} from '@angular/core';\nimport {DomSanitizer, type SafeHtml} from '@angular/platform-browser';\nimport {TUI_ICON_STARTS, TUI_SANITIZER} from '@taiga-ui/legacy/tokens';\nimport {tuiProcessIcon} from '@taiga-ui/legacy/utils';\nimport {BehaviorSubject} from 'rxjs';\n\n/**\n * @deprecated: drop in v5.0 use {@link TuiIcon}\n * Service for reusing SVGs without inlining each instance\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiSvgService {\n private readonly tuiSanitizer = inject(TUI_SANITIZER, {optional: true});\n private readonly sanitizer = inject(DomSanitizer);\n private originals: Record<string, string> = {};\n\n public readonly items$ = new BehaviorSubject<Map<string, SafeHtml>>(new Map());\n\n constructor() {\n this.define(inject(TUI_ICON_STARTS));\n }\n\n public define(icons: Record<string, string>): void {\n const {value} = this.items$;\n\n Object.keys(icons).forEach((key) => {\n this.defineIcon(key, icons[key] ?? '', value);\n });\n\n this.items$.next(value);\n }\n\n public getOriginal(name: string): string | null {\n return this.originals[name] || null;\n }\n\n private defineIcon(name: string, src: string, map: Map<string, SafeHtml>): void {\n if (map.has(name)) {\n return;\n }\n\n const parsed = this.parseSrc(name, src);\n\n if (!parsed) {\n ngDevMode && console.assert(false, 'Unable to parse given SVG src');\n\n return;\n }\n\n map.set(name, parsed);\n this.originals = {\n ...this.originals,\n [name]: src,\n };\n }\n\n private parseSrc(name: string, src: string): SafeHtml {\n return this.sanitize(tuiProcessIcon(src, name));\n }\n\n private sanitize(src: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(\n (this.tuiSanitizer\n ? this.tuiSanitizer.sanitize(SecurityContext.HTML, src)\n : this.sanitizer.sanitize(SecurityContext.HTML, src)) || '',\n );\n }\n}\n","import {\n type FactoryProvider,\n InjectionToken,\n Optional,\n type Provider,\n SkipSelf,\n} from '@angular/core';\nimport {\n type TuiHandler,\n type TuiSafeHtml,\n type TuiStringHandler,\n} from '@taiga-ui/cdk/types';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiIconsPathFactory} from '@taiga-ui/legacy/utils';\nimport {identity} from 'rxjs';\n\nimport {tuiSvgLinearGradientProcessor} from './content-processor';\nimport {TUI_DEPRECATED_ICONS} from './deprecated-icons';\n\n/**\n * @deprecated: drop in v5.0 use {@link TuiIcon}\n * https://taiga-ui.dev/components/icon\n */\nexport const TUI_DEFAULT_ICONS_PLACE = 'assets/taiga-ui/icons';\n\n/**\n * @deprecated: drop in v5.0 use {@link TuiIcon}\n * https://taiga-ui.dev/components/icon\n */\nexport interface TuiSvgOptions {\n readonly contentProcessor: TuiHandler<TuiSafeHtml, TuiSafeHtml>;\n readonly deprecated: TuiStringHandler<string>;\n readonly iconsPlace: string;\n readonly path: (name: string, baseHref?: string) => string;\n readonly srcProcessor: TuiHandler<TuiSafeHtml, TuiSafeHtml>;\n}\n\n/**\n * @deprecated: drop in v5.0 use {@link TuiIcon}\n * https://taiga-ui.dev/components/icon\n */\nexport type TuiSvgInterceptorHandler =\n | ((src: TuiSafeHtml, options: TuiSvgOptions) => TuiSafeHtml)\n | ((src: TuiSafeHtml) => TuiSafeHtml);\n\n/**\n * @deprecated: drop in v5.0 use {@link TuiIcon}\n * https://taiga-ui.dev/components/icon\n */\nexport const TUI_SVG_DEFAULT_OPTIONS: TuiSvgOptions = {\n iconsPlace: TUI_DEFAULT_ICONS_PLACE,\n path: tuiIconsPathFactory(TUI_DEFAULT_ICONS_PLACE),\n srcProcessor: identity,\n contentProcessor: tuiSvgLinearGradientProcessor,\n deprecated: (src) => {\n const oldIcon = src.replace('Large', '').replace('Outline', '');\n const newIcon = TUI_DEPRECATED_ICONS[oldIcon];\n\n return newIcon\n ? `${oldIcon}/(Large|Outline) is deprecated, use ${newIcon}/(Large|Outline) instead`\n : '';\n },\n};\n\n/**\n * @deprecated: drop in v5.0 use {@link TuiIcon}\n * https://taiga-ui.dev/components/icon\n */\nexport const TUI_SVG_OPTIONS = new InjectionToken<TuiSvgOptions>(\n ngDevMode ? 'TUI_SVG_OPTIONS' : '',\n {\n factory: () => ({\n iconsPlace: TUI_DEFAULT_ICONS_PLACE,\n path: tuiIconsPathFactory(TUI_DEFAULT_ICONS_PLACE),\n deprecated: TUI_SVG_DEFAULT_OPTIONS.deprecated,\n srcProcessor: identity,\n contentProcessor: tuiSvgLinearGradientProcessor,\n }),\n },\n);\n\n/**\n * @deprecated: drop in v5.0 use {@link TuiIcon}\n * https://taiga-ui.dev/components/icon\n */\nexport const TUI_SVG_SRC_INTERCEPTORS = new InjectionToken<TuiSvgInterceptorHandler>(\n ngDevMode ? 'TUI_SVG_SRC_INTERCEPTORS' : '',\n);\n\n/**\n * @deprecated: drop in v5.0 use {@link TuiIcon}\n * https://taiga-ui.dev/components/icon\n */\nexport function tuiSvgSrcInterceptors(interceptor: TuiSvgInterceptorHandler): Provider {\n return {\n provide: TUI_SVG_SRC_INTERCEPTORS,\n useValue: interceptor,\n multi: true,\n };\n}\n\n/**\n * @deprecated: drop in v5.0 use {@link TuiIcon}\n * https://taiga-ui.dev/components/icon\n */\nexport const tuiSvgOptionsProvider: (\n options: Partial<Omit<TuiSvgOptions, 'path'>> & {\n path?: TuiSvgOptions['path'] | string;\n },\n) => FactoryProvider = (options) => ({\n provide: TUI_SVG_OPTIONS,\n deps: [[new SkipSelf(), new Optional(), TUI_SVG_OPTIONS]],\n useFactory: (fallback: TuiSvgOptions | null): TuiSvgOptions => ({\n iconsPlace:\n options.iconsPlace ??\n fallback?.iconsPlace ??\n TUI_SVG_DEFAULT_OPTIONS.iconsPlace,\n path: tuiIsString(options.path)\n ? tuiIconsPathFactory(options.path)\n : (options.path ?? fallback?.path ?? TUI_SVG_DEFAULT_OPTIONS.path),\n deprecated:\n options.deprecated ??\n fallback?.deprecated ??\n TUI_SVG_DEFAULT_OPTIONS.deprecated,\n srcProcessor:\n options.srcProcessor ??\n fallback?.srcProcessor ??\n TUI_SVG_DEFAULT_OPTIONS.srcProcessor,\n contentProcessor:\n options.contentProcessor ??\n fallback?.contentProcessor ??\n TUI_SVG_DEFAULT_OPTIONS.contentProcessor,\n }),\n});\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {AsyncPipe, DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n SecurityContext,\n} from '@angular/core';\nimport {DomSanitizer, type SafeHtml} from '@angular/platform-browser';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {TUI_BASE_HREF} from '@taiga-ui/cdk/tokens';\nimport {type TuiSafeHtml} from '@taiga-ui/cdk/types';\nimport {tuiGetDocumentOrShadowRoot, tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsString, tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiStaticRequestService} from '@taiga-ui/legacy/services';\nimport {TUI_SANITIZER} from '@taiga-ui/legacy/tokens';\nimport {TUI_CACHE_BUSTING_PAYLOAD, tuiIsPresumedHTMLString} from '@taiga-ui/legacy/utils';\nimport {\n catchError,\n map,\n type Observable,\n of,\n ReplaySubject,\n startWith,\n switchMap,\n} from 'rxjs';\n\nimport {TuiSvgService} from './svg.service';\nimport {\n TUI_SVG_OPTIONS,\n TUI_SVG_SRC_INTERCEPTORS,\n type TuiSvgInterceptorHandler,\n type TuiSvgOptions,\n} from './svg-options';\n\nconst UNDEFINED_NAMED_ICON = 'Attempted to use undefined named icon';\nconst MISSING_EXTERNAL_ICON = 'External icon is missing on the given URL';\nconst FAILED_EXTERNAL_ICON = 'Failed to load external SVG';\n\n/**\n * @deprecated: drop in v5.0 use {@link TuiIcon}\n * https://taiga-ui.dev/components/icon\n */\nexport interface TuiIconError {\n readonly icon: string;\n readonly message: string;\n}\n\n/**\n * @deprecated: drop in v5.0 use {@link TuiIcon}\n * https://taiga-ui.dev/components/icon\n */\n@Component({\n selector: 'tui-svg',\n imports: [AsyncPipe],\n templateUrl: './svg.template.html',\n styleUrls: ['./svg.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiSvgComponent {\n private icon: TuiSafeHtml = '';\n private readonly doc = inject(DOCUMENT);\n private readonly win = inject(WA_WINDOW);\n private readonly options = inject(TUI_SVG_OPTIONS);\n private readonly tuiSanitizer = inject(TUI_SANITIZER, {optional: true});\n private readonly svgService = inject(TuiSvgService);\n private readonly staticRequestService = inject(TuiStaticRequestService);\n private readonly sanitizer = inject(DomSanitizer);\n private readonly el = tuiInjectElement();\n private readonly baseHref = inject(TUI_BASE_HREF);\n private readonly src$ = new ReplaySubject<void>(1);\n private readonly srcInterceptors = inject(TUI_SVG_SRC_INTERCEPTORS, {\n optional: true,\n }) as readonly TuiSvgInterceptorHandler[] | null;\n\n protected readonly innerHTML$: Observable<SafeHtml> = this.src$.pipe(\n switchMap(() => {\n if (tuiIsString(this.icon)) {\n return this.isExternal\n ? this.getExternalIcon(this.icon)\n : of(this.getSafeHtml(this.icon));\n }\n\n return of(this.icon);\n }),\n startWith(''),\n );\n\n @Input()\n public set src(src: TuiSafeHtml | null | undefined) {\n const deprecated = this.options.deprecated(String(src));\n\n ngDevMode && console.assert(!deprecated, deprecated);\n\n this.icon = (this.srcInterceptors ?? []).reduce(\n (newSrc, interceptor: TuiSvgInterceptorHandler) =>\n interceptor(newSrc, this.options),\n this.options.srcProcessor(src || ''),\n );\n\n this.src$.next();\n }\n\n public get src(): TuiSafeHtml {\n return this.icon;\n }\n\n public get use(): string {\n if (tuiIsString(this.icon)) {\n return this.icon.includes('.svg#')\n ? this.icon\n : this.resolveName(this.icon, this.options.path);\n }\n\n return '';\n }\n\n public get isInnerHTML(): boolean {\n return (\n !tuiIsString(this.icon) ||\n this.isSrc ||\n this.isExternal ||\n (this.isName && this.isShadowDOM)\n );\n }\n\n protected onError(message: string = MISSING_EXTERNAL_ICON): void {\n const {icon} = this;\n const event = new CustomEvent<TuiIconError>('tui-icon-error', {\n bubbles: true,\n detail: {\n message,\n icon: icon as string,\n },\n });\n\n ngDevMode && console.assert(false, message, icon);\n this.el.dispatchEvent(event);\n }\n\n private get isShadowDOM(): boolean {\n return tuiGetDocumentOrShadowRoot(this.el) !== this.doc;\n }\n\n private get isUse(): boolean {\n return this.use.replace(TUI_CACHE_BUSTING_PAYLOAD, '').includes('.svg#');\n }\n\n private get isExternal(): boolean {\n return (\n this.isUrl ||\n this.isCrossDomain ||\n (!this.isSrc && !this.svgService.getOriginal(String(this.icon)))\n );\n }\n\n private get isUrl(): boolean {\n return (\n tuiIsString(this.icon) &&\n this.icon.replace(TUI_CACHE_BUSTING_PAYLOAD, '').endsWith('.svg')\n );\n }\n\n private get isSrc(): boolean {\n return tuiIsString(this.icon) && tuiIsPresumedHTMLString(this.icon);\n }\n\n private get isName(): boolean {\n return !this.isUrl && !this.isUse && !this.isSrc;\n }\n\n private get isCrossDomain(): boolean {\n const {use, isUse, win} = this;\n\n return (\n isUse && use.startsWith('http') && !!win.origin && !use.startsWith(win.origin)\n );\n }\n\n @tuiPure\n private resolveName(name: string, iconsPath: TuiSvgOptions['path']): string {\n return iconsPath(name, this.baseHref);\n }\n\n private getSafeHtml(src: string): SafeHtml {\n return this.isSrc ? this.sanitize(src) : this.process(src);\n }\n\n private process(src: string): SafeHtml {\n const icon = this.svgService.getOriginal(src);\n\n if (this.isName && !icon && !!src) {\n this.onError(UNDEFINED_NAMED_ICON);\n }\n\n return this.sanitize(icon || '');\n }\n\n private sanitize(src: TuiSafeHtml): TuiSafeHtml {\n src = this.options.contentProcessor(src);\n\n return this.tuiSanitizer && tuiIsString(src)\n ? this.sanitizer.bypassSecurityTrustHtml(\n this.tuiSanitizer.sanitize(SecurityContext.HTML, src) || '',\n )\n : src;\n }\n\n private getExternalIcon(src: string): Observable<SafeHtml> {\n const url = src.includes('.svg') ? src : this.use;\n\n return this.staticRequestService.request(url).pipe(\n catchError(() => {\n this.onError(FAILED_EXTERNAL_ICON);\n\n return of('');\n }),\n map((response) =>\n this.sanitize(response.replace('<svg', '<svg focusable=\"false\"')),\n ),\n );\n }\n}\n","<div\n class=\"t-src\"\n [innerHTML]=\"innerHTML$ | async\"\n></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { Pipe } from '@angular/core';
|
|
3
|
-
import { CHAR_PLUS } from '@taiga-ui/cdk/constants';
|
|
4
|
-
import { tuiFormatPhone } from '@taiga-ui/legacy/utils';
|
|
5
|
-
|
|
6
|
-
/// <reference types="@taiga-ui/tsconfig/ng-dev-mode" />
|
|
7
|
-
/**
|
|
8
|
-
* @deprecated: drop in v5.0
|
|
9
|
-
*/
|
|
10
|
-
class TuiFormatPhonePipe {
|
|
11
|
-
/**
|
|
12
|
-
* Use {@link https://maskito.dev/frameworks/angular#pipe MaskitoPipe} instead!
|
|
13
|
-
* ```ts
|
|
14
|
-
* import {maskitoTransform} from '@maskito/core';
|
|
15
|
-
* import {maskitoPhoneOptionsGenerator} from '@maskito/phone';
|
|
16
|
-
* import metadata from 'libphonenumber-js/min/metadata';
|
|
17
|
-
*
|
|
18
|
-
* @Component({
|
|
19
|
-
* standalone: true,
|
|
20
|
-
* imports: [MaskitoPipe],
|
|
21
|
-
* template: `
|
|
22
|
-
* Phone: {{'12125552368' | maskito: options}}
|
|
23
|
-
* <!-- Phone: +1 (212) 555-2368 -->
|
|
24
|
-
* `,
|
|
25
|
-
* })
|
|
26
|
-
* export class YourComponent {
|
|
27
|
-
* options = maskitoPhoneOptionsGenerator({countryIsoCode: 'US', metadata});
|
|
28
|
-
* }
|
|
29
|
-
* ```
|
|
30
|
-
* ___
|
|
31
|
-
* @deprecated Use {@link https://maskito.dev/frameworks/angular#pipe MaskitoPipe} instead!
|
|
32
|
-
* Formats phone number string of +7XXXXXXXXXX format with adding separator symbols
|
|
33
|
-
* @param value
|
|
34
|
-
* @param countryCode
|
|
35
|
-
* @param phoneMask
|
|
36
|
-
* @return formatted phone number string +7(XXX)XXX-XX-XX
|
|
37
|
-
*/
|
|
38
|
-
transform(value, countryCode = `${CHAR_PLUS}7`, phoneMask = '(###) ###-##-##') {
|
|
39
|
-
ngDevMode &&
|
|
40
|
-
console.assert(value !== undefined, 'Undefined was passed to tuiFormatPhone pipe');
|
|
41
|
-
return tuiFormatPhone(value, countryCode, phoneMask);
|
|
42
|
-
}
|
|
43
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiFormatPhonePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
44
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: TuiFormatPhonePipe, isStandalone: true, name: "tuiFormatPhone" }); }
|
|
45
|
-
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiFormatPhonePipe, decorators: [{
|
|
47
|
-
type: Pipe,
|
|
48
|
-
args: [{
|
|
49
|
-
standalone: true,
|
|
50
|
-
name: 'tuiFormatPhone',
|
|
51
|
-
}]
|
|
52
|
-
}] });
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Generated bundle index. Do not edit.
|
|
56
|
-
*/
|
|
57
|
-
|
|
58
|
-
export { TuiFormatPhonePipe };
|
|
59
|
-
//# sourceMappingURL=taiga-ui-legacy-pipes-format-phone.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-legacy-pipes-format-phone.mjs","sources":["../../../projects/legacy/pipes/format-phone/format-phone.pipe.ts","../../../projects/legacy/pipes/format-phone/taiga-ui-legacy-pipes-format-phone.ts"],"sourcesContent":["/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {Pipe, type PipeTransform} from '@angular/core';\nimport {CHAR_PLUS} from '@taiga-ui/cdk/constants';\nimport {tuiFormatPhone} from '@taiga-ui/legacy/utils';\n\n/**\n * @deprecated: drop in v5.0\n */\n@Pipe({\n standalone: true,\n name: 'tuiFormatPhone',\n})\nexport class TuiFormatPhonePipe implements PipeTransform {\n /**\n * Use {@link https://maskito.dev/frameworks/angular#pipe MaskitoPipe} instead!\n * ```ts\n * import {maskitoTransform} from '@maskito/core';\n * import {maskitoPhoneOptionsGenerator} from '@maskito/phone';\n * import metadata from 'libphonenumber-js/min/metadata';\n *\n * @Component({\n * standalone: true,\n * imports: [MaskitoPipe],\n * template: `\n * Phone: {{'12125552368' | maskito: options}}\n * <!-- Phone: +1 (212) 555-2368 -->\n * `,\n * })\n * export class YourComponent {\n * options = maskitoPhoneOptionsGenerator({countryIsoCode: 'US', metadata});\n * }\n * ```\n * ___\n * @deprecated Use {@link https://maskito.dev/frameworks/angular#pipe MaskitoPipe} instead!\n * Formats phone number string of +7XXXXXXXXXX format with adding separator symbols\n * @param value\n * @param countryCode\n * @param phoneMask\n * @return formatted phone number string +7(XXX)XXX-XX-XX\n */\n public transform(\n value: string,\n countryCode = `${CHAR_PLUS}7`,\n phoneMask = '(###) ###-##-##',\n ): string {\n ngDevMode &&\n console.assert(\n value !== undefined,\n 'Undefined was passed to tuiFormatPhone pipe',\n );\n\n return tuiFormatPhone(value, countryCode, phoneMask);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;AAKA;;AAEG;MAKU,kBAAkB,CAAA;AAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;IACI,SAAS,CACZ,KAAa,EACb,WAAW,GAAG,CAAG,EAAA,SAAS,CAAG,CAAA,CAAA,EAC7B,SAAS,GAAG,iBAAiB,EAAA;QAE7B,SAAS;YACL,OAAO,CAAC,MAAM,CACV,KAAK,KAAK,SAAS,EACnB,6CAA6C,CAChD;QAEL,OAAO,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC;;+GAvC/C,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,gBAAgB;AACzB,iBAAA;;;ACXD;;AAEG;;;;"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Pipe } from '@angular/core';
|
|
3
|
-
import { TUI_COUNTRIES_MASKS } from '@taiga-ui/legacy/tokens';
|
|
4
|
-
import { tuiIsoToCountryCode } from '@taiga-ui/legacy/utils';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @deprecated: drop in v5.0
|
|
8
|
-
* Use `getCountryCallingCode` from `libphonenumber-js/core` instead
|
|
9
|
-
* ```ts
|
|
10
|
-
* import {getCountryCallingCode} from 'libphonenumber-js/core';
|
|
11
|
-
* import metadata from 'libphonenumber-js/max/metadata';
|
|
12
|
-
*
|
|
13
|
-
* getCountryCallingCode('US', metadata) // 1
|
|
14
|
-
* getCountryCallingCode('GB', metadata) // 44
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
17
|
-
class TuiIsoToCountryCodePipe {
|
|
18
|
-
constructor() {
|
|
19
|
-
this.countriesMasks = inject(TUI_COUNTRIES_MASKS);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* @deprecated Use `getCountryCallingCode` from `libphonenumber-js/core` instead
|
|
23
|
-
* ```ts
|
|
24
|
-
* import {getCountryCallingCode} from 'libphonenumber-js/core';
|
|
25
|
-
* import metadata from 'libphonenumber-js/max/metadata';
|
|
26
|
-
*
|
|
27
|
-
* getCountryCallingCode('US', metadata) // 1
|
|
28
|
-
* getCountryCallingCode('GB', metadata) // 44
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
transform(isoCode) {
|
|
32
|
-
return tuiIsoToCountryCode(this.countriesMasks, isoCode);
|
|
33
|
-
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiIsoToCountryCodePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
35
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: TuiIsoToCountryCodePipe, isStandalone: true, name: "tuiIsoToCountryCode" }); }
|
|
36
|
-
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiIsoToCountryCodePipe, decorators: [{
|
|
38
|
-
type: Pipe,
|
|
39
|
-
args: [{
|
|
40
|
-
standalone: true,
|
|
41
|
-
name: 'tuiIsoToCountryCode',
|
|
42
|
-
}]
|
|
43
|
-
}] });
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Generated bundle index. Do not edit.
|
|
47
|
-
*/
|
|
48
|
-
|
|
49
|
-
export { TuiIsoToCountryCodePipe };
|
|
50
|
-
//# sourceMappingURL=taiga-ui-legacy-pipes-iso-to-country-code.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-legacy-pipes-iso-to-country-code.mjs","sources":["../../../projects/legacy/pipes/iso-to-country-code/iso-to-country-code.pipe.ts","../../../projects/legacy/pipes/iso-to-country-code/taiga-ui-legacy-pipes-iso-to-country-code.ts"],"sourcesContent":["import {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {type TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport {TUI_COUNTRIES_MASKS} from '@taiga-ui/legacy/tokens';\nimport {tuiIsoToCountryCode} from '@taiga-ui/legacy/utils';\n\n/**\n * @deprecated: drop in v5.0\n * Use `getCountryCallingCode` from `libphonenumber-js/core` instead\n * ```ts\n * import {getCountryCallingCode} from 'libphonenumber-js/core';\n * import metadata from 'libphonenumber-js/max/metadata';\n *\n * getCountryCallingCode('US', metadata) // 1\n * getCountryCallingCode('GB', metadata) // 44\n * ```\n */\n@Pipe({\n standalone: true,\n name: 'tuiIsoToCountryCode',\n})\nexport class TuiIsoToCountryCodePipe implements PipeTransform {\n private readonly countriesMasks = inject(TUI_COUNTRIES_MASKS);\n\n /**\n * @deprecated Use `getCountryCallingCode` from `libphonenumber-js/core` instead\n * ```ts\n * import {getCountryCallingCode} from 'libphonenumber-js/core';\n * import metadata from 'libphonenumber-js/max/metadata';\n *\n * getCountryCallingCode('US', metadata) // 1\n * getCountryCallingCode('GB', metadata) // 44\n * ```\n */\n public transform(isoCode: TuiCountryIsoCode): string {\n return tuiIsoToCountryCode(this.countriesMasks, isoCode);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAKA;;;;;;;;;;AAUG;MAKU,uBAAuB,CAAA;AAJpC,IAAA,WAAA,GAAA;AAKqB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAehE;AAbG;;;;;;;;;AASG;AACI,IAAA,SAAS,CAAC,OAA0B,EAAA;QACvC,OAAO,mBAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;;+GAdnD,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,qBAAqB;AAC9B,iBAAA;;;ACnBD;;AAEG;;;;"}
|