1- import Cropper from 'cropperjs' ;
21import { showElem } from '../../utils/dom.ts' ;
32
4- export function initCompCropper ( ) {
3+ export async function initCompCropper ( ) {
54 const cropperContainer = document . querySelector ( '#cropper-panel' ) ;
65 if ( ! cropperContainer ) {
76 return ;
87 }
98
10- let filename ;
11- let cropper ;
9+ const { default : Cropper } = await import ( /* webpackChunkName: "cropperjs" */ 'cropperjs' ) ;
10+
1211 const source = document . querySelector ( '#cropper-source' ) ;
1312 const result = document . querySelector ( '#cropper-result' ) ;
1413 const input = document . querySelector ( '#new-avatar' ) ;
1514
16- const done = function ( url : string ) : void {
15+ const done = function ( url : string , filename : string ) : void {
1716 source . src = url ;
1817 result . src = url ;
1918
20- if ( cropper ) {
21- cropper . replace ( url ) ;
19+ if ( input . _cropper ) {
20+ input . _cropper . replace ( url ) ;
2221 } else {
23- cropper = new Cropper ( source , {
22+ input . _cropper = new Cropper ( source , {
2423 aspectRatio : 1 ,
2524 viewMode : 1 ,
2625 autoCrop : false ,
2726 crop ( ) {
28- const canvas = cropper . getCroppedCanvas ( ) ;
27+ const canvas = input . _cropper . getCroppedCanvas ( ) ;
2928 result . src = canvas . toDataURL ( ) ;
3029 canvas . toBlob ( ( blob ) => {
3130 const file = new File ( [ blob ] , filename , { type : 'image/png' , lastModified : Date . now ( ) } ) ;
@@ -42,20 +41,8 @@ export function initCompCropper() {
4241 input . addEventListener ( 'change' , ( e : Event & { target : HTMLInputElement } ) => {
4342 const files = e . target . files ;
4443
45- let reader ;
46- let file ;
4744 if ( files ?. length > 0 ) {
48- file = files [ 0 ] ;
49- filename = file . name ;
50- if ( URL ) {
51- done ( URL . createObjectURL ( file ) ) ;
52- } else if ( FileReader ) {
53- reader = new FileReader ( ) ;
54- reader . addEventListener ( 'load' , ( ) => {
55- done ( reader . result ) ;
56- } ) ;
57- reader . readAsDataURL ( file ) ;
58- }
45+ done ( URL . createObjectURL ( files [ 0 ] ) , files [ 0 ] . name ) ;
5946 }
6047 } ) ;
6148}
0 commit comments