| 
					
				 | 
			
			
				@@ -176,36 +176,71 @@ Template.editor.onRendered(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               const $summernote = getSummernote(this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               if (files && files.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 const image = files[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                const reader = new FileReader(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const currentCard = Cards.findOne(Session.get('currentCard')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 const MAX_IMAGE_PIXEL = Utils.MAX_IMAGE_PIXEL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 const COMPRESS_RATIO = Utils.IMAGE_COMPRESS_RATIO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                const processData = function(dataURL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const insertImage = src => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   const img = document.createElement('img'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  img.src = dataURL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  img.src = src; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   img.setAttribute('width', '100%'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   $summernote.summernote('insertNode', img); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                reader.onload = function(e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  const dataurl = e && e.target && e.target.result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  if (dataurl !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (MAX_IMAGE_PIXEL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const processData = function(fileObj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  Utils.processUploadedAttachment( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    currentCard, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    fileObj, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    attachment => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      if ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        attachment && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        attachment._id && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        attachment.isImage() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        attachment.one('uploaded', function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          const maxTry = 3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          const checkItvl = 500; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          let retry = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          const checkUrl = function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            // even though uploaded event fired, attachment.url() is still null somehow //TODO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            const url = attachment.url(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (url) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              insertImage(url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              retry++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              if (retry < maxTry) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                setTimeout(checkUrl, checkItvl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          checkUrl(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (MAX_IMAGE_PIXEL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  const reader = new FileReader(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  reader.onload = function(e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    const dataurl = e && e.target && e.target.result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (dataurl !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       // need to shrink image 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       Utils.shrinkImage({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         dataurl, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         maxSize: MAX_IMAGE_PIXEL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         ratio: COMPRESS_RATIO, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        callback(changed) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          if (changed !== false && !!changed) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            processData(changed); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        toBlob: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        callback(blob) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          if (blob !== false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            blob.name = image.name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            processData(blob); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      processData(dataurl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                reader.readAsDataURL(image); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  reader.readAsDataURL(image); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  processData(image); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             onPaste() { 
			 |