0
0
Fork 0
mirror of https://github.com/go-gitea/gitea synced 2024-11-22 05:22:41 +01:00

code optimization

This commit is contained in:
Kerwin Bryant 2024-11-21 01:16:45 +00:00
parent 692fcff98a
commit cd598bfd3d

View file

@ -1,31 +1,30 @@
import Cropper from 'cropperjs';
import {showElem} from '../../utils/dom.ts'; import {showElem} from '../../utils/dom.ts';
export function initCompCropper() { export async function initCompCropper() {
const cropperContainer = document.querySelector('#cropper-panel'); const cropperContainer = document.querySelector('#cropper-panel');
if (!cropperContainer) { if (!cropperContainer) {
return; return;
} }
let filename; const {default: Cropper} = await import(/* webpackChunkName: "cropperjs" */'cropperjs');
let cropper;
const source = document.querySelector('#cropper-source'); const source = document.querySelector('#cropper-source');
const result = document.querySelector('#cropper-result'); const result = document.querySelector('#cropper-result');
const input = document.querySelector('#new-avatar'); const input = document.querySelector('#new-avatar');
const done = function (url: string): void { const done = function (url: string, filename: string): void {
source.src = url; source.src = url;
result.src = url; result.src = url;
if (cropper) { if (input._cropper) {
cropper.replace(url); input._cropper.replace(url);
} else { } else {
cropper = new Cropper(source, { input._cropper = new Cropper(source, {
aspectRatio: 1, aspectRatio: 1,
viewMode: 1, viewMode: 1,
autoCrop: false, autoCrop: false,
crop() { crop() {
const canvas = cropper.getCroppedCanvas(); const canvas = input._cropper.getCroppedCanvas();
result.src = canvas.toDataURL(); result.src = canvas.toDataURL();
canvas.toBlob((blob) => { canvas.toBlob((blob) => {
const file = new File([blob], filename, {type: 'image/png', lastModified: Date.now()}); const file = new File([blob], filename, {type: 'image/png', lastModified: Date.now()});
@ -42,20 +41,8 @@ export function initCompCropper() {
input.addEventListener('change', (e: Event & {target: HTMLInputElement}) => { input.addEventListener('change', (e: Event & {target: HTMLInputElement}) => {
const files = e.target.files; const files = e.target.files;
let reader;
let file;
if (files?.length > 0) { if (files?.length > 0) {
file = files[0]; done(URL.createObjectURL(files[0]), files[0].name);
filename = file.name;
if (URL) {
done(URL.createObjectURL(file));
} else if (FileReader) {
reader = new FileReader();
reader.addEventListener('load', () => {
done(reader.result);
});
reader.readAsDataURL(file);
}
} }
}); });
} }