import { createContext, provide } from "@lit/context"; import { BaseElement } from "../../hierarchy/BaseElement"; export type ContextSetter = (value: T) => void export const pngExportWidthContext = createContext("pngExportWidthContext"); export const pngExportWidthSetterContext = createContext>("pngExportWidthSetterContext"); export const pngExportFsContext = createContext("png-export-width-context"); export const pngExportFsSetterContext = createContext>("png-export-width-setter-context"); export const pngExportAnalysisContext = createContext("pngExportAnalysisContext"); export const pngExportAnalysisSetterContext = createContext>("pngExportAnalysisSetterContext"); export const pngExportScaleContext = createContext("pngExportScaleContext"); export const pngExportScaleSetterContext = createContext>("pngExportScaleSetterContext") export const pngExportFileNameContext = createContext("pngExportFileNameContext"); export const pngExportFileNameSetterContext = createContext>("pngExportFileNameSetterContext") export const pngExportFileDateContext = createContext("pngExportFileDateContext"); export const pngExportFileDateSetterContext = createContext>("pngExportFileDateSetterContext") export const pngExportLicenseContext = createContext("pngExportLicenseContext"); export const pngExportLicenseSetterContext = createContext>("pngExportLicenseSetterContext") export const pngExportColumnsContext = createContext("pngExportColumnsContext"); export const pngExportColumnsSetterContext = createContext>("pngExportColumnsSetterContext") export const pngExportGroupNameContext = createContext("pngExportGroupNameContext"); export const pngExportGroupNameSetterContext = createContext>("pngExportGroupNameSetterContext") export interface IWithPngExportContext { pngWidth: number; pngFs: number; pngAnalyses: boolean; pngExportScale: boolean; pngExportLicense: boolean; pngExportFileName: boolean; pngExportFileDate: boolean; pngExportColumns: number; pngExportGroupName: boolean; pngWidthSetter: ContextSetter; pngFsSetter: ContextSetter; pngExportAnalysesSetter: ContextSetter; pngExportScaleSetter: ContextSetter; pngExportLicenseSetter: ContextSetter; pngExportFileNameSetter: ContextSetter; pngExportFileDateSetter: ContextSetter; pngExportColumnsSetter: ContextSetter; pngExportGroupNameSetter: ContextSetter; } export abstract class BaseAppWithPngExportContext extends BaseElement implements IWithPngExportContext { @provide({ context: pngExportWidthContext }) public pngWidth: number = 1200; @provide({ context: pngExportWidthSetterContext }) public pngWidthSetter = (value: number) => { this.pngWidth = value; } @provide({ context: pngExportFsContext }) public pngFs: number = 20; @provide({ context: pngExportFsSetterContext }) public pngFsSetter = (value: number) => { this.pngFs = value; } @provide({ context: pngExportAnalysisContext }) public pngAnalyses: boolean = true; @provide({ context: pngExportAnalysisSetterContext }) public pngExportAnalysesSetter: ContextSetter = value => this.pngAnalyses = value; @provide({ context: pngExportScaleContext }) public pngExportScale: boolean = true; @provide({ context: pngExportScaleSetterContext }) public pngExportScaleSetter: ContextSetter = value => this.pngExportScale = value; @provide({ context: pngExportLicenseContext }) public pngExportLicense: boolean = true; @provide({ context: pngExportLicenseSetterContext }) public pngExportLicenseSetter: ContextSetter = value => this.pngExportLicense = value; @provide({ context: pngExportFileNameContext }) public pngExportFileName: boolean = false; @provide({ context: pngExportFileNameSetterContext }) public pngExportFileNameSetter: ContextSetter = value => this.pngExportFileName = value; @provide({ context: pngExportFileDateContext }) public pngExportFileDate: boolean = true; @provide({ context: pngExportFileDateSetterContext }) public pngExportFileDateSetter: ContextSetter = value => this.pngExportFileDate = value; @provide({ context: pngExportColumnsContext }) public pngExportColumns: number = 2; @provide({ context: pngExportColumnsSetterContext }) public pngExportColumnsSetter: ContextSetter = value => this.pngExportColumns = value; @provide({ context: pngExportGroupNameContext }) public pngExportGroupName: boolean = true; @provide({ context: pngExportGroupNameSetterContext }) public pngExportGroupNameSetter: ContextSetter = value => this.pngExportGroupName = value; } export const pngAuthorContext = createContext("pngAuthorContext"); export const pngAuthorSetterContext = createContext>("pngAuthorSetterContext");