effective_bootstrap 0.7.2 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/effective_editor/image-drop-and-paste.js +3 -0
- data/app/assets/javascripts/effective_editor/initialize.js.coffee +10 -0
- data/app/assets/javascripts/effective_editor/input.js +1 -0
- data/app/models/effective/form_inputs/editor.rb +10 -1
- data/lib/effective_bootstrap/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: edbd3d46e3b489964e42de81d6e1e80ee8cd069e3eb023691b3f4bd72c269232
|
|
4
|
+
data.tar.gz: 49aff1866905080fbd03ec98b882928d0082d9f03b63c453e35993d24687d493
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
|
|
@@ -15,7 +15,12 @@ module Effective
|
|
|
15
15
|
|
|
16
16
|
def input_js_options
|
|
17
17
|
{
|
|
18
|
-
modules: {
|
|
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,
|
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.
|
|
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-
|
|
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
|