/**
*
* @param {HTMLDivElement} editor 要操作的编辑器dom,还未想好怎么用
* @param {String} tagName IMG | AUDIO
* @param {String} value 相对于本地电脑资源的路径
*/
export function insertTagToEditor(editor, tagName, value, attributes = {}) {
let sel, range;
if (window.getSelection) {
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
// TODO:
// if (tagName === "AUDIO") {
// const el = document.createElement("audio");
// el.src = value;
// el.className = "audio";
// // el.style = "height: 18px; width: 180px;";
// el.controls = true;
// el.controlsList = "nodownload";
// // el.draggable = true;
// range.insertNode(el);
// }
if (tagName === "IMG") {
const el = document.createElement("img");
// console.log(value);
el.src = value;
el.dataset.isImage = true;
if (Object.keys(attributes).length) {
Object.keys(attributes).forEach((k) => {
el.setAttribute(k, attributes[k]);
});
}
range.insertNode(el);
range.collapse();
}
editor && editor.dispatchEvent(new Event("input"));
}
}
}
/**
* 将音频路径转换为图片占位符
*
* @param {aduioSrc} value 相对于本地电脑资源的路径
* @returns {HTMLImageElement} 图片节点
*/
export async function audioToImageNode(audioSrc) {
const duration = 1;
const el = document.createElement("img");
el.src = "/img/editor/text_audio.png";
el.dataset.isAudio = true;
el.dataset.audioSrc = audioSrc;
el.dataset.duration = duration;
const mDuration = require("moment").unix(0);
mDuration.second(duration);
el.title = mDuration.format("mm:ss");
el.className = "audio";
return el;
}
/**
* 获取答题点序号图片base64
* @param {number} serialNo 答题点序号
* @returns dataUrl
*/
export function getAnswerPointImg(serialNo) {
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
canvas.width = 64;
canvas.height = 32;
ctx.font = "bolder 30px serif";
ctx.textAlign = "center";
ctx.textBaseline = "middle";
ctx.fillText(`(${serialNo})`, 32, 16);
return canvas.toDataURL();
}
export function base64ToBlob(base64Str) {
var bytes = atob(base64Str.split(",")[1]);
let arr = new Uint8Array(bytes.length);
for (let i = 0; i < bytes.length; i++) {
arr[i] = bytes.charCodeAt(i);
}
return new Blob([arr], { type: "image/png" });
}