import { html } from "/js/lib/lit-html.js";
import {
getLabelNameAndDescription,
isBadgeLabel,
getDefaultLabelSetting,
} from "/js/dataHelpers.js";
import { classnames, noop } from "/js/utils.js";
function doShowWarnButton(labelDefinition) {
return !(
labelDefinition.blurs === "none" && labelDefinition.severity === "none"
);
}
function getWarnLabel(labelDefinition) {
if (!isBadgeLabel(labelDefinition)) {
return "Warn";
}
return labelDefinition.severity === "inform" ? "Show badge" : "Warn";
}
function labelPreferenceRowTemplate({
labelDefinition,
value,
isSubscribed,
onClick,
}) {
const { name, description } = getLabelNameAndDescription(labelDefinition);
const showWarnButton = doShowWarnButton(labelDefinition);
return html`
${name}
${description
? html`
${description}
`
: null}
${isSubscribed
? html`
${showWarnButton
? html`
`
: null}
`
: null}
`;
}
export function labelerSettingsTemplate({
labelerInfo,
isSubscribed,
labelerSettings,
onClick = noop,
}) {
const labelValueDefinitions =
labelerInfo.policies?.labelValueDefinitions || [];
const configurableLabels = labelValueDefinitions.filter(
(def) => !def.identifier.startsWith("!"),
);
if (configurableLabels.length === 0) {
return html`
`;
}
return html`
${configurableLabels.map((labelDefinition) => {
const currentSetting = labelerSettings.find(
(pref) => pref.label === labelDefinition.identifier,
);
const value = currentSetting
? currentSetting.visibility
: getDefaultLabelSetting(labelDefinition);
return labelPreferenceRowTemplate({
labelDefinition,
value,
isSubscribed,
onClick: (newValue) => {
if (newValue !== value) {
onClick(labelDefinition.identifier, newValue);
}
},
});
})}
`;
}