Translated using Weblate (Bengali (Bangladesh))
[oweals/peertube.git] / client / src / hmr.ts
1 import { NgModuleRef, ApplicationRef } from '@angular/core'
2 import { createNewHosts } from '@angularclass/hmr'
3 import { enableDebugTools } from '@angular/platform-browser'
4
5 export const hmrBootstrap = (module: any, bootstrap: () => Promise<NgModuleRef<any>>) => {
6   let ngModule: NgModuleRef<any>
7   module.hot.accept()
8   bootstrap()
9     .then(mod => {
10       ngModule = mod
11
12       const applicationRef = ngModule.injector.get(ApplicationRef)
13       const componentRef = applicationRef.components[ 0 ]
14       // allows to run `ng.profiler.timeChangeDetection();`
15       enableDebugTools(componentRef)
16     })
17   module.hot.dispose(() => {
18     const appRef: ApplicationRef = ngModule.injector.get(ApplicationRef)
19     const elements = appRef.components.map(c => c.location.nativeElement)
20     const makeVisible = createNewHosts(elements)
21     ngModule.destroy()
22     makeVisible()
23   })
24 }