{"version":3,"sources":["node_modules/@angular/cdk/fesm2022/breakpoints-observer-75147d6a.mjs","node_modules/@angular/cdk/fesm2022/layout.mjs","projects/lib-master-detail/src/lib/services/breakpoint.service.ts","projects/lib-master-detail/src/lib/directives/master-router-link.directive.ts","projects/lib-master-detail/src/lib/components/master-detail/master-detail.component.ts","projects/lib-master-detail/src/lib/components/master-detail/master-detail.component.html","projects/lib-master-detail/src/lib/master-detail.module.ts"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { inject, CSP_NONCE, Injectable, NgZone } from '@angular/core';\nimport { Subject, combineLatest, concat, Observable } from 'rxjs';\nimport { take, skip, debounceTime, map, startWith, takeUntil } from 'rxjs/operators';\nimport { P as Platform } from './platform-610a08ae.mjs';\nimport { c as coerceArray } from './array-88e1bec3.mjs';\n\n/** Global registry for all dynamically-created, injected media queries. */\nconst mediaQueriesForWebkitCompatibility = /*#__PURE__*/new Set();\n/** Style tag that holds all of the dynamically-created media queries. */\nlet mediaQueryStyleNode;\n/** A utility for calling matchMedia queries. */\nlet MediaMatcher = /*#__PURE__*/(() => {\n class MediaMatcher {\n _platform = inject(Platform);\n _nonce = inject(CSP_NONCE, {\n optional: true\n });\n /** The internal matchMedia method to return back a MediaQueryList like object. */\n _matchMedia;\n constructor() {\n this._matchMedia = this._platform.isBrowser && window.matchMedia ?\n // matchMedia is bound to the window scope intentionally as it is an illegal invocation to\n // call it from a different scope.\n window.matchMedia.bind(window) : noopMatchMedia;\n }\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n */\n matchMedia(query) {\n if (this._platform.WEBKIT || this._platform.BLINK) {\n createEmptyStyleRule(query, this._nonce);\n }\n return this._matchMedia(query);\n }\n static ɵfac = function MediaMatcher_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MediaMatcher)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MediaMatcher,\n factory: MediaMatcher.ɵfac,\n providedIn: 'root'\n });\n }\n return MediaMatcher;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Creates an empty stylesheet that is used to work around browser inconsistencies related to\n * `matchMedia`. At the time of writing, it handles the following cases:\n * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia`\n * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration.\n * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules\n * inside the `@media` match existing elements on the page. We work around it by having one rule\n * targeting the `body`. See https://github.com/angular/components/issues/23546.\n */\nfunction createEmptyStyleRule(query, nonce) {\n if (mediaQueriesForWebkitCompatibility.has(query)) {\n return;\n }\n try {\n if (!mediaQueryStyleNode) {\n mediaQueryStyleNode = document.createElement('style');\n if (nonce) {\n mediaQueryStyleNode.setAttribute('nonce', nonce);\n }\n mediaQueryStyleNode.setAttribute('type', 'text/css');\n document.head.appendChild(mediaQueryStyleNode);\n }\n if (mediaQueryStyleNode.sheet) {\n mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);\n mediaQueriesForWebkitCompatibility.add(query);\n }\n } catch (e) {\n console.error(e);\n }\n}\n/** No-op matchMedia replacement for non-browser platforms. */\nfunction noopMatchMedia(query) {\n // Use `as any` here to avoid adding additional necessary properties for\n // the noop matcher.\n return {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => {},\n removeListener: () => {}\n };\n}\n\n/** Utility for checking the matching state of `@media` queries. */\nlet BreakpointObserver = /*#__PURE__*/(() => {\n class BreakpointObserver {\n _mediaMatcher = inject(MediaMatcher);\n _zone = inject(NgZone);\n /** A map of all media queries currently being listened for. */\n _queries = new Map();\n /** A subject for all other observables to takeUntil based on. */\n _destroySubject = new Subject();\n constructor() {}\n /** Completes the active subject, signalling to all other observables to complete. */\n ngOnDestroy() {\n this._destroySubject.next();\n this._destroySubject.complete();\n }\n /**\n * Whether one or more media queries match the current viewport size.\n * @param value One or more media queries to check.\n * @returns Whether any of the media queries match.\n */\n isMatched(value) {\n const queries = splitQueries(coerceArray(value));\n return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);\n }\n /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @param value One or more media queries to check.\n * @returns A stream of matches for the given queries.\n */\n observe(value) {\n const queries = splitQueries(coerceArray(value));\n const observables = queries.map(query => this._registerQuery(query).observable);\n let stateObservable = combineLatest(observables);\n // Emit the first state immediately, and then debounce the subsequent emissions.\n stateObservable = concat(stateObservable.pipe(take(1)), stateObservable.pipe(skip(1), debounceTime(0)));\n return stateObservable.pipe(map(breakpointStates => {\n const response = {\n matches: false,\n breakpoints: {}\n };\n breakpointStates.forEach(({\n matches,\n query\n }) => {\n response.matches = response.matches || matches;\n response.breakpoints[query] = matches;\n });\n return response;\n }));\n }\n /** Registers a specific query to be listened for. */\n _registerQuery(query) {\n // Only set up a new MediaQueryList if it is not already being listened for.\n if (this._queries.has(query)) {\n return this._queries.get(query);\n }\n const mql = this._mediaMatcher.matchMedia(query);\n // Create callback for match changes and add it is as a listener.\n const queryObservable = new Observable(observer => {\n // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed\n // back into the zone because matchMedia is only included in Zone.js by loading the\n // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not\n // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js\n // patches it.\n const handler = e => this._zone.run(() => observer.next(e));\n mql.addListener(handler);\n return () => {\n mql.removeListener(handler);\n };\n }).pipe(startWith(mql), map(({\n matches\n }) => ({\n query,\n matches\n })), takeUntil(this._destroySubject));\n // Add the MediaQueryList to the set of queries.\n const output = {\n observable: queryObservable,\n mql\n };\n this._queries.set(query, output);\n return output;\n }\n static ɵfac = function BreakpointObserver_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BreakpointObserver)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BreakpointObserver,\n factory: BreakpointObserver.ɵfac,\n providedIn: 'root'\n });\n }\n return BreakpointObserver;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Split each query string into separate query strings if two queries are provided as comma\n * separated.\n */\nfunction splitQueries(queries) {\n return queries.map(query => query.split(',')).reduce((a1, a2) => a1.concat(a2)).map(query => query.trim());\n}\nexport { BreakpointObserver as B, MediaMatcher as M };\n","import * as i0 from '@angular/core';\nimport { NgModule } from '@angular/core';\nexport { B as BreakpointObserver, M as MediaMatcher } from './breakpoints-observer-75147d6a.mjs';\nimport 'rxjs';\nimport 'rxjs/operators';\nimport './platform-610a08ae.mjs';\nimport '@angular/common';\nimport './array-88e1bec3.mjs';\nlet LayoutModule = /*#__PURE__*/(() => {\n class LayoutModule {\n static ɵfac = function LayoutModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LayoutModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: LayoutModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n return LayoutModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// PascalCase is being used as Breakpoints is used like an enum.\n// tslint:disable-next-line:variable-name\nconst Breakpoints = {\n XSmall: '(max-width: 599.98px)',\n Small: '(min-width: 600px) and (max-width: 959.98px)',\n Medium: '(min-width: 960px) and (max-width: 1279.98px)',\n Large: '(min-width: 1280px) and (max-width: 1919.98px)',\n XLarge: '(min-width: 1920px)',\n Handset: '(max-width: 599.98px) and (orientation: portrait), ' + '(max-width: 959.98px) and (orientation: landscape)',\n Tablet: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), ' + '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n Web: '(min-width: 840px) and (orientation: portrait), ' + '(min-width: 1280px) and (orientation: landscape)',\n HandsetPortrait: '(max-width: 599.98px) and (orientation: portrait)',\n TabletPortrait: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)',\n WebPortrait: '(min-width: 840px) and (orientation: portrait)',\n HandsetLandscape: '(max-width: 959.98px) and (orientation: landscape)',\n TabletLandscape: '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n WebLandscape: '(min-width: 1280px) and (orientation: landscape)'\n};\nexport { Breakpoints, LayoutModule };\n","import { Injectable, inject } from '@angular/core'\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout'\nimport { Subject } from 'rxjs'\n@Injectable()\nexport class BreakpointService {\n private breakpointObserver = inject(BreakpointObserver)\n\n public isDesktop = true\n public isLGDesktop = true\n public isXLDesktop = true\n public isXXLDesktop = true\n public isXXXLDesktop = true\n\n public sizeVar = new Subject()\n public size$ = this.sizeVar.asObservable()\n\n public isDesktopVar = new Subject()\n public isMobileVar = new Subject()\n\n public isDesktop$ = this.isDesktopVar.asObservable()\n public isMobile$ = this.isMobileVar.asObservable()\n\n public expandListing = true\n\n constructor() {\n // NOTE: Use the Breakpoint Observer to switch observe\n // mobile/desktop changes...\n this.breakpointObserver\n .observe(['(min-width: 992px)', '(min-width: 1200px)', '(min-width: 1400px)', '(min-width: 2000px)'],)\n .subscribe((state: BreakpointState) => {\n if (this.isDesktop !== state.matches) {\n this.isDesktop = state.matches\n this.isDesktopVar.next(state.matches)\n this.isMobileVar.next(!state.matches)\n }\n\n this.isLGDesktop = false\n this.isXLDesktop = false\n this.isXXLDesktop = false\n this.isXXXLDesktop = state.breakpoints['(min-width: 2000px)']\n if (this.isXXXLDesktop) {\n this.sizeVar.next('XXXLDesktop')\n } else {\n this.isXXLDesktop = state.breakpoints['(min-width: 1400px)']\n if (this.isXXLDesktop) {\n this.sizeVar.next('XXLDesktop')\n } else {\n this.isXLDesktop = state.breakpoints['(min-width: 1200px)']\n if (this.isXLDesktop) {\n this.sizeVar.next('XLDesktop')\n } else {\n this.isLGDesktop = state.breakpoints['(min-width: 992px)']\n }\n if (this.isLGDesktop) {\n this.sizeVar.next('LGDesktop')\n } else if (this.isDesktop) {\n this.sizeVar.next('desktop')\n } else {\n this.sizeVar.next('mobile')\n }\n }\n }\n })\n }\n\n public setExpandListing(value: boolean) {\n this.expandListing = value\n }\n}\n","import {\n Attribute, Directive, ElementRef, Input,\n HostListener, Renderer2 } from '@angular/core'\nimport {\n ActivatedRoute, Router,\n RouterLink, UrlTree } from '@angular/router'\nimport { BreakpointService } from '../services'\n\n@Directive({\n selector: ':not(a):not(area)[libMasterRouterLink]',\n standalone: true\n})\nexport class MasterRouterLinkDirective extends RouterLink {\n\n /* -------------------------------------------- */\n /* NOTE: This directive is pretty simple, the */\n /* important bit here just swaps out the */\n /* 'relativeTo' option, depending on the */\n /* current screen size. */\n /* -------------------------------------------- */\n\n private myCommands: any[] = []\n\n @Input()\n set libMasterRouterLink(myCommands: any[]|string) {\n if (myCommands != null) {\n this.myCommands = Array.isArray(myCommands) ? myCommands : [myCommands]\n } else {\n this.myCommands = []\n }\n }\n\n constructor(\n private breakpointService: BreakpointService,\n private myRouter: Router,\n private myRoute: ActivatedRoute,\n @Attribute('tabindex') tabIndex: string,\n renderer: Renderer2, el: ElementRef) {\n super(myRouter, myRoute, tabIndex, renderer, el)\n }\n\n @HostListener('click')\n override onClick(): boolean {\n this.breakpointService.expandListing = false\n\n\n if (this.queryParams) {\n this.myRouter.navigate(this.myCommands, {\n queryParams: this.queryParams,\n state: this.state,\n fragment: this.fragment\n //relativeTo: myRoute\n })\n } else {\n this.myRouter.navigate(this.myCommands, {\n queryParamsHandling: \"preserve\",\n state: this.state,\n //relativeTo: myRoute\n })\n }\n return true\n }\n}\n","import { Component, OnInit, inject } from '@angular/core'\nimport { BreakpointService } from '../../services'\nimport { animate, query, state, style, transition, trigger } from '@angular/animations'\nimport { RouterOutlet } from '@angular/router'\n\n@Component({\n selector: 'lib-master-detail',\n templateUrl: './master-detail.component.html',\n styleUrls: ['./master-detail.component.scss'],\n animations: [\n trigger('expandListingTrigger', [\n state('collapse', style({\n width: '320px'\n })),\n state('expand', style({\n width: '100%'\n })),\n transition('* => expand', [\n animate('510ms ease-out')\n ]),\n transition('* => collapse', [\n animate('510ms ease-out')\n ])\n ])\n ],\n imports: [RouterOutlet]\n})\nexport class MasterDetailComponent implements OnInit {\n breakpoints = inject(BreakpointService)\n\n\n private isOutletActive = false\n\n ngOnInit() {\n\n }\n\n onOutletActivated($event: any) {\n // Primarily here for debugging...\n this.isOutletActive = true\n }\n\n onOutletDeactivated($event: any) {\n // Primarily here for debugging...\n this.isOutletActive = false\n }\n\n}\n","
\n \n \n
\n\n@if (breakpoints.isDesktop && !breakpoints.expandListing) {\n
\n \n \n
\n}","import { NgModule } from '@angular/core'\nimport { BrowserModule } from '@angular/platform-browser'\nimport { LayoutModule } from '@angular/cdk/layout'\nimport { RouterModule } from '@angular/router'\nimport { MasterDetailComponent } from './components'\nimport { MasterRouterLinkDirective } from './directives'\nimport { BreakpointService } from './services'\n\nconst components = [ MasterDetailComponent ]\nconst directives = [ MasterRouterLinkDirective ]\n\n@NgModule({\n imports: [\n BrowserModule,\n LayoutModule,\n RouterModule.forRoot([]),\n ...components,\n ...directives\n ],\n exports: [\n ...components,\n ...directives\n ],\n providers: [\n BreakpointService\n ]\n})\nexport class LibMasterDetailModule { }\n"],"names":["mediaQueriesForWebkitCompatibility","mediaQueryStyleNode","MediaMatcher","inject","Platform","CSP_NONCE","noopMatchMedia","query","createEmptyStyleRule","__ngFactoryType__","ɵɵdefineInjectable","nonce","BreakpointObserver","NgZone","Subject","value","splitQueries","coerceArray","mediaQuery","observables","stateObservable","combineLatest","concat","take","skip","debounceTime","map","breakpointStates","response","matches","mql","output","Observable","observer","handler","e","startWith","takeUntil","queries","a1","a2","LayoutModule","__ngFactoryType__","ɵɵdefineNgModule","ɵɵdefineInjector","BreakpointService","breakpointObserver","inject","BreakpointObserver","isDesktop","isLGDesktop","isXLDesktop","isXXLDesktop","isXXXLDesktop","sizeVar","Subject","size$","asObservable","isDesktopVar","isMobileVar","isDesktop$","isMobile$","expandListing","constructor","observe","subscribe","state","matches","next","breakpoints","setExpandListing","value","factory","ɵfac","MasterRouterLinkDirective","RouterLink","breakpointService","myRouter","myRoute","myCommands","libMasterRouterLink","Array","isArray","constructor","tabIndex","renderer","el","onClick","expandListing","queryParams","navigate","state","fragment","queryParamsHandling","ɵɵdirectiveInject","BreakpointService","Router","ActivatedRoute","ɵɵinjectAttribute","Renderer2","ElementRef","selectors","hostBindings","rf","ctx","ɵɵlistener","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","onOutletActivated","onOutletDeactivated","ɵɵelementEnd","MasterDetailComponent","breakpoints","inject","BreakpointService","isOutletActive","ngOnInit","selectors","ngContentSelectors","_c0","decls","vars","consts","template","rf","ctx","ɵɵprojection","ɵɵtemplate","MasterDetailComponent_Conditional_2_Template","ɵɵclassProp","isDesktop","expandListing","ɵɵadvance","ɵɵconditional","RouterOutlet","styles","data","animation","trigger","state","style","width","transition","animate","LibMasterDetailModule","BreakpointService","imports","BrowserModule","LayoutModule","RouterModule","forRoot"],"mappings":"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","debug_id":"f0d670c7-b260-527a-bfec-c098d1998376"}