ctt-babylon 0.1.246 → 0.1.247
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.
|
@@ -8,13 +8,22 @@ export class BabylonLinkTypeDirective {
|
|
|
8
8
|
this.elRef = elRef;
|
|
9
9
|
this.anchorClicked = new EventEmitter();
|
|
10
10
|
this.platformId = inject(PLATFORM_ID);
|
|
11
|
+
this.PHONE_RE = /^T\s*[:\-]?\s*(.+)$/i;
|
|
12
|
+
this.MAILTO_RE = /^mailto:/i;
|
|
13
|
+
this.ADDRESS_RE = /^c\/\.?(.*)$/i;
|
|
11
14
|
}
|
|
12
15
|
ngOnInit() {
|
|
13
16
|
if (!this.linkType || !this.href) {
|
|
14
17
|
this.handleNoLink();
|
|
15
18
|
return;
|
|
16
19
|
}
|
|
17
|
-
this.
|
|
20
|
+
if (this.isExternalType(this.linkType)) {
|
|
21
|
+
const detected = this.detectExternalKind(this.href);
|
|
22
|
+
this.applyNormalizedHref(detected);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
this.elRef.nativeElement.setAttribute('href', this.href);
|
|
26
|
+
}
|
|
18
27
|
if (this.linkType === 'external' || this.linkType === 'external_link') {
|
|
19
28
|
this.elRef.nativeElement.setAttribute('rel', 'nofollow');
|
|
20
29
|
}
|
|
@@ -68,8 +77,22 @@ export class BabylonLinkTypeDirective {
|
|
|
68
77
|
this.router.navigateByUrl('/' + cleanedUrl);
|
|
69
78
|
}
|
|
70
79
|
handleExternalLink(url) {
|
|
71
|
-
if (isPlatformBrowser(this.platformId))
|
|
72
|
-
|
|
80
|
+
if (!isPlatformBrowser(this.platformId))
|
|
81
|
+
return;
|
|
82
|
+
const detected = this.detectExternalKind(url);
|
|
83
|
+
switch (detected.kind) {
|
|
84
|
+
case 'phone':
|
|
85
|
+
this.openPhone(detected.value);
|
|
86
|
+
break;
|
|
87
|
+
case 'email':
|
|
88
|
+
this.openEmail(detected.value);
|
|
89
|
+
break;
|
|
90
|
+
case 'address':
|
|
91
|
+
this.openAddress(detected.value);
|
|
92
|
+
break;
|
|
93
|
+
default:
|
|
94
|
+
window.open(detected.value, '_blank');
|
|
95
|
+
break;
|
|
73
96
|
}
|
|
74
97
|
}
|
|
75
98
|
handlePdfLink(url) {
|
|
@@ -111,6 +134,66 @@ export class BabylonLinkTypeDirective {
|
|
|
111
134
|
this.elRef.nativeElement.style.pointerEvents = 'none';
|
|
112
135
|
}
|
|
113
136
|
}
|
|
137
|
+
openPhone(num) {
|
|
138
|
+
window.location.href = `tel:${num}`;
|
|
139
|
+
}
|
|
140
|
+
openEmail(email) {
|
|
141
|
+
window.location.href = `mailto:${email}`;
|
|
142
|
+
}
|
|
143
|
+
openAddress(address) {
|
|
144
|
+
const mapsUrl = this.buildMapsUrl(address);
|
|
145
|
+
window.open(mapsUrl, '_blank');
|
|
146
|
+
}
|
|
147
|
+
buildMapsUrl(address) {
|
|
148
|
+
return `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(address)}`;
|
|
149
|
+
}
|
|
150
|
+
isExternalType(t) {
|
|
151
|
+
return t === 'external' || t === 'external_link';
|
|
152
|
+
}
|
|
153
|
+
detectExternalKind(raw) {
|
|
154
|
+
const trimmed = (raw || '').trim();
|
|
155
|
+
if (this.MAILTO_RE.test(trimmed)) {
|
|
156
|
+
const email = trimmed.replace(/^mailto:/i, '');
|
|
157
|
+
return { kind: 'email', value: email };
|
|
158
|
+
}
|
|
159
|
+
if (this.PHONE_RE.test(trimmed)) {
|
|
160
|
+
const match = this.PHONE_RE.exec(trimmed);
|
|
161
|
+
const numRaw = (match?.[1] ?? '').trim();
|
|
162
|
+
const digits = numRaw.replace(/[^\d+]/g, '');
|
|
163
|
+
return { kind: 'phone', value: digits };
|
|
164
|
+
}
|
|
165
|
+
if (/^tel:/i.test(trimmed)) {
|
|
166
|
+
const num = trimmed.replace(/^tel:/i, '').replace(/[^\d+]/g, '');
|
|
167
|
+
return { kind: 'phone', value: num };
|
|
168
|
+
}
|
|
169
|
+
const addrMatch = this.ADDRESS_RE.exec(trimmed);
|
|
170
|
+
if (addrMatch) {
|
|
171
|
+
const addr = (addrMatch[1] ?? '').trim();
|
|
172
|
+
return { kind: 'address', value: addr };
|
|
173
|
+
}
|
|
174
|
+
return { kind: 'url', value: trimmed };
|
|
175
|
+
}
|
|
176
|
+
applyNormalizedHref(detected) {
|
|
177
|
+
const el = this.elRef.nativeElement;
|
|
178
|
+
switch (detected.kind) {
|
|
179
|
+
case 'phone':
|
|
180
|
+
el.setAttribute('href', `tel:${detected.value}`);
|
|
181
|
+
el.removeAttribute('target');
|
|
182
|
+
break;
|
|
183
|
+
case 'email':
|
|
184
|
+
el.setAttribute('href', `mailto:${detected.value}`);
|
|
185
|
+
el.removeAttribute('target');
|
|
186
|
+
break;
|
|
187
|
+
case 'address':
|
|
188
|
+
el.setAttribute('href', this.buildMapsUrl(detected.value));
|
|
189
|
+
el.setAttribute('target', '_blank');
|
|
190
|
+
break;
|
|
191
|
+
default:
|
|
192
|
+
el.setAttribute('href', detected.value);
|
|
193
|
+
el.setAttribute('target', '_blank');
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
114
197
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BabylonLinkTypeDirective, deps: [{ token: i1.Router }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
115
198
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: BabylonLinkTypeDirective, isStandalone: true, selector: "[linkType]", inputs: { linkType: "linkType", href: "href", modalClick: "modalClick" }, outputs: { anchorClicked: "anchorClicked" }, host: { listeners: { "click": "btnClick($event)" } }, ngImport: i0 }); }
|
|
116
199
|
}
|
|
@@ -132,4 +215,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
132
215
|
type: HostListener,
|
|
133
216
|
args: ['click', ['$event']]
|
|
134
217
|
}] } });
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay10eXBlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2xpbmstdHlwZS9saW5rLXR5cGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7OztBQU92QixNQUFNLE9BQU8sd0JBQXdCO0lBT2pDLFlBQ3FCLE1BQWMsRUFDZCxLQUFpQjtRQURqQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUw1QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDM0MsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUt0QyxDQUFDO0lBQ0osUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUM5QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekQsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGVBQWUsRUFBRTtZQUNuRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQzVEO0lBQ0wsQ0FBQztJQUdELFFBQVEsQ0FBQyxLQUFZO1FB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LEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1lBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO1NBQ3pEO0lBQ0wsQ0FBQzsrR0ExSVEsd0JBQXdCO21HQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBSnBDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjtvR0FFWSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU07Z0JBb0JQLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbGlua1R5cGVdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBCYWJ5bG9uTGlua1R5cGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGxpbmtUeXBlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGhyZWY/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbW9kYWxDbGljaz86IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuICAgIEBPdXRwdXQoKSBhbmNob3JDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbFJlZjogRWxlbWVudFJlZlxuICAgICkge31cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxpbmtUeXBlIHx8ICF0aGlzLmhyZWYpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTm9MaW5rKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnaHJlZicsIHRoaXMuaHJlZik7XG5cbiAgICAgICAgaWYgKHRoaXMubGlua1R5cGUgPT09ICdleHRlcm5hbCcgfHwgdGhpcy5saW5rVHlwZSA9PT0gJ2V4dGVybmFsX2xpbmsnKSB7XG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9mb2xsb3cnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBidG5DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxpbmtUeXBlIHx8ICF0aGlzLmhyZWYpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTm9MaW5rKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMubGlua1R5cGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignbGlua1R5cGUgaXMgbWlzc2luZy4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmxpbmtUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdpbnRlcm5hbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVJbnRlcm5hbExpbmsodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnaW50ZXJuYWxfbGluayc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVJbnRlcm5hbExpbmsodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnZXh0ZXJuYWwnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXh0ZXJuYWxMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2V4dGVybmFsX2xpbmsnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXh0ZXJuYWxMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2FuY2hvcic6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBbmNob3JMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3BkZl9saW5rJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVBkZkxpbmsodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnbm9saW5rJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZU5vTGluaygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdjb21wb25lbnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29tcG9uZW50TGluayh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdjb21wb25lbnRfbGluayc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDb21wb25lbnRMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBVbnN1cHBvcnRlZCBsaW5rVHlwZTogJHt0aGlzLmxpbmtUeXBlfWApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVJbnRlcm5hbExpbmsodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2xlYW5lZFVybCA9IHVybC50cmltKCkucmVwbGFjZSgvXFwvKyQvLCAnJyk7XG4gICAgICAgIHRoaXMuYW5jaG9yQ2xpY2tlZC5lbWl0KCk7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nICsgY2xlYW5lZFVybCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFeHRlcm5hbExpbmsodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVQZGZMaW5rKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQW5jaG9yTGluayhzZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlY3Rpb25JZCk7XG4gICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHlPZmZzZXQgPSAtMTYwO1xuICAgICAgICAgICAgICAgIGNvbnN0IHkgPVxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICAgICAgeU9mZnNldDtcblxuICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogeSwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuYW5jaG9yQ2xpY2tlZC5lbWl0KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgU2VjdGlvbiB3aXRoIElEICR7c2VjdGlvbklkfSBub3QgZm91bmQuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUNvbXBvbmVudExpbmsodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2xlYW5lZENvbXBvbmVudE5hbWUgPSB1cmwudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICh0aGlzLm1vZGFsQ2xpY2spIHtcbiAgICAgICAgICAgIHRoaXMubW9kYWxDbGljay5lbWl0KGNsZWFuZWRDb21wb25lbnROYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlTm9MaW5rKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJlbnRMaSA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jbG9zZXN0KCdsaScpO1xuXG4gICAgICAgIGNvbnN0IGlzSW5zaWRlTWVudUl0ZW1XaXRoQ2hpbGRyZW4gPSBwYXJlbnRMaT8uY2xhc3NMaXN0LmNvbnRhaW5zKFxuICAgICAgICAgICAgJ21lbnUtaXRlbS1oYXMtY2hpbGRyZW4nXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFpc0luc2lkZU1lbnVJdGVtV2l0aENoaWxkcmVuKSB7XG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdocmVmJyk7XG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdbaHJlZl0nKTtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5jdXJzb3IgPSAnZGVmYXVsdCc7XG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay10eXBlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2xpbmstdHlwZS9saW5rLXR5cGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7OztBQU92QixNQUFNLE9BQU8sd0JBQXdCO0lBV2pDLFlBQ3FCLE1BQWMsRUFDZCxLQUFpQjtRQURqQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQVQ1QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDM0MsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV4QixhQUFRLEdBQUcsc0JBQXNCLENBQUM7UUFDbEMsY0FBUyxHQUFHLFdBQVcsQ0FBQztRQUN4QixlQUFVLEdBQUcsZUFBZSxDQUFDO0lBSzNDLENBQUM7SUFDSixRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzlCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3RDO2FBQU07WUFD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QyxRQUFRLENBQUMsQ0FBQztnQkFDN0IsTUFBTTtZQUNWLEtBQUssU0FBUztnQkFDVixFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUMzRCxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDcEMsTUFBTTtZQUNWO2dCQUNJLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEMsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3BDLE1BQU07U0FDYjtJQUNMLENBQUM7K0dBOU9RLHdCQUF3QjttR0FBeEIsd0JBQXdCOzs0RkFBeEIsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7b0dBRVksUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQTZCUCxRQUFRO3NCQURQLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2xpbmtUeXBlXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQmFieWxvbkxpbmtUeXBlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBsaW5rVHlwZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBocmVmPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG1vZGFsQ2xpY2s/OiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcbiAgICBAT3V0cHV0KCkgYW5jaG9yQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBQSE9ORV9SRSA9IC9eVFxccypbOlxcLV0/XFxzKiguKykkL2k7XG4gICAgcHJpdmF0ZSByZWFkb25seSBNQUlMVE9fUkUgPSAvXm1haWx0bzovaTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IEFERFJFU1NfUkUgPSAvXmNcXC9cXC4/KC4qKSQvaTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVsUmVmOiBFbGVtZW50UmVmXG4gICAgKSB7fVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubGlua1R5cGUgfHwgIXRoaXMuaHJlZikge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVOb0xpbmsoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0V4dGVybmFsVHlwZSh0aGlzLmxpbmtUeXBlKSkge1xuICAgICAgICAgICAgY29uc3QgZGV0ZWN0ZWQgPSB0aGlzLmRldGVjdEV4dGVybmFsS2luZCh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgdGhpcy5hcHBseU5vcm1hbGl6ZWRIcmVmKGRldGVjdGVkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB0aGlzLmhyZWYpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubGlua1R5cGUgPT09ICdleHRlcm5hbCcgfHwgdGhpcy5saW5rVHlwZSA9PT0gJ2V4dGVybmFsX2xpbmsnKSB7XG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9mb2xsb3cnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBidG5DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxpbmtUeXBlIHx8ICF0aGlzLmhyZWYpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTm9MaW5rKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMubGlua1R5cGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignbGlua1R5cGUgaXMgbWlzc2luZy4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmxpbmtUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdpbnRlcm5hbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVJbnRlcm5hbExpbmsodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnaW50ZXJuYWxfbGluayc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVJbnRlcm5hbExpbmsodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnZXh0ZXJuYWwnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXh0ZXJuYWxMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2V4dGVybmFsX2xpbmsnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXh0ZXJuYWxMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2FuY2hvcic6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBbmNob3JMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3BkZl9saW5rJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVBkZkxpbmsodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnbm9saW5rJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZU5vTGluaygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdjb21wb25lbnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29tcG9uZW50TGluayh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdjb21wb25lbnRfbGluayc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDb21wb25lbnRMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBVbnN1cHBvcnRlZCBsaW5rVHlwZTogJHt0aGlzLmxpbmtUeXBlfWApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVJbnRlcm5hbExpbmsodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2xlYW5lZFVybCA9IHVybC50cmltKCkucmVwbGFjZSgvXFwvKyQvLCAnJyk7XG4gICAgICAgIHRoaXMuYW5jaG9yQ2xpY2tlZC5lbWl0KCk7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nICsgY2xlYW5lZFVybCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFeHRlcm5hbExpbmsodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZGV0ZWN0ZWQgPSB0aGlzLmRldGVjdEV4dGVybmFsS2luZCh1cmwpO1xuICAgICAgICBzd2l0Y2ggKGRldGVjdGVkLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Bob25lJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5QaG9uZShkZXRlY3RlZC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuRW1haWwoZGV0ZWN0ZWQudmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYWRkcmVzcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuQWRkcmVzcyhkZXRlY3RlZC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGRldGVjdGVkLnZhbHVlLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVBkZkxpbmsodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVBbmNob3JMaW5rKHNlY3Rpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VjdGlvbklkKTtcbiAgICAgICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeU9mZnNldCA9IC0xNjA7XG4gICAgICAgICAgICAgICAgY29uc3QgeSA9XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgICAgICAgICB5T2Zmc2V0O1xuXG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiB5LCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5hbmNob3JDbGlja2VkLmVtaXQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBTZWN0aW9uIHdpdGggSUQgJHtzZWN0aW9uSWR9IG5vdCBmb3VuZC5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ29tcG9uZW50TGluayh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBjbGVhbmVkQ29tcG9uZW50TmFtZSA9IHVybC50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKHRoaXMubW9kYWxDbGljaykge1xuICAgICAgICAgICAgdGhpcy5tb2RhbENsaWNrLmVtaXQoY2xlYW5lZENvbXBvbmVudE5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVOb0xpbmsoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhcmVudExpID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJ2xpJyk7XG5cbiAgICAgICAgY29uc3QgaXNJbnNpZGVNZW51SXRlbVdpdGhDaGlsZHJlbiA9IHBhcmVudExpPy5jbGFzc0xpc3QuY29udGFpbnMoXG4gICAgICAgICAgICAnbWVudS1pdGVtLWhhcy1jaGlsZHJlbidcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWlzSW5zaWRlTWVudUl0ZW1XaXRoQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2hyZWYnKTtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ1tocmVmXScpO1xuICAgICAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICAgICAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9ICdkZWZhdWx0JztcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuUGhvbmUobnVtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgdGVsOiR7bnVtfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuRW1haWwoZW1haWw6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGBtYWlsdG86JHtlbWFpbH1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlbkFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1hcHNVcmwgPSB0aGlzLmJ1aWxkTWFwc1VybChhZGRyZXNzKTtcbiAgICAgICAgd2luZG93Lm9wZW4obWFwc1VybCwgJ19ibGFuaycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRNYXBzVXJsKGFkZHJlc3M6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL3NlYXJjaC8/YXBpPTEmcXVlcnk9JHtlbmNvZGVVUklDb21wb25lbnQoYWRkcmVzcyl9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRXh0ZXJuYWxUeXBlKHQ/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHQgPT09ICdleHRlcm5hbCcgfHwgdCA9PT0gJ2V4dGVybmFsX2xpbmsnO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGV0ZWN0RXh0ZXJuYWxLaW5kKHJhdzogc3RyaW5nKToge1xuICAgICAgICBraW5kOiAncGhvbmUnIHwgJ2VtYWlsJyB8ICdhZGRyZXNzJyB8ICd1cmwnO1xuICAgICAgICB2YWx1ZTogc3RyaW5nO1xuICAgIH0ge1xuICAgICAgICBjb25zdCB0cmltbWVkID0gKHJhdyB8fCAnJykudHJpbSgpO1xuXG4gICAgICAgIGlmICh0aGlzLk1BSUxUT19SRS50ZXN0KHRyaW1tZWQpKSB7XG4gICAgICAgICAgICBjb25zdCBlbWFpbCA9IHRyaW1tZWQucmVwbGFjZSgvXm1haWx0bzovaSwgJycpO1xuICAgICAgICAgICAgcmV0dXJuIHsga2luZDogJ2VtYWlsJywgdmFsdWU6IGVtYWlsIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5QSE9ORV9SRS50ZXN0KHRyaW1tZWQpKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMuUEhPTkVfUkUuZXhlYyh0cmltbWVkKTtcbiAgICAgICAgICAgIGNvbnN0IG51bVJhdyA9IChtYXRjaD8uWzFdID8/ICcnKS50cmltKCk7XG4gICAgICAgICAgICBjb25zdCBkaWdpdHMgPSBudW1SYXcucmVwbGFjZSgvW15cXGQrXS9nLCAnJyk7XG4gICAgICAgICAgICByZXR1cm4geyBraW5kOiAncGhvbmUnLCB2YWx1ZTogZGlnaXRzIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKC9edGVsOi9pLnRlc3QodHJpbW1lZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IHRyaW1tZWQucmVwbGFjZSgvXnRlbDovaSwgJycpLnJlcGxhY2UoL1teXFxkK10vZywgJycpO1xuICAgICAgICAgICAgcmV0dXJuIHsga2luZDogJ3Bob25lJywgdmFsdWU6IG51bSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWRkck1hdGNoID0gdGhpcy5BRERSRVNTX1JFLmV4ZWModHJpbW1lZCk7XG4gICAgICAgIGlmIChhZGRyTWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IGFkZHIgPSAoYWRkck1hdGNoWzFdID8/ICcnKS50cmltKCk7XG4gICAgICAgICAgICByZXR1cm4geyBraW5kOiAnYWRkcmVzcycsIHZhbHVlOiBhZGRyIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyBraW5kOiAndXJsJywgdmFsdWU6IHRyaW1tZWQgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5Tm9ybWFsaXplZEhyZWYoZGV0ZWN0ZWQ6IHtcbiAgICAgICAga2luZDogJ3Bob25lJyB8ICdlbWFpbCcgfCAnYWRkcmVzcycgfCAndXJsJztcbiAgICAgICAgdmFsdWU6IHN0cmluZztcbiAgICB9KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBzd2l0Y2ggKGRldGVjdGVkLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Bob25lJzpcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBgdGVsOiR7ZGV0ZWN0ZWQudmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCd0YXJnZXQnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBgbWFpbHRvOiR7ZGV0ZWN0ZWQudmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCd0YXJnZXQnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2FkZHJlc3MnOlxuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaHJlZicsIHRoaXMuYnVpbGRNYXBzVXJsKGRldGVjdGVkLnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaHJlZicsIGRldGVjdGVkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsICdfYmxhbmsnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
package/fesm2022/ctt-babylon.mjs
CHANGED
|
@@ -30,13 +30,22 @@ class BabylonLinkTypeDirective {
|
|
|
30
30
|
this.elRef = elRef;
|
|
31
31
|
this.anchorClicked = new EventEmitter();
|
|
32
32
|
this.platformId = inject(PLATFORM_ID);
|
|
33
|
+
this.PHONE_RE = /^T\s*[:\-]?\s*(.+)$/i;
|
|
34
|
+
this.MAILTO_RE = /^mailto:/i;
|
|
35
|
+
this.ADDRESS_RE = /^c\/\.?(.*)$/i;
|
|
33
36
|
}
|
|
34
37
|
ngOnInit() {
|
|
35
38
|
if (!this.linkType || !this.href) {
|
|
36
39
|
this.handleNoLink();
|
|
37
40
|
return;
|
|
38
41
|
}
|
|
39
|
-
this.
|
|
42
|
+
if (this.isExternalType(this.linkType)) {
|
|
43
|
+
const detected = this.detectExternalKind(this.href);
|
|
44
|
+
this.applyNormalizedHref(detected);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.elRef.nativeElement.setAttribute('href', this.href);
|
|
48
|
+
}
|
|
40
49
|
if (this.linkType === 'external' || this.linkType === 'external_link') {
|
|
41
50
|
this.elRef.nativeElement.setAttribute('rel', 'nofollow');
|
|
42
51
|
}
|
|
@@ -90,8 +99,22 @@ class BabylonLinkTypeDirective {
|
|
|
90
99
|
this.router.navigateByUrl('/' + cleanedUrl);
|
|
91
100
|
}
|
|
92
101
|
handleExternalLink(url) {
|
|
93
|
-
if (isPlatformBrowser(this.platformId))
|
|
94
|
-
|
|
102
|
+
if (!isPlatformBrowser(this.platformId))
|
|
103
|
+
return;
|
|
104
|
+
const detected = this.detectExternalKind(url);
|
|
105
|
+
switch (detected.kind) {
|
|
106
|
+
case 'phone':
|
|
107
|
+
this.openPhone(detected.value);
|
|
108
|
+
break;
|
|
109
|
+
case 'email':
|
|
110
|
+
this.openEmail(detected.value);
|
|
111
|
+
break;
|
|
112
|
+
case 'address':
|
|
113
|
+
this.openAddress(detected.value);
|
|
114
|
+
break;
|
|
115
|
+
default:
|
|
116
|
+
window.open(detected.value, '_blank');
|
|
117
|
+
break;
|
|
95
118
|
}
|
|
96
119
|
}
|
|
97
120
|
handlePdfLink(url) {
|
|
@@ -133,6 +156,66 @@ class BabylonLinkTypeDirective {
|
|
|
133
156
|
this.elRef.nativeElement.style.pointerEvents = 'none';
|
|
134
157
|
}
|
|
135
158
|
}
|
|
159
|
+
openPhone(num) {
|
|
160
|
+
window.location.href = `tel:${num}`;
|
|
161
|
+
}
|
|
162
|
+
openEmail(email) {
|
|
163
|
+
window.location.href = `mailto:${email}`;
|
|
164
|
+
}
|
|
165
|
+
openAddress(address) {
|
|
166
|
+
const mapsUrl = this.buildMapsUrl(address);
|
|
167
|
+
window.open(mapsUrl, '_blank');
|
|
168
|
+
}
|
|
169
|
+
buildMapsUrl(address) {
|
|
170
|
+
return `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(address)}`;
|
|
171
|
+
}
|
|
172
|
+
isExternalType(t) {
|
|
173
|
+
return t === 'external' || t === 'external_link';
|
|
174
|
+
}
|
|
175
|
+
detectExternalKind(raw) {
|
|
176
|
+
const trimmed = (raw || '').trim();
|
|
177
|
+
if (this.MAILTO_RE.test(trimmed)) {
|
|
178
|
+
const email = trimmed.replace(/^mailto:/i, '');
|
|
179
|
+
return { kind: 'email', value: email };
|
|
180
|
+
}
|
|
181
|
+
if (this.PHONE_RE.test(trimmed)) {
|
|
182
|
+
const match = this.PHONE_RE.exec(trimmed);
|
|
183
|
+
const numRaw = (match?.[1] ?? '').trim();
|
|
184
|
+
const digits = numRaw.replace(/[^\d+]/g, '');
|
|
185
|
+
return { kind: 'phone', value: digits };
|
|
186
|
+
}
|
|
187
|
+
if (/^tel:/i.test(trimmed)) {
|
|
188
|
+
const num = trimmed.replace(/^tel:/i, '').replace(/[^\d+]/g, '');
|
|
189
|
+
return { kind: 'phone', value: num };
|
|
190
|
+
}
|
|
191
|
+
const addrMatch = this.ADDRESS_RE.exec(trimmed);
|
|
192
|
+
if (addrMatch) {
|
|
193
|
+
const addr = (addrMatch[1] ?? '').trim();
|
|
194
|
+
return { kind: 'address', value: addr };
|
|
195
|
+
}
|
|
196
|
+
return { kind: 'url', value: trimmed };
|
|
197
|
+
}
|
|
198
|
+
applyNormalizedHref(detected) {
|
|
199
|
+
const el = this.elRef.nativeElement;
|
|
200
|
+
switch (detected.kind) {
|
|
201
|
+
case 'phone':
|
|
202
|
+
el.setAttribute('href', `tel:${detected.value}`);
|
|
203
|
+
el.removeAttribute('target');
|
|
204
|
+
break;
|
|
205
|
+
case 'email':
|
|
206
|
+
el.setAttribute('href', `mailto:${detected.value}`);
|
|
207
|
+
el.removeAttribute('target');
|
|
208
|
+
break;
|
|
209
|
+
case 'address':
|
|
210
|
+
el.setAttribute('href', this.buildMapsUrl(detected.value));
|
|
211
|
+
el.setAttribute('target', '_blank');
|
|
212
|
+
break;
|
|
213
|
+
default:
|
|
214
|
+
el.setAttribute('href', detected.value);
|
|
215
|
+
el.setAttribute('target', '_blank');
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
136
219
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BabylonLinkTypeDirective, deps: [{ token: i1.Router }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
137
220
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: BabylonLinkTypeDirective, isStandalone: true, selector: "[linkType]", inputs: { linkType: "linkType", href: "href", modalClick: "modalClick" }, outputs: { anchorClicked: "anchorClicked" }, host: { listeners: { "click": "btnClick($event)" } }, ngImport: i0 }); }
|
|
138
221
|
}
|