Initial commit
This commit is contained in:
49
node_modules/@astrojs/markdown-remark/dist/rehype-images.js
generated
vendored
Normal file
49
node_modules/@astrojs/markdown-remark/dist/rehype-images.js
generated
vendored
Normal 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
|
||||
};
|
||||
Reference in New Issue
Block a user