@arsedizioni/ars-utils 22.0.48 → 22.0.50

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arsedizioni/ars-utils",
3
- "version": "22.0.48",
3
+ "version": "22.0.50",
4
4
  "author": {
5
5
  "email": "software@arsedizioni.it",
6
6
  "name": "Fabio Buscaroli, Alberto Doria"
@@ -1049,7 +1049,7 @@ declare class ClipperDocumentMenuComponent {
1049
1049
  private readonly renderer2;
1050
1050
  private readonly clipperService;
1051
1051
  readonly useSelections: _angular_core.InputSignal<boolean>;
1052
- readonly selectionSource: _angular_core.InputSignal<"selection" | "bag" | "none">;
1052
+ readonly selectionSource: _angular_core.InputSignal<"bag" | "selection" | "none">;
1053
1053
  /**
1054
1054
  * Computed signal that returns the current effective document selection.
1055
1055
  * Re-evaluates when any input signal or the underlying selection model changes.
@@ -1,10 +1,10 @@
1
- import { SendToModel, LoginResult, QueryModel, ApiResult, INode, FolderTree } from '@arsedizioni/ars-utils/core';
1
+ import { QueryModel, SendToModel, LoginResult, ApiResult, FolderTree } from '@arsedizioni/ars-utils/core';
2
2
  import { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';
3
3
  import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
4
4
  import * as rxjs from 'rxjs';
5
5
  import { Observable } from 'rxjs';
6
6
  import * as i0 from '@angular/core';
7
- import { Signal } from '@angular/core';
7
+ import { Signal, WritableSignal } from '@angular/core';
8
8
 
9
9
  declare const EvolutionMessages: {
10
10
  ERROR: string;
@@ -731,60 +731,80 @@ declare class EvolutionAuthInterceptor implements HttpInterceptor {
731
731
  }
732
732
 
733
733
  /**
734
- * Core service for the Evolution compliance module.
735
- * Manages authentication (login / logout / MFA), session persistence,
736
- * and HTTP access to all Evolution API endpoints.
734
+ * Authentication service for the Evolution module: login / logout / MFA,
735
+ * session bootstrap, connectivity ping and the broadcast handler.
736
+ * All session state lives in the private {@link CoreService}; this service
737
+ * orchestrates the HTTP flows and re-publishes the parts of core that
738
+ * consumers need.
737
739
  */
738
- declare class EvolutionService {
740
+ declare class LoginService {
739
741
  private readonly httpClient;
740
742
  private readonly broadcastService;
741
743
  private readonly destroyRef;
744
+ private readonly core;
742
745
  private broadcastInitialized;
743
- private _serviceUri;
744
- /** Base URI of the Evolution back-end service. */
746
+ /**
747
+ * Gets the base URI of the Evolution back-end service.
748
+ * @returns The configured service URI, or undefined before initialize().
749
+ */
745
750
  get serviceUri(): string | undefined;
746
- private _flags;
747
- /** Feature flags controlling service behaviour (notifications, embedded mode, etc.). */
751
+ /**
752
+ * Gets the active feature flags.
753
+ * @returns The active {@link EvolutionServiceFlags} bitmask.
754
+ */
748
755
  get flags(): EvolutionServiceFlags;
749
- private _loginInfo?;
750
756
  /**
751
- * Returns the current login info, hydrating it from `localStorage` on first access
752
- * when no in-memory value is available.
757
+ * Gets the current login info.
758
+ * @returns The current {@link EvolutionLoginInfo}, or undefined.
753
759
  */
754
760
  get loginInfo(): EvolutionLoginInfo | undefined;
755
- private readonly _loggedIn;
756
761
  /** `true` when the user has an active (non-temporary) session. */
757
- readonly loggedIn: Signal<boolean>;
762
+ get loggedIn(): Signal<boolean>;
758
763
  /** `true` while a login request is in flight. */
759
- readonly loggingIn: i0.WritableSignal<boolean>;
764
+ get loggingIn(): WritableSignal<boolean>;
765
+ /**
766
+ * Persists the current login info to `localStorage` (delegates to core).
767
+ * @returns void
768
+ */
769
+ storeContext(): void;
770
+ /**
771
+ * Merges a login result into the stored login info (delegates to core).
772
+ * @param result - The login result returned by the login endpoint.
773
+ * @returns void
774
+ */
775
+ updateContext(result: EvolutionLoginResult): void;
776
+ /**
777
+ * Resets the in-memory login state and broadcasts logout-completed (delegates to core).
778
+ * @returns void
779
+ */
780
+ reset(): void;
781
+ /**
782
+ * Removes Evolution session data and resets the state (delegates to core).
783
+ * @param clearOAuthToken - When true, also removes the stored OAuth2 access token.
784
+ * @returns void
785
+ */
786
+ clear(clearOAuthToken?: boolean): void;
760
787
  /**
761
788
  * Initialises the service with the back-end URI and optional feature flags.
762
789
  * Must be called once during application bootstrap before any other method.
763
- * @param serviceUri - Base URL of the Evolution service (e.g. `'https://api.example.com/evolution'`).
764
- * @param flags - Bitmask of `EvolutionServiceFlags` (default: `None`).
790
+ * @param serviceUri - Base URL of the Evolution service.
791
+ * @param flags - Bitmask of `EvolutionServiceFlags` (default: `None`).
792
+ * @returns void
765
793
  */
766
794
  initialize(serviceUri: string, flags?: EvolutionServiceFlags): void;
767
795
  /**
768
796
  * Dispatches an incoming broadcast message to the appropriate handler.
769
797
  * @param message - The message received from the broadcast channel.
798
+ * @returns void
770
799
  */
771
800
  private handleBroadcastMessage;
772
801
  /**
773
802
  * Sends a one-shot ping to the back end to verify connectivity.
803
+ * @returns void
774
804
  */
775
805
  ping(): void;
776
- /**
777
- * Persists the current login info to `localStorage`.
778
- */
779
- storeContext(): void;
780
- /**
781
- * Merges a login result into the stored login info and persists it.
782
- * @param result - The `EvolutionLoginResult` returned by the login endpoint.
783
- */
784
- updateContext(result: EvolutionLoginResult): void;
785
806
  /**
786
807
  * Performs an automatic login using the credentials already stored in the session.
787
- * Shows a busy indicator and handles success/failure dialogs.
788
808
  * @param onSuccess - Optional callback invoked after a successful login.
789
809
  * @returns `true` (always) — the result is handled via the subscription callbacks.
790
810
  */
@@ -792,15 +812,15 @@ declare class EvolutionService {
792
812
  /**
793
813
  * Performs an automatic logout, notifying the user when the session ends.
794
814
  * @param onSuccess - Optional callback invoked after the logout completes.
815
+ * @returns void
795
816
  */
796
817
  autoLogout(onSuccess?: () => void): void;
797
818
  /**
798
- * Authenticates the user against the Evolution back end.
799
- * Supports both credential-based and OAuth2 login flows.
800
- * @param email - User e-mail (credential login only; omit for OAuth2).
801
- * @param password - User password (credential login only; omit for OAuth2).
802
- * @param remember - Whether to persist the session across browser restarts.
803
- * @param oauth - OAuth2 provider type, when using federated login.
819
+ * Authenticates the user against the Evolution back end (credential or OAuth2).
820
+ * @param email - User e-mail (credential login only; omit for OAuth2).
821
+ * @param password - User password (credential login only; omit for OAuth2).
822
+ * @param remember - Whether to persist the session across browser restarts.
823
+ * @param oauth - OAuth2 provider type, when using federated login.
804
824
  * @param oauthAccessToken - Bearer token from the OAuth2 provider.
805
825
  * @returns An observable that emits the `ApiResult<EvolutionLoginResult>`.
806
826
  */
@@ -808,6 +828,7 @@ declare class EvolutionService {
808
828
  /**
809
829
  * Finalises a successful login by updating the stored context and notifying consumers.
810
830
  * @param result - The login result payload from the server.
831
+ * @returns void
811
832
  */
812
833
  private completeLogin;
813
834
  /**
@@ -828,29 +849,19 @@ declare class EvolutionService {
828
849
  * @returns An observable that emits the `ApiResult<EvolutionLoginResult>`.
829
850
  */
830
851
  loginSwitch(id: number): rxjs.Observable<ApiResult<EvolutionLoginResult>>;
831
- /**
832
- * Resets the in-memory login state and broadcasts a logout-completed event.
833
- * Does **not** touch `sessionStorage` or `localStorage`; call `clear()` for a full cleanup.
834
- */
835
- reset(): void;
836
- /**
837
- * Removes Evolution session data from `sessionStorage` and calls `reset()`.
838
- * @param clearOAuthToken - When `true`, also removes the stored OAuth2 access token.
839
- */
840
- clear(clearOAuthToken?: boolean): void;
841
- /**
842
- * Converts a flat list of `INode` items into a hierarchical tree structure.
843
- * @param folders - The root-level nodes to convert.
844
- * @returns An array of `INode` objects with nested `children`.
845
- */
846
- toNodes(folders: INode[]): INode[];
847
- /**
848
- * Recursive helper for `toNodes`.
849
- * @param folders - The nodes to process at the current depth level.
850
- * @param parent - The parent node, or `undefined` at the root level.
851
- * @returns An array of `INode` objects with nested `children`.
852
- */
853
- private _toNodes;
852
+ static ɵfac: i0.ɵɵFactoryDeclaration<LoginService, never>;
853
+ static ɵprov: i0.ɵɵInjectableDeclaration<LoginService>;
854
+ }
855
+
856
+ /**
857
+ * Compliance endpoints: taxonomy & groups, context, registers, laws and
858
+ * activities (the `Context` / `Registers` / `Laws` / `Activities` sections,
859
+ * plus the general taxonomy/groups lookups). Pure HTTP; injects the private
860
+ * {@link CoreService} only to read the back-end URI.
861
+ */
862
+ declare class ComplianceService {
863
+ private readonly httpClient;
864
+ private readonly core;
854
865
  /**
855
866
  * Retrieves the taxonomy tree from the back end.
856
867
  * @returns An observable that emits `ApiResult<FolderTree>`.
@@ -858,7 +869,7 @@ declare class EvolutionService {
858
869
  getTaxonomy(): rxjs.Observable<ApiResult<FolderTree>>;
859
870
  /**
860
871
  * Retrieves the compliance groups for a register.
861
- * @param group - Group index to retrieve (default: `1`).
872
+ * @param group - Group index to retrieve (default: `1`).
862
873
  * @param register - Optional register ID to scope the query.
863
874
  * @returns An observable that emits `ApiResult<string[]>`.
864
875
  */
@@ -887,18 +898,26 @@ declare class EvolutionService {
887
898
  * @returns An observable that emits `ApiResult<EvolutionComplianceLaw[]>`.
888
899
  */
889
900
  addLaws(params: EvolutionComplianceLawsAddParams): rxjs.Observable<ApiResult<EvolutionComplianceLaw[]>>;
890
- /**
891
- * Adds one or more compliance activities.
892
- * @param params - The activities to add.
893
- * @returns An observable that emits `ApiResult<EvolutionComplianceActivity>`.
894
- */
895
- addActivities(params: EvolutionComplianceActivitiesAddParams): rxjs.Observable<ApiResult<EvolutionComplianceActivity>>;
896
901
  /**
897
902
  * Exports compliance laws in the format expected by the server.
898
903
  * @param params - Export parameters (model shape is server-defined).
899
904
  * @returns An observable that emits the binary blob response.
900
905
  */
901
906
  exportLaws(params: any): rxjs.Observable<Blob>;
907
+ /**
908
+ * Adds one or more compliance activities.
909
+ * @param params - The activities to add.
910
+ * @returns An observable that emits `ApiResult<EvolutionComplianceActivity>`.
911
+ */
912
+ addActivities(params: EvolutionComplianceActivitiesAddParams): rxjs.Observable<ApiResult<EvolutionComplianceActivity>>;
913
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComplianceService, never>;
914
+ static ɵprov: i0.ɵɵInjectableDeclaration<ComplianceService>;
915
+ }
916
+
917
+ /** Account endpoints (the `Links` section): user links management. */
918
+ declare class AccountService {
919
+ private readonly httpClient;
920
+ private readonly core;
902
921
  /**
903
922
  * Persists a user link on the server.
904
923
  * @param item - The user link to save.
@@ -911,9 +930,67 @@ declare class EvolutionService {
911
930
  * @returns An observable that emits `ApiResult<boolean>`.
912
931
  */
913
932
  deleteLink(item: EvolutionUserLink): rxjs.Observable<ApiResult<boolean>>;
933
+ static ɵfac: i0.ɵɵFactoryDeclaration<AccountService, never>;
934
+ static ɵprov: i0.ɵɵInjectableDeclaration<AccountService>;
935
+ }
936
+
937
+ /**
938
+ * Public entry point for the Evolution compliance module.
939
+ *
940
+ * The private {@link CoreService} is never exposed; its state and operations
941
+ * are re-published here. All endpoint operations are reached through the
942
+ * namespaced sub-services:
943
+ * - `evolution.session` — authentication / session lifecycle
944
+ * - `evolution.compliance` — taxonomy, context, registers, laws, activities
945
+ * - `evolution.account` — user links
946
+ *
947
+ * The facade itself exposes ONLY the re-published core state/operations plus
948
+ * `initialize` and `ping` — it intentionally does NOT flatten the sub-service
949
+ * methods (use the namespaces for those).
950
+ */
951
+ declare class EvolutionService {
952
+ /** Private: never exposed to consumers. */
953
+ private readonly core;
954
+ /** Authentication / session lifecycle sub-service. */
955
+ readonly session: LoginService;
956
+ /** Compliance endpoints: taxonomy, groups, context, registers, laws, activities. */
957
+ readonly compliance: ComplianceService;
958
+ /** Account endpoints: user links management. */
959
+ readonly account: AccountService;
960
+ /**
961
+ * Gets the base URI of the Evolution back-end service.
962
+ * @returns The configured service URI, or undefined before initialize().
963
+ */
964
+ get serviceUri(): string | undefined;
965
+ /**
966
+ * Gets the active feature flags.
967
+ * @returns The active {@link EvolutionServiceFlags} bitmask.
968
+ */
969
+ get flags(): EvolutionServiceFlags;
970
+ /**
971
+ * Gets the current login info.
972
+ * @returns The current {@link EvolutionLoginInfo}, or undefined.
973
+ */
974
+ get loginInfo(): EvolutionLoginInfo | undefined;
975
+ /** `true` when the user has an active (non-temporary) session. */
976
+ get loggedIn(): Signal<boolean>;
977
+ /** `true` while a login request is in flight. */
978
+ get loggingIn(): WritableSignal<boolean>;
979
+ /**
980
+ * Initialises the service with the back-end URI and optional feature flags.
981
+ * @param serviceUri - Base URL of the Evolution service.
982
+ * @param flags - Bitmask of `EvolutionServiceFlags` (default: `None`).
983
+ * @returns void
984
+ */
985
+ initialize(serviceUri: string, flags?: EvolutionServiceFlags): void;
986
+ /**
987
+ * Sends a one-shot ping to the back end to verify connectivity.
988
+ * @returns void
989
+ */
990
+ ping(): void;
914
991
  static ɵfac: i0.ɵɵFactoryDeclaration<EvolutionService, never>;
915
992
  static ɵprov: i0.ɵɵInjectableDeclaration<EvolutionService>;
916
993
  }
917
994
 
918
- export { ERPComplianceActivityState, ERPComplianceLawOrigin, ERPComplianceLawState, ERPComplianceLawsSelectionType, ERPComplianceNotificationLimit, ERPComplianceProfileFlags, ERPComplianceProfileRole, ERPComplianceRegisterNotificationType, ERPComplianceRegisterSiteImportOptions, ERPComplianceScope, ERPExportFormat, ERPExportPart, ERPExportSource, ERPExportType, ERPModule, ERPPlace, ERPPlacePermission, ERPRecurrenceFrequencyType, EvolutionAuthInterceptor, EvolutionComplianceActivityStates, EvolutionComplianceContextInfo, EvolutionComplianceLawChangeStates, EvolutionComplianceLawOrigins, EvolutionComplianceLawStates, EvolutionComplianceNotificationLimits, EvolutionComplianceNotifications, EvolutionComplianceObligationAuthorities, EvolutionComplianceObligationTypes, EvolutionComplianceProfileFlags, EvolutionComplianceProfileRoles, EvolutionComplianceScopes, EvolutionMessages, EvolutionRecurrenceFrequencyTypes, EvolutionService, EvolutionServiceFlags };
995
+ export { AccountService, ComplianceService, ERPComplianceActivityState, ERPComplianceLawOrigin, ERPComplianceLawState, ERPComplianceLawsSelectionType, ERPComplianceNotificationLimit, ERPComplianceProfileFlags, ERPComplianceProfileRole, ERPComplianceRegisterNotificationType, ERPComplianceRegisterSiteImportOptions, ERPComplianceScope, ERPExportFormat, ERPExportPart, ERPExportSource, ERPExportType, ERPModule, ERPPlace, ERPPlacePermission, ERPRecurrenceFrequencyType, EvolutionAuthInterceptor, EvolutionComplianceActivityStates, EvolutionComplianceContextInfo, EvolutionComplianceLawChangeStates, EvolutionComplianceLawOrigins, EvolutionComplianceLawStates, EvolutionComplianceNotificationLimits, EvolutionComplianceNotifications, EvolutionComplianceObligationAuthorities, EvolutionComplianceObligationTypes, EvolutionComplianceProfileFlags, EvolutionComplianceProfileRoles, EvolutionComplianceScopes, EvolutionMessages, EvolutionRecurrenceFrequencyTypes, EvolutionService, EvolutionServiceFlags, LoginService };
919
996
  export type { ComplianceRegisterUsersResultModel, EvolutionChangeContextModel, EvolutionChangeContextResultModel, EvolutionComplianceActivitiesAddParams, EvolutionComplianceActivity, EvolutionComplianceLaswExportParams, EvolutionComplianceLaw, EvolutionComplianceLawDocumentInfo, EvolutionComplianceLawReference, EvolutionComplianceLawsAddParams, EvolutionComplianceRegister, EvolutionComplianceRegisterProfile, EvolutionComplianceRegisterSite, EvolutionContextInfo, EvolutionExportModel, EvolutionLicenceModuleInfo, EvolutionLoginInfo, EvolutionLoginResult, EvolutionPermission, EvolutionPlacePermission, EvolutionPlaceable, EvolutionQueryRegisterProfilesModel, EvolutionRegisterProfileSiteInfo, EvolutionRegisterProfileUserInfo, EvolutionUserInfo, EvolutionUserLink, EvolutionUserModuleInfo };
@@ -2,6 +2,7 @@ import { LoginResult, ApiResult } from '@arsedizioni/ars-utils/core';
2
2
  import { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';
3
3
  import * as rxjs from 'rxjs';
4
4
  import * as i0 from '@angular/core';
5
+ import { Signal } from '@angular/core';
5
6
 
6
7
  declare const SupportMessages: {
7
8
  /**
@@ -141,29 +142,31 @@ declare enum SupportProductModule {
141
142
  DgiCLP = 1024
142
143
  }
143
144
 
144
- declare class SupportService {
145
+ /**
146
+ * Notifications service for the Support module: the unread-count tracking,
147
+ * the notification queries and document download, plus the session bootstrap
148
+ * (the `NOTIFICATION_READ` broadcast subscription). State lives in the
149
+ * private {@link CoreService}.
150
+ */
151
+ declare class NotificationsService {
145
152
  private readonly httpClient;
146
153
  private readonly broadcastService;
147
154
  private readonly destroyRef;
155
+ private readonly core;
148
156
  private broadcastInitialized;
149
- private _serviceUri;
150
- /** Base URI of the Support back-end service. */
151
- get serviceUri(): string | undefined;
152
- products: SupportProduct;
153
- productModules: SupportProductModule;
154
- /** Number of unread notifications, or `undefined` when there are none. */
155
- readonly unreadNotifications: i0.WritableSignal<number>;
156
157
  /**
157
158
  * Initialises the service with the back-end URI and the products/modules it should track.
158
159
  * Must be called once during application bootstrap before any other method.
159
- * @param serviceUri - Base URL of the support service.
160
- * @param products - Bitmask of `SupportProduct` values to scope notifications (default: `None`).
160
+ * @param serviceUri - Base URL of the support service.
161
+ * @param products - Bitmask of `SupportProduct` values to scope notifications (default: `None`).
161
162
  * @param productModules - Bitmask of `SupportProductModule` values to scope notifications (default: `None`).
163
+ * @returns void
162
164
  */
163
165
  initialize(serviceUri: string, products?: SupportProduct, productModules?: SupportProductModule): void;
164
166
  /**
165
167
  * Fetches the count of unread notifications from the server and updates
166
168
  * the `unreadNotifications` signal. Sets `undefined` when the count is zero.
169
+ * @returns void
167
170
  */
168
171
  countUnreadNotifications(): void;
169
172
  /**
@@ -192,9 +195,53 @@ declare class SupportService {
192
195
  * @returns An observable that emits the binary blob response.
193
196
  */
194
197
  downloadNotificationDocument(documentId: number): rxjs.Observable<Blob>;
198
+ static ɵfac: i0.ɵɵFactoryDeclaration<NotificationsService, never>;
199
+ static ɵprov: i0.ɵɵInjectableDeclaration<NotificationsService>;
200
+ }
201
+
202
+ /**
203
+ * Public entry point for the Support module.
204
+ *
205
+ * The private {@link CoreService} is never exposed; its state is re-published
206
+ * here. All operations are reached through the namespaced sub-service:
207
+ * - `support.notifications` — unread count, queries, mark, document download
208
+ *
209
+ * The facade itself exposes ONLY the re-published core state plus `initialize`
210
+ * — it intentionally does NOT flatten the sub-service methods.
211
+ */
212
+ declare class SupportService {
213
+ /** Private: never exposed to consumers. */
214
+ private readonly core;
215
+ /** Notifications sub-service (unread count, queries, mark, downloads). */
216
+ readonly notifications: NotificationsService;
217
+ /**
218
+ * Gets the base URI of the Support back-end service.
219
+ * @returns The configured service URI, or undefined before initialize().
220
+ */
221
+ get serviceUri(): string | undefined;
222
+ /**
223
+ * Gets the products bitmask used to scope notifications.
224
+ * @returns The active {@link SupportProduct} bitmask.
225
+ */
226
+ get products(): SupportProduct;
227
+ /**
228
+ * Gets the product-modules bitmask used to scope notifications.
229
+ * @returns The active {@link SupportProductModule} bitmask.
230
+ */
231
+ get productModules(): SupportProductModule;
232
+ /** Number of unread notifications, or `undefined` when there are none. */
233
+ get unreadNotifications(): Signal<number | undefined>;
234
+ /**
235
+ * Initialises the service with the back-end URI and the products/modules to track.
236
+ * @param serviceUri - Base URL of the support service.
237
+ * @param products - Bitmask of `SupportProduct` values (default: `None`).
238
+ * @param productModules - Bitmask of `SupportProductModule` values (default: `None`).
239
+ * @returns void
240
+ */
241
+ initialize(serviceUri: string, products?: SupportProduct, productModules?: SupportProductModule): void;
195
242
  static ɵfac: i0.ɵɵFactoryDeclaration<SupportService, never>;
196
243
  static ɵprov: i0.ɵɵInjectableDeclaration<SupportService>;
197
244
  }
198
245
 
199
- export { SupportMessages, SupportProduct, SupportProductModule, SupportService };
246
+ export { NotificationsService, SupportMessages, SupportProduct, SupportProductModule, SupportService };
200
247
  export type { Notification, SupportDocumentInfo, SupportLoginInfo, SupportLoginResult, SupportNotificationInfo, SupportNotificationsMarkParams, SupportNotificationsSearchParams, SupportNotificationsSearchResult, SupportUserInfo };
@@ -1185,6 +1185,20 @@ declare class FxLayoutAlignDirective extends ResponsiveBaseDirective {
1185
1185
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxLayoutAlignDirective, " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg], [fxLayoutAlign.sm-up], [fxLayoutAlign.md-up], [fxLayoutAlign.lg-up], [fxLayoutAlign.xl-up], [fxLayoutAlign.sm-down], [fxLayoutAlign.md-down], [fxLayoutAlign.lg-down] ", never, { "fxLayoutAlign": { "alias": "fxLayoutAlign"; "required": false; "isSignal": true; }; "xs": { "alias": "fxLayoutAlign.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxLayoutAlign.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxLayoutAlign.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxLayoutAlign.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxLayoutAlign.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxLayoutAlign.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxLayoutAlign.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxLayoutAlign.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxLayoutAlign.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxLayoutAlign.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxLayoutAlign.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxLayoutAlign.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxLayoutAlign.gt-lg"; "required": false; "isSignal": true; }; "smUp": { "alias": "fxLayoutAlign.sm-up"; "required": false; "isSignal": true; }; "mdUp": { "alias": "fxLayoutAlign.md-up"; "required": false; "isSignal": true; }; "lgUp": { "alias": "fxLayoutAlign.lg-up"; "required": false; "isSignal": true; }; "xlUp": { "alias": "fxLayoutAlign.xl-up"; "required": false; "isSignal": true; }; "smDown": { "alias": "fxLayoutAlign.sm-down"; "required": false; "isSignal": true; }; "mdDown": { "alias": "fxLayoutAlign.md-down"; "required": false; "isSignal": true; }; "lgDown": { "alias": "fxLayoutAlign.lg-down"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1186
1186
  }
1187
1187
 
1188
+ /**
1189
+ * Normalizes an fxLayoutGap value to a CSS `gap` value.
1190
+ *
1191
+ * The flex-layout value is `"<size> [grid]"`: the optional `grid` keyword is a
1192
+ * grouping MODE, not a second CSS gap dimension. Since we apply the native CSS
1193
+ * `gap` (which already produces uniform gutters across wrapped lines), the mode
1194
+ * keyword is redundant and must be stripped — otherwise `gap: 10px grid` is
1195
+ * invalid CSS and the browser drops it (no gap at all).
1196
+ *
1197
+ * A unitless size is normalized to px (e.g. "16" -> "16px").
1198
+ * @param raw - The raw fxLayoutGap value (e.g. "10px", "16", "10px grid").
1199
+ * @returns A valid CSS `gap` value.
1200
+ */
1201
+ declare function normalizeGap(raw: string): string;
1188
1202
  declare class FxLayoutGapDirective extends ResponsiveBaseDirective {
1189
1203
  readonly fxLayoutGap: _angular_core.InputSignal<string>;
1190
1204
  readonly xs: _angular_core.InputSignal<string>;
@@ -1446,5 +1460,5 @@ declare class FlexLayoutModule {
1446
1460
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<FlexLayoutModule>;
1447
1461
  }
1448
1462
 
1449
- export { ALIAS_FAMILIES, ALIAS_INDEX, BS5_BREAKPOINTS, BusyDialogComponent, BusyTimer, CANONICAL_ALIASES, ConfirmDialogComponent, CredentialsDialogComponent, DeleteDialogComponent, DeleteDialogConfirmMode, DialogService, FlexLayoutModule, FxClassDirective, FxFlexAlignDirective, FxFlexDirective, FxFlexFillDirective, FxFlexOffsetDirective, FxFlexOrderDirective, FxGridAreaDirective, FxGridColumnDirective, FxGridDirective, FxLayoutAlignDirective, FxLayoutDirective, FxLayoutGapDirective, FxLayoutWrapDirective, FxShowHideDirective, FxStyleDirective, IfBpDirective, InfoDialogComponent, LAYOUT_BREAKPOINTS, LAYOUT_VALUES, MediaObserver, NON_CANONICAL_PRIORITY, OtpInputComponent, PaginatorIntl, PasswordStrengthComponent, RecoverPasswordDialogComponent, ResetPasswordDialogComponent, ResponsiveBaseDirective, ToastComponent, UIService, applyVisibility, buildAlignStyles, buildFlexStyles, buildLayoutCSS, coerceFlex, normalizeStyle, resolve, resolveAll, resolveFlexInput, resolveNonCanonical, resolveParentFlow, toBool, toClassSet, validateBasis, validateLayoutValue, validateWrapValue };
1463
+ export { ALIAS_FAMILIES, ALIAS_INDEX, BS5_BREAKPOINTS, BusyDialogComponent, BusyTimer, CANONICAL_ALIASES, ConfirmDialogComponent, CredentialsDialogComponent, DeleteDialogComponent, DeleteDialogConfirmMode, DialogService, FlexLayoutModule, FxClassDirective, FxFlexAlignDirective, FxFlexDirective, FxFlexFillDirective, FxFlexOffsetDirective, FxFlexOrderDirective, FxGridAreaDirective, FxGridColumnDirective, FxGridDirective, FxLayoutAlignDirective, FxLayoutDirective, FxLayoutGapDirective, FxLayoutWrapDirective, FxShowHideDirective, FxStyleDirective, IfBpDirective, InfoDialogComponent, LAYOUT_BREAKPOINTS, LAYOUT_VALUES, MediaObserver, NON_CANONICAL_PRIORITY, OtpInputComponent, PaginatorIntl, PasswordStrengthComponent, RecoverPasswordDialogComponent, ResetPasswordDialogComponent, ResponsiveBaseDirective, ToastComponent, UIService, applyVisibility, buildAlignStyles, buildFlexStyles, buildLayoutCSS, coerceFlex, normalizeGap, normalizeStyle, resolve, resolveAll, resolveFlexInput, resolveNonCanonical, resolveParentFlow, toBool, toClassSet, validateBasis, validateLayoutValue, validateWrapValue };
1450
1464
  export type { BpValues, BreakpointAlias, CanonicalKey, ConfirmDialogData, ConfirmDialogOption, CredentialsDialogData, CredentialsDialogResult, DeleteDialogData, DialogOption, DialogResult, IDialogService, InfoDialogData, NcValues, NonCanonicalKey, RecoverPasswordDialogData, RecoverPasswordDialogResult, ResetPasswordDialogData, ResetPasswordDialogMode, ResetPasswordDialogResult, ToastData };