70 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import { toArray, createNamespace, isFunction } from "../utils/index.mjs";
 | 
						|
const [name, bem, t] = createNamespace("uploader");
 | 
						|
function readFileContent(file, resultType) {
 | 
						|
  return new Promise((resolve) => {
 | 
						|
    if (resultType === "file") {
 | 
						|
      resolve();
 | 
						|
      return;
 | 
						|
    }
 | 
						|
    const reader = new FileReader();
 | 
						|
    reader.onload = (event) => {
 | 
						|
      resolve(event.target.result);
 | 
						|
    };
 | 
						|
    if (resultType === "dataUrl") {
 | 
						|
      reader.readAsDataURL(file);
 | 
						|
    } else if (resultType === "text") {
 | 
						|
      reader.readAsText(file);
 | 
						|
    }
 | 
						|
  });
 | 
						|
}
 | 
						|
function isOversize(items, maxSize) {
 | 
						|
  return toArray(items).some((item) => {
 | 
						|
    if (item.file) {
 | 
						|
      if (isFunction(maxSize)) {
 | 
						|
        return maxSize(item.file);
 | 
						|
      }
 | 
						|
      return item.file.size > +maxSize;
 | 
						|
    }
 | 
						|
    return false;
 | 
						|
  });
 | 
						|
}
 | 
						|
function filterFiles(items, maxSize) {
 | 
						|
  const valid = [];
 | 
						|
  const invalid = [];
 | 
						|
  items.forEach((item) => {
 | 
						|
    if (isOversize(item, maxSize)) {
 | 
						|
      invalid.push(item);
 | 
						|
    } else {
 | 
						|
      valid.push(item);
 | 
						|
    }
 | 
						|
  });
 | 
						|
  return { valid, invalid };
 | 
						|
}
 | 
						|
const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg|avif)/i;
 | 
						|
const isImageUrl = (url) => IMAGE_REGEXP.test(url);
 | 
						|
function isImageFile(item) {
 | 
						|
  if (item.isImage) {
 | 
						|
    return true;
 | 
						|
  }
 | 
						|
  if (item.file && item.file.type) {
 | 
						|
    return item.file.type.indexOf("image") === 0;
 | 
						|
  }
 | 
						|
  if (item.url) {
 | 
						|
    return isImageUrl(item.url);
 | 
						|
  }
 | 
						|
  if (typeof item.content === "string") {
 | 
						|
    return item.content.indexOf("data:image") === 0;
 | 
						|
  }
 | 
						|
  return false;
 | 
						|
}
 | 
						|
export {
 | 
						|
  bem,
 | 
						|
  filterFiles,
 | 
						|
  isImageFile,
 | 
						|
  isImageUrl,
 | 
						|
  isOversize,
 | 
						|
  name,
 | 
						|
  readFileContent,
 | 
						|
  t
 | 
						|
};
 |