]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - client/src/app/shared/shared-custom-markup/custom-markup-container.component.ts
Merge branch 'release/5.0.0' into develop
[github/Chocobozzz/PeerTube.git] / client / src / app / shared / shared-custom-markup / custom-markup-container.component.ts
1 import { Component, ElementRef, Input, OnChanges, ViewChild } from '@angular/core'
2 import { CustomMarkupService } from './custom-markup.service'
3
4 @Component({
5 selector: 'my-custom-markup-container',
6 templateUrl: './custom-markup-container.component.html'
7 })
8 export class CustomMarkupContainerComponent implements OnChanges {
9 @ViewChild('contentWrapper', { static: true }) contentWrapper: ElementRef<HTMLInputElement>
10
11 @Input() content: string | HTMLDivElement
12
13 displayed = false
14
15 constructor (
16 private customMarkupService: CustomMarkupService
17 ) { }
18
19 async ngOnChanges () {
20 await this.rebuild()
21 }
22
23 private async rebuild () {
24 if (this.content instanceof HTMLDivElement) {
25 return this.loadElement(this.content)
26 }
27
28 const { rootElement, componentsLoaded } = await this.customMarkupService.buildElement(this.content)
29 await componentsLoaded
30
31 return this.loadElement(rootElement)
32 }
33
34 private loadElement (el: HTMLDivElement) {
35 this.contentWrapper.nativeElement.appendChild(el)
36
37 this.displayed = true
38 }
39 }