effective_bootstrap 0.7.2 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aa24ecc96601ddcded2571c7dce3a569da0dce1193582982c878d40777ddf773
4
- data.tar.gz: 943ca82b54895a6175ae41ee2692604bf4cbf20711f0798d5b4cce6781677afe
3
+ metadata.gz: edbd3d46e3b489964e42de81d6e1e80ee8cd069e3eb023691b3f4bd72c269232
4
+ data.tar.gz: 49aff1866905080fbd03ec98b882928d0082d9f03b63c453e35993d24687d493
5
5
  SHA512:
6
- metadata.gz: b32cb5310a5b84f6d5877a72946c81e7a06ebe06ec3fb74f5cc3739b3d991f84709ff185ac82bd4e2f96cc96581be369aa0ac489b809f18d885b737fafde1bd4
7
- data.tar.gz: 119c4873026a6e94c37726439bbe762ffe82d61b6efbcad4b7db010084fb2c8258f0aa66e1da425668b31806f2c5d0dbea6a8ca9124e035561ce5c50a7143b3f
6
+ metadata.gz: 8a2d898a6a45553bfac7ce5743aa0d0f98de8d0833e680f3665f845c30d8d2b452bd92351b3eab7ee534a0040a2ec291103a47253821f2a58bbbb4fa98a1dd4b
7
+ data.tar.gz: c0a16990a52e9b46f0b636765c13711b10b4c3ae14e9af4d28cd7869ee163887553969262b868a2d0a0e9621bc7a6dd509b060f55277b42bfc0544c7c6a8ce5d
@@ -0,0 +1,3 @@
1
+ (function(){var exports={};
2
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function e(e,t){for(var a=0;a<t.length;a++){var r=t[a];r.enumerable=r.enumerable||false;r.configurable=true;if("value"in r)r.writable=true;Object.defineProperty(e,r.key,r)}}return function(t,a,r){if(a)e(t.prototype,a);if(r)e(t,r);return t}}();function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}var ImageData=function(){function e(t,a){_classCallCheck(this,e);this.dataUrl=t;this.type=a}_createClass(e,[{key:"minify",value:function t(){var a=this;var r=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return new Promise(function(t,n){var i=r.maxWidth||800;var l=r.maxHeight||800;var o=r.quality||.8;if(!a.dataUrl){return n({message:"[error] QuillImageDropAndPaste: Fail to minify the image, dataUrl should not be empty."})}var s=new Image;s.onload=function(){var r=s.width;var n=s.height;if(r>n){if(r>i){s.height=n*i/r;s.width=i}}else{if(n>l){s.width=r*l/n;s.height=l}}var u=document.createElement("canvas");u.width=s.width;u.height=s.height;var f=u.getContext("2d");f.drawImage(s,0,0,s.width,s.height);var d=a.type||"image/png";var h=u.toDataURL(d,o);t(new e(h,d))};s.src=a.dataUrl})}},{key:"toFile",value:function e(t){if(!window.File){console.error("[error] QuillImageDropAndPaste: Your browser didnot support File API.");return null}return new File([this.toBlob()],t,{type:this.type})}},{key:"toBlob",value:function e(){var t=this.dataUrl.replace(/^[^,]+,/,"");var a=this.binaryStringToArrayBuffer(atob(t));return this.createBlob([a],{type:this.type})}},{key:"binaryStringToArrayBuffer",value:function e(t){var a=t.length;var r=new ArrayBuffer(a);var n=new Uint8Array(r);var i=-1;while(++i<a){n[i]=t.charCodeAt(i)}return r}},{key:"createBlob",value:function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var a=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(typeof a==="string")a={type:a};try{return new Blob(t,a)}catch(e){if(e.name!=="TypeError")throw e;var r=typeof BlobBuilder!=="undefined"?BlobBuilder:typeof MSBlobBuilder!=="undefined"?MSBlobBuilder:typeof MozBlobBuilder!=="undefined"?MozBlobBuilder:WebKitBlobBuilder;var n=new r;for(var i=0;i<t.length;i++){n.append(t[i])}return n.getBlob(a.type)}}}]);return e}();var ImageDropAndPaste=function(){function e(t){var a=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,e);this.quill=t;this.options=a;this.handleDrop=this.handleDrop.bind(this);this.handlePaste=this.handlePaste.bind(this);this.quill.root.addEventListener("drop",this.handleDrop,false);this.quill.root.addEventListener("paste",this.handlePaste,false)}_createClass(e,[{key:"handleDrop",value:function e(t){var a=this;t.preventDefault();if(t.dataTransfer&&t.dataTransfer.files&&t.dataTransfer.files.length){if(document.caretRangeFromPoint){var r=document.getSelection();var n=document.caretRangeFromPoint(t.clientX,t.clientY);if(r&&n){r.setBaseAndExtent(n.startContainer,n.startOffset,n.startContainer,n.startOffset)}}this.readFiles(t.dataTransfer.files,function(e,t){t=t||"image/png";if(typeof a.options.handler==="function"){a.options.handler.call(a,e,t,new ImageData(e,t))}else{a.insert.call(a,e,t)}},t)}}},{key:"handlePaste",value:function e(t){var a=this;if(t.clipboardData&&t.clipboardData.items&&t.clipboardData.items.length){this.readFiles(t.clipboardData.items,function(e,t){t=t||"image/png";if(typeof a.options.handler==="function"){a.options.handler.call(a,e,t,new ImageData(e,t))}else{a.insert(e,t)}},t)}}},{key:"readFiles",value:function e(t,a,r){[].forEach.call(t,function(e){var t=e.type;if(!t.match(/^image\/(gif|jpe?g|a?png|svg|webp|bmp)/i))return;r.preventDefault();var n=new FileReader;n.onload=function(e){a(e.target.result,t)};var i=e.getAsFile?e.getAsFile():e;if(i instanceof Blob)n.readAsDataURL(i)})}},{key:"insert",value:function e(t,a){var r=(this.quill.getSelection()||{}).index||this.quill.getLength();this.quill.insertEmbed(r,"image",t,"user")}}]);return e}();ImageDropAndPaste.ImageData=ImageData;exports.default=ImageDropAndPaste;
3
+ window.QuillImageDropAndPaste = ImageDropAndPaste;window.Quill.register('modules/imageDropAndPaste',ImageDropAndPaste)})();
@@ -2,6 +2,7 @@
2
2
  # https://github.com/quilljs/quill
3
3
 
4
4
  Quill.register('modules/imageResize', window.ImageResize.default)
5
+ Quill.register('modules/imageDrop', window.QuillImageDropAndPaste)
5
6
 
6
7
  (this.EffectiveBootstrap || {}).effective_editor = ($element, options) ->
7
8
  editor = '#' + $element.attr('id') + '_editor'
@@ -12,6 +13,15 @@ Quill.register('modules/imageResize', window.ImageResize.default)
12
13
  content_mode = options['content_mode']
13
14
  delete options['content_mode']
14
15
 
16
+ if options['modules']['imageDropAndPaste']
17
+ # Image Drop & Paste
18
+ # https://github.com/chenjuneking/quill-image-drop-and-paste
19
+ dropImage = (imageDataUrl, type, imageData) ->
20
+ file = imageData.toFile(type.replace('/', '.'))
21
+ uploadImage(quill, file)
22
+
23
+ options['modules']['imageDropAndPaste'] = { handler: dropImage }
24
+
15
25
  quill = new Quill($element.siblings(editor).get(0), options)
16
26
  content = $element.val() || ''
17
27
 
@@ -1,3 +1,4 @@
1
1
  //= require ./quill
2
+ //= require ./image-drop-and-paste
2
3
  //= require ./image-resize
3
4
  //= require ./initialize
@@ -15,7 +15,12 @@ module Effective
15
15
 
16
16
  def input_js_options
17
17
  {
18
- modules: { toolbar: toolbar, imageResize: imageResize, syntax: (content_mode == :code) },
18
+ modules: {
19
+ toolbar: toolbar,
20
+ imageResize: imageResize,
21
+ imageDropAndPaste: imageDropAndPaste,
22
+ syntax: (content_mode == :code)
23
+ },
19
24
  theme: 'snow',
20
25
  placeholder: "Add #{name.to_s.pluralize}...",
21
26
  content_mode: content_mode,
@@ -36,6 +41,10 @@ module Effective
36
41
  ]
37
42
  end
38
43
 
44
+ def imageDropAndPaste
45
+ active_storage && !(content_mode == :code)
46
+ end
47
+
39
48
  def imageResize
40
49
  {
41
50
  displaySize: true,
@@ -1,3 +1,3 @@
1
1
  module EffectiveBootstrap
2
- VERSION = '0.7.2'.freeze
2
+ VERSION = '0.7.3'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_bootstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-15 00:00:00.000000000 Z
11
+ date: 2020-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -389,6 +389,7 @@ files:
389
389
  - app/assets/javascripts/effective_datetime/input.js
390
390
  - app/assets/javascripts/effective_datetime/overrides.js.coffee
391
391
  - app/assets/javascripts/effective_datetime/turbolinks.js.coffee
392
+ - app/assets/javascripts/effective_editor/image-drop-and-paste.js
392
393
  - app/assets/javascripts/effective_editor/image-resize.js
393
394
  - app/assets/javascripts/effective_editor/initialize.js.coffee
394
395
  - app/assets/javascripts/effective_editor/input.js