"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;