{ "version": 3, "sources": ["apps/partner-center-client/src/lib/zendesk.ts", "apps/partner-center-client/src/app/side-drawer/dynamic-open-close-template-ref.service.ts"], "sourcesContent": ["// probeForZendeskLauncher is for when the side drawer is open, but the zendesk widget has not rendered yet\n// we continue to check the DOM every 250ms to see if the zendesk has rendered and hide it if the drawer is open\n// *** this rarely happens but we still need to handle it\nexport function probeForZendeskLauncherForSideDrawer(): void {\n if (!isSideDrawerOpen()) {\n return;\n }\n window.setTimeout(() => {\n const launcher = getZendeskLauncher();\n if (launcher) {\n closeZendeskLauncher();\n } else {\n probeForZendeskLauncherForSideDrawer();\n }\n }, 250);\n}\nexport function probeForZendeskLauncherThenClose(): void {\n window.setTimeout(() => {\n const launcher = getZendeskLauncher();\n if (launcher) {\n closeZendeskLauncher();\n } else {\n probeForZendeskLauncherThenClose();\n }\n }, 250);\n}\nexport function getZendeskLauncher(): HTMLElement {\n return document.querySelector('#launcher') || null;\n}\n\nexport function closeZendeskLauncher(): void {\n const launcher = getZendeskLauncher();\n if (launcher) {\n launcher.parentElement.style.display = 'none';\n }\n}\n\nexport function openZendeskLauncher(): void {\n const launcher = getZendeskLauncher();\n if (launcher) {\n launcher.parentElement.style.display = '';\n }\n}\n\nfunction isSideDrawerOpen(): boolean {\n const sideDrawer = document.querySelector('.mat-drawer-end');\n return !!sideDrawer;\n}\n\nexport function checkZendeskIsOpen(): boolean {\n const launcher = getZendeskLauncher();\n if (launcher) {\n return launcher.parentElement.style.display === '';\n }\n}\n", "import { Injectable, TemplateRef } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map, publishReplay, refCount } from 'rxjs/operators';\nimport {\n checkZendeskIsOpen,\n closeZendeskLauncher,\n getZendeskLauncher,\n openZendeskLauncher,\n probeForZendeskLauncherForSideDrawer,\n} from '../../lib/zendesk';\nimport { displayPendingChangesDialog } from '../core/guards/pending-changes-guard.service';\n\nexport interface DynamicOpenCloseTemplateRef {\n id: string;\n templateRef: TemplateRef;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DynamicOpenCloseTemplateRefService {\n private templateMap = new Map>();\n private openTemplate$$ = new BehaviorSubject('');\n private hasPendingChanges$$ = new BehaviorSubject(false);\n openTemplate$: Observable;\n open$: Observable;\n isZendeskOpen = false;\n\n constructor() {\n this.openTemplate$ = this.openTemplate$$.pipe(\n map((t) => {\n const templateRef = this.templateMap.get(t);\n const id = templateRef ? t : '';\n return {\n id: id,\n templateRef: templateRef,\n };\n }),\n publishReplay(1),\n refCount(),\n );\n\n this.open$ = this.openTemplate$$.pipe(map((a) => !!a));\n }\n\n updatePendingChanges(hasChanges: boolean): void {\n this.hasPendingChanges$$.next(hasChanges);\n }\n\n close(id?: string): void {\n let discardChanges = true;\n if (this.hasPendingChanges$$.getValue()) {\n discardChanges = displayPendingChangesDialog();\n }\n if (!discardChanges) {\n return;\n }\n\n if (id) {\n if (this.openTemplate$$.getValue() === id) {\n this.openTemplate$$.next('');\n }\n } else {\n this.openTemplate$$.next('');\n }\n\n const launcher = getZendeskLauncher();\n if (!!launcher && this.isZendeskOpen) {\n openZendeskLauncher();\n }\n }\n\n registerTemplate(id: string, template: TemplateRef): void {\n this.templateMap.set(id, template);\n if (this.openTemplate$$.getValue() === id) {\n this.open(id);\n }\n }\n\n open(id: string): void {\n window.setTimeout(() => {\n this.openTemplate$$.next(id);\n this.isZendeskOpen = checkZendeskIsOpen();\n\n const launcher = getZendeskLauncher();\n if (launcher) {\n closeZendeskLauncher();\n } else {\n probeForZendeskLauncherForSideDrawer();\n }\n });\n }\n\n toggle(id: string): void {\n const launcher = getZendeskLauncher();\n if (this.openTemplate$$.getValue() === id) {\n this.openTemplate$$.next('');\n if (!!launcher && this.isZendeskOpen) {\n openZendeskLauncher();\n }\n } else {\n this.openTemplate$$.next(id);\n this.isZendeskOpen = checkZendeskIsOpen();\n if (launcher) {\n closeZendeskLauncher();\n } else {\n probeForZendeskLauncherForSideDrawer();\n }\n }\n }\n}\n"], "mappings": "8GAGM,SAAUA,GAAoC,CAC7CC,EAAgB,GAGrBC,OAAOC,WAAW,IAAK,CACJC,EAAkB,EAEjCC,EAAoB,EAEpBL,EAAoC,CAExC,EAAG,GAAG,CACR,CACM,SAAUM,GAAgC,CAC9CJ,OAAOC,WAAW,IAAK,CACJC,EAAkB,EAEjCC,EAAoB,EAEpBC,EAAgC,CAEpC,EAAG,GAAG,CACR,CACM,SAAUF,GAAkB,CAChC,OAAOG,SAASC,cAAc,WAAW,GAAK,IAChD,CAEM,SAAUH,GAAoB,CAClC,IAAMI,EAAWL,EAAkB,EAC/BK,IACFA,EAASC,cAAcC,MAAMC,QAAU,OAE3C,CAEM,SAAUC,GAAmB,CACjC,IAAMJ,EAAWL,EAAkB,EAC/BK,IACFA,EAASC,cAAcC,MAAMC,QAAU,GAE3C,CAEA,SAASX,GAAgB,CAEvB,MAAO,CAAC,CADWM,SAASC,cAAc,iBAAiB,CAE7D,CAEM,SAAUM,GAAkB,CAChC,IAAML,EAAWL,EAAkB,EACnC,GAAIK,EACF,OAAOA,EAASC,cAAcC,MAAMC,UAAY,EAEpD,CCpCA,IAAaG,GAAkC,IAAA,CAAzC,IAAOA,EAAP,MAAOA,CAAkC,CAQ7CC,aAAA,CAPQ,KAAAC,YAAc,IAAIC,IAClB,KAAAC,eAAiB,IAAIC,EAAwB,EAAE,EAC/C,KAAAC,oBAAsB,IAAID,EAAyB,EAAK,EAGhE,KAAAE,cAAgB,GAGd,KAAKC,cAAgB,KAAKJ,eAAeK,KACvCC,EAAKC,GAAK,CACR,IAAMC,EAAc,KAAKV,YAAYW,IAAIF,CAAC,EAE1C,MAAO,CACLG,GAFSF,EAAcD,EAAI,GAG3BC,YAAaA,EAEjB,CAAC,EACDG,EAAc,CAAC,EACfC,EAAQ,CAAE,EAGZ,KAAKC,MAAQ,KAAKb,eAAeK,KAAKC,EAAKQ,GAAM,CAAC,CAACA,CAAC,CAAC,CACvD,CAEAC,qBAAqBC,EAAmB,CACtC,KAAKd,oBAAoBe,KAAKD,CAAU,CAC1C,CAEAE,MAAMR,EAAW,CACf,IAAIS,EAAiB,GAIrB,GAHI,KAAKjB,oBAAoBkB,SAAQ,IACnCD,EAAiBE,EAA2B,GAE1C,CAACF,EACH,OAGET,EACE,KAAKV,eAAeoB,SAAQ,IAAOV,GACrC,KAAKV,eAAeiB,KAAK,EAAE,EAG7B,KAAKjB,eAAeiB,KAAK,EAAE,EAGZK,EAAkB,GACjB,KAAKnB,eACrBoB,EAAmB,CAEvB,CAEAC,iBAAiBd,EAAYe,EAA0B,CACrD,KAAK3B,YAAY4B,IAAIhB,EAAIe,CAAQ,EAC7B,KAAKzB,eAAeoB,SAAQ,IAAOV,GACrC,KAAKiB,KAAKjB,CAAE,CAEhB,CAEAiB,KAAKjB,EAAU,CACbkB,OAAOC,WAAW,IAAK,CACrB,KAAK7B,eAAeiB,KAAKP,CAAE,EAC3B,KAAKP,cAAgB2B,EAAkB,EAEtBR,EAAkB,EAEjCS,EAAoB,EAEpBC,EAAoC,CAExC,CAAC,CACH,CAEAC,OAAOvB,EAAU,CACf,IAAMwB,EAAWZ,EAAkB,EAC/B,KAAKtB,eAAeoB,SAAQ,IAAOV,GACrC,KAAKV,eAAeiB,KAAK,EAAE,EACrBiB,GAAY,KAAK/B,eACrBoB,EAAmB,IAGrB,KAAKvB,eAAeiB,KAAKP,CAAE,EAC3B,KAAKP,cAAgB2B,EAAkB,EACnCI,EACFH,EAAoB,EAEpBC,EAAoC,EAG1C,yCAzFWpC,EAAkC,wBAAlCA,EAAkCuC,QAAlCvC,EAAkCwC,UAAAC,WADrB,MAAM,CAAA,EAC1B,IAAOzC,EAAP0C,SAAO1C,CAAkC,GAAA", "names": ["probeForZendeskLauncherForSideDrawer", "isSideDrawerOpen", "window", "setTimeout", "getZendeskLauncher", "closeZendeskLauncher", "probeForZendeskLauncherThenClose", "document", "querySelector", "launcher", "parentElement", "style", "display", "openZendeskLauncher", "checkZendeskIsOpen", "DynamicOpenCloseTemplateRefService", "constructor", "templateMap", "Map", "openTemplate$$", "BehaviorSubject", "hasPendingChanges$$", "isZendeskOpen", "openTemplate$", "pipe", "map", "t", "templateRef", "get", "id", "publishReplay", "refCount", "open$", "a", "updatePendingChanges", "hasChanges", "next", "close", "discardChanges", "getValue", "displayPendingChangesDialog", "getZendeskLauncher", "openZendeskLauncher", "registerTemplate", "template", "set", "open", "window", "setTimeout", "checkZendeskIsOpen", "closeZendeskLauncher", "probeForZendeskLauncherForSideDrawer", "toggle", "launcher", "factory", "\u0275fac", "providedIn", "_DynamicOpenCloseTemplateRefService"] }