import { html } from "lit-html";
import { styleMap } from "lit-html/directives/style-map.js";
import { dataUrlToBlob } from "./util";
import { ProfilePictureGeneratorSettings } from "./main";
function fileUpload(text: string, className: string[]) {
return html`
`;
}
function languageSelector(
languages: { id: string; name: string }[],
className: string[],
ariaLabel: string
) {
return html`
`;
}
function zoomIcon() {
return html`
`;
}
function zoomSlider(
title: string,
className: string[],
menuClassName: string[],
) {
// min and max are default values (making it explicit here though);
// actual zoom factor will be non-linear
return html`
`;
}
function imageElement(src: string, altText: string, className: string[]) {
return html`
`;
}
function downloadElement(
text: string,
fileName: string,
href: string,
className: string[]
) {
return html`
${text}
`;
}
function loadingScreen() {
return html`
`;
}
function privacyNote(text: string) {
return html`
${text}
`;
}
function privacyLink(text: string, link: string) {
return html`
${text}
`;
}
export function template(
settings: ProfilePictureGeneratorSettings,
state: { loading: boolean; downloadUrl: string }
) {
const languages: { id: string; name: string }[] = Object.entries(
settings.languages
)
.map(([id, { name }]) => ({
id,
name
}))
.sort(({ name: a }, { name: b }) => a.localeCompare(b));
return html`
${languageSelector(
languages,
settings.languageSelectorClass,
settings.languageSelectorLabel
)}
${fileUpload(settings.uploadButtonTitle, settings.uploadButtonClass)}
${settings.zoom && state.downloadUrl ? zoomSlider(
settings.zoomLabel,
settings.dropDownClass.concat(settings.dropDownButtonClass),
settings.dropDownMenuClass
) : null}
${state.loading
? loadingScreen()
: imageElement(
state.downloadUrl ? state.downloadUrl : settings.imagePreview,
settings.imageAltText,
settings.imageClass
)}
${state.downloadUrl
? downloadElement(
settings.downloadButtonTitle,
settings.fileName,
state.downloadUrl,
settings.downloadButtonClass
)
: null}
${privacyNote(settings.privacyNote)}
${privacyLink(settings.privacyLinkText, settings.privacyLink)}
`;
}