2025-05-12 05:38:44 +09:00

44 lines
1.6 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const crc_1 = __importDefault(require("crc"));
const path_1 = __importDefault(require("path"));
const images_1 = __importDefault(require("../../utils/images"));
const fs_1 = __importDefault(require("../../utils/fs"));
const location_1 = __importDefault(require("../../utils/location"));
const editHTMLElement_1 = __importDefault(require("./editHTMLElement"));
/**
Convert all inline PNG images to PNG file
@param {string} rootFolder
@param {HTMLDom} $
@return {Promise}
*/
function inlinePng(rootFolder, currentFile, $) {
const currentDirectory = path_1.default.dirname(currentFile);
return (0, editHTMLElement_1.default)($, "img", ($img) => {
const src = $img.attr("src");
if (!location_1.default.isDataURI(src)) {
return;
}
// We avoid generating twice the same PNG
const hash = crc_1.default.crc32(src).toString(16);
let fileName = `${hash}.png`;
// Result file path
const filePath = path_1.default.join(rootFolder, fileName);
return fs_1.default
.assertFile(filePath, () => {
return images_1.default.convertInlinePNG(src, filePath);
})
.then(() => {
// Convert filename to a relative filename
fileName = location_1.default.relative(currentDirectory, fileName);
// Replace src
$img.attr("src", fileName);
});
});
}
exports.default = inlinePng;