@arsedizioni/ars-utils 22.0.47 → 22.0.49

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.47",
3
+ "version": "22.0.49",
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 };
@@ -983,30 +983,39 @@ declare function buildFlexStyles(value: string, direction: string, hasWrap: bool
983
983
  * @returns The value to pass to `buildFlexStyles`.
984
984
  */
985
985
  declare function resolveFlexInput(raw: string, hasStarSibling: boolean): string;
986
+ /**
987
+ * Coerces an fxFlex binding value to the string form the builder expects.
988
+ * Accepts numbers (e.g. `[fxFlex]="32"` or `[fxFlex]="cond ? 24 : 32"`) and
989
+ * normalises them to a string; keeps `''` (bare attribute) as-is; maps
990
+ * null/undefined to "not set".
991
+ * @param v - The bound value: a string, a number, null, or undefined.
992
+ * @returns The trimmed string value, or undefined when not set.
993
+ */
994
+ declare function coerceFlex(v: string | number | null | undefined): string | undefined;
986
995
  declare class FxFlexDirective extends ResponsiveBaseDirective {
987
996
  /** Direct ancestor FxLayout (any level); matched to the direct parent in the effect. */
988
997
  private readonly parentLayout;
989
- readonly fxFlex: _angular_core.InputSignal<string>;
990
- readonly xs: _angular_core.InputSignal<string>;
991
- readonly sm: _angular_core.InputSignal<string>;
992
- readonly md: _angular_core.InputSignal<string>;
993
- readonly lg: _angular_core.InputSignal<string>;
994
- readonly xl: _angular_core.InputSignal<string>;
995
- readonly ltSm: _angular_core.InputSignal<string>;
996
- readonly ltMd: _angular_core.InputSignal<string>;
997
- readonly ltLg: _angular_core.InputSignal<string>;
998
- readonly ltXl: _angular_core.InputSignal<string>;
999
- readonly gtXs: _angular_core.InputSignal<string>;
1000
- readonly gtSm: _angular_core.InputSignal<string>;
1001
- readonly gtMd: _angular_core.InputSignal<string>;
1002
- readonly gtLg: _angular_core.InputSignal<string>;
1003
- readonly smUp: _angular_core.InputSignal<string>;
1004
- readonly mdUp: _angular_core.InputSignal<string>;
1005
- readonly lgUp: _angular_core.InputSignal<string>;
1006
- readonly xlUp: _angular_core.InputSignal<string>;
1007
- readonly smDown: _angular_core.InputSignal<string>;
1008
- readonly mdDown: _angular_core.InputSignal<string>;
1009
- readonly lgDown: _angular_core.InputSignal<string>;
998
+ readonly fxFlex: _angular_core.InputSignalWithTransform<string, string | number>;
999
+ readonly xs: _angular_core.InputSignalWithTransform<string, string | number>;
1000
+ readonly sm: _angular_core.InputSignalWithTransform<string, string | number>;
1001
+ readonly md: _angular_core.InputSignalWithTransform<string, string | number>;
1002
+ readonly lg: _angular_core.InputSignalWithTransform<string, string | number>;
1003
+ readonly xl: _angular_core.InputSignalWithTransform<string, string | number>;
1004
+ readonly ltSm: _angular_core.InputSignalWithTransform<string, string | number>;
1005
+ readonly ltMd: _angular_core.InputSignalWithTransform<string, string | number>;
1006
+ readonly ltLg: _angular_core.InputSignalWithTransform<string, string | number>;
1007
+ readonly ltXl: _angular_core.InputSignalWithTransform<string, string | number>;
1008
+ readonly gtXs: _angular_core.InputSignalWithTransform<string, string | number>;
1009
+ readonly gtSm: _angular_core.InputSignalWithTransform<string, string | number>;
1010
+ readonly gtMd: _angular_core.InputSignalWithTransform<string, string | number>;
1011
+ readonly gtLg: _angular_core.InputSignalWithTransform<string, string | number>;
1012
+ readonly smUp: _angular_core.InputSignalWithTransform<string, string | number>;
1013
+ readonly mdUp: _angular_core.InputSignalWithTransform<string, string | number>;
1014
+ readonly lgUp: _angular_core.InputSignalWithTransform<string, string | number>;
1015
+ readonly xlUp: _angular_core.InputSignalWithTransform<string, string | number>;
1016
+ readonly smDown: _angular_core.InputSignalWithTransform<string, string | number>;
1017
+ readonly mdDown: _angular_core.InputSignalWithTransform<string, string | number>;
1018
+ readonly lgDown: _angular_core.InputSignalWithTransform<string, string | number>;
1010
1019
  private readonly _rawFlex;
1011
1020
  /** CSS properties applied on the last effect run (for stale cleanup). */
1012
1021
  private _applied;
@@ -1176,6 +1185,20 @@ declare class FxLayoutAlignDirective extends ResponsiveBaseDirective {
1176
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>;
1177
1186
  }
1178
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;
1179
1202
  declare class FxLayoutGapDirective extends ResponsiveBaseDirective {
1180
1203
  readonly fxLayoutGap: _angular_core.InputSignal<string>;
1181
1204
  readonly xs: _angular_core.InputSignal<string>;
@@ -1437,5 +1460,5 @@ declare class FlexLayoutModule {
1437
1460
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<FlexLayoutModule>;
1438
1461
  }
1439
1462
 
1440
- 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, 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 };
1441
1464
  export type { BpValues, BreakpointAlias, CanonicalKey, ConfirmDialogData, ConfirmDialogOption, CredentialsDialogData, CredentialsDialogResult, DeleteDialogData, DialogOption, DialogResult, IDialogService, InfoDialogData, NcValues, NonCanonicalKey, RecoverPasswordDialogData, RecoverPasswordDialogResult, ResetPasswordDialogData, ResetPasswordDialogMode, ResetPasswordDialogResult, ToastData };