{ "version": 3, "sources": ["src/@fuse/services/match-media.service.ts"], "sourcesContent": ["import { Platform } from '@angular/cdk/platform';\r\n\r\nimport { Injectable, signal } from '@angular/core';\r\nimport { Observable, ReplaySubject } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\n\r\nexport type Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\r\nexport interface IMediaSize {\r\n minWidth: number;\r\n maxWidth: number;\r\n}\r\nexport interface IBreakPoint extends IMediaSize {\r\n bp: Breakpoint;\r\n}\r\n\r\nexport const BreakpointsMediaSize: Record = {\r\n xs: { minWidth: 0, maxWidth: 479 },\r\n sm: { minWidth: 480, maxWidth: 767 },\r\n md: { minWidth: 768, maxWidth: 1023 },\r\n lg: { minWidth: 1024, maxWidth: 1279 },\r\n xl: { minWidth: 1280, maxWidth: 1629 },\r\n '2xl': { minWidth: 1630, maxWidth: 0 }\r\n};\r\n// TODO Rimpiazzare BreakpointsSize con BreakpointsMediaSize\r\nexport const BreakpointsSize: IBreakPoint[] = [\r\n { bp: 'xs', minWidth: 0, maxWidth: 479 },\r\n { bp: 'sm', minWidth: 480, maxWidth: 767 },\r\n { bp: 'md', minWidth: 768, maxWidth: 1023 },\r\n { bp: 'lg', minWidth: 1024, maxWidth: 1279 },\r\n { bp: 'xl', minWidth: 1280, maxWidth: 1629 },\r\n { bp: '2xl', minWidth: 1630, maxWidth: 0 }\r\n];\r\n\r\nexport const Breakpoints =\r\nBreakpointsSize.map((b) =>\r\n`(min-width: ${b.minWidth}px) and (max-width: ${b.maxWidth}px)`.replace(/( and )?\\((min|max)-width: 0px\\)( and )?/, ''))\r\n.concat(['(max-width: 959.98px) and (orientation: landscape)']);\r\n\r\n\r\n// {\r\n// xs: '(max-width: 639.98px)',\r\n// sm: '(min-width: 640px) and (max-width: 767.98px)',\r\n// md: '(min-width: 768px) and (max-width: 1023.98px)',\r\n// lg: '(min-width: 1024px) and (max-width: 1279.98px)',\r\n// xl: '(min-width: 1280px) and (max-width: 1629.98px)',\r\n// '2xl': '(min-width: 1620px)',\r\n// HandsetLandscape: '(max-width: 959.98px) and (orientation: landscape)'\r\n// };\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FuseMatchMediaService\r\n{\r\n private _onMediaChange = new ReplaySubject<{ matchingAliases: string[]; screen: string }>(1);\r\n #matchingAliases = signal([]);\r\n matchingAliases = this.#matchingAliases.asReadonly();\r\n #screen = signal('');\r\n screen = this.#screen.asReadonly();\r\n\r\n /**\r\n * Constructor\r\n *\r\n * @param {BreakpointObserver} _breakpointObserver\r\n */\r\n constructor(\r\n private _breakpointObserver: BreakpointObserver,\r\n private platforn: Platform\r\n ) {\r\n\r\n if (this.platforn.isBrowser) {\r\n this._breakpointObserver.observe(Breakpoints).pipe(\r\n tap((state) => {\r\n const bps = ['xs', 'sm', 'md', 'lg', 'xl', '2xl'];\r\n // Get the matching breakpoints and use them to fill the subject\r\n const matchedQueries = Object.entries(state.breakpoints).filter(([query, matches]) => matches);\r\n const screen = BreakpointsSize[Breakpoints.findIndex((q) => q === matchedQueries[0][0])].bp;\r\n const matchingAliases = bps.slice(0, bps.indexOf(screen) + 1);\r\n if (matchedQueries.some(([query]) => Breakpoints.includes(query) && /HandsetLandscape/.test(query))) {\r\n matchingAliases.push('HandsetLandscape');\r\n }\r\n this.#matchingAliases.set(matchingAliases);\r\n this.#screen.set(screen);\r\n // Execute the observable\r\n this._onMediaChange.next({\r\n matchingAliases,\r\n screen\r\n });\r\n })\r\n ).subscribe();\r\n }\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Accessors\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Getter for _onMediaChange\r\n */\r\n get onMediaChange$(): Observable<{ matchingAliases: string[]; screen: string }> {\r\n return this._onMediaChange.asObservable();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On media query change\r\n *\r\n * @param query\r\n */\r\n onMediaQueryChange$(query: string | string[]): Observable {\r\n return this._breakpointObserver.observe(query);\r\n }\r\n\r\n}\r\n"], "mappings": "8MAgBO,IAAMA,EAAuD,CAClEC,GAAI,CAAEC,SAAU,EAAGC,SAAU,GAAG,EAChCC,GAAI,CAAEF,SAAU,IAAKC,SAAU,GAAG,EAClCE,GAAI,CAAEH,SAAU,IAAKC,SAAU,IAAI,EACnCG,GAAI,CAAEJ,SAAU,KAAMC,SAAU,IAAI,EACpCI,GAAI,CAAEL,SAAU,KAAMC,SAAU,IAAI,EACpC,MAAO,CAAED,SAAU,KAAMC,SAAU,CAAC,GAGzBK,EAAiC,CAC5C,CAAEC,GAAI,KAAMP,SAAU,EAAGC,SAAU,GAAG,EACtC,CAAEM,GAAI,KAAMP,SAAU,IAAKC,SAAU,GAAG,EACxC,CAAEM,GAAI,KAAMP,SAAU,IAAKC,SAAU,IAAI,EACzC,CAAEM,GAAI,KAAMP,SAAU,KAAMC,SAAU,IAAI,EAC1C,CAAEM,GAAI,KAAMP,SAAU,KAAMC,SAAU,IAAI,EAC1C,CAAEM,GAAI,MAAOP,SAAU,KAAMC,SAAU,CAAC,CAAE,EAG/BO,EACbF,EAAgBG,IAAKC,GACrB,eAAeA,EAAEV,QAAQ,uBAAuBU,EAAET,QAAQ,MAAMU,QAAQ,2CAA4C,EAAE,CAAC,EACtHC,OAAO,CAAC,oDAAoD,CAAC,EAgBjDC,GAAqB,IAAA,CArDlC,IAAAC,EAAAC,EAqDM,IAAOF,EAAP,MAAOA,CAAqB,CAa9BG,YACUC,EACAC,EAAkB,CAZ9BC,EAAA,KAAAL,GAEAK,EAAA,KAAAJ,GASY,KAAAE,oBAAAA,EACA,KAAAC,SAAAA,EAbJ,KAAAE,eAAiB,IAAIC,EAA6D,CAAC,EAC3FC,EAAA,KAAAR,EAAmBS,EAAiB,CAAA,CAAE,GACtC,KAAAC,gBAAkBC,EAAA,KAAKX,GAAiBY,WAAU,EAClDJ,EAAA,KAAAP,EAAUQ,EAAe,EAAE,GAC3B,KAAAI,OAASF,EAAA,KAAKV,GAAQW,WAAU,EAYxB,KAAKR,SAASU,WAChB,KAAKX,oBAAoBY,QAAQrB,CAAW,EAAEsB,KAC5CC,EAAKC,GAAS,CACZ,IAAMC,EAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAK,EAE1CC,EAAiBC,OAAOC,QAAQJ,EAAMK,WAAW,EAAEC,OAAO,CAAC,CAACC,EAAOC,CAAO,IAAMA,CAAO,EACvFb,EAASrB,EAAgBE,EAAYiC,UAAWC,GAAMA,IAAMR,EAAe,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE3B,GACnFiB,EAAkBS,EAAIU,MAAM,EAAGV,EAAIW,QAAQjB,CAAM,EAAI,CAAC,EACxDO,EAAeW,KAAK,CAAC,CAACN,CAAK,IAAM/B,EAAYsC,SAASP,CAAK,GAAK,mBAAmBQ,KAAKR,CAAK,CAAC,GAChGf,EAAgBwB,KAAK,kBAAkB,EAEzCvB,EAAA,KAAKX,GAAiBmC,IAAIzB,CAAe,EACzCC,EAAA,KAAKV,GAAQkC,IAAItB,CAAM,EAEvB,KAAKP,eAAe8B,KAAK,CACvB1B,gBAAAA,EACAG,OAAAA,EACD,CACH,CAAC,CAAC,EACFwB,UAAS,CAEjB,CASA,IAAIC,gBAAc,CAChB,OAAO,KAAKhC,eAAeiC,aAAY,CACzC,CAWAC,oBAAoBf,EAAwB,CAC1C,OAAO,KAAKtB,oBAAoBY,QAAQU,CAAK,CAC/C,GA5DAzB,EAAA,YAEAC,EAAA,kDALWF,GAAqB0C,EAAAC,CAAA,EAAAD,EAAAE,CAAA,CAAA,CAAA,wBAArB5C,EAAqB6C,QAArB7C,EAAqB8C,UAAAC,WAFlB,MAAM,CAAA,EAEhB,IAAO/C,EAAPgD,SAAOhD,CAAqB,GAAA", "names": ["BreakpointsMediaSize", "xs", "minWidth", "maxWidth", "sm", "md", "lg", "xl", "BreakpointsSize", "bp", "Breakpoints", "map", "b", "replace", "concat", "FuseMatchMediaService", "_matchingAliases", "_screen", "constructor", "_breakpointObserver", "platforn", "__privateAdd", "_onMediaChange", "ReplaySubject", "__privateSet", "signal", "matchingAliases", "__privateGet", "asReadonly", "screen", "isBrowser", "observe", "pipe", "tap", "state", "bps", "matchedQueries", "Object", "entries", "breakpoints", "filter", "query", "matches", "findIndex", "q", "slice", "indexOf", "some", "includes", "test", "push", "set", "next", "subscribe", "onMediaChange$", "asObservable", "onMediaQueryChange$", "\u0275\u0275inject", "BreakpointObserver", "Platform", "factory", "\u0275fac", "providedIn", "_FuseMatchMediaService"] }