Initial commit

This commit is contained in:
Alejandro Martinez
2026-02-12 02:04:10 +01:00
commit f09af719cf
13433 changed files with 2193445 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
import { visit } from "unist-util-visit";
const HAST_PRESERVED_PROPERTIES = [
// HAST: className -> HTML: class
"className",
// HAST: htmlFor -> HTML: for
"htmlFor"
];
function rehypeImages() {
return function(tree, file) {
if (!file.data.astro?.localImagePaths?.length && !file.data.astro?.remoteImagePaths?.length) {
return;
}
const imageOccurrenceMap = /* @__PURE__ */ new Map();
visit(tree, "element", (node) => {
if (node.tagName !== "img") return;
if (typeof node.properties?.src !== "string") return;
const src = decodeURI(node.properties.src);
let imageProperties;
if (file.data.astro?.localImagePaths?.includes(src)) {
imageProperties = { ...node.properties, src };
} else if (file.data.astro?.remoteImagePaths?.includes(src)) {
imageProperties = {
// By default, markdown images won't have width and height set. However, just in case another user plugin does set these, we should respect them.
inferSize: "width" in node.properties && "height" in node.properties ? void 0 : true,
...node.properties,
src
};
} else {
return;
}
const hastProperties = {};
for (const key of HAST_PRESERVED_PROPERTIES) {
if (key in imageProperties) {
hastProperties[key] = imageProperties[key];
delete imageProperties[key];
}
}
const index = imageOccurrenceMap.get(node.properties.src) || 0;
imageOccurrenceMap.set(node.properties.src, index + 1);
node.properties = {
...hastProperties,
__ASTRO_IMAGE_: JSON.stringify({ ...imageProperties, index })
};
});
};
}
export {
rehypeImages
};