33 lines
1.2 KiB
TypeScript
33 lines
1.2 KiB
TypeScript
// SPDX-FileCopyrightText: 2024 Mehdi Benadel <https://mehdibenadel.com>
|
|
// SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/>
|
|
//
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import type { RegisterClientOptions } from '@peertube/peertube-types/client'
|
|
import { getPtContext, PtContext } from '../contexts/peertube'
|
|
import { LitElement } from 'lit'
|
|
|
|
/**
|
|
* Base class for all Custom Elements.
|
|
*/
|
|
export class LivechatElement extends LitElement {
|
|
public readonly ptContext: PtContext
|
|
public readonly ptOptions: RegisterClientOptions
|
|
public readonly ptTranslate: RegisterClientOptions['peertubeHelpers']['translate']
|
|
public readonly ptNotifier: RegisterClientOptions['peertubeHelpers']['notifier']
|
|
public readonly logger: ReturnType<PtContext['logger']['createLogger']>
|
|
|
|
constructor () {
|
|
super()
|
|
this.ptContext = getPtContext()
|
|
this.ptOptions = this.ptContext.ptOptions
|
|
this.ptNotifier = this.ptOptions.peertubeHelpers.notifier
|
|
this.ptTranslate = this.ptOptions.peertubeHelpers.translate
|
|
this.logger = this.ptContext.logger.createLogger(this.tagName.toLowerCase())
|
|
}
|
|
|
|
protected override createRenderRoot = (): Element | ShadowRoot => {
|
|
return this
|
|
}
|
|
}
|