@bravobit/bb-foundation 0.42.0 → 0.42.1
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/auth/lib/auth.interceptor.d.ts +3 -6
- package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +2 -5
- package/dialog/lib/dialog-container/dialog-container.component.d.ts +4 -6
- package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +5 -7
- package/esm2022/auth/lib/auth.interceptor.mjs +36 -42
- package/esm2022/auth/lib/auth.module.mjs +4 -4
- package/esm2022/auth/lib/auth.service.mjs +18 -7
- package/esm2022/auth/lib/auth.session.mjs +26 -22
- package/esm2022/auth/lib/directives/authenticated.directive.mjs +16 -12
- package/esm2022/auth/lib/helpers/jwt.helper.mjs +29 -31
- package/esm2022/auth/lib/providers/email.provider.mjs +4 -1
- package/esm2022/auth/lib/providers/verify.provider.mjs +4 -1
- package/esm2022/collections/lib/collection.mjs +17 -7
- package/esm2022/collections/lib/collections.module.mjs +6 -6
- package/esm2022/collections/lib/components/collections-actions/collections-actions.component.mjs +7 -9
- package/esm2022/collections/lib/components/collections-grid/collections-grid.component.mjs +11 -11
- package/esm2022/collections/lib/components/collections-pager/collections-pager.component.mjs +10 -10
- package/esm2022/collections/lib/components/collections-table/collections-table.component.mjs +16 -16
- package/esm2022/collections/lib/components/collections-table-label/collections-table-label.component.mjs +9 -11
- package/esm2022/collections/lib/components/collections-table-sorting/collections-table-sorting.component.mjs +12 -9
- package/esm2022/collections/lib/components/collections-viewer/collections-viewer.component.mjs +10 -7
- package/esm2022/collections/lib/directives/collections-data-row.directive.mjs +6 -3
- package/esm2022/collections/lib/directives/collections-data.directive.mjs +6 -3
- package/esm2022/collections/lib/directives/collections-empty.directive.mjs +6 -3
- package/esm2022/collections/lib/directives/collections-error.directive.mjs +6 -3
- package/esm2022/collections/lib/directives/collections-initial.directive.mjs +4 -3
- package/esm2022/collections/lib/directives/collections-item.directive.mjs +6 -3
- package/esm2022/collections/lib/providers/api-collection.provider.mjs +6 -4
- package/esm2022/collections/lib/providers/local-collection.provider.mjs +2 -2
- package/esm2022/combobox/combobox/combobox-container.directive.mjs +12 -7
- package/esm2022/combobox/combobox/combobox.component.mjs +23 -20
- package/esm2022/combobox/combobox-label.directive.mjs +3 -3
- package/esm2022/combobox/combobox-option.directive.mjs +3 -3
- package/esm2022/combobox/combobox-panel/combobox-panel.component.mjs +10 -6
- package/esm2022/dashboard/lib/dashboard/dashboard.component.mjs +13 -13
- package/esm2022/dashboard/lib/dashboard-header/dashboard-header.component.mjs +5 -7
- package/esm2022/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +8 -10
- package/esm2022/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +5 -7
- package/esm2022/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +12 -13
- package/esm2022/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +13 -12
- package/esm2022/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +7 -5
- package/esm2022/dashboard/lib/dashboard.module.mjs +5 -5
- package/esm2022/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
- package/esm2022/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +21 -20
- package/esm2022/dialog/lib/dialog-container/dialog-container.component.mjs +19 -24
- package/esm2022/dialog/lib/dialog-header/dialog-header.component.mjs +5 -7
- package/esm2022/dialog/lib/dialog-link/dialog-link.component.mjs +3 -3
- package/esm2022/dialog/lib/dialog-modal/dialog-modal.component.mjs +9 -6
- package/esm2022/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +19 -26
- package/esm2022/dialog/lib/dialog.insertion.mjs +4 -3
- package/esm2022/dialog/lib/dialog.interfaces.mjs +4 -1
- package/esm2022/dialog/lib/dialog.module.mjs +6 -6
- package/esm2022/dialog/lib/dialog.ref.mjs +4 -6
- package/esm2022/dialog/lib/dialog.service.mjs +5 -3
- package/esm2022/dialog/lib/directives/confirm.directive.mjs +12 -14
- package/esm2022/elements/lib/avatar/avatar.component.mjs +75 -77
- package/esm2022/elements/lib/button/button.component.mjs +12 -10
- package/esm2022/elements/lib/checkbox/checkbox.component.mjs +21 -17
- package/esm2022/elements/lib/checkbox-group/checkbox-group.component.mjs +8 -10
- package/esm2022/elements/lib/date-picker/date-picker.component.mjs +82 -76
- package/esm2022/elements/lib/directives/addon.directive.mjs +5 -5
- package/esm2022/elements/lib/directives/extra-error-controls.directive.mjs +7 -9
- package/esm2022/elements/lib/directives/form-submit.directive.mjs +6 -3
- package/esm2022/elements/lib/directives/form-submitter.directive.mjs +5 -7
- package/esm2022/elements/lib/directives/image-upload.directive.mjs +14 -11
- package/esm2022/elements/lib/directives/input.directive.mjs +6 -4
- package/esm2022/elements/lib/elements.module.mjs +6 -6
- package/esm2022/elements/lib/file-picker/file-picker.component.mjs +52 -51
- package/esm2022/elements/lib/form-control/form-control.component.mjs +14 -14
- package/esm2022/elements/lib/form-error/form-error.component.mjs +16 -8
- package/esm2022/elements/lib/form-group/form-group.component.mjs +5 -7
- package/esm2022/elements/lib/icon/icon.component.mjs +14 -13
- package/esm2022/elements/lib/image-picker/image-picker.component.mjs +20 -17
- package/esm2022/elements/lib/multi-file-control/multi-file-control.component.mjs +28 -24
- package/esm2022/elements/lib/pipes/date.pipe.mjs +6 -8
- package/esm2022/elements/lib/pipes/file-image.pipe.mjs +6 -3
- package/esm2022/elements/lib/pipes/file-size.pipe.mjs +13 -15
- package/esm2022/elements/lib/pipes/relative-time.pipe.mjs +37 -35
- package/esm2022/elements/lib/radio-button/radio-button.component.mjs +8 -7
- package/esm2022/elements/lib/radio-group/radio-group.component.mjs +21 -20
- package/esm2022/elements/lib/spinner/spinner.component.mjs +7 -9
- package/esm2022/http/lib/classes/http.config.mjs +19 -15
- package/esm2022/http/lib/http.interfaces.mjs +1 -1
- package/esm2022/http/lib/http.module.mjs +5 -4
- package/esm2022/http/lib/interceptors/base-url.interceptor.mjs +12 -20
- package/esm2022/http/lib/interceptors/error.interceptor.mjs +9 -14
- package/esm2022/lib/core/services/exif.service.mjs +102 -100
- package/esm2022/lib/core/services/file-loader.service.mjs +15 -17
- package/esm2022/lib/core/services/files.service.mjs +7 -3
- package/esm2022/lib/core/services/image-converter.service.mjs +33 -30
- package/esm2022/lib/core/services/languages.service.mjs +25 -24
- package/esm2022/lib/core/services/network.service.mjs +8 -5
- package/esm2022/lib/core/services/patch.service.mjs +9 -6
- package/esm2022/localize/lib/dictionary/dictionary.class.mjs +7 -1
- package/esm2022/localize/lib/dictionary/dictionary.context.mjs +2 -4
- package/esm2022/localize/lib/dictionary/dictionary.data.mjs +2 -1
- package/esm2022/localize/lib/handlers/missing.handler.mjs +2 -4
- package/esm2022/localize/lib/localize.module.mjs +5 -5
- package/esm2022/localize/lib/localize.pipe.mjs +4 -3
- package/esm2022/localize/lib/localize.service.mjs +30 -21
- package/esm2022/localize/lib/transforms/interpolate.transform.mjs +5 -1
- package/esm2022/localize/lib/transforms/plural.transform.mjs +6 -4
- package/esm2022/localize/lib/transforms/reference.transform.mjs +3 -1
- package/esm2022/localize/lib/views/localize-string/localize-string.component.mjs +14 -11
- package/esm2022/localize/lib/views/localize-template.directive.mjs +6 -5
- package/esm2022/masking/lib/directives/currency-mask.directive.mjs +11 -6
- package/esm2022/masking/lib/directives/date-mask.directive.mjs +11 -6
- package/esm2022/masking/lib/directives/input-mask.directive.mjs +21 -14
- package/esm2022/masking/lib/masking.module.mjs +5 -5
- package/esm2022/masking/lib/masking.service.mjs +4 -3
- package/esm2022/notifications/lib/notifications-item/notifications-item.component.mjs +50 -36
- package/esm2022/notifications/lib/notifications-list/notifications-list.component.mjs +8 -7
- package/esm2022/notifications/lib/notifications.interfaces.mjs +10 -1
- package/esm2022/notifications/lib/notifications.module.mjs +4 -4
- package/esm2022/notifications/lib/notifications.service.mjs +24 -10
- package/esm2022/permissions/lib/directives/permission.directive.mjs +20 -14
- package/esm2022/permissions/lib/handlers/local.handler.mjs +3 -1
- package/esm2022/permissions/lib/permissions.interface.mjs +4 -1
- package/esm2022/permissions/lib/permissions.module.mjs +4 -4
- package/esm2022/permissions/lib/permissions.service.mjs +8 -7
- package/esm2022/recaptcha/lib/recaptcha/recaptcha.component.mjs +34 -27
- package/esm2022/recaptcha/lib/recaptcha-loader.service.mjs +15 -15
- package/esm2022/recaptcha/lib/recaptcha.module.mjs +4 -4
- package/esm2022/select/lib/select/select.component.mjs +52 -47
- package/esm2022/select/lib/select-label.directive.mjs +4 -3
- package/esm2022/select/lib/select-multi-label.directive.mjs +4 -3
- package/esm2022/select/lib/select-option-group.directive.mjs +4 -3
- package/esm2022/select/lib/select-option.directive.mjs +4 -3
- package/esm2022/select/lib/select.module.mjs +5 -5
- package/esm2022/storage/lib/storage.service.mjs +25 -21
- package/esm2022/storage/lib/strategies/cookie-storage.strategy.mjs +66 -64
- package/esm2022/storage/lib/strategies/memory-storage.strategy.mjs +16 -18
- package/esm2022/storage/lib/strategies/polyfill-storage.strategy.mjs +31 -30
- package/esm2022/table/lib/components/table/table.component.mjs +30 -20
- package/esm2022/table/lib/components/table-cell/table-cell.component.mjs +3 -3
- package/esm2022/table/lib/components/table-header-cell/table-header-cell.component.mjs +15 -11
- package/esm2022/table/lib/components/table-pager/table-pager.component.mjs +18 -16
- package/esm2022/table/lib/data/datasource.data.mjs +4 -6
- package/esm2022/table/lib/data/generic.data.mjs +38 -36
- package/esm2022/table/lib/table.module.mjs +6 -6
- package/esm2022/tooltip/lib/tooltip-container/tooltip-container.component.mjs +5 -7
- package/esm2022/tooltip/lib/tooltip.directive.mjs +15 -15
- package/esm2022/tooltip/lib/tooltip.module.mjs +4 -4
- package/esm2022/utils/lib/directives/autosize.directive.mjs +9 -7
- package/esm2022/utils/lib/directives/focus-trap.directive.mjs +24 -22
- package/esm2022/utils/lib/directives/focus.directive.mjs +8 -5
- package/esm2022/utils/lib/directives/template.directive.mjs +7 -3
- package/esm2022/utils/lib/utils.module.mjs +5 -5
- package/fesm2022/bravobit-bb-foundation-auth.mjs +127 -110
- package/fesm2022/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-collections.mjs +123 -93
- package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-combobox.mjs +46 -34
- package/fesm2022/bravobit-bb-foundation-combobox.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs +60 -64
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-dialog.mjs +97 -103
- package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-elements.mjs +468 -440
- package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-http.mjs +40 -46
- package/fesm2022/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-localize.mjs +74 -49
- package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-masking.mjs +47 -29
- package/fesm2022/bravobit-bb-foundation-masking.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-notifications.mjs +91 -53
- package/fesm2022/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-permissions.mjs +34 -22
- package/fesm2022/bravobit-bb-foundation-permissions.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +50 -43
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-select.mjs +67 -58
- package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-storage.mjs +134 -129
- package/fesm2022/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-table.mjs +107 -91
- package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs +21 -23
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-utils.mjs +48 -37
- package/fesm2022/bravobit-bb-foundation-utils.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation.mjs +192 -178
- package/fesm2022/bravobit-bb-foundation.mjs.map +1 -1
- package/http/lib/http.interfaces.d.ts +2 -1
- package/http/lib/interceptors/base-url.interceptor.d.ts +2 -4
- package/http/lib/interceptors/error.interceptor.d.ts +1 -3
- package/package.json +13 -13
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, PLATFORM_ID, Injectable,
|
|
2
|
+
import { InjectionToken, inject, PLATFORM_ID, Injectable, makeEnvironmentProviders, NgModule, Optional, SkipSelf } from '@angular/core';
|
|
3
3
|
import { HttpErrorResponse, HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
4
4
|
import { isPlatformServer } from '@angular/common';
|
|
5
5
|
import { catchError } from 'rxjs/operators';
|
|
@@ -9,21 +9,11 @@ const HTTP_CONFIG = new InjectionToken('http config');
|
|
|
9
9
|
const HTTP_CONFIG_DATA = new InjectionToken('http config data');
|
|
10
10
|
|
|
11
11
|
class HttpConfig {
|
|
12
|
+
aliases;
|
|
13
|
+
prefix;
|
|
14
|
+
defaultAlias;
|
|
15
|
+
disableErrorParsing;
|
|
12
16
|
constructor(data) {
|
|
13
|
-
this.parseAliases = (value, standardAlias) => {
|
|
14
|
-
if (!Array.isArray(value)) {
|
|
15
|
-
value = [{ alias: standardAlias, url: value }];
|
|
16
|
-
}
|
|
17
|
-
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
18
|
-
const stringRegex = /^[a-zA-Z]+$/;
|
|
19
|
-
for (const item of value) {
|
|
20
|
-
if (!!item?.alias && !stringRegex.test(item?.alias)) {
|
|
21
|
-
console?.warn?.(`[HttpModule]: Invalid HTTP-alias in HttpConfig named "${item?.alias}"; only latin characters should be used.`);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return value;
|
|
26
|
-
};
|
|
27
17
|
// Get the data from the config.
|
|
28
18
|
this.prefix = data?.alias?.prefix ?? '$';
|
|
29
19
|
this.disableErrorParsing = data?.disableErrorParsing ?? false;
|
|
@@ -34,6 +24,20 @@ class HttpConfig {
|
|
|
34
24
|
const firstAvailableAlias = this.aliases?.[0]?.alias ?? null;
|
|
35
25
|
this.defaultAlias = `${this.prefix}${firstAvailableAlias}`;
|
|
36
26
|
}
|
|
27
|
+
parseAliases = (value, standardAlias) => {
|
|
28
|
+
if (!Array.isArray(value)) {
|
|
29
|
+
value = [{ alias: standardAlias, url: value }];
|
|
30
|
+
}
|
|
31
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
32
|
+
const stringRegex = /^[a-zA-Z]+$/;
|
|
33
|
+
for (const item of value) {
|
|
34
|
+
if (!!item?.alias && !stringRegex.test(item?.alias)) {
|
|
35
|
+
console?.warn?.(`[HttpModule]: Invalid HTTP-alias in HttpConfig named "${item?.alias}"; only latin characters should be used.`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return value;
|
|
40
|
+
};
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
class HttpError extends HttpErrorResponse {
|
|
@@ -56,14 +60,13 @@ class HttpError extends HttpErrorResponse {
|
|
|
56
60
|
}
|
|
57
61
|
|
|
58
62
|
class BaseUrlInterceptor {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
63
|
+
// Dependencies.
|
|
64
|
+
_config = inject(HTTP_CONFIG);
|
|
65
|
+
_platformId = inject(PLATFORM_ID);
|
|
66
|
+
// Aliases.
|
|
67
|
+
_aliases = this._config?.aliases;
|
|
68
|
+
_prefix = this._config?.prefix;
|
|
69
|
+
_extractRegex = new RegExp(`\\${this._prefix}[a-zA-Z]+`);
|
|
67
70
|
intercept(request, next) {
|
|
68
71
|
const url = this.getUrlBasedOnAlias(request.url);
|
|
69
72
|
const modified = request.clone({ url });
|
|
@@ -105,25 +108,18 @@ class BaseUrlInterceptor {
|
|
|
105
108
|
}
|
|
106
109
|
return null;
|
|
107
110
|
}
|
|
108
|
-
static
|
|
109
|
-
static
|
|
111
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BaseUrlInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
112
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BaseUrlInterceptor });
|
|
110
113
|
}
|
|
111
114
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BaseUrlInterceptor, decorators: [{
|
|
112
115
|
type: Injectable
|
|
113
|
-
}]
|
|
114
|
-
type: Inject,
|
|
115
|
-
args: [HTTP_CONFIG]
|
|
116
|
-
}] }, { type: Object, decorators: [{
|
|
117
|
-
type: Inject,
|
|
118
|
-
args: [PLATFORM_ID]
|
|
119
|
-
}] }] });
|
|
116
|
+
}] });
|
|
120
117
|
|
|
121
118
|
class ErrorInterceptor {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}
|
|
119
|
+
// Dependencies.
|
|
120
|
+
_config = inject(HTTP_CONFIG);
|
|
121
|
+
// State.
|
|
122
|
+
_disabled = this._config?.disableErrorParsing ?? false;
|
|
127
123
|
intercept(request, next) {
|
|
128
124
|
return next.handle(request).pipe(catchError(error => {
|
|
129
125
|
// If we have a matching http error response
|
|
@@ -136,15 +132,12 @@ class ErrorInterceptor {
|
|
|
136
132
|
return throwError(() => error);
|
|
137
133
|
}));
|
|
138
134
|
}
|
|
139
|
-
static
|
|
140
|
-
static
|
|
135
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ErrorInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
136
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ErrorInterceptor });
|
|
141
137
|
}
|
|
142
138
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ErrorInterceptor, decorators: [{
|
|
143
139
|
type: Injectable
|
|
144
|
-
}]
|
|
145
|
-
type: Inject,
|
|
146
|
-
args: [HTTP_CONFIG]
|
|
147
|
-
}] }] });
|
|
140
|
+
}] });
|
|
148
141
|
|
|
149
142
|
function provideHttpConfig(config) {
|
|
150
143
|
return makeEnvironmentProviders([
|
|
@@ -159,6 +152,7 @@ function createHttpConfig(data) {
|
|
|
159
152
|
}
|
|
160
153
|
|
|
161
154
|
class HttpModule {
|
|
155
|
+
_parent;
|
|
162
156
|
constructor(_parent) {
|
|
163
157
|
this._parent = _parent;
|
|
164
158
|
if (this._parent) {
|
|
@@ -173,9 +167,9 @@ class HttpModule {
|
|
|
173
167
|
]
|
|
174
168
|
};
|
|
175
169
|
}
|
|
176
|
-
static
|
|
177
|
-
static
|
|
178
|
-
static
|
|
170
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HttpModule, deps: [{ token: HttpModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
171
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: HttpModule });
|
|
172
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HttpModule });
|
|
179
173
|
}
|
|
180
174
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HttpModule, decorators: [{
|
|
181
175
|
type: NgModule
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravobit-bb-foundation-http.mjs","sources":["../../../projects/bb-foundation/http/src/lib/http.interfaces.ts","../../../projects/bb-foundation/http/src/lib/classes/http.config.ts","../../../projects/bb-foundation/http/src/lib/classes/http.error.ts","../../../projects/bb-foundation/http/src/lib/interceptors/base-url.interceptor.ts","../../../projects/bb-foundation/http/src/lib/interceptors/error.interceptor.ts","../../../projects/bb-foundation/http/src/lib/http.config.ts","../../../projects/bb-foundation/http/src/lib/http.module.ts","../../../projects/bb-foundation/http/src/bravobit-bb-foundation-http.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\n\nexport interface HttpConfigData {\n url: HttpConfigUrl;\n alias?: {\n prefix?: string;\n standard?: string;\n };\n disableErrorParsing?: boolean;\n}\n\nexport type HttpConfigPlatformUrl = string | { browser: string, server: string };\nexport type HttpConfigAlias = { alias: string, url: HttpConfigPlatformUrl };\nexport type HttpConfigUrl = HttpConfigPlatformUrl | HttpConfigAlias[];\n\nexport const HTTP_CONFIG = new InjectionToken<HttpConfigData>('http config');\nexport const HTTP_CONFIG_DATA = new InjectionToken<HttpConfigData>('http config data');\n","import {HttpConfigAlias, HttpConfigData, HttpConfigUrl} from '../http.interfaces';\n\ndeclare let ngDevMode;\n\nexport class HttpConfig {\n\n readonly aliases: HttpConfigAlias[];\n readonly prefix: string;\n readonly defaultAlias: string;\n readonly disableErrorParsing: boolean;\n\n constructor(data: HttpConfigData) {\n // Get the data from the config.\n this.prefix = data?.alias?.prefix ?? '$';\n this.disableErrorParsing = data?.disableErrorParsing ?? false;\n\n // Parse the aliases.\n const standardAlias = data?.alias?.standard ?? 'api';\n this.aliases = this.parseAliases(data?.url, standardAlias);\n\n // Get the default alias.\n const firstAvailableAlias = this.aliases?.[0]?.alias ?? null;\n this.defaultAlias = `${this.prefix}${firstAvailableAlias}`;\n }\n\n private parseAliases = (value: HttpConfigUrl, standardAlias: string) => {\n if (!Array.isArray(value)) {\n value = [{alias: standardAlias, url: value}];\n }\n\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const stringRegex = /^[a-zA-Z]+$/;\n for (const item of value) {\n if (!!item?.alias && !stringRegex.test(item?.alias)) {\n console?.warn?.(`[HttpModule]: Invalid HTTP-alias in HttpConfig named \"${item?.alias}\"; only latin characters should be used.`);\n }\n }\n }\n\n return value;\n };\n\n}\n","import {HttpErrorResponse} from '@angular/common/http';\n\nexport class HttpError extends HttpErrorResponse {\n\n constructor(error: HttpErrorResponse) {\n super(error);\n }\n\n get<T = any>(token: string, delimiter: string = '.') {\n const error = this.error ?? {};\n return (token ?? '')\n .split(delimiter)\n .reduce((previous, current) => previous?.[current] ? previous?.[current] : null, error) as T;\n }\n\n has(token: string, delimiter: string = '.') {\n return !!this.get(token, delimiter);\n }\n\n includes<T = any>(token: string, value: T) {\n const array = this.get<T[]>(token);\n return (array ?? []).includes(value);\n }\n\n}\n","import {HTTP_CONFIG, HttpConfigAlias, HttpConfigPlatformUrl} from '../http.interfaces';\nimport {HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\nimport {Inject, Injectable, PLATFORM_ID} from '@angular/core';\nimport {HttpConfig} from '../classes/http.config';\nimport {isPlatformServer} from '@angular/common';\n\ndeclare let ngDevMode;\n\n@Injectable()\nexport class BaseUrlInterceptor implements HttpInterceptor {\n\n // Aliases.\n private readonly _aliases: HttpConfigAlias[] = this._config?.aliases;\n private readonly _prefix: string = this._config?.prefix;\n private readonly _extractRegex: RegExp = new RegExp(`\\\\${this._prefix}[a-zA-Z]+`);\n\n constructor(@Inject(HTTP_CONFIG) private _config: HttpConfig,\n @Inject(PLATFORM_ID) private _platformId: Object) {\n }\n\n intercept(request: HttpRequest<unknown>, next: HttpHandler) {\n const url = this.getUrlBasedOnAlias(request.url);\n const modified = request.clone({url});\n\n return next.handle(modified);\n }\n\n private getUrlBasedOnAlias(url: string) {\n const matches = this._extractRegex.exec(url);\n if (!matches) {\n return url;\n }\n\n return matches.reduce((previous, current) => {\n const alias = this.getAlias(current);\n const stringAlias = this.convertUrlToString(alias?.url);\n if (!stringAlias) {\n return previous;\n }\n\n return previous.replace(current, stringAlias);\n }, url);\n }\n\n private convertUrlToString(url: HttpConfigPlatformUrl) {\n if (typeof url === 'string') {\n return url;\n }\n\n return isPlatformServer(this._platformId)\n ? url?.server ?? url?.browser ?? null\n : url?.browser ?? null;\n }\n\n private getAlias(value: string) {\n const alias = value.replace(this._prefix, '');\n const fetched = this._aliases?.find(item => item.alias === alias) ?? null;\n if (fetched) {\n return fetched;\n }\n\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const available = this._aliases\n .map(item => `\\$${item?.alias}`)\n .join(', ');\n console?.warn?.(`[HttpModule]: Used an invalid HTTP-alias named \"${value}\", skipped parsing; Available aliases is one of (${available}).`);\n }\n\n return null;\n }\n\n}\n","import {HttpErrorResponse, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\nimport {HttpConfig} from '../classes/http.config';\nimport {Inject, Injectable} from '@angular/core';\nimport {HttpError} from '../classes/http.error';\nimport {HTTP_CONFIG} from '../http.interfaces';\nimport {catchError} from 'rxjs/operators';\nimport {throwError} from 'rxjs';\n\n@Injectable()\nexport class ErrorInterceptor implements HttpInterceptor {\n\n // State.\n private readonly _disabled = this._config?.disableErrorParsing ?? false;\n\n constructor(@Inject(HTTP_CONFIG) private _config: HttpConfig) {\n }\n\n intercept(request: HttpRequest<unknown>, next: HttpHandler) {\n return next.handle(request).pipe(\n catchError(error => {\n // If we have a matching http error response\n // re-map it with our custom class (if not disabled).\n if (!this._disabled && error instanceof HttpErrorResponse) {\n const parsed = new HttpError(error);\n return throwError(() => parsed);\n }\n\n // We did not match anything, just re-trow the error.\n return throwError(() => error);\n })\n );\n }\n\n}\n","import {HTTP_CONFIG, HTTP_CONFIG_DATA, HttpConfigData} from './http.interfaces';\nimport {EnvironmentProviders, makeEnvironmentProviders} from '@angular/core';\nimport {BaseUrlInterceptor} from './interceptors/base-url.interceptor';\nimport {ErrorInterceptor} from './interceptors/error.interceptor';\nimport {HTTP_INTERCEPTORS} from '@angular/common/http';\nimport {HttpConfig} from './classes/http.config';\n\nexport function provideHttpConfig(config: HttpConfigData): EnvironmentProviders {\n return makeEnvironmentProviders([\n {provide: HTTP_CONFIG_DATA, useValue: config},\n {provide: HTTP_CONFIG, useFactory: createHttpConfig, deps: [HTTP_CONFIG_DATA]},\n {provide: HTTP_INTERCEPTORS, useClass: BaseUrlInterceptor, multi: true},\n {provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true}\n ]);\n}\n\nexport function createHttpConfig(data: HttpConfigData) {\n return new HttpConfig(data);\n}\n","import {ModuleWithProviders, NgModule, Optional, SkipSelf} from '@angular/core';\nimport {HttpConfigData} from './http.interfaces';\nimport {provideHttpConfig} from './http.config';\n\n@NgModule()\nexport class HttpModule {\n\n constructor(@Optional() @SkipSelf() private _parent?: HttpModule) {\n if (this._parent) {\n throw new Error('HttpModule is already loaded; Import it in the core module only.');\n }\n }\n\n static forRoot(config: HttpConfigData): ModuleWithProviders<HttpModule> {\n return {\n ngModule: HttpModule,\n providers: [\n provideHttpConfig(config)\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bravobit-bb-foundation-http.mjs","sources":["../../../projects/bb-foundation/http/src/lib/http.interfaces.ts","../../../projects/bb-foundation/http/src/lib/classes/http.config.ts","../../../projects/bb-foundation/http/src/lib/classes/http.error.ts","../../../projects/bb-foundation/http/src/lib/interceptors/base-url.interceptor.ts","../../../projects/bb-foundation/http/src/lib/interceptors/error.interceptor.ts","../../../projects/bb-foundation/http/src/lib/http.config.ts","../../../projects/bb-foundation/http/src/lib/http.module.ts","../../../projects/bb-foundation/http/src/bravobit-bb-foundation-http.ts"],"sourcesContent":["import {HttpConfig} from './classes/http.config';\nimport {InjectionToken} from '@angular/core';\n\nexport interface HttpConfigData {\n url: HttpConfigUrl;\n alias?: {\n prefix?: string;\n standard?: string;\n };\n disableErrorParsing?: boolean;\n}\n\nexport type HttpConfigPlatformUrl = string | { browser: string, server: string };\nexport type HttpConfigAlias = { alias: string, url: HttpConfigPlatformUrl };\nexport type HttpConfigUrl = HttpConfigPlatformUrl | HttpConfigAlias[];\n\nexport const HTTP_CONFIG = new InjectionToken<HttpConfig>('http config');\nexport const HTTP_CONFIG_DATA = new InjectionToken<HttpConfigData>('http config data');\n","import {HttpConfigAlias, HttpConfigData, HttpConfigUrl} from '../http.interfaces';\n\ndeclare let ngDevMode;\n\nexport class HttpConfig {\n\n readonly aliases: HttpConfigAlias[];\n readonly prefix: string;\n readonly defaultAlias: string;\n readonly disableErrorParsing: boolean;\n\n constructor(data: HttpConfigData) {\n // Get the data from the config.\n this.prefix = data?.alias?.prefix ?? '$';\n this.disableErrorParsing = data?.disableErrorParsing ?? false;\n\n // Parse the aliases.\n const standardAlias = data?.alias?.standard ?? 'api';\n this.aliases = this.parseAliases(data?.url, standardAlias);\n\n // Get the default alias.\n const firstAvailableAlias = this.aliases?.[0]?.alias ?? null;\n this.defaultAlias = `${this.prefix}${firstAvailableAlias}`;\n }\n\n private parseAliases = (value: HttpConfigUrl, standardAlias: string) => {\n if (!Array.isArray(value)) {\n value = [{alias: standardAlias, url: value}];\n }\n\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const stringRegex = /^[a-zA-Z]+$/;\n for (const item of value) {\n if (!!item?.alias && !stringRegex.test(item?.alias)) {\n console?.warn?.(`[HttpModule]: Invalid HTTP-alias in HttpConfig named \"${item?.alias}\"; only latin characters should be used.`);\n }\n }\n }\n\n return value;\n };\n\n}\n","import {HttpErrorResponse} from '@angular/common/http';\n\nexport class HttpError extends HttpErrorResponse {\n\n constructor(error: HttpErrorResponse) {\n super(error);\n }\n\n get<T = any>(token: string, delimiter: string = '.') {\n const error = this.error ?? {};\n return (token ?? '')\n .split(delimiter)\n .reduce((previous, current) => previous?.[current] ? previous?.[current] : null, error) as T;\n }\n\n has(token: string, delimiter: string = '.') {\n return !!this.get(token, delimiter);\n }\n\n includes<T = any>(token: string, value: T) {\n const array = this.get<T[]>(token);\n return (array ?? []).includes(value);\n }\n\n}\n","import {HTTP_CONFIG, HttpConfigAlias, HttpConfigPlatformUrl} from '../http.interfaces';\nimport {HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\nimport {inject, Injectable, PLATFORM_ID} from '@angular/core';\nimport {HttpConfig} from '../classes/http.config';\nimport {isPlatformServer} from '@angular/common';\n\ndeclare let ngDevMode;\n\n@Injectable()\nexport class BaseUrlInterceptor implements HttpInterceptor {\n\n // Dependencies.\n private readonly _config: HttpConfig = inject(HTTP_CONFIG);\n private readonly _platformId: Object = inject(PLATFORM_ID);\n\n // Aliases.\n private readonly _aliases: HttpConfigAlias[] = this._config?.aliases;\n private readonly _prefix: string = this._config?.prefix;\n private readonly _extractRegex: RegExp = new RegExp(`\\\\${this._prefix}[a-zA-Z]+`);\n\n intercept(request: HttpRequest<unknown>, next: HttpHandler) {\n const url = this.getUrlBasedOnAlias(request.url);\n const modified = request.clone({url});\n\n return next.handle(modified);\n }\n\n private getUrlBasedOnAlias(url: string) {\n const matches = this._extractRegex.exec(url);\n if (!matches) {\n return url;\n }\n\n return matches.reduce((previous, current) => {\n const alias = this.getAlias(current);\n const stringAlias = this.convertUrlToString(alias?.url);\n if (!stringAlias) {\n return previous;\n }\n\n return previous.replace(current, stringAlias);\n }, url);\n }\n\n private convertUrlToString(url: HttpConfigPlatformUrl) {\n if (typeof url === 'string') {\n return url;\n }\n\n return isPlatformServer(this._platformId)\n ? url?.server ?? url?.browser ?? null\n : url?.browser ?? null;\n }\n\n private getAlias(value: string) {\n const alias = value.replace(this._prefix, '');\n const fetched = this._aliases?.find(item => item.alias === alias) ?? null;\n if (fetched) {\n return fetched;\n }\n\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const available = this._aliases\n .map(item => `\\$${item?.alias}`)\n .join(', ');\n console?.warn?.(`[HttpModule]: Used an invalid HTTP-alias named \"${value}\", skipped parsing; Available aliases is one of (${available}).`);\n }\n\n return null;\n }\n\n}\n","import {HttpErrorResponse, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\nimport {HttpConfig} from '../classes/http.config';\nimport {inject, Injectable} from '@angular/core';\nimport {HttpError} from '../classes/http.error';\nimport {HTTP_CONFIG} from '../http.interfaces';\nimport {catchError} from 'rxjs/operators';\nimport {throwError} from 'rxjs';\n\n@Injectable()\nexport class ErrorInterceptor implements HttpInterceptor {\n\n // Dependencies.\n private readonly _config: HttpConfig = inject(HTTP_CONFIG);\n\n // State.\n private readonly _disabled = this._config?.disableErrorParsing ?? false;\n\n intercept(request: HttpRequest<unknown>, next: HttpHandler) {\n return next.handle(request).pipe(\n catchError(error => {\n // If we have a matching http error response\n // re-map it with our custom class (if not disabled).\n if (!this._disabled && error instanceof HttpErrorResponse) {\n const parsed = new HttpError(error);\n return throwError(() => parsed);\n }\n\n // We did not match anything, just re-trow the error.\n return throwError(() => error);\n })\n );\n }\n\n}\n","import {HTTP_CONFIG, HTTP_CONFIG_DATA, HttpConfigData} from './http.interfaces';\nimport {EnvironmentProviders, makeEnvironmentProviders} from '@angular/core';\nimport {BaseUrlInterceptor} from './interceptors/base-url.interceptor';\nimport {ErrorInterceptor} from './interceptors/error.interceptor';\nimport {HTTP_INTERCEPTORS} from '@angular/common/http';\nimport {HttpConfig} from './classes/http.config';\n\nexport function provideHttpConfig(config: HttpConfigData): EnvironmentProviders {\n return makeEnvironmentProviders([\n {provide: HTTP_CONFIG_DATA, useValue: config},\n {provide: HTTP_CONFIG, useFactory: createHttpConfig, deps: [HTTP_CONFIG_DATA]},\n {provide: HTTP_INTERCEPTORS, useClass: BaseUrlInterceptor, multi: true},\n {provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true}\n ]);\n}\n\nexport function createHttpConfig(data: HttpConfigData) {\n return new HttpConfig(data);\n}\n","import {ModuleWithProviders, NgModule, Optional, SkipSelf} from '@angular/core';\nimport {HttpConfigData} from './http.interfaces';\nimport {provideHttpConfig} from './http.config';\n\n@NgModule()\nexport class HttpModule {\n\n constructor(@Optional() @SkipSelf() private _parent?: HttpModule) {\n if (this._parent) {\n throw new Error('HttpModule is already loaded; Import it in the core module only.');\n }\n }\n\n static forRoot(config: HttpConfigData): ModuleWithProviders<HttpModule> {\n return {\n ngModule: HttpModule,\n providers: [\n provideHttpConfig(config)\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -254,9 +254,6 @@ const extraPapiamentoDictionary = {
|
|
|
254
254
|
};
|
|
255
255
|
|
|
256
256
|
class LocalizeMissingHandler {
|
|
257
|
-
constructor() {
|
|
258
|
-
this.log = (message) => console?.warn?.(message);
|
|
259
|
-
}
|
|
260
257
|
handle(params) {
|
|
261
258
|
// Log to the console when the token was not found
|
|
262
259
|
// if the user did not mark it as optional.
|
|
@@ -266,18 +263,18 @@ class LocalizeMissingHandler {
|
|
|
266
263
|
// Return the default token back.
|
|
267
264
|
return params?.token ?? null;
|
|
268
265
|
}
|
|
266
|
+
log = (message) => console?.warn?.(message);
|
|
269
267
|
}
|
|
270
268
|
|
|
271
269
|
class LocalizeDictionaryData {
|
|
270
|
+
data;
|
|
272
271
|
constructor(data) {
|
|
273
272
|
this.data = data;
|
|
274
273
|
}
|
|
275
274
|
}
|
|
276
275
|
|
|
277
276
|
class LocalizeDictionaryContext {
|
|
278
|
-
|
|
279
|
-
this.regexp = /^.*$/;
|
|
280
|
-
}
|
|
277
|
+
regexp = /^.*$/;
|
|
281
278
|
pattern(regexp) {
|
|
282
279
|
this.regexp = regexp;
|
|
283
280
|
return this;
|
|
@@ -301,6 +298,12 @@ class LocalizeDictionaryContext {
|
|
|
301
298
|
}
|
|
302
299
|
|
|
303
300
|
class LocalizeDictionary {
|
|
301
|
+
_id;
|
|
302
|
+
_locale;
|
|
303
|
+
_supported;
|
|
304
|
+
_dataValues;
|
|
305
|
+
_localize;
|
|
306
|
+
_data;
|
|
304
307
|
constructor(_id, _locale, _supported, _dataValues, _localize) {
|
|
305
308
|
this._id = _id;
|
|
306
309
|
this._locale = _locale;
|
|
@@ -420,6 +423,22 @@ class LocalizeTransform {
|
|
|
420
423
|
}
|
|
421
424
|
|
|
422
425
|
class Localize {
|
|
426
|
+
_storage;
|
|
427
|
+
_languages;
|
|
428
|
+
_window;
|
|
429
|
+
_document;
|
|
430
|
+
_config;
|
|
431
|
+
_transforms;
|
|
432
|
+
_missingHandler;
|
|
433
|
+
// Readonly data.
|
|
434
|
+
_storageToken;
|
|
435
|
+
_availableLanguages;
|
|
436
|
+
_bestMatchingLanguage = this.retrieveBestMatchingLanguage();
|
|
437
|
+
_loadedDictionaries = new Map();
|
|
438
|
+
// Current dictionary.
|
|
439
|
+
_current$ = new BehaviorSubject(null);
|
|
440
|
+
// State changes.
|
|
441
|
+
dictionaryChanges$ = this._current$.asObservable();
|
|
423
442
|
constructor(_storage, _languages, _window, _document, _config, _transforms, _missingHandler) {
|
|
424
443
|
this._storage = _storage;
|
|
425
444
|
this._languages = _languages;
|
|
@@ -428,26 +447,8 @@ class Localize {
|
|
|
428
447
|
this._config = _config;
|
|
429
448
|
this._transforms = _transforms;
|
|
430
449
|
this._missingHandler = _missingHandler;
|
|
431
|
-
// Readonly data.
|
|
432
450
|
this._storageToken = this._config?.storageToken ?? 'bb-language-dictionary-id';
|
|
433
451
|
this._availableLanguages = this?._config?.languages ?? [];
|
|
434
|
-
this._bestMatchingLanguage = this.retrieveBestMatchingLanguage();
|
|
435
|
-
this._loadedDictionaries = new Map();
|
|
436
|
-
// Current dictionary.
|
|
437
|
-
this._current$ = new BehaviorSubject(null);
|
|
438
|
-
// State changes.
|
|
439
|
-
this.dictionaryChanges$ = this._current$.asObservable();
|
|
440
|
-
this.convertToParams = (tokenOrParams) => {
|
|
441
|
-
if (typeof tokenOrParams !== 'string') {
|
|
442
|
-
// Destruct the params from the object.
|
|
443
|
-
const { token, optional, dictionary, data } = tokenOrParams;
|
|
444
|
-
// Make sure all parameters are valid
|
|
445
|
-
// by type safe adding them.
|
|
446
|
-
return { token: token, optional: optional ?? false, dictionary: dictionary ?? null, data: data ?? {} };
|
|
447
|
-
}
|
|
448
|
-
// If the parameter is a string fill in the blanks.
|
|
449
|
-
return { token: tokenOrParams, optional: false, dictionary: null, data: {} };
|
|
450
|
-
};
|
|
451
452
|
this.renderDocumentLanguage();
|
|
452
453
|
}
|
|
453
454
|
get languages() {
|
|
@@ -572,8 +573,19 @@ class Localize {
|
|
|
572
573
|
?.map(language => language?.id);
|
|
573
574
|
return await this.current.compare(languageIds);
|
|
574
575
|
}
|
|
575
|
-
|
|
576
|
-
|
|
576
|
+
convertToParams = (tokenOrParams) => {
|
|
577
|
+
if (typeof tokenOrParams !== 'string') {
|
|
578
|
+
// Destruct the params from the object.
|
|
579
|
+
const { token, optional, dictionary, data } = tokenOrParams;
|
|
580
|
+
// Make sure all parameters are valid
|
|
581
|
+
// by type safe adding them.
|
|
582
|
+
return { token: token, optional: optional ?? false, dictionary: dictionary ?? null, data: data ?? {} };
|
|
583
|
+
}
|
|
584
|
+
// If the parameter is a string fill in the blanks.
|
|
585
|
+
return { token: tokenOrParams, optional: false, dictionary: null, data: {} };
|
|
586
|
+
};
|
|
587
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: Localize, deps: [{ token: i1.Storage }, { token: i2.Languages }, { token: WINDOW, optional: true }, { token: DOCUMENT, optional: true }, { token: LOCALIZE_CONFIG, optional: true }, { token: LOCALIZE_TRANSFORM, optional: true }, { token: LOCALIZE_MISSING_HANDLER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
588
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: Localize, providedIn: 'root' });
|
|
577
589
|
}
|
|
578
590
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: Localize, decorators: [{
|
|
579
591
|
type: Injectable,
|
|
@@ -622,13 +634,15 @@ const LOCALIZE_ID = new InjectionToken('An abstraction over locale changes', {
|
|
|
622
634
|
});
|
|
623
635
|
|
|
624
636
|
let LocalizePluralTransform = class LocalizePluralTransform extends LocalizeTransform {
|
|
637
|
+
config;
|
|
638
|
+
substitutions;
|
|
639
|
+
defaultAmount = 'default';
|
|
640
|
+
multiItemRegex = new RegExp(`(?<value>=([0-9]+|${this.defaultAmount}): *[^,]+)`, 'g');
|
|
641
|
+
singleItemRegex = new RegExp(`(=(?<amount>[0-9]+|${this.defaultAmount}): *(?<sentence>.+))`);
|
|
625
642
|
constructor(config) {
|
|
626
643
|
super();
|
|
627
644
|
this.config = config;
|
|
628
645
|
this.substitutions = this.config?.substitutions?.plural ?? ['@plural(', ')'];
|
|
629
|
-
this.defaultAmount = 'default';
|
|
630
|
-
this.multiItemRegex = new RegExp(`(?<value>=([0-9]+|${this.defaultAmount}): *[^,]+)`, 'g');
|
|
631
|
-
this.singleItemRegex = new RegExp(`(=(?<amount>[0-9]+|${this.defaultAmount}): *(?<sentence>.+))`);
|
|
632
646
|
}
|
|
633
647
|
execute(value, data, _) {
|
|
634
648
|
const matches = this.getMatches(value, this.substitutions);
|
|
@@ -675,6 +689,10 @@ LocalizePluralTransform = __decorate([
|
|
|
675
689
|
], LocalizePluralTransform);
|
|
676
690
|
|
|
677
691
|
let LocalizeInterpolateTransform = class LocalizeInterpolateTransform extends LocalizeTransform {
|
|
692
|
+
config;
|
|
693
|
+
functions;
|
|
694
|
+
substitutions;
|
|
695
|
+
functionsMap;
|
|
678
696
|
constructor(config, functions) {
|
|
679
697
|
super();
|
|
680
698
|
this.config = config;
|
|
@@ -725,6 +743,8 @@ LocalizeInterpolateTransform = __decorate([
|
|
|
725
743
|
], LocalizeInterpolateTransform);
|
|
726
744
|
|
|
727
745
|
let LocalizeReferenceTransform = class LocalizeReferenceTransform extends LocalizeTransform {
|
|
746
|
+
config;
|
|
747
|
+
substitutions;
|
|
728
748
|
constructor(config) {
|
|
729
749
|
super();
|
|
730
750
|
this.config = config;
|
|
@@ -747,13 +767,14 @@ LocalizeReferenceTransform = __decorate([
|
|
|
747
767
|
], LocalizeReferenceTransform);
|
|
748
768
|
|
|
749
769
|
class BbLocalizeTemplate {
|
|
770
|
+
templateRef;
|
|
771
|
+
// Inputs.
|
|
772
|
+
name = null;
|
|
750
773
|
constructor(templateRef) {
|
|
751
774
|
this.templateRef = templateRef;
|
|
752
|
-
// Inputs.
|
|
753
|
-
this.name = null;
|
|
754
775
|
}
|
|
755
|
-
static
|
|
756
|
-
static
|
|
776
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BbLocalizeTemplate, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
777
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0", type: BbLocalizeTemplate, isStandalone: true, selector: "[bbLocalizeTemplate]", inputs: { name: ["bbLocalizeTemplate", "name"] }, ngImport: i0 });
|
|
757
778
|
}
|
|
758
779
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BbLocalizeTemplate, decorators: [{
|
|
759
780
|
type: Directive,
|
|
@@ -767,6 +788,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
767
788
|
}] } });
|
|
768
789
|
|
|
769
790
|
class BbLocalizeString {
|
|
791
|
+
_changeDetection;
|
|
792
|
+
// Content children.
|
|
793
|
+
items;
|
|
794
|
+
// Inputs.
|
|
795
|
+
substitutions = ['@element(', ')'];
|
|
796
|
+
// Data.
|
|
797
|
+
components = [];
|
|
798
|
+
// Subscriptions.
|
|
799
|
+
_subscription = new Subscription();
|
|
800
|
+
// State.
|
|
801
|
+
_value = null;
|
|
770
802
|
set value(value) {
|
|
771
803
|
this._value = value;
|
|
772
804
|
this.revalidate();
|
|
@@ -776,14 +808,6 @@ class BbLocalizeString {
|
|
|
776
808
|
}
|
|
777
809
|
constructor(_changeDetection) {
|
|
778
810
|
this._changeDetection = _changeDetection;
|
|
779
|
-
// Inputs.
|
|
780
|
-
this.substitutions = ['@element(', ')'];
|
|
781
|
-
// Data.
|
|
782
|
-
this.components = [];
|
|
783
|
-
// Subscriptions.
|
|
784
|
-
this._subscription = new Subscription();
|
|
785
|
-
// State.
|
|
786
|
-
this._value = null;
|
|
787
811
|
}
|
|
788
812
|
ngAfterViewInit() {
|
|
789
813
|
this.observeItemChanges();
|
|
@@ -830,8 +854,8 @@ class BbLocalizeString {
|
|
|
830
854
|
end.replace(escape, '\\$&')
|
|
831
855
|
];
|
|
832
856
|
}
|
|
833
|
-
static
|
|
834
|
-
static
|
|
857
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BbLocalizeString, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
858
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: BbLocalizeString, isStandalone: true, selector: "[bb-localize-string]", inputs: { substitutions: "substitutions", value: ["bb-localize-string", "value"] }, host: { classAttribute: "bb-localize-string" }, queries: [{ propertyName: "items", predicate: BbLocalizeTemplate }], ngImport: i0, template: "@for (component of components; track component) {\n <ng-template [bbTemplate]=\"component\">{{ component }}</ng-template>\n}\n", styles: [""], dependencies: [{ kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
835
859
|
}
|
|
836
860
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BbLocalizeString, decorators: [{
|
|
837
861
|
type: Component,
|
|
@@ -847,6 +871,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
847
871
|
}] } });
|
|
848
872
|
|
|
849
873
|
class BbLocalize {
|
|
874
|
+
_localize;
|
|
850
875
|
constructor(_localize) {
|
|
851
876
|
this._localize = _localize;
|
|
852
877
|
}
|
|
@@ -877,8 +902,8 @@ class BbLocalize {
|
|
|
877
902
|
// Return the combined params and options.
|
|
878
903
|
return { ...params, ...options };
|
|
879
904
|
}
|
|
880
|
-
static
|
|
881
|
-
static
|
|
905
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BbLocalize, deps: [{ token: Localize, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
906
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: BbLocalize, isStandalone: true, name: "bbLocalize" });
|
|
882
907
|
}
|
|
883
908
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BbLocalize, decorators: [{
|
|
884
909
|
type: Pipe,
|
|
@@ -932,13 +957,13 @@ class LocalizeModule {
|
|
|
932
957
|
]
|
|
933
958
|
};
|
|
934
959
|
}
|
|
935
|
-
static
|
|
936
|
-
static
|
|
960
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: LocalizeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
961
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: LocalizeModule, imports: [BbLocalize,
|
|
937
962
|
BbLocalizeString,
|
|
938
963
|
BbLocalizeTemplate], exports: [BbLocalize,
|
|
939
964
|
BbLocalizeString,
|
|
940
|
-
BbLocalizeTemplate] });
|
|
941
|
-
static
|
|
965
|
+
BbLocalizeTemplate] });
|
|
966
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: LocalizeModule });
|
|
942
967
|
}
|
|
943
968
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: LocalizeModule, decorators: [{
|
|
944
969
|
type: NgModule,
|