activeadmin_quill_editor 0.2.4 → 0.2.14

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: 6f989d7ad5b9adc4bfdfeabc7b750379cac05dab61394d778d147acce31c681a
4
- data.tar.gz: 2e3b77ebbcc3cce7338c3a65d751074d1517a7320acc4f6ef3c7b80bfe464f53
3
+ metadata.gz: 7753c8dd83c60cefca6563d97fce39d8bab5700b34a7743aa25883c38d25ef76
4
+ data.tar.gz: e1c19c3ae07c4d87ff02bb74bb2a3dd3098167af2f81ee64d4ed13db49beaa1e
5
5
  SHA512:
6
- metadata.gz: 2dc76a0740fa5f5664309795c9ee87d029fce479e61dd8093c91d3510de1d0fc5f737d36efe56b32920eb4931b44fef63ed3d92bcb04bf32de494f903fae71cc
7
- data.tar.gz: 394ae3ac8ec352ef335ae051dde2e50c6d40f0aaef0331bf9cb6dc00d6e11878950c632e6ef1dab16f03e030090fce9c869e5d9af25987319e9e0f491014a5e1
6
+ metadata.gz: fd14145642d29d478e3104a9db887db24cb01af272333d4460df6b478eeeb0c3afcd6b1a50daa1ba87548cb9a80b7c1a88a5f2768ddbdbe71d6322fe8724ec76
7
+ data.tar.gz: 65ead39b7cda9cd0d4941de56a83cb66052b1cdf3b4b04dc5bd256ecbbdbffa7ef2ebaa4d9940f46b96c146f0ad73152ba4275f14b2deedfa431fdecb421b046
@@ -1,4 +1,4 @@
1
- Copyright (c) 2017 Mattia Roccoberton
1
+ Copyright (c) 2017-2020 Mattia Roccoberton
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,34 +1,36 @@
1
- # ActiveAdmin Quill Editor [![Gem Version](https://badge.fury.io/rb/activeadmin_quill_editor.svg)](https://badge.fury.io/rb/activeadmin_quill_editor)
1
+ # ActiveAdmin Quill Editor [![Gem Version](https://badge.fury.io/rb/activeadmin_quill_editor.svg)](https://badge.fury.io/rb/activeadmin_quill_editor) [![CircleCI](https://circleci.com/gh/blocknotes/activeadmin_quill_editor.svg?style=svg)](https://circleci.com/gh/blocknotes/activeadmin_quill_editor)
2
2
 
3
- An Active Admin plugin to use [Quill Rich Text Editor](https://github.com/quilljs/quill)
3
+ An Active Admin plugin to use [Quill Rich Text Editor](https://github.com/quilljs/quill) in form fields.
4
4
 
5
- ![screenshot](screenshot.jpg)
5
+ ![screenshot](screenshot.png)
6
6
 
7
7
  ## Install
8
-
9
- - Update your Gemfile: `gem 'activeadmin_quill_editor'` (and execute *bundle*)
10
- - Add at the end of your ActiveAdmin styles (_app/assets/stylesheets/active_admin.scss_):
8
+ - After installing Active Admin, add to your Gemfile: `gem 'activeadmin_quill_editor'` (and execute *bundle*)
9
+ - Add at the end of your Active Admin styles (_app/assets/stylesheets/active_admin.scss_):
11
10
  ```scss
12
11
  @import 'activeadmin/quill_editor/quill.snow';
13
12
  @import 'activeadmin/quill_editor_input';
14
13
  ```
15
- - Add at the end of your ActiveAdmin javascripts (_app/assets/javascripts/active_admin.js_):
14
+ - Add at the end of your Active Admin javascripts (_app/assets/javascripts/active_admin.js_):
16
15
  ```js
17
16
  //= require activeadmin/quill_editor/quill
18
17
  //= require activeadmin/quill_editor_input
19
18
  ```
20
19
  - Use the input with `as: :quill_editor` in Active Admin model conf
21
20
 
22
- Why 2 separated scripts? In this way you can include a different version of *quill editor* if you like.
21
+ Why 2 separated scripts/styles? In this way you can include a different version of *quill editor* if you like.
23
22
 
24
- ## Options
23
+ > **UPDATE FROM VERSION <= 2.0**: please add to your _app/assets/stylesheets/active_admin.scss_ the line `@import 'activeadmin/quill_editor/quill.snow';`
25
24
 
25
+ ## Options
26
26
  **data-options**: permits to set *quill editor* options directly - see [options list](https://quilljs.com/docs/configuration/)
27
27
 
28
28
  ## Examples
29
29
 
30
+ ### Basic usage
31
+
30
32
  ```ruby
31
- # ActiveAdmin article form conf:
33
+ # Active Admin article form conf:
32
34
  form do |f|
33
35
  f.inputs 'Article' do
34
36
  f.input :title
@@ -39,26 +41,46 @@ Why 2 separated scripts? In this way you can include a different version of *qui
39
41
  end
40
42
  ```
41
43
 
42
- Toolbar buttons configuration:
44
+ ### Toolbar buttons configuration
43
45
 
44
46
  ```ruby
45
- f.input :description, as: :quill_editor, input_html: {data: {options: {modules: {toolbar: [['bold', 'italic', 'underline'], ['link']]}, placeholder: 'Type something...', theme: 'snow'}}}
47
+ f.input :description, as: :quill_editor, input_html: { data: { options: { modules: { toolbar: [['bold', 'italic', 'underline'], ['link']] }, placeholder: 'Type something...', theme: 'snow' } } }
46
48
  ```
47
49
 
48
- ## Notes
50
+ ### ImageUploader plugin
51
+ This plugin allows to upload images to the server (instead of storing them in *base64* by default), reference [here](https://github.com/NoelOConnell/quill-image-uploader).
49
52
 
50
- - Upload functions (Images, Documents, Files, etc.) are not implemented yet
53
+ ```ruby
54
+ # Upload method (to be included in the admin entity configuration)
55
+ member_action :upload, method: [:post] do
56
+ result = { success: resource.images.attach(params[:file_upload]) }
57
+ result[:url] = url_for(resource.images.last) if result[:success]
58
+ render json: result
59
+ end
60
+ ```
51
61
 
52
- ## Do you like it? Star it!
62
+ ```ruby
63
+ # Form field
64
+ unless object.new_record?
65
+ plugin_opts = { image_uploader: { server_url: upload_admin_post_path(object.id), field_name: 'file_upload' } }
66
+ f.input :description, as: :quill_editor, input_html: { data: { plugins: plugin_opts } }
67
+ end
68
+ ```
69
+
70
+ For the relevant files of the upload example see [here](examples/upload_plugin_using_activestorage/).
71
+ Consider that this is just a basic example: images are uploaded as soon as they are attached to the
72
+ editor (regardless of the form submit), it shows the editor only for an existing record (because of
73
+ the *upload_admin_post_path*) and it doesn't provide a way to remove images (just deleting them from
74
+ the editor will not destroy them, you'll need to implement a purge logic for that).
53
75
 
76
+ ## Do you like it? Star it!
54
77
  If you use this component just star it. A developer is more motivated to improve a project when there is some interest.
55
78
 
56
- Take a look at [other ActiveAdmin components](https://github.com/blocknotes?utf8=✓&tab=repositories&q=activeadmin&type=source) that I made if you are curious.
79
+ Take a look at [other Active Admin components](https://github.com/blocknotes?utf8=✓&tab=repositories&q=activeadmin&type=source) that I made if you are curious.
57
80
 
58
81
  ## Contributors
59
-
60
82
  - [Mattia Roccoberton](http://blocknot.es): author
83
+ - The good guys that opened issues and pull requests from time to time
61
84
 
62
85
  ## License
63
-
64
- [MIT](LICENSE.txt)
86
+ The gem is available as open-source under the terms of the [MIT](LICENSE.txt).
data/Rakefile CHANGED
@@ -1,3 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'bundler/gem_tasks'
4
+
5
+ begin
6
+ require 'rspec/core/rake_task'
7
+
8
+ RSpec::Core::RakeTask.new(:spec)
9
+
10
+ task default: :spec
11
+ rescue LoadError
12
+ puts '! LoadError: no RSpec available'
13
+ end
@@ -0,0 +1 @@
1
+ !function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t){e.exports=Quill},function(e,t,n){"use strict";n.r(t);var i=n(0),r=n.n(i),o=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),a=function e(t,n,i){null===t&&(t=Function.prototype);var r=Object.getOwnPropertyDescriptor(t,n);if(void 0===r){var o=Object.getPrototypeOf(t);return null===o?void 0:e(o,n,i)}if("value"in r)return r.value;var a=r.get;return void 0!==a?a.call(i):void 0};function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var u=function(e){function t(){return l(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),o(t,[{key:"deleteAt",value:function(e,n){a(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"deleteAt",this).call(this,e,n),this.cache={}}}],[{key:"create",value:function(e){var n=a(t.__proto__||Object.getPrototypeOf(t),"create",this).call(this,e);if(!0===e)return n;var i=document.createElement("img");return i.setAttribute("src",e),n.appendChild(i),n}},{key:"value",value:function(e){var t=e.dataset;return{src:t.src,custom:t.custom}}}]),t}(r.a.import("blots/block"));u.blotName="imageBlot",u.className="image-uploading",u.tagName="span",r.a.register({"formats/imageBlot":u});var c=u,f=(n(3),function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}());var d=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.quill=t,this.options=n,this.range=null,"function"!=typeof this.options.upload&&console.warn("[Missing config] upload function that returns a promise is required"),this.quill.getModule("toolbar").addHandler("image",this.selectLocalImage.bind(this)),this.handleDrop=this.handleDrop.bind(this),this.handlePaste=this.handlePaste.bind(this),this.quill.root.addEventListener("drop",this.handleDrop,!1),this.quill.root.addEventListener("paste",this.handlePaste,!1)}return f(e,[{key:"selectLocalImage",value:function(){var e=this;this.range=this.quill.getSelection(),this.fileHolder=document.createElement("input"),this.fileHolder.setAttribute("type","file"),this.fileHolder.setAttribute("accept","image/*"),this.fileHolder.setAttribute("style","visibility:hidden"),this.fileHolder.onchange=this.fileChanged.bind(this),document.body.appendChild(this.fileHolder),this.fileHolder.click(),window.requestAnimationFrame((function(){document.body.removeChild(e.fileHolder)}))}},{key:"handleDrop",value:function(e){var t=this;if(e.stopPropagation(),e.preventDefault(),e.dataTransfer&&e.dataTransfer.files&&e.dataTransfer.files.length){if(document.caretRangeFromPoint){var n=document.getSelection(),i=document.caretRangeFromPoint(e.clientX,e.clientY);n&&i&&n.setBaseAndExtent(i.startContainer,i.startOffset,i.startContainer,i.startOffset)}else{var r=document.getSelection(),o=document.caretPositionFromPoint(e.clientX,e.clientY);r&&o&&r.setBaseAndExtent(o.offsetNode,o.offset,o.offsetNode,o.offset)}this.range=this.quill.getSelection();var a=e.dataTransfer.files[0];setTimeout((function(){t.range=t.quill.getSelection(),t.readAndUploadFile(a)}),0)}}},{key:"handlePaste",value:function(e){var t=this,n=e.clipboardData||window.clipboardData;if(n&&(n.items||n.files))for(var i=n.items||n.files,r=/^image\/(jpe?g|gif|png|svg|webp)$/i,o=0;o<i.length;o++)r.test(i[o].type)&&function(){var n=i[o].getAsFile?i[o].getAsFile():i[o];n&&(t.range=t.quill.getSelection(),e.preventDefault(),setTimeout((function(){t.range=t.quill.getSelection(),t.readAndUploadFile(n)}),0))}()}},{key:"readAndUploadFile",value:function(e){var t=this,n=!1,i=new FileReader;i.addEventListener("load",(function(){if(!n){var e=i.result;t.insertBase64Image(e)}}),!1),e&&i.readAsDataURL(e),this.options.upload(e).then((function(e){t.insertToEditor(e)}),(function(e){n=!0,t.removeBase64Image(),console.warn(e)}))}},{key:"fileChanged",value:function(){var e=this.fileHolder.files[0];this.readAndUploadFile(e)}},{key:"insertBase64Image",value:function(e){var t=this.range;this.quill.insertEmbed(t.index,c.blotName,""+e,"user")}},{key:"insertToEditor",value:function(e){var t=this.range;this.quill.deleteText(t.index,3,"user"),this.quill.insertEmbed(t.index,"image",""+e,"user"),t.index++,this.quill.setSelection(t,"user")}},{key:"removeBase64Image",value:function(){var e=this.range;this.quill.deleteText(e.index,3,"user")}}]),e}();window.ImageUploader=d;t.default=d},,function(e,t){}]);
@@ -1,45 +1,95 @@
1
- function initQuillEditors() {
2
- var editors = document.querySelectorAll('.quill-editor');
3
- var default_options = {
4
- modules: {
5
- toolbar: [
6
- ['bold', 'italic', 'underline'],
7
- ['link', 'blockquote', 'code-block'],
8
- [{ 'script': 'sub'}, { 'script': 'super' }],
9
- [{ 'align': [] }, { list: 'ordered' }, { list: 'bullet' }],
10
- [{ 'color': [] }, { 'background': [] }],
11
- ['clean'],
12
- ]
13
- },
14
- placeholder: '',
15
- theme: 'snow'
16
- };
17
-
18
- for(var i = 0; i < editors.length; i++) {
19
- var content = editors[i].querySelector('.quill-editor-content');
20
- var isActive = editors[i].classList.contains('quill-editor--active');
21
- if(content && !isActive) {
22
- var options = editors[i].getAttribute('data-options') ? JSON.parse(editors[i].getAttribute('data-options')) : default_options;
23
- editors[i]['_quill-editor'] = new Quill(content, options);
24
- editors[i].classList += ' quill-editor--active';
1
+ (function () {
2
+ 'use strict'
3
+
4
+ // --- functions ---------------------------------------------------------------
5
+ function initQuillEditors() {
6
+ let default_theme = 'snow'
7
+ let default_toolbar = [
8
+ ['bold', 'italic', 'underline'],
9
+ ['link', 'blockquote', 'code-block'],
10
+ [{ 'script': 'sub' }, { 'script': 'super' }],
11
+ [{ 'align': [] }, { list: 'ordered' }, { list: 'bullet' }],
12
+ [{ 'color': [] }, { 'background': [] }],
13
+ ['image'],
14
+ ['clean'],
15
+ ]
16
+ let editors = document.querySelectorAll('[data-aa-quill-editor]')
17
+ let registered_plugins = {}
18
+
19
+ for (let i = 0; i < editors.length; i++) {
20
+ let content = editors[i].querySelector('[data-aa-quill-content]')
21
+ let isActive = editors[i].classList.contains('quill-editor--active')
22
+ if (content && !isActive) {
23
+ // Setup editor options
24
+ let options = editors[i].getAttribute('data-options') ? JSON.parse(editors[i].getAttribute('data-options')) : {}
25
+ if (!options.theme) options.theme = default_theme
26
+ if (!options.modules) options.modules = {}
27
+ if (!options.modules.toolbar) options.modules.toolbar = default_toolbar
28
+
29
+ // Setup plugin options
30
+ let plugin_options = editors[i].getAttribute('data-plugins') ? JSON.parse(editors[i].getAttribute('data-plugins')) : {}
31
+ if (plugin_options.image_uploader && plugin_options.image_uploader.server_url) {
32
+ if (!registered_plugins.image_uploader) {
33
+ Quill.register('modules/imageUploader', ImageUploader)
34
+ registered_plugins.image_uploader = true
35
+ }
36
+ let opts = plugin_options.image_uploader
37
+ options.modules.imageUploader = setupImageUploader(opts.server_url, opts.field_name)
38
+ }
39
+
40
+ // Init editor
41
+ editors[i]['_quill-editor'] = new Quill(content, options)
42
+ editors[i].classList += ' quill-editor--active'
43
+ }
44
+ }
45
+
46
+ let formtastic = document.querySelector('form.formtastic')
47
+ if (formtastic) {
48
+ formtastic.onsubmit = () => {
49
+ for (let i = 0; i < editors.length; i++) {
50
+ let input = editors[i].querySelector('input[type="hidden"]')
51
+ if (editors[i]['_quill-editor'].editor.isBlank()) {
52
+ input.value = ''
53
+ } else {
54
+ input.value = editors[i]['_quill-editor'].root.innerHTML
55
+ }
56
+ }
57
+ };
25
58
  }
26
59
  }
27
60
 
28
- var formtastic = document.querySelector('form.formtastic');
29
- if(formtastic) {
30
- formtastic.onsubmit = function() {
31
- for(var i = 0; i < editors.length; i++) {
32
- var input = editors[i].querySelector('input[type="hidden"]');
33
- input.value = editors[i]['_quill-editor'].root.innerHTML;
61
+ function setupImageUploader(server_url, field_name) {
62
+ return {
63
+ upload: file => {
64
+ return new Promise((resolve, reject) => {
65
+ const formData = new FormData()
66
+ formData.append(field_name || 'file_upload', file)
67
+
68
+ fetch(server_url, {
69
+ body: formData,
70
+ headers: {
71
+ 'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]').getAttribute('content')
72
+ },
73
+ method: 'POST'
74
+ }).then(response => response.json())
75
+ .then(result => {
76
+ resolve(result.url);
77
+ })
78
+ .catch(error => {
79
+ reject('Upload failed')
80
+ console.error('Error: ', error)
81
+ })
82
+ })
34
83
  }
35
- };
84
+ }
36
85
  }
37
- }
38
86
 
39
- $(document).ready( function() {
40
- initQuillEditors();
41
- });
87
+ // --- events ------------------------------------------------------------------
88
+ $(document).ready(() => {
89
+ initQuillEditors()
90
+ })
42
91
 
43
- $(document).on('has_many_add:after', function() {
44
- initQuillEditors();
45
- });
92
+ $(document).on('has_many_add:after', '.has_many_container', () => {
93
+ initQuillEditors()
94
+ })
95
+ })()
@@ -1,10 +1,27 @@
1
- body.active_admin .quill-editor {
1
+ // reset internal elements
2
+ .ql-editor * {
3
+ margin: initial;
4
+ padding: initial;
5
+ text-align: initial;
6
+ }
7
+
8
+ body.active_admin [data-aa-quill-editor] {
2
9
  display: inline-block;
3
- width: calc(80% - 22px);
10
+ width: calc(80% - 2px);
11
+
12
+ button {
13
+ text-shadow: none;
14
+ box-shadow: none;
15
+
16
+ &:hover {
17
+ background-image: none;
18
+ background-color: transparent;
19
+ }
20
+ }
4
21
 
5
- button:hover {
6
- background-image: none;
7
- background-color: rgba(0, 0, 0, 0.1);
22
+ .ql-container {
23
+ border: 1px solid #c9d0d6;
24
+ border-radius: 0 0 3px 3px;
8
25
  }
9
26
 
10
27
  .ql-editor {
@@ -13,13 +30,6 @@ body.active_admin .quill-editor {
13
30
  min-height: 150px;
14
31
  padding: 10px;
15
32
 
16
- // reset internal elements
17
- * {
18
- margin: initial;
19
- padding: initial;
20
- text-align: initial;
21
- }
22
-
23
33
  ol {
24
34
  list-style-type: decimal;
25
35
  }
@@ -37,4 +47,9 @@ body.active_admin .quill-editor {
37
47
  padding-left: 1.5em;
38
48
  }
39
49
  }
50
+
51
+ .ql-toolbar {
52
+ border: 1px solid #c9d0d6;
53
+ border-radius: 3px 3px 0 0;
54
+ }
40
55
  }
@@ -0,0 +1,33 @@
1
+ .image-uploading {
2
+ position: relative;
3
+ display: inline-block;
4
+ }
5
+
6
+ .image-uploading img {
7
+ max-width: 98% !important;
8
+ filter: blur(5px);
9
+ opacity: 0.3;
10
+ }
11
+
12
+ .image-uploading::before {
13
+ content: "";
14
+ box-sizing: border-box;
15
+ position: absolute;
16
+ top: 50%;
17
+ left: 50%;
18
+ width: 30px;
19
+ height: 30px;
20
+ margin-top: -15px;
21
+ margin-left: -15px;
22
+ border-radius: 50%;
23
+ border: 3px solid #ccc;
24
+ border-top-color: #1e986c;
25
+ z-index: 1;
26
+ animation: spinner 0.6s linear infinite;
27
+ }
28
+
29
+ @keyframes spinner {
30
+ to {
31
+ transform: rotate(360deg);
32
+ }
33
+ }
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ActiveAdmin
4
4
  module QuillEditor
5
- VERSION = '0.2.4'
5
+ VERSION = '0.2.14'
6
6
  end
7
7
  end
@@ -6,9 +6,9 @@ module Formtastic
6
6
  def to_html
7
7
  input_wrapping do
8
8
  label_html <<
9
- template.content_tag(:div, input_html_options.merge(class: 'quill-editor')) do
9
+ template.content_tag(:div, input_html_options.merge('data-aa-quill-editor': '1')) do
10
10
  builder.hidden_field(input_name) <<
11
- template.content_tag(:div, class: 'quill-editor-content') do
11
+ template.content_tag(:div, 'data-aa-quill-content': '1') do
12
12
  object.send(method).try :html_safe
13
13
  end
14
14
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeadmin_quill_editor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mattia Roccoberton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-01 00:00:00.000000000 Z
11
+ date: 2020-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activeadmin
@@ -109,33 +109,33 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: 4.0.1
111
111
  - !ruby/object:Gem::Dependency
112
- name: selenium-webdriver
112
+ name: rubocop
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 3.142.7
117
+ version: 0.90.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 3.142.7
124
+ version: 0.90.0
125
125
  - !ruby/object:Gem::Dependency
126
- name: simplecov
126
+ name: selenium-webdriver
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 0.19.0
131
+ version: 3.142.7
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 0.19.0
138
+ version: 3.142.7
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: sqlite3
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -159,11 +159,13 @@ files:
159
159
  - LICENSE.txt
160
160
  - README.md
161
161
  - Rakefile
162
+ - app/assets/javascripts/activeadmin/quill.imageUploader.min.js
162
163
  - app/assets/javascripts/activeadmin/quill_editor/quill.core.js
163
164
  - app/assets/javascripts/activeadmin/quill_editor/quill.js
164
165
  - app/assets/javascripts/activeadmin/quill_editor/quill.min.js
165
166
  - app/assets/javascripts/activeadmin/quill_editor_input.js
166
167
  - app/assets/stylesheets/activeadmin/_quill_editor_input.scss
168
+ - app/assets/stylesheets/activeadmin/quill.imageUploader.min.css
167
169
  - app/assets/stylesheets/activeadmin/quill_editor/quill.bubble.css
168
170
  - app/assets/stylesheets/activeadmin/quill_editor/quill.core.css
169
171
  - app/assets/stylesheets/activeadmin/quill_editor/quill.snow.css