{ "version": 3, "sources": ["src/app/services/detailsPanel/details-panel.service.ts"], "sourcesContent": ["import { ComponentPortal, ComponentType, Portal, TemplatePortal } from '@angular/cdk/portal';\r\nimport { ComponentFactoryResolver, ComponentRef, Injectable, InjectionToken, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { Subject, from } from 'rxjs';\r\nimport RecommendationDetailsComponent from 'src/app/features/recommendation-details/recommendation-details.component';\r\n\r\nexport const REC_ID_INECTION_TOKEN = new InjectionToken('id');\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DetailsPanelService {\r\n /** The panel. */\r\n panel?: MatSidenav;\r\n private viewContainerRef?: ViewContainerRef;\r\n private panelPortal$ = new Subject | null>();\r\n\r\n /** Retrieves the current panel portal as an `Observable`. */\r\n get panelPortal() {\r\n return from(this.panelPortal$);\r\n }\r\n\r\n /** Sets the view container ref needed for {@link #setPanelContent}. */\r\n setViewContainerRef(vcr: ViewContainerRef) {\r\n this.viewContainerRef = vcr;\r\n }\r\n\r\n /** Sets the panel portal to the specified portal. */\r\n setPanelPortal(panelPortal: Portal) {\r\n this.panelPortal$.next(panelPortal);\r\n }\r\n\r\n /**\r\n * Sets the panel content.\r\n * @param componentOrTemplateRef The component/template reference used.\r\n * @see PanelService#setPanelPortal\r\n */\r\n setPanelContent(componentOrTemplateRef: ComponentType | TemplateRef, dataIDinjectToken?: InjectionToken, data?: number) {\r\n let portal: Portal;\r\n if (componentOrTemplateRef instanceof TemplateRef) {\r\n const vcr = this.viewContainerRef ? this.viewContainerRef : null;\r\n portal = new TemplatePortal(componentOrTemplateRef, vcr!);\r\n } else {\r\n if (dataIDinjectToken) {\r\n // Dynamically create component with input data\r\n portal = new ComponentPortal(\r\n componentOrTemplateRef, \r\n null, \r\n Injector.create({\r\n providers: [{ provide: dataIDinjectToken, useValue: data }],\r\n }));\r\n } else {\r\n portal = new ComponentPortal(componentOrTemplateRef);\r\n }\r\n }\r\n\r\n this.panelPortal$.next(portal);\r\n }\r\n\r\n /** Resets the current panel portal. */\r\n clearPanelPortal() {\r\n this.panelPortal$.next(null);\r\n }\r\n\r\n /** Opens the panel with optionally a portal to be set. */\r\n open(portal?: Portal) {\r\n if (portal) {\r\n this.panelPortal$.next(portal);\r\n }\r\n return this.panel?.open();\r\n }\r\n\r\n /** Toggles the panel. */\r\n toggle() {\r\n return this.panel?.toggle();\r\n }\r\n\r\n /** Closes the panel. */\r\n close() {\r\n return this.panel?.close();\r\n }\r\n}\r\n"], "mappings": "8HAMO,IAAMA,EAAwB,IAAIC,EAAuB,IAAI,EAKvDC,GAAmB,IAAA,CAA1B,IAAOA,EAAP,MAAOA,CAAmB,CAHhCC,aAAA,CAOY,KAAAC,aAAe,IAAIC,EAG3B,IAAIC,aAAW,CACX,OAAOC,EAAK,KAAKH,YAAY,CACjC,CAGAI,oBAAoBC,EAAqB,CACrC,KAAKC,iBAAmBD,CAC5B,CAGAE,eAAeL,EAAwB,CACnC,KAAKF,aAAaQ,KAAKN,CAAW,CACtC,CAOAO,gBAAgBC,EAA0FC,EAA4CC,EAAa,CAC/J,IAAIC,EACJ,GAAIH,aAAkCI,EAAa,CAC/C,IAAMT,EAAM,KAAKC,iBAAmB,KAAKA,iBAAmB,KAC5DO,EAAS,IAAIE,EAAeL,EAAwBL,CAAI,CAC5D,MACQM,EAEAE,EAAS,IAAIG,EACGN,EACA,KACAO,EAASC,OAAO,CACZC,UAAW,CAAC,CAAEC,QAAST,EAAmBU,SAAUT,CAAI,CAAE,EAC7D,CAAC,EAElBC,EAAS,IAAIG,EAAgBN,CAAsB,EAI3D,KAAKV,aAAaQ,KAAKK,CAAM,CACjC,CAGAS,kBAAgB,CACZ,KAAKtB,aAAaQ,KAAK,IAAI,CAC/B,CAGAe,KAAKV,EAAoB,CACrB,OAAIA,GACA,KAAKb,aAAaQ,KAAKK,CAAM,EAE1B,KAAKW,OAAOD,KAAI,CAC3B,CAGAE,QAAM,CACF,OAAO,KAAKD,OAAOC,OAAM,CAC7B,CAGAC,OAAK,CACD,OAAO,KAAKF,OAAOE,MAAK,CAC5B,yCArES5B,EAAmB,wBAAnBA,EAAmB6B,QAAnB7B,EAAmB8B,UAAAC,WAFhB,MAAM,CAAA,EAEhB,IAAO/B,EAAPgC,SAAOhC,CAAmB,GAAA", "names": ["REC_ID_INECTION_TOKEN", "InjectionToken", "DetailsPanelService", "constructor", "panelPortal$", "Subject", "panelPortal", "from", "setViewContainerRef", "vcr", "viewContainerRef", "setPanelPortal", "next", "setPanelContent", "componentOrTemplateRef", "dataIDinjectToken", "data", "portal", "TemplateRef", "TemplatePortal", "ComponentPortal", "Injector", "create", "providers", "provide", "useValue", "clearPanelPortal", "open", "panel", "toggle", "close", "factory", "\u0275fac", "providedIn", "_DetailsPanelService"] }