@intlayer/core
Version:
Includes core Intlayer functions like translation, dictionary, and utility functions shared across multiple packages.
61 lines (59 loc) • 1.93 kB
JavaScript
import * as NodeTypes from "@intlayer/types/nodeType";
//#region src/dictionaryManipulator/getDefaultNode.ts
const getDefaultNode = (nodeType, locales, content) => {
const clonedContent = structuredClone(content);
switch (nodeType) {
case NodeTypes.TRANSLATION: return {
nodeType: NodeTypes.TRANSLATION,
[NodeTypes.TRANSLATION]: Object.assign({}, ...locales.map((locale) => ({ [locale]: structuredClone(clonedContent) ?? "" })))
};
case NodeTypes.ENUMERATION: return {
nodeType: NodeTypes.ENUMERATION,
[NodeTypes.ENUMERATION]: { "1": clonedContent ?? "" }
};
case NodeTypes.PLURAL: return {
nodeType: NodeTypes.PLURAL,
[NodeTypes.PLURAL]: {
one: clonedContent ?? "",
other: clonedContent ?? ""
}
};
case NodeTypes.CONDITION: return {
nodeType: NodeTypes.CONDITION,
[NodeTypes.CONDITION]: {
true: clonedContent ?? "",
false: clonedContent ?? ""
}
};
case NodeTypes.INSERTION: return {
nodeType: NodeTypes.INSERTION,
[NodeTypes.INSERTION]: { insertion: clonedContent ?? "" }
};
case NodeTypes.NESTED: return {
nodeType: NodeTypes.NESTED,
[NodeTypes.NESTED]: { dictionaryKey: "" }
};
case NodeTypes.MARKDOWN: return {
nodeType: NodeTypes.MARKDOWN,
[NodeTypes.MARKDOWN]: clonedContent ?? ""
};
case NodeTypes.HTML: return {
nodeType: NodeTypes.HTML,
[NodeTypes.HTML]: clonedContent ?? "",
customComponents: []
};
case NodeTypes.FILE: return {
nodeType: NodeTypes.FILE,
[NodeTypes.FILE]: clonedContent ?? ""
};
case NodeTypes.OBJECT: return { newKey: clonedContent ?? "" };
case NodeTypes.ARRAY: return [clonedContent ?? ""];
case NodeTypes.TEXT: return clonedContent ?? "";
case NodeTypes.NUMBER: return clonedContent ?? 0;
case NodeTypes.BOOLEAN: return clonedContent ?? true;
default: return clonedContent ?? "";
}
};
//#endregion
export { getDefaultNode };
//# sourceMappingURL=getDefaultNode.mjs.map