ember-source
Version:
A JavaScript framework for creating ambitious web applications
31 lines (28 loc) • 1.07 kB
JavaScript
import { d as debugToString } from './debug-to-string-CFb7h0lY.js';
const TEMPLATES = new WeakMap();
const getPrototypeOf = Reflect.getPrototypeOf;
function setComponentTemplate(factory, obj) {
if (!(obj !== null && (typeof obj === 'object' || typeof obj === 'function'))) {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme
throw new Error(`Cannot call \`setComponentTemplate\` on \`${debugToString(obj)}\``);
}
if (TEMPLATES.has(obj)) {
throw new Error(
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme
`Cannot call \`setComponentTemplate\` multiple times on the same class (\`${debugToString(obj)}\`)`);
}
TEMPLATES.set(obj, factory);
return obj;
}
function getComponentTemplate(obj) {
let pointer = obj;
while (pointer !== null) {
let template = TEMPLATES.get(pointer);
if (template !== undefined) {
return template;
}
pointer = getPrototypeOf(pointer);
}
return undefined;
}
export { getComponentTemplate as g, setComponentTemplate as s };