@paroicms/server
Version:
The ParoiCMS server
80 lines • 3.73 kB
JavaScript
import { getPartTypeByName } from "@paroicms/internal-anywhere-lib";
import { encodeLNodeId } from "@paroicms/public-anywhere-lib";
import { toTpSourceMedia } from "../common/medias/to-media-values.js";
import { getNodeTypeLabel } from "../helpers/label-translator.helper.js";
import { createLiquidDrop } from "../liquidjs-tools/liquidjs-drop.js";
import { loadPublicFieldValues } from "./field-values.js";
import { loadDefaultImage } from "./load-default-image.js";
import { formatListOfPartValues, keyOfParentPartData, } from "./parts.queries.js";
export function createPartDrop(renderingContext, docValues, options) {
const { siteContext } = renderingContext;
const partType = getPartTypeByName(siteContext.siteSchema, docValues.type);
const typeLabel = getNodeTypeLabel(siteContext.siteSchema, {
language: docValues.language,
typeName: docValues.type,
});
return createLiquidDrop(renderingContext, {
renderingCacheKey: `part:${encodeLNodeId(docValues)}:${options.fieldNames?.join(",") ?? "full"}`,
values: {
kind: "part",
leafType: async () => {
siteContext.logger.warn("'leafType' is deprecated, use 'type' instead");
return docValues.type;
},
get leafId() {
siteContext.logger.warn("'leafId' is deprecated, use 'nodeId' instead");
return docValues.nodeId;
},
id: encodeLNodeId(docValues),
...docValues,
typeLabel: typeLabel,
num: () => {
siteContext.logger.warn("'num' is deprecated, use 'number' instead");
return docValues.number;
},
defaultImage: async () => {
const image = await loadDefaultImage(renderingContext, {
fieldTypes: partType.fields,
nodeId: docValues.nodeId,
language: docValues.language,
});
return image ? toTpSourceMedia(renderingContext, image) : undefined;
},
defaultImageId: async () => {
siteContext.logger.warn("'defaultImageId' is deprecated, use 'defaultImage' instead");
const image = await loadDefaultImage(renderingContext, {
fieldTypes: partType.fields,
nodeId: docValues.nodeId,
language: docValues.language,
});
return image?.id;
},
field: () => loadPublicFieldValues(renderingContext, {
typeName: docValues.type,
lNodeId: docValues,
fieldNames: options.fieldNames,
}),
fields: () => {
siteContext.logger.warn("'part.fields' is deprecated, use 'part.field' instead");
return loadPublicFieldValues(renderingContext, {
typeName: docValues.type,
lNodeId: docValues,
fieldNames: options.fieldNames,
});
},
parts: () => {
if (!partType.list)
return;
const completedItems = options.byParent.get(keyOfParentPartData({
listName: partType.list.listName,
parentNodeId: docValues.nodeId,
}));
if (!completedItems)
return;
const rawItems = formatListOfPartValues(siteContext, completedItems, partType.list);
return rawItems.map((item) => createPartDrop(renderingContext, item, options));
},
},
});
}
//# sourceMappingURL=create-part-drop.js.map