@github/template-parts
Version:
An implementation of the TemplateInstance proposal (https://github.com/w3c/webcomponents/blob/159b1600bab02fe9cd794825440a98537d53b389/proposals/Template-Instantiation.md)
35 lines • 1.28 kB
JavaScript
import { AttributeTemplatePart } from './attribute-template-part.js';
export function createProcessor(processPart) {
return {
processCallback(_, parts, state) {
var _a;
if (typeof state !== 'object' || !state)
return;
for (const part of parts) {
if (part.expression in state) {
const value = (_a = state[part.expression]) !== null && _a !== void 0 ? _a : '';
processPart(part, value, state);
}
}
},
};
}
export function processPropertyIdentity(part, value) {
part.value = value instanceof Node ? value : String(value);
}
export function processBooleanAttribute(part, value) {
if (typeof value === 'boolean' &&
part instanceof AttributeTemplatePart &&
typeof part.element[part.attributeName] === 'boolean') {
part.booleanValue = value;
return true;
}
return false;
}
export const propertyIdentity = createProcessor(processPropertyIdentity);
export const propertyIdentityOrBooleanAttribute = createProcessor((part, value) => {
if (!processBooleanAttribute(part, value)) {
processPropertyIdentity(part, value);
}
});
//# sourceMappingURL=processors.js.map