effective_bootstrap 0.9.6 → 0.9.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +50 -2
- data/app/assets/config/effective_bootstrap_manifest.js +1 -0
- data/app/assets/javascripts/effective_bootstrap.js +1 -0
- data/app/assets/javascripts/effective_editor/input.js +1 -0
- data/app/assets/javascripts/effective_editor/magic-url.js +3 -0
- data/app/assets/javascripts/effective_has_many/initialize.js.coffee +77 -0
- data/app/assets/javascripts/effective_has_many/input.js +2 -0
- data/app/assets/javascripts/effective_has_many/jquery.sortable.js +696 -0
- data/app/assets/stylesheets/effective_bootstrap.scss +1 -0
- data/app/assets/stylesheets/effective_checks/input.scss +1 -1
- data/app/assets/stylesheets/effective_has_many/input.scss +42 -0
- data/app/helpers/effective_form_builder_helper.rb +12 -1
- data/app/models/effective/form_builder.rb +14 -0
- data/app/models/effective/form_inputs/checks.rb +19 -8
- data/app/models/effective/form_inputs/editor.rb +10 -5
- data/app/models/effective/form_inputs/has_many.rb +207 -0
- data/lib/effective_bootstrap/engine.rb +1 -1
- data/lib/effective_bootstrap/version.rb +1 -1
- metadata +24 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dfccd40b53981bf152c50dbcf01e94ba572c9647f7bbdd089a458eb84c18aa6a
|
4
|
+
data.tar.gz: 765eab4d79769e5a8bb970a95fcf8275dcd978ebb2aca709869590349cf8db71
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 758307b2718b798b6b5827f8628ed66c037d30612d889edb88f39b79c44028e9a29b0ed7880dc1a79f2321fb62b80bd415d0920642ba44a6e758525fb6df1cbf
|
7
|
+
data.tar.gz: 9587c02c77dfbbdf5a454ff1122acca628af9a5556dcca2d6e6780b624d483560fb7f996f8c72e645f0b7beb6c50c2ccb563f16d28bc28fc2178a26384bde0c1
|
data/README.md
CHANGED
@@ -42,8 +42,8 @@ Add the following to your `application.js`:
|
|
42
42
|
And to your `application.scss`:
|
43
43
|
|
44
44
|
```sass
|
45
|
-
@import 'bootstrap'
|
46
|
-
@import 'effective_bootstrap'
|
45
|
+
@import 'bootstrap'
|
46
|
+
@import 'effective_bootstrap'
|
47
47
|
```
|
48
48
|
|
49
49
|
## View Helpers
|
@@ -362,6 +362,54 @@ And then in any form, instead of a text area:
|
|
362
362
|
= f.editor :body
|
363
363
|
```
|
364
364
|
|
365
|
+
## Custom has_many
|
366
|
+
|
367
|
+
This custom form input was inspired by [cocoon](https://github.com/nathanvda/cocoon) but works with more magic.
|
368
|
+
|
369
|
+
This nested form builder allows has_many resources to be created, updated, destroyed and reordered.
|
370
|
+
|
371
|
+
Just add `has_many` and `accepts_nested_attributes_for` like normal and then use it in the form:
|
372
|
+
|
373
|
+
```ruby
|
374
|
+
class Author < ApplicationRecord
|
375
|
+
has_many :books
|
376
|
+
accepts_nested_attributes_for :books, allow_destroy: true
|
377
|
+
end
|
378
|
+
```
|
379
|
+
|
380
|
+
and
|
381
|
+
|
382
|
+
```haml
|
383
|
+
= effective_form_with(model: author) do |f|
|
384
|
+
= f.text_field :name
|
385
|
+
|
386
|
+
= f.has_many :books do |fb|
|
387
|
+
= fb.text_field :title
|
388
|
+
= fb.date_field :published_at
|
389
|
+
```
|
390
|
+
|
391
|
+
If `:books` can be destroyed, a hidden field `_destroy` will automatically be added to each set of fields and a Remove button will be displayed to remove the item.
|
392
|
+
|
393
|
+
If the `Book` model has an integer `position` attribute, a hidden field `position` will automatically be added to each set of fields and a Reorder button will be displayed to drag&drop reorder items.
|
394
|
+
|
395
|
+
If the has_many collection is blank?, `.build()` will be automatically called, unless `build: false` is passed.
|
396
|
+
|
397
|
+
Any errors on the has_many name will be displayed unless `errors: false` is passed.
|
398
|
+
|
399
|
+
You can customize this behaviour by passing the following:
|
400
|
+
|
401
|
+
```haml
|
402
|
+
= f.has_many :books, add: true, remove: true, reorder: true, build: true, errors: true do |fb|
|
403
|
+
= fb.text_field :title
|
404
|
+
```
|
405
|
+
|
406
|
+
or add an html class:
|
407
|
+
|
408
|
+
```haml
|
409
|
+
= f.has_many :books, class: 'tight' do |fb|
|
410
|
+
= fb.text_field :title
|
411
|
+
```
|
412
|
+
|
365
413
|
## Custom percent_field
|
366
414
|
|
367
415
|
This custom form input uses no 3rd party jQuery plugins.
|
@@ -0,0 +1 @@
|
|
1
|
+
//= link_directory ../images/icons
|
@@ -0,0 +1,3 @@
|
|
1
|
+
// https://github.com/visualjerk/quill-magic-url
|
2
|
+
!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var o in r)("object"==typeof exports?exports:t)[o]=r[o]}}(window,(function(){return function(t){var e={};function r(o){if(e[o])return e[o].exports;var n=e[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=e,r.d=function(t,e,o){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)r.d(o,n,function(e){return t[e]}.bind(null,n));return o},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=15)}([function(t,e,r){"use strict";function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n=r(4),i="function"==typeof Symbol&&"symbol"===o(Symbol("foo")),s=Object.prototype.toString,a=Array.prototype.concat,u=Object.defineProperty,p=u&&function(){var t={};try{for(var e in u(t,"x",{enumerable:!1,value:t}),t)return!1;return t.x===t}catch(t){return!1}}(),c=function(t,e,r,o){var n;(!(e in t)||"function"==typeof(n=o)&&"[object Function]"===s.call(n)&&o())&&(p?u(t,e,{configurable:!0,enumerable:!1,value:r,writable:!0}):t[e]=r)},f=function(t,e){var r=arguments.length>2?arguments[2]:{},o=n(e);i&&(o=a.call(o,Object.getOwnPropertySymbols(e)));for(var s=0;s<o.length;s+=1)c(t,o[s],e[o[s]],r[o[s]])};f.supportsDescriptors=!!p,t.exports=f},function(t,e,r){"use strict";var o=r(20);t.exports=Function.prototype.bind||o},function(t,e,r){function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n=r(16),i=r(3),s=r(12),a=r(30),u=String.fromCharCode(0),p=function(t){Array.isArray(t)?this.ops=t:null!=t&&Array.isArray(t.ops)?this.ops=t.ops:this.ops=[]};p.prototype.insert=function(t,e){var r={};return 0===t.length?this:(r.insert=t,null!=e&&"object"===o(e)&&Object.keys(e).length>0&&(r.attributes=e),this.push(r))},p.prototype.delete=function(t){return t<=0?this:this.push({delete:t})},p.prototype.retain=function(t,e){if(t<=0)return this;var r={retain:t};return null!=e&&"object"===o(e)&&Object.keys(e).length>0&&(r.attributes=e),this.push(r)},p.prototype.push=function(t){var e=this.ops.length,r=this.ops[e-1];if(t=s(!0,{},t),"object"===o(r)){if("number"==typeof t.delete&&"number"==typeof r.delete)return this.ops[e-1]={delete:r.delete+t.delete},this;if("number"==typeof r.delete&&null!=t.insert&&(e-=1,"object"!==o(r=this.ops[e-1])))return this.ops.unshift(t),this;if(i(t.attributes,r.attributes)){if("string"==typeof t.insert&&"string"==typeof r.insert)return this.ops[e-1]={insert:r.insert+t.insert},"object"===o(t.attributes)&&(this.ops[e-1].attributes=t.attributes),this;if("number"==typeof t.retain&&"number"==typeof r.retain)return this.ops[e-1]={retain:r.retain+t.retain},"object"===o(t.attributes)&&(this.ops[e-1].attributes=t.attributes),this}}return e===this.ops.length?this.ops.push(t):this.ops.splice(e,0,t),this},p.prototype.chop=function(){var t=this.ops[this.ops.length-1];return t&&t.retain&&!t.attributes&&this.ops.pop(),this},p.prototype.filter=function(t){return this.ops.filter(t)},p.prototype.forEach=function(t){this.ops.forEach(t)},p.prototype.map=function(t){return this.ops.map(t)},p.prototype.partition=function(t){var e=[],r=[];return this.forEach((function(o){(t(o)?e:r).push(o)})),[e,r]},p.prototype.reduce=function(t,e){return this.ops.reduce(t,e)},p.prototype.changeLength=function(){return this.reduce((function(t,e){return e.insert?t+a.length(e):e.delete?t-e.delete:t}),0)},p.prototype.length=function(){return this.reduce((function(t,e){return t+a.length(e)}),0)},p.prototype.slice=function(t,e){t=t||0,"number"!=typeof e&&(e=1/0);for(var r=[],o=a.iterator(this.ops),n=0;n<e&&o.hasNext();){var i;n<t?i=o.next(t-n):(i=o.next(e-n),r.push(i)),n+=a.length(i)}return new p(r)},p.prototype.compose=function(t){var e=a.iterator(this.ops),r=a.iterator(t.ops),o=[],n=r.peek();if(null!=n&&"number"==typeof n.retain&&null==n.attributes){for(var s=n.retain;"insert"===e.peekType()&&e.peekLength()<=s;)s-=e.peekLength(),o.push(e.next());n.retain-s>0&&r.next(n.retain-s)}for(var u=new p(o);e.hasNext()||r.hasNext();)if("insert"===r.peekType())u.push(r.next());else if("delete"===e.peekType())u.push(e.next());else{var c=Math.min(e.peekLength(),r.peekLength()),f=e.next(c),l=r.next(c);if("number"==typeof l.retain){var y={};"number"==typeof f.retain?y.retain=c:y.insert=f.insert;var h=a.attributes.compose(f.attributes,l.attributes,"number"==typeof f.retain);if(h&&(y.attributes=h),u.push(y),!r.hasNext()&&i(u.ops[u.ops.length-1],y)){var b=new p(e.rest());return u.concat(b).chop()}}else"number"==typeof l.delete&&"number"==typeof f.retain&&u.push(l)}return u.chop()},p.prototype.concat=function(t){var e=new p(this.ops.slice());return t.ops.length>0&&(e.push(t.ops[0]),e.ops=e.ops.concat(t.ops.slice(1))),e},p.prototype.diff=function(t,e){if(this.ops===t.ops)return new p;var r=[this,t].map((function(e){return e.map((function(r){if(null!=r.insert)return"string"==typeof r.insert?r.insert:u;throw new Error("diff() called "+(e===t?"on":"with")+" non-document")})).join("")})),o=new p,s=n(r[0],r[1],e),c=a.iterator(this.ops),f=a.iterator(t.ops);return s.forEach((function(t){for(var e=t[1].length;e>0;){var r=0;switch(t[0]){case n.INSERT:r=Math.min(f.peekLength(),e),o.push(f.next(r));break;case n.DELETE:r=Math.min(e,c.peekLength()),c.next(r),o.delete(r);break;case n.EQUAL:r=Math.min(c.peekLength(),f.peekLength(),e);var s=c.next(r),u=f.next(r);i(s.insert,u.insert)?o.retain(r,a.attributes.diff(s.attributes,u.attributes)):o.push(u).delete(r)}e-=r}})),o.chop()},p.prototype.eachLine=function(t,e){e=e||"\n";for(var r=a.iterator(this.ops),o=new p,n=0;r.hasNext();){if("insert"!==r.peekType())return;var i=r.peek(),s=a.length(i)-r.peekLength(),u="string"==typeof i.insert?i.insert.indexOf(e,s)-s:-1;if(u<0)o.push(r.next());else if(u>0)o.push(r.next(u));else{if(!1===t(o,r.next(1).attributes||{},n))return;n+=1,o=new p}}o.length()>0&&t(o,{},n)},p.prototype.transform=function(t,e){if(e=!!e,"number"==typeof t)return this.transformPosition(t,e);for(var r=a.iterator(this.ops),o=a.iterator(t.ops),n=new p;r.hasNext()||o.hasNext();)if("insert"!==r.peekType()||!e&&"insert"===o.peekType())if("insert"===o.peekType())n.push(o.next());else{var i=Math.min(r.peekLength(),o.peekLength()),s=r.next(i),u=o.next(i);if(s.delete)continue;u.delete?n.push(u):n.retain(i,a.attributes.transform(s.attributes,u.attributes,e))}else n.retain(a.length(r.next()));return n.chop()},p.prototype.transformPosition=function(t,e){e=!!e;for(var r=a.iterator(this.ops),o=0;r.hasNext()&&o<=t;){var n=r.peekLength(),i=r.peekType();r.next(),"delete"!==i?("insert"===i&&(o<t||!e)&&(t+=n),o+=n):t-=Math.min(n,t-o)}return t},t.exports=p},function(t,e,r){function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n=r(4),i=r(18),s=r(19),a=r(25),u=r(27),p=r(29),c=Date.prototype.getTime;function f(t,e,r){var h=r||{};return!!(h.strict?s(t,e):t===e)||(!t||!e||"object"!==o(t)&&"object"!==o(e)?h.strict?s(t,e):t==e:function(t,e,r){var s,h;if(o(t)!==o(e))return!1;if(l(t)||l(e))return!1;if(t.prototype!==e.prototype)return!1;if(i(t)!==i(e))return!1;var b=a(t),m=a(e);if(b!==m)return!1;if(b||m)return t.source===e.source&&u(t)===u(e);if(p(t)&&p(e))return c.call(t)===c.call(e);var d=y(t),g=y(e);if(d!==g)return!1;if(d||g){if(t.length!==e.length)return!1;for(s=0;s<t.length;s++)if(t[s]!==e[s])return!1;return!0}if(o(t)!==o(e))return!1;try{var v=n(t),S=n(e)}catch(t){return!1}if(v.length!==S.length)return!1;for(v.sort(),S.sort(),s=v.length-1;s>=0;s--)if(v[s]!=S[s])return!1;for(s=v.length-1;s>=0;s--)if(h=v[s],!f(t[h],e[h],r))return!1;return!0}(t,e,h))}function l(t){return null==t}function y(t){return!(!t||"object"!==o(t)||"number"!=typeof t.length)&&("function"==typeof t.copy&&"function"==typeof t.slice&&!(t.length>0&&"number"!=typeof t[0]))}t.exports=f},function(t,e,r){"use strict";var o=Array.prototype.slice,n=r(5),i=Object.keys,s=i?function(t){return i(t)}:r(17),a=Object.keys;s.shim=function(){Object.keys?function(){var t=Object.keys(arguments);return t&&t.length===arguments.length}(1,2)||(Object.keys=function(t){return n(t)?a(o.call(t)):a(t)}):Object.keys=s;return Object.keys||s},t.exports=s},function(t,e,r){"use strict";function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n=Object.prototype.toString;t.exports=function(t){var e=n.call(t),r="[object Arguments]"===e;return r||(r="[object Array]"!==e&&null!==t&&"object"===o(t)&&"number"==typeof t.length&&t.length>=0&&"[object Function]"===n.call(t.callee)),r}},function(t,e,r){"use strict";var o=r(1),n=r(21)("%Function%"),i=n.apply,s=n.call;t.exports=function(){return o.apply(s,arguments)},t.exports.apply=function(){return o.apply(i,arguments)}},function(t,e){function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var o;o=function(){return this}();try{o=o||new Function("return this")()}catch(t){"object"===("undefined"==typeof window?"undefined":r(window))&&(o=window)}t.exports=o},function(t,e,r){"use strict";var o=function(t){return t!=t};t.exports=function(t,e){return 0===t&&0===e?1/t==1/e:t===e||!(!o(t)||!o(e))}},function(t,e,r){"use strict";var o=r(8);t.exports=function(){return"function"==typeof Object.is?Object.is:o}},function(t,e,r){"use strict";var o=Object,n=TypeError;t.exports=function(){if(null!=this&&this!==o(this))throw new n("RegExp.prototype.flags getter called on non-object");var t="";return this.global&&(t+="g"),this.ignoreCase&&(t+="i"),this.multiline&&(t+="m"),this.dotAll&&(t+="s"),this.unicode&&(t+="u"),this.sticky&&(t+="y"),t}},function(t,e,r){"use strict";var o=r(10),n=r(0).supportsDescriptors,i=Object.getOwnPropertyDescriptor,s=TypeError;t.exports=function(){if(!n)throw new s("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors");if("gim"===/a/gim.flags){var t=i(RegExp.prototype,"flags");if(t&&"function"==typeof t.get&&"boolean"==typeof/a/.dotAll)return t.get}return o}},function(t,e,r){"use strict";function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n=Object.prototype.hasOwnProperty,i=Object.prototype.toString,s=Object.defineProperty,a=Object.getOwnPropertyDescriptor,u=function(t){return"function"==typeof Array.isArray?Array.isArray(t):"[object Array]"===i.call(t)},p=function(t){if(!t||"[object Object]"!==i.call(t))return!1;var e,r=n.call(t,"constructor"),o=t.constructor&&t.constructor.prototype&&n.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!r&&!o)return!1;for(e in t);return void 0===e||n.call(t,e)},c=function(t,e){s&&"__proto__"===e.name?s(t,e.name,{enumerable:!0,configurable:!0,value:e.newValue,writable:!0}):t[e.name]=e.newValue},f=function(t,e){if("__proto__"===e){if(!n.call(t,e))return;if(a)return a(t,e).value}return t[e]};t.exports=function t(){var e,r,n,i,s,a,l=arguments[0],y=1,h=arguments.length,b=!1;for("boolean"==typeof l&&(b=l,l=arguments[1]||{},y=2),(null==l||"object"!==o(l)&&"function"!=typeof l)&&(l={});y<h;++y)if(null!=(e=arguments[y]))for(r in e)n=f(l,r),l!==(i=f(e,r))&&(b&&i&&(p(i)||(s=u(i)))?(s?(s=!1,a=n&&u(n)?n:[]):a=n&&p(n)?n:{},c(l,{name:r,newValue:t(b,a,i)})):void 0!==i&&c(l,{name:r,newValue:i}));return l}},function(t,e){(function(e){t.exports=e}).call(this,{})},function(t,e,r){"use strict";function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,o)}return r}function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t){return function(t){if(Array.isArray(t))return u(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||a(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var r=[],o=!0,n=!1,i=void 0;try{for(var s,a=t[Symbol.iterator]();!(o=(s=a.next()).done)&&(r.push(s.value),!e||r.length!==e);o=!0);}catch(t){n=!0,i=t}finally{try{o||null==a.return||a.return()}finally{if(n)throw i}}return r}(t,e)||a(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(t,e){if(t){if("string"==typeof t)return u(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,e):void 0}}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r<e;r++)o[r]=t[r];return o}var p="undefined"==typeof URL?r(31).URL:URL,c=function(t,e){return e.some((function(e){return e instanceof RegExp?e.test(t):e===t}))},f=function(t,e){if(e=function(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?o(Object(r),!0).forEach((function(e){n(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(t=t.trim(),/^data:/i.test(t))return function(t,e){var r=e.stripHash,o=t.match(/^data:(.*?),(.*?)(?:#(.*))?$/);if(!o)throw new Error("Invalid URL: ".concat(t));var n=o[1].split(";"),a=o[2],u=r?"":o[3],p=!1;"base64"===n[n.length-1]&&(n.pop(),p=!0);var c=(n.shift()||"").toLowerCase(),f=i(n.map((function(t){var e=s(t.split("=").map((function(t){return t.trim()})),2),r=e[0],o=e[1],n=void 0===o?"":o;return"charset"===r&&"us-ascii"===(n=n.toLowerCase())?"":"".concat(r).concat(n?"=".concat(n):"")})).filter(Boolean));return p&&f.push("base64"),(0!==f.length||c&&"text/plain"!==c)&&f.unshift(c),"data:".concat(f.join(";"),",").concat(p?a.trim():a).concat(u?"#".concat(u):"")}(t,e);var r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));var a=new p(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&"https:"===a.protocol&&(a.protocol="http:"),e.forceHttps&&"http:"===a.protocol&&(a.protocol="https:"),e.stripAuthentication&&(a.username="",a.password=""),e.stripHash&&(a.hash=""),a.pathname&&(a.pathname=a.pathname.replace(/((?!:).|^)\/{2,}/g,(function(t,e){return/^(?!\/)/g.test(e)?"".concat(e,"/"):"/"}))),a.pathname&&(a.pathname=decodeURI(a.pathname)),!0===e.removeDirectoryIndex&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){var u=a.pathname.split("/"),f=u[u.length-1];c(f,e.removeDirectoryIndex)&&(u=u.slice(0,u.length-1),a.pathname=u.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(var l=0,y=i(a.searchParams.keys());l<y.length;l++){var h=y[l];c(h,e.removeQueryParameters)&&a.searchParams.delete(h)}return e.sortQueryParameters&&a.searchParams.sort(),e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,"")),t=a.toString(),!e.removeTrailingSlash&&"/"!==a.pathname||""!==a.hash||(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};t.exports=f,t.exports.default=f},function(t,e,r){"use strict";r.r(e),r.d(e,"default",(function(){return h}));var o=r(2),n=r.n(o),i=r(14),s=r.n(i);function a(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var r=[],o=!0,n=!1,i=void 0;try{for(var s,a=t[Symbol.iterator]();!(o=(s=a.next()).done)&&(r.push(s.value),!e||r.length!==e);o=!0);}catch(t){n=!0,i=t}finally{try{o||null==a.return||a.return()}finally{if(n)throw i}}return r}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return u(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return u(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r<e;r++)o[r]=t[r];return o}function p(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,o)}return r}function c(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?p(Object(r),!0).forEach((function(e){f(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function f(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function l(t,e){for(var r=0;r<e.length;r++){var o=e[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var y={globalRegularExpression:/(https?:\/\/|www\.)[\S]+/g,urlRegularExpression:/(https?:\/\/[\S]+)|(www.[\S]+)/,normalizeRegularExpression:/(https?:\/\/[\S]+)|(www.[\S]+)/,normalizeUrlOptions:{stripWWW:!1}},h=function(){function t(e,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.quill=e,r=r||{},this.options=c(c({},y),r),this.registerTypeListener(),this.registerPasteListener()}var e,r,o;return e=t,(r=[{key:"registerPasteListener",value:function(){var t=this;this.quill.clipboard.addMatcher(Node.TEXT_NODE,(function(e,r){if("string"==typeof e.data){var o=e.data.match(t.options.globalRegularExpression);if(o&&o.length>0){var i=new n.a,s=e.data;o.forEach((function(e){var r=s.split(e),o=r.shift();i.insert(o),i.insert(e,{link:t.normalize(e)}),s=r.join(e)})),i.insert(s),r.ops=i.ops}return r}}))}},{key:"registerTypeListener",value:function(){var t=this;this.quill.on("text-change",(function(e){var r=e.ops;if(!(!r||r.length<1||r.length>2)){var o=r[r.length-1];o.insert&&"string"==typeof o.insert&&o.insert.match(/\s/)&&t.checkTextForUrl()}}))}},{key:"checkTextForUrl",value:function(){var t=this.quill.getSelection();if(t){var e=a(this.quill.getLeaf(t.index),1)[0];if(e.text&&"a"!==e.parent.domNode.localName){var r=e.text.match(this.options.urlRegularExpression);if(r){var o=this.quill.getIndex(e)+r.index;this.textToUrl(o,r[0])}}}}},{key:"textToUrl",value:function(t,e){var r=(new n.a).retain(t).delete(e.length).insert(e,{link:this.normalize(e)});this.quill.updateContents(r)}},{key:"normalize",value:function(t){if(this.options.normalizeRegularExpression.test(t))try{return s()(t,this.options.normalizeUrlOptions)}catch(t){console.error(t)}return t}}])&&l(e.prototype,r),o&&l(e,o),t}();window.Quill&&window.Quill.register("modules/magicUrl",h)},function(t,e){function r(t,e,s){if(t==e)return t?[[0,t]]:[];(s<0||t.length<s)&&(s=null);var u=n(t,e),p=t.substring(0,u);u=i(t=t.substring(u),e=e.substring(u));var c=t.substring(t.length-u),f=function(t,e){var s;if(!t)return[[1,e]];if(!e)return[[-1,t]];var a=t.length>e.length?t:e,u=t.length>e.length?e:t,p=a.indexOf(u);if(-1!=p)return s=[[1,a.substring(0,p)],[0,u],[1,a.substring(p+u.length)]],t.length>e.length&&(s[0][0]=s[2][0]=-1),s;if(1==u.length)return[[-1,t],[1,e]];var c=function(t,e){var r=t.length>e.length?t:e,o=t.length>e.length?e:t;if(r.length<4||2*o.length<r.length)return null;function s(t,e,r){for(var o,s,a,u,p=t.substring(r,r+Math.floor(t.length/4)),c=-1,f="";-1!=(c=e.indexOf(p,c+1));){var l=n(t.substring(r),e.substring(c)),y=i(t.substring(0,r),e.substring(0,c));f.length<y+l&&(f=e.substring(c-y,c)+e.substring(c,c+l),o=t.substring(0,r-y),s=t.substring(r+l),a=e.substring(0,c-y),u=e.substring(c+l))}return 2*f.length>=t.length?[o,s,a,u,f]:null}var a,u,p,c,f,l=s(r,o,Math.ceil(r.length/4)),y=s(r,o,Math.ceil(r.length/2));if(!l&&!y)return null;a=y?l&&l[4].length>y[4].length?l:y:l;t.length>e.length?(u=a[0],p=a[1],c=a[2],f=a[3]):(c=a[0],f=a[1],u=a[2],p=a[3]);var h=a[4];return[u,p,c,f,h]}(t,e);if(c){var f=c[0],l=c[1],y=c[2],h=c[3],b=c[4],m=r(f,y),d=r(l,h);return m.concat([[0,b]],d)}return function(t,e){for(var r=t.length,n=e.length,i=Math.ceil((r+n)/2),s=i,a=2*i,u=new Array(a),p=new Array(a),c=0;c<a;c++)u[c]=-1,p[c]=-1;u[s+1]=0,p[s+1]=0;for(var f=r-n,l=f%2!=0,y=0,h=0,b=0,m=0,d=0;d<i;d++){for(var g=-d+y;g<=d-h;g+=2){for(var v=s+g,S=(A=g==-d||g!=d&&u[v-1]<u[v+1]?u[v+1]:u[v-1]+1)-g;A<r&&S<n&&t.charAt(A)==e.charAt(S);)A++,S++;if(u[v]=A,A>r)h+=2;else if(S>n)y+=2;else if(l){if((w=s+f-g)>=0&&w<a&&-1!=p[w]){var j=r-p[w];if(A>=j)return o(t,e,A,S)}}}for(var O=-d+b;O<=d-m;O+=2){for(var w=s+O,x=(j=O==-d||O!=d&&p[w-1]<p[w+1]?p[w+1]:p[w-1]+1)-O;j<r&&x<n&&t.charAt(r-j-1)==e.charAt(n-x-1);)j++,x++;if(p[w]=j,j>r)m+=2;else if(x>n)b+=2;else if(!l){if((v=s+f-O)>=0&&v<a&&-1!=u[v]){var A=u[v];S=s+A-v;if(A>=(j=r-j))return o(t,e,A,S)}}}}return[[-1,t],[1,e]]}(t,e)}(t=t.substring(0,t.length-u),e=e.substring(0,e.length-u));return p&&f.unshift([0,p]),c&&f.push([0,c]),function t(e){e.push([0,""]);var r,o=0,s=0,a=0,u="",p="";for(;o<e.length;)switch(e[o][0]){case 1:a++,p+=e[o][1],o++;break;case-1:s++,u+=e[o][1],o++;break;case 0:s+a>1?(0!==s&&0!==a&&(0!==(r=n(p,u))&&(o-s-a>0&&0==e[o-s-a-1][0]?e[o-s-a-1][1]+=p.substring(0,r):(e.splice(0,0,[0,p.substring(0,r)]),o++),p=p.substring(r),u=u.substring(r)),0!==(r=i(p,u))&&(e[o][1]=p.substring(p.length-r)+e[o][1],p=p.substring(0,p.length-r),u=u.substring(0,u.length-r))),0===s?e.splice(o-a,s+a,[1,p]):0===a?e.splice(o-s,s+a,[-1,u]):e.splice(o-s-a,s+a,[-1,u],[1,p]),o=o-s-a+(s?1:0)+(a?1:0)+1):0!==o&&0==e[o-1][0]?(e[o-1][1]+=e[o][1],e.splice(o,1)):o++,a=0,s=0,u="",p=""}""===e[e.length-1][1]&&e.pop();var c=!1;o=1;for(;o<e.length-1;)0==e[o-1][0]&&0==e[o+1][0]&&(e[o][1].substring(e[o][1].length-e[o-1][1].length)==e[o-1][1]?(e[o][1]=e[o-1][1]+e[o][1].substring(0,e[o][1].length-e[o-1][1].length),e[o+1][1]=e[o-1][1]+e[o+1][1],e.splice(o-1,1),c=!0):e[o][1].substring(0,e[o+1][1].length)==e[o+1][1]&&(e[o-1][1]+=e[o+1][1],e[o][1]=e[o][1].substring(e[o+1][1].length)+e[o+1][1],e.splice(o+1,1),c=!0)),o++;c&&t(e)}(f),null!=s&&(f=function(t,e){var r=function(t,e){if(0===e)return[0,t];for(var r=0,o=0;o<t.length;o++){var n=t[o];if(-1===n[0]||0===n[0]){var i=r+n[1].length;if(e===i)return[o+1,t];if(e<i){t=t.slice();var s=e-r,a=[n[0],n[1].slice(0,s)],u=[n[0],n[1].slice(s)];return t.splice(o,1,a,u),[o+1,t]}r=i}}throw new Error("cursor_pos is out of bounds!")}(t,e),o=r[1],n=r[0],i=o[n],s=o[n+1];if(null==i)return t;if(0!==i[0])return t;if(null!=s&&i[1]+s[1]===s[1]+i[1])return o.splice(n,2,s,i),a(o,n,2);if(null!=s&&0===s[1].indexOf(i[1])){o.splice(n,2,[s[0],i[1]],[0,i[1]]);var u=s[1].slice(i[1].length);return u.length>0&&o.splice(n+2,0,[s[0],u]),a(o,n,3)}return t}(f,s)),f=function(t){for(var e=!1,r=function(t){return t.charCodeAt(0)>=56320&&t.charCodeAt(0)<=57343},o=2;o<t.length;o+=1)0===t[o-2][0]&&((n=t[o-2][1]).charCodeAt(n.length-1)>=55296&&n.charCodeAt(n.length-1)<=56319)&&-1===t[o-1][0]&&r(t[o-1][1])&&1===t[o][0]&&r(t[o][1])&&(e=!0,t[o-1][1]=t[o-2][1].slice(-1)+t[o-1][1],t[o][1]=t[o-2][1].slice(-1)+t[o][1],t[o-2][1]=t[o-2][1].slice(0,-1));var n;if(!e)return t;var i=[];for(o=0;o<t.length;o+=1)t[o][1].length>0&&i.push(t[o]);return i}(f)}function o(t,e,o,n){var i=t.substring(0,o),s=e.substring(0,n),a=t.substring(o),u=e.substring(n),p=r(i,s),c=r(a,u);return p.concat(c)}function n(t,e){if(!t||!e||t.charAt(0)!=e.charAt(0))return 0;for(var r=0,o=Math.min(t.length,e.length),n=o,i=0;r<n;)t.substring(i,n)==e.substring(i,n)?i=r=n:o=n,n=Math.floor((o-r)/2+r);return n}function i(t,e){if(!t||!e||t.charAt(t.length-1)!=e.charAt(e.length-1))return 0;for(var r=0,o=Math.min(t.length,e.length),n=o,i=0;r<n;)t.substring(t.length-n,t.length-i)==e.substring(e.length-n,e.length-i)?i=r=n:o=n,n=Math.floor((o-r)/2+r);return n}var s=r;function a(t,e,r){for(var o=e+r-1;o>=0&&o>=e-1;o--)if(o+1<t.length){var n=t[o],i=t[o+1];n[0]===i[1]&&t.splice(o,2,[n[0],n[1]+i[1]])}return t}s.INSERT=1,s.DELETE=-1,s.EQUAL=0,t.exports=s},function(t,e,r){"use strict";function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n;if(!Object.keys){var i=Object.prototype.hasOwnProperty,s=Object.prototype.toString,a=r(5),u=Object.prototype.propertyIsEnumerable,p=!u.call({toString:null},"toString"),c=u.call((function(){}),"prototype"),f=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],l=function(t){var e=t.constructor;return e&&e.prototype===t},y={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},h=function(){if("undefined"==typeof window)return!1;for(var t in window)try{if(!y["$"+t]&&i.call(window,t)&&null!==window[t]&&"object"===o(window[t]))try{l(window[t])}catch(t){return!0}}catch(t){return!0}return!1}();n=function(t){var e=null!==t&&"object"===o(t),r="[object Function]"===s.call(t),n=a(t),u=e&&"[object String]"===s.call(t),y=[];if(!e&&!r&&!n)throw new TypeError("Object.keys called on a non-object");var b=c&&r;if(u&&t.length>0&&!i.call(t,0))for(var m=0;m<t.length;++m)y.push(String(m));if(n&&t.length>0)for(var d=0;d<t.length;++d)y.push(String(d));else for(var g in t)b&&"prototype"===g||!i.call(t,g)||y.push(String(g));if(p)for(var v=function(t){if("undefined"==typeof window||!h)return l(t);try{return l(t)}catch(t){return!1}}(t),S=0;S<f.length;++S)v&&"constructor"===f[S]||!i.call(t,f[S])||y.push(f[S]);return y}}t.exports=n},function(t,e,r){"use strict";function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n="function"==typeof Symbol&&"symbol"===o(Symbol.toStringTag),i=Object.prototype.toString,s=function(t){return!(n&&t&&"object"===o(t)&&Symbol.toStringTag in t)&&"[object Arguments]"===i.call(t)},a=function(t){return!!s(t)||null!==t&&"object"===o(t)&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==i.call(t)&&"[object Function]"===i.call(t.callee)},u=function(){return s(arguments)}();s.isLegacyArguments=a,t.exports=u?s:a},function(t,e,r){"use strict";var o=r(0),n=r(6),i=r(8),s=r(9),a=r(24),u=n(s(),Object);o(u,{getPolyfill:s,implementation:i,shim:a}),t.exports=u},function(t,e,r){"use strict";var o="Function.prototype.bind called on incompatible ",n=Array.prototype.slice,i=Object.prototype.toString;t.exports=function(t){var e=this;if("function"!=typeof e||"[object Function]"!==i.call(e))throw new TypeError(o+e);for(var r,s=n.call(arguments,1),a=function(){if(this instanceof r){var o=e.apply(this,s.concat(n.call(arguments)));return Object(o)===o?o:this}return e.apply(t,s.concat(n.call(arguments)))},u=Math.max(0,e.length-s.length),p=[],c=0;c<u;c++)p.push("$"+c);if(r=Function("binder","return function ("+p.join(",")+"){ return binder.apply(this,arguments); }")(a),e.prototype){var f=function(){};f.prototype=e.prototype,r.prototype=new f,f.prototype=null}return r}},function(t,e,r){"use strict";function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n=TypeError,i=Object.getOwnPropertyDescriptor;if(i)try{i({},"")}catch(t){i=null}var s=function(){throw new n},a=i?function(){try{return s}catch(t){try{return i(arguments,"callee").get}catch(t){return s}}}():s,u=r(22)(),p=Object.getPrototypeOf||function(t){return t.__proto__},c=void 0,f="undefined"==typeof Uint8Array?void 0:p(Uint8Array),l={"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?void 0:ArrayBuffer,"%ArrayBufferPrototype%":"undefined"==typeof ArrayBuffer?void 0:ArrayBuffer.prototype,"%ArrayIteratorPrototype%":u?p([][Symbol.iterator]()):void 0,"%ArrayPrototype%":Array.prototype,"%ArrayProto_entries%":Array.prototype.entries,"%ArrayProto_forEach%":Array.prototype.forEach,"%ArrayProto_keys%":Array.prototype.keys,"%ArrayProto_values%":Array.prototype.values,"%AsyncFromSyncIteratorPrototype%":void 0,"%AsyncFunction%":void 0,"%AsyncFunctionPrototype%":void 0,"%AsyncGenerator%":void 0,"%AsyncGeneratorFunction%":void 0,"%AsyncGeneratorPrototype%":void 0,"%AsyncIteratorPrototype%":c&&u&&Symbol.asyncIterator?c[Symbol.asyncIterator]():void 0,"%Atomics%":"undefined"==typeof Atomics?void 0:Atomics,"%Boolean%":Boolean,"%BooleanPrototype%":Boolean.prototype,"%DataView%":"undefined"==typeof DataView?void 0:DataView,"%DataViewPrototype%":"undefined"==typeof DataView?void 0:DataView.prototype,"%Date%":Date,"%DatePrototype%":Date.prototype,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%ErrorPrototype%":Error.prototype,"%eval%":eval,"%EvalError%":EvalError,"%EvalErrorPrototype%":EvalError.prototype,"%Float32Array%":"undefined"==typeof Float32Array?void 0:Float32Array,"%Float32ArrayPrototype%":"undefined"==typeof Float32Array?void 0:Float32Array.prototype,"%Float64Array%":"undefined"==typeof Float64Array?void 0:Float64Array,"%Float64ArrayPrototype%":"undefined"==typeof Float64Array?void 0:Float64Array.prototype,"%Function%":Function,"%FunctionPrototype%":Function.prototype,"%Generator%":void 0,"%GeneratorFunction%":void 0,"%GeneratorPrototype%":void 0,"%Int8Array%":"undefined"==typeof Int8Array?void 0:Int8Array,"%Int8ArrayPrototype%":"undefined"==typeof Int8Array?void 0:Int8Array.prototype,"%Int16Array%":"undefined"==typeof Int16Array?void 0:Int16Array,"%Int16ArrayPrototype%":"undefined"==typeof Int16Array?void 0:Int8Array.prototype,"%Int32Array%":"undefined"==typeof Int32Array?void 0:Int32Array,"%Int32ArrayPrototype%":"undefined"==typeof Int32Array?void 0:Int32Array.prototype,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":u?p(p([][Symbol.iterator]())):void 0,"%JSON%":"object"===("undefined"==typeof JSON?"undefined":o(JSON))?JSON:void 0,"%JSONParse%":"object"===("undefined"==typeof JSON?"undefined":o(JSON))?JSON.parse:void 0,"%Map%":"undefined"==typeof Map?void 0:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&u?p((new Map)[Symbol.iterator]()):void 0,"%MapPrototype%":"undefined"==typeof Map?void 0:Map.prototype,"%Math%":Math,"%Number%":Number,"%NumberPrototype%":Number.prototype,"%Object%":Object,"%ObjectPrototype%":Object.prototype,"%ObjProto_toString%":Object.prototype.toString,"%ObjProto_valueOf%":Object.prototype.valueOf,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?void 0:Promise,"%PromisePrototype%":"undefined"==typeof Promise?void 0:Promise.prototype,"%PromiseProto_then%":"undefined"==typeof Promise?void 0:Promise.prototype.then,"%Promise_all%":"undefined"==typeof Promise?void 0:Promise.all,"%Promise_reject%":"undefined"==typeof Promise?void 0:Promise.reject,"%Promise_resolve%":"undefined"==typeof Promise?void 0:Promise.resolve,"%Proxy%":"undefined"==typeof Proxy?void 0:Proxy,"%RangeError%":RangeError,"%RangeErrorPrototype%":RangeError.prototype,"%ReferenceError%":ReferenceError,"%ReferenceErrorPrototype%":ReferenceError.prototype,"%Reflect%":"undefined"==typeof Reflect?void 0:Reflect,"%RegExp%":RegExp,"%RegExpPrototype%":RegExp.prototype,"%Set%":"undefined"==typeof Set?void 0:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&u?p((new Set)[Symbol.iterator]()):void 0,"%SetPrototype%":"undefined"==typeof Set?void 0:Set.prototype,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?void 0:SharedArrayBuffer,"%SharedArrayBufferPrototype%":"undefined"==typeof SharedArrayBuffer?void 0:SharedArrayBuffer.prototype,"%String%":String,"%StringIteratorPrototype%":u?p(""[Symbol.iterator]()):void 0,"%StringPrototype%":String.prototype,"%Symbol%":u?Symbol:void 0,"%SymbolPrototype%":u?Symbol.prototype:void 0,"%SyntaxError%":SyntaxError,"%SyntaxErrorPrototype%":SyntaxError.prototype,"%ThrowTypeError%":a,"%TypedArray%":f,"%TypedArrayPrototype%":f?f.prototype:void 0,"%TypeError%":n,"%TypeErrorPrototype%":n.prototype,"%Uint8Array%":"undefined"==typeof Uint8Array?void 0:Uint8Array,"%Uint8ArrayPrototype%":"undefined"==typeof Uint8Array?void 0:Uint8Array.prototype,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?void 0:Uint8ClampedArray,"%Uint8ClampedArrayPrototype%":"undefined"==typeof Uint8ClampedArray?void 0:Uint8ClampedArray.prototype,"%Uint16Array%":"undefined"==typeof Uint16Array?void 0:Uint16Array,"%Uint16ArrayPrototype%":"undefined"==typeof Uint16Array?void 0:Uint16Array.prototype,"%Uint32Array%":"undefined"==typeof Uint32Array?void 0:Uint32Array,"%Uint32ArrayPrototype%":"undefined"==typeof Uint32Array?void 0:Uint32Array.prototype,"%URIError%":URIError,"%URIErrorPrototype%":URIError.prototype,"%WeakMap%":"undefined"==typeof WeakMap?void 0:WeakMap,"%WeakMapPrototype%":"undefined"==typeof WeakMap?void 0:WeakMap.prototype,"%WeakSet%":"undefined"==typeof WeakSet?void 0:WeakSet,"%WeakSetPrototype%":"undefined"==typeof WeakSet?void 0:WeakSet.prototype},y=r(1).call(Function.call,String.prototype.replace),h=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,b=/\\(\\)?/g,m=function(t){var e=[];return y(t,h,(function(t,r,o,n){e[e.length]=o?y(n,b,"$1"):r||t})),e},d=function(t,e){if(!(t in l))throw new SyntaxError("intrinsic "+t+" does not exist!");if(void 0===l[t]&&!e)throw new n("intrinsic "+t+" exists, but is not available. Please file an issue!");return l[t]};t.exports=function(t,e){if("string"!=typeof t||0===t.length)throw new TypeError("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new TypeError('"allowMissing" argument must be a boolean');for(var r=m(t),o=d("%"+(r.length>0?r[0]:"")+"%",e),s=1;s<r.length;s+=1)if(null!=o)if(i&&s+1>=r.length){var a=i(o,r[s]);if(!e&&!(r[s]in o))throw new n("base intrinsic for "+t+" exists, but the property is not available.");o=a?a.get||a.value:o[r[s]]}else o=o[r[s]];return o}},function(t,e,r){"use strict";(function(e){function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n=e.Symbol,i=r(23);t.exports=function(){return"function"==typeof n&&("function"==typeof Symbol&&("symbol"===o(n("foo"))&&("symbol"===o(Symbol("bar"))&&i())))}}).call(this,r(7))},function(t,e,r){"use strict";function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"===o(Symbol.iterator))return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(e in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var n=Object.getOwnPropertySymbols(t);if(1!==n.length||n[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},function(t,e,r){"use strict";var o=r(9),n=r(0);t.exports=function(){var t=o();return n(Object,{is:t},{is:function(){return Object.is!==t}}),t}},function(t,e,r){"use strict";function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n=r(26),i=RegExp.prototype.exec,s=Object.getOwnPropertyDescriptor,a=Object.prototype.toString,u="function"==typeof Symbol&&"symbol"===o(Symbol.toStringTag);t.exports=function(t){if(!t||"object"!==o(t))return!1;if(!u)return"[object RegExp]"===a.call(t);var e=s(t,"lastIndex");return!(!e||!n(e,"value"))&&function(t){try{var e=t.lastIndex;return t.lastIndex=0,i.call(t),!0}catch(t){return!1}finally{t.lastIndex=e}}(t)}},function(t,e,r){"use strict";var o=r(1);t.exports=o.call(Function.call,Object.prototype.hasOwnProperty)},function(t,e,r){"use strict";var o=r(0),n=r(6),i=r(10),s=r(11),a=r(28),u=n(i);o(u,{getPolyfill:s,implementation:i,shim:a}),t.exports=u},function(t,e,r){"use strict";var o=r(0).supportsDescriptors,n=r(11),i=Object.getOwnPropertyDescriptor,s=Object.defineProperty,a=TypeError,u=Object.getPrototypeOf,p=/a/;t.exports=function(){if(!o||!u)throw new a("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors");var t=n(),e=u(p),r=i(e,"flags");return r&&r.get===t||s(e,"flags",{configurable:!0,enumerable:!1,get:t}),t}},function(t,e,r){"use strict";function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n=Date.prototype.getDay,i=Object.prototype.toString,s="function"==typeof Symbol&&"symbol"===o(Symbol.toStringTag);t.exports=function(t){return"object"===o(t)&&null!==t&&(s?function(t){try{return n.call(t),!0}catch(t){return!1}}(t):"[object Date]"===i.call(t))}},function(t,e,r){function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n=r(3),i=r(12),s={attributes:{compose:function(t,e,r){"object"!==o(t)&&(t={}),"object"!==o(e)&&(e={});var n=i(!0,{},e);for(var s in r||(n=Object.keys(n).reduce((function(t,e){return null!=n[e]&&(t[e]=n[e]),t}),{})),t)void 0!==t[s]&&void 0===e[s]&&(n[s]=t[s]);return Object.keys(n).length>0?n:void 0},diff:function(t,e){"object"!==o(t)&&(t={}),"object"!==o(e)&&(e={});var r=Object.keys(t).concat(Object.keys(e)).reduce((function(r,o){return n(t[o],e[o])||(r[o]=void 0===e[o]?null:e[o]),r}),{});return Object.keys(r).length>0?r:void 0},transform:function(t,e,r){if("object"!==o(t))return e;if("object"===o(e)){if(!r)return e;var n=Object.keys(e).reduce((function(r,o){return void 0===t[o]&&(r[o]=e[o]),r}),{});return Object.keys(n).length>0?n:void 0}}},iterator:function(t){return new a(t)},length:function(t){return"number"==typeof t.delete?t.delete:"number"==typeof t.retain?t.retain:"string"==typeof t.insert?t.insert.length:1}};function a(t){this.ops=t,this.index=0,this.offset=0}a.prototype.hasNext=function(){return this.peekLength()<1/0},a.prototype.next=function(t){t||(t=1/0);var e=this.ops[this.index];if(e){var r=this.offset,o=s.length(e);if(t>=o-r?(t=o-r,this.index+=1,this.offset=0):this.offset+=t,"number"==typeof e.delete)return{delete:t};var n={};return e.attributes&&(n.attributes=e.attributes),"number"==typeof e.retain?n.retain=t:"string"==typeof e.insert?n.insert=e.insert.substr(r,t):n.insert=e.insert,n}return{retain:1/0}},a.prototype.peek=function(){return this.ops[this.index]},a.prototype.peekLength=function(){return this.ops[this.index]?s.length(this.ops[this.index])-this.offset:1/0},a.prototype.peekType=function(){return this.ops[this.index]?"number"==typeof this.ops[this.index].delete?"delete":"number"==typeof this.ops[this.index].retain?"retain":"insert":"retain"},a.prototype.rest=function(){if(this.hasNext()){if(0===this.offset)return this.ops.slice(this.index);var t=this.offset,e=this.index,r=this.next(),o=this.ops.slice(this.index);return this.offset=t,this.index=e,[r].concat(o)}return[]},t.exports=s},function(t,e,r){"use strict";function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n=r(32),i=r(34);function s(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=S,e.resolve=function(t,e){return S(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?S(t,!1,!0).resolveObject(e):e},e.format=function(t){i.isString(t)&&(t=S(t));return t instanceof s?t.format():s.prototype.format.call(t)},e.Url=s;var a=/^([a-z0-9.+-]+:)/i,u=/:[0-9]*$/,p=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),f=["'"].concat(c),l=["%","/","?",";","#"].concat(f),y=["/","?","#"],h=/^[+a-z0-9A-Z_-]{0,63}$/,b=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,"javascript:":!0},d={javascript:!0,"javascript:":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},v=r(35);function S(t,e,r){if(t&&i.isObject(t)&&t instanceof s)return t;var o=new s;return o.parse(t,e,r),o}s.prototype.parse=function(t,e,r){if(!i.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+o(t));var s=t.indexOf("?"),u=-1!==s&&s<t.indexOf("#")?"?":"#",c=t.split(u);c[0]=c[0].replace(/\\/g,"/");var S=t=c.join(u);if(S=S.trim(),!r&&1===t.split("#").length){var j=p.exec(S);if(j)return this.path=S,this.href=S,this.pathname=j[1],j[2]?(this.search=j[2],this.query=e?v.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search="",this.query={}),this}var O=a.exec(S);if(O){var w=(O=O[0]).toLowerCase();this.protocol=w,S=S.substr(O.length)}if(r||O||S.match(/^\/\/[^@\/]+@[^@\/]+/)){var x="//"===S.substr(0,2);!x||O&&d[O]||(S=S.substr(2),this.slashes=!0)}if(!d[O]&&(x||O&&!g[O])){for(var A,P,E=-1,I=0;I<y.length;I++){-1!==(k=S.indexOf(y[I]))&&(-1===E||k<E)&&(E=k)}-1!==(P=-1===E?S.lastIndexOf("@"):S.lastIndexOf("@",E))&&(A=S.slice(0,P),S=S.slice(P+1),this.auth=decodeURIComponent(A)),E=-1;for(I=0;I<l.length;I++){var k;-1!==(k=S.indexOf(l[I]))&&(-1===E||k<E)&&(E=k)}-1===E&&(E=S.length),this.host=S.slice(0,E),S=S.slice(E),this.parseHost(),this.hostname=this.hostname||"";var U="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!U)for(var R=this.hostname.split(/\./),T=(I=0,R.length);I<T;I++){var C=R[I];if(C&&!C.match(h)){for(var F="",D=0,M=C.length;D<M;D++)C.charCodeAt(D)>127?F+="x":F+=C[D];if(!F.match(h)){var N=R.slice(0,I),$=R.slice(I+1),L=C.match(b);L&&(N.push(L[1]),$.unshift(L[2])),$.length&&(S="/"+$.join(".")+S),this.hostname=N.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),U||(this.hostname=n.toASCII(this.hostname));var _=this.port?":"+this.port:"",q=this.hostname||"";this.host=q+_,this.href+=this.host,U&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==S[0]&&(S="/"+S))}if(!m[w])for(I=0,T=f.length;I<T;I++){var W=f[I];if(-1!==S.indexOf(W)){var H=encodeURIComponent(W);H===W&&(H=escape(W)),S=S.split(W).join(H)}}var z=S.indexOf("#");-1!==z&&(this.hash=S.substr(z),S=S.slice(0,z));var B=S.indexOf("?");if(-1!==B?(this.search=S.substr(B),this.query=S.substr(B+1),e&&(this.query=v.parse(this.query)),S=S.slice(0,B)):e&&(this.search="",this.query={}),S&&(this.pathname=S),g[w]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){_=this.pathname||"";var V=this.search||"";this.path=_+V}return this.href=this.format(),this},s.prototype.format=function(){var t=this.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var e=this.protocol||"",r=this.pathname||"",o=this.hash||"",n=!1,s="";this.host?n=t+this.host:this.hostname&&(n=t+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(n+=":"+this.port)),this.query&&i.isObject(this.query)&&Object.keys(this.query).length&&(s=v.stringify(this.query));var a=this.search||s&&"?"+s||"";return e&&":"!==e.substr(-1)&&(e+=":"),this.slashes||(!e||g[e])&&!1!==n?(n="//"+(n||""),r&&"/"!==r.charAt(0)&&(r="/"+r)):n||(n=""),o&&"#"!==o.charAt(0)&&(o="#"+o),a&&"?"!==a.charAt(0)&&(a="?"+a),e+n+(r=r.replace(/[?#]/g,(function(t){return encodeURIComponent(t)})))+(a=a.replace("#","%23"))+o},s.prototype.resolve=function(t){return this.resolveObject(S(t,!1,!0)).format()},s.prototype.resolveObject=function(t){if(i.isString(t)){var e=new s;e.parse(t,!1,!0),t=e}for(var r=new s,o=Object.keys(this),n=0;n<o.length;n++){var a=o[n];r[a]=this[a]}if(r.hash=t.hash,""===t.href)return r.href=r.format(),r;if(t.slashes&&!t.protocol){for(var u=Object.keys(t),p=0;p<u.length;p++){var c=u[p];"protocol"!==c&&(r[c]=t[c])}return g[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(t.protocol&&t.protocol!==r.protocol){if(!g[t.protocol]){for(var f=Object.keys(t),l=0;l<f.length;l++){var y=f[l];r[y]=t[y]}return r.href=r.format(),r}if(r.protocol=t.protocol,t.host||d[t.protocol])r.pathname=t.pathname;else{for(var h=(t.pathname||"").split("/");h.length&&!(t.host=h.shift()););t.host||(t.host=""),t.hostname||(t.hostname=""),""!==h[0]&&h.unshift(""),h.length<2&&h.unshift(""),r.pathname=h.join("/")}if(r.search=t.search,r.query=t.query,r.host=t.host||"",r.auth=t.auth,r.hostname=t.hostname||t.host,r.port=t.port,r.pathname||r.search){var b=r.pathname||"",m=r.search||"";r.path=b+m}return r.slashes=r.slashes||t.slashes,r.href=r.format(),r}var v=r.pathname&&"/"===r.pathname.charAt(0),S=t.host||t.pathname&&"/"===t.pathname.charAt(0),j=S||v||r.host&&t.pathname,O=j,w=r.pathname&&r.pathname.split("/")||[],x=(h=t.pathname&&t.pathname.split("/")||[],r.protocol&&!g[r.protocol]);if(x&&(r.hostname="",r.port=null,r.host&&(""===w[0]?w[0]=r.host:w.unshift(r.host)),r.host="",t.protocol&&(t.hostname=null,t.port=null,t.host&&(""===h[0]?h[0]=t.host:h.unshift(t.host)),t.host=null),j=j&&(""===h[0]||""===w[0])),S)r.host=t.host||""===t.host?t.host:r.host,r.hostname=t.hostname||""===t.hostname?t.hostname:r.hostname,r.search=t.search,r.query=t.query,w=h;else if(h.length)w||(w=[]),w.pop(),w=w.concat(h),r.search=t.search,r.query=t.query;else if(!i.isNullOrUndefined(t.search)){if(x)r.hostname=r.host=w.shift(),(k=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=k.shift(),r.host=r.hostname=k.shift());return r.search=t.search,r.query=t.query,i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!w.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var A=w.slice(-1)[0],P=(r.host||t.host||w.length>1)&&("."===A||".."===A)||""===A,E=0,I=w.length;I>=0;I--)"."===(A=w[I])?w.splice(I,1):".."===A?(w.splice(I,1),E++):E&&(w.splice(I,1),E--);if(!j&&!O)for(;E--;E)w.unshift("..");!j||""===w[0]||w[0]&&"/"===w[0].charAt(0)||w.unshift(""),P&&"/"!==w.join("/").substr(-1)&&w.push("");var k,U=""===w[0]||w[0]&&"/"===w[0].charAt(0);x&&(r.hostname=r.host=U?"":w.length?w.shift():"",(k=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=k.shift(),r.host=r.hostname=k.shift()));return(j=j||r.host&&w.length)&&!U&&w.unshift(""),w.length?r.pathname=w.join("/"):(r.pathname=null,r.path=null),i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},s.prototype.parseHost=function(){var t=this.host,e=u.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,r){(function(t,o){var n;function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}
|
3
|
+
/*! https://mths.be/punycode v1.4.1 by @mathias */!function(s){var a="object"==i(e)&&e&&!e.nodeType&&e,u="object"==i(t)&&t&&!t.nodeType&&t,p="object"==(void 0===o?"undefined":i(o))&&o;p.global!==p&&p.window!==p&&p.self!==p||(s=p);var c,f,l=2147483647,y=/^xn--/,h=/[^\x20-\x7E]/,b=/[\x2E\u3002\uFF0E\uFF61]/g,m={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},d=Math.floor,g=String.fromCharCode;function v(t){throw new RangeError(m[t])}function S(t,e){for(var r=t.length,o=[];r--;)o[r]=e(t[r]);return o}function j(t,e){var r=t.split("@"),o="";return r.length>1&&(o=r[0]+"@",t=r[1]),o+S((t=t.replace(b,".")).split("."),e).join(".")}function O(t){for(var e,r,o=[],n=0,i=t.length;n<i;)(e=t.charCodeAt(n++))>=55296&&e<=56319&&n<i?56320==(64512&(r=t.charCodeAt(n++)))?o.push(((1023&e)<<10)+(1023&r)+65536):(o.push(e),n--):o.push(e);return o}function w(t){return S(t,(function(t){var e="";return t>65535&&(e+=g((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=g(t)})).join("")}function x(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function A(t,e,r){var o=0;for(t=r?d(t/700):t>>1,t+=d(t/e);t>455;o+=36)t=d(t/35);return d(o+36*t/(t+38))}function P(t){var e,r,o,n,i,s,a,u,p,c,f,y=[],h=t.length,b=0,m=128,g=72;for((r=t.lastIndexOf("-"))<0&&(r=0),o=0;o<r;++o)t.charCodeAt(o)>=128&&v("not-basic"),y.push(t.charCodeAt(o));for(n=r>0?r+1:0;n<h;){for(i=b,s=1,a=36;n>=h&&v("invalid-input"),((u=(f=t.charCodeAt(n++))-48<10?f-22:f-65<26?f-65:f-97<26?f-97:36)>=36||u>d((l-b)/s))&&v("overflow"),b+=u*s,!(u<(p=a<=g?1:a>=g+26?26:a-g));a+=36)s>d(l/(c=36-p))&&v("overflow"),s*=c;g=A(b-i,e=y.length+1,0==i),d(b/e)>l-m&&v("overflow"),m+=d(b/e),b%=e,y.splice(b++,0,m)}return w(y)}function E(t){var e,r,o,n,i,s,a,u,p,c,f,y,h,b,m,S=[];for(y=(t=O(t)).length,e=128,r=0,i=72,s=0;s<y;++s)(f=t[s])<128&&S.push(g(f));for(o=n=S.length,n&&S.push("-");o<y;){for(a=l,s=0;s<y;++s)(f=t[s])>=e&&f<a&&(a=f);for(a-e>d((l-r)/(h=o+1))&&v("overflow"),r+=(a-e)*h,e=a,s=0;s<y;++s)if((f=t[s])<e&&++r>l&&v("overflow"),f==e){for(u=r,p=36;!(u<(c=p<=i?1:p>=i+26?26:p-i));p+=36)m=u-c,b=36-c,S.push(g(x(c+m%b,0))),u=d(m/b);S.push(g(x(u,0))),i=A(r,h,o==n),r=0,++o}++r,++e}return S.join("")}if(c={version:"1.4.1",ucs2:{decode:O,encode:w},decode:P,encode:E,toASCII:function(t){return j(t,(function(t){return h.test(t)?"xn--"+E(t):t}))},toUnicode:function(t){return j(t,(function(t){return y.test(t)?P(t.slice(4).toLowerCase()):t}))}},"object"==i(r(13))&&r(13))void 0===(n=function(){return c}.call(e,r,e,t))||(t.exports=n);else if(a&&u)if(t.exports==a)u.exports=c;else for(f in c)c.hasOwnProperty(f)&&(a[f]=c[f]);else s.punycode=c}(this)}).call(this,r(33)(t),r(7))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,r){"use strict";function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"===o(t)&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},function(t,e,r){"use strict";e.decode=e.parse=r(36),e.encode=e.stringify=r(37)},function(t,e,r){"use strict";function o(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,r,i){e=e||"&",r=r||"=";var s={};if("string"!=typeof t||0===t.length)return s;var a=/\+/g;t=t.split(e);var u=1e3;i&&"number"==typeof i.maxKeys&&(u=i.maxKeys);var p=t.length;u>0&&p>u&&(p=u);for(var c=0;c<p;++c){var f,l,y,h,b=t[c].replace(a,"%20"),m=b.indexOf(r);m>=0?(f=b.substr(0,m),l=b.substr(m+1)):(f=b,l=""),y=decodeURIComponent(f),h=decodeURIComponent(l),o(s,y)?n(s[y])?s[y].push(h):s[y]=[s[y],h]:s[y]=h}return s};var n=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}},function(t,e,r){"use strict";function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n=function(t){switch(o(t)){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,r,u){return e=e||"&",r=r||"=",null===t&&(t=void 0),"object"===o(t)?s(a(t),(function(o){var a=encodeURIComponent(n(o))+r;return i(t[o])?s(t[o],(function(t){return a+encodeURIComponent(n(t))})).join(e):a+encodeURIComponent(n(t[o]))})).join(e):u?encodeURIComponent(n(u))+r+encodeURIComponent(n(t)):""};var i=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function s(t,e){if(t.map)return t.map(e);for(var r=[],o=0;o<t.length;o++)r.push(e(t[o],o));return r}var a=Object.keys||function(t){var e=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.push(r);return e}}])}));
|
@@ -0,0 +1,77 @@
|
|
1
|
+
assignPositions = (target) ->
|
2
|
+
$hasMany = $(target)
|
3
|
+
return unless $hasMany.length > 0
|
4
|
+
|
5
|
+
$fields = $hasMany.children('.has-many-fields:not(.marked-for-destruction)')
|
6
|
+
positions = $fields.find("input[name$='[position]']").map(-> this.value).get()
|
7
|
+
|
8
|
+
if positions.length > 0
|
9
|
+
index = Math.min.apply(Math, positions) || 0
|
10
|
+
|
11
|
+
$fields.each((i, obj) ->
|
12
|
+
$(obj).find("input[name$='[position]']").first().val(index)
|
13
|
+
index = index + 1
|
14
|
+
)
|
15
|
+
|
16
|
+
true
|
17
|
+
|
18
|
+
(this.EffectiveBootstrap || {}).effective_has_many = ($element, options) ->
|
19
|
+
if options.sortable
|
20
|
+
$element.sortable(
|
21
|
+
containerSelector: '.form-has-many',
|
22
|
+
itemSelector: '.has-many-fields',
|
23
|
+
handle: '.has-many-move'
|
24
|
+
placeholder: "<div class='has-many-placeholder' />",
|
25
|
+
onDrop: ($item, container, _super) =>
|
26
|
+
assignPositions(container.target)
|
27
|
+
_super($item, container)
|
28
|
+
)
|
29
|
+
|
30
|
+
$(document).on 'click', '[data-effective-form-has-many-add]', (event) ->
|
31
|
+
event.preventDefault()
|
32
|
+
|
33
|
+
$obj = $(event.currentTarget)
|
34
|
+
$hasMany = $obj.closest('.form-has-many')
|
35
|
+
return unless $hasMany.length > 0
|
36
|
+
|
37
|
+
uid = (new Date).valueOf()
|
38
|
+
template = $obj.data('effective-form-has-many-template').replace(/HASMANYINDEX/g, uid)
|
39
|
+
|
40
|
+
$fields = $(template).hide().fadeIn('fast')
|
41
|
+
EffectiveBootstrap.initialize($fields)
|
42
|
+
$obj.closest('.has-many-links').before($fields)
|
43
|
+
|
44
|
+
assignPositions($hasMany)
|
45
|
+
true
|
46
|
+
|
47
|
+
$(document).on 'click', '[data-effective-form-has-many-remove]', (event) ->
|
48
|
+
event.preventDefault()
|
49
|
+
|
50
|
+
$obj = $(event.currentTarget)
|
51
|
+
$hasMany = $obj.closest('.form-has-many')
|
52
|
+
return unless $hasMany.length > 0
|
53
|
+
|
54
|
+
$input = $obj.siblings("input[name$='[_destroy]']").first()
|
55
|
+
$fields = $obj.closest('.has-many-fields').first()
|
56
|
+
|
57
|
+
if $input.length > 0
|
58
|
+
$input.val('true')
|
59
|
+
$fields.addClass('marked-for-destruction').fadeOut('fast')
|
60
|
+
else
|
61
|
+
$fields.fadeOut('fast', -> this.remove())
|
62
|
+
|
63
|
+
assignPositions($hasMany)
|
64
|
+
true
|
65
|
+
|
66
|
+
$(document).on 'click', '[data-effective-form-has-many-reorder]', (event) ->
|
67
|
+
event.preventDefault()
|
68
|
+
|
69
|
+
$obj = $(event.currentTarget)
|
70
|
+
$hasMany = $obj.closest('.form-has-many')
|
71
|
+
return unless $hasMany.length > 0
|
72
|
+
|
73
|
+
$fields = $hasMany.children('.has-many-fields:not(.marked-for-destruction)')
|
74
|
+
return unless $fields.length > 1
|
75
|
+
|
76
|
+
$hasMany.toggleClass('reordering')
|
77
|
+
true
|
@@ -0,0 +1,696 @@
|
|
1
|
+
/* ===================================================
|
2
|
+
* jquery-sortable.js v0.9.13
|
3
|
+
* http://johnny.github.com/jquery-sortable/
|
4
|
+
* ===================================================
|
5
|
+
* Copyright (c) 2012 Jonas von Andrian
|
6
|
+
* All rights reserved.
|
7
|
+
*
|
8
|
+
* Redistribution and use in source and binary forms, with or without
|
9
|
+
* modification, are permitted provided that the following conditions are met:
|
10
|
+
* * Redistributions of source code must retain the above copyright
|
11
|
+
* notice, this list of conditions and the following disclaimer.
|
12
|
+
* * Redistributions in binary form must reproduce the above copyright
|
13
|
+
* notice, this list of conditions and the following disclaimer in the
|
14
|
+
* documentation and/or other materials provided with the distribution.
|
15
|
+
* * The name of the author may not be used to endorse or promote products
|
16
|
+
* derived from this software without specific prior written permission.
|
17
|
+
*
|
18
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
19
|
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
20
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
21
|
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
22
|
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
23
|
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
24
|
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
25
|
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
26
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
27
|
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
28
|
+
* ========================================================== */
|
29
|
+
|
30
|
+
|
31
|
+
!function ( $, window, pluginName, undefined){
|
32
|
+
var containerDefaults = {
|
33
|
+
// If true, items can be dragged from this container
|
34
|
+
drag: true,
|
35
|
+
// If true, items can be dropped onto this container
|
36
|
+
drop: true,
|
37
|
+
// Exclude items from being draggable, if the
|
38
|
+
// selector matches the item
|
39
|
+
exclude: "",
|
40
|
+
// If true, search for nested containers within an item.If you nest containers,
|
41
|
+
// either the original selector with which you call the plugin must only match the top containers,
|
42
|
+
// or you need to specify a group (see the bootstrap nav example)
|
43
|
+
nested: true,
|
44
|
+
// If true, the items are assumed to be arranged vertically
|
45
|
+
vertical: true
|
46
|
+
}, // end container defaults
|
47
|
+
groupDefaults = {
|
48
|
+
// This is executed after the placeholder has been moved.
|
49
|
+
// $closestItemOrContainer contains the closest item, the placeholder
|
50
|
+
// has been put at or the closest empty Container, the placeholder has
|
51
|
+
// been appended to.
|
52
|
+
afterMove: function ($placeholder, container, $closestItemOrContainer) {
|
53
|
+
},
|
54
|
+
// The exact css path between the container and its items, e.g. "> tbody"
|
55
|
+
containerPath: "",
|
56
|
+
// The css selector of the containers
|
57
|
+
containerSelector: "ol, ul",
|
58
|
+
// Distance the mouse has to travel to start dragging
|
59
|
+
distance: 0,
|
60
|
+
// Time in milliseconds after mousedown until dragging should start.
|
61
|
+
// This option can be used to prevent unwanted drags when clicking on an element.
|
62
|
+
delay: 0,
|
63
|
+
// The css selector of the drag handle
|
64
|
+
handle: "",
|
65
|
+
// The exact css path between the item and its subcontainers.
|
66
|
+
// It should only match the immediate items of a container.
|
67
|
+
// No item of a subcontainer should be matched. E.g. for ol>div>li the itemPath is "> div"
|
68
|
+
itemPath: "",
|
69
|
+
// The css selector of the items
|
70
|
+
itemSelector: "li",
|
71
|
+
// The class given to "body" while an item is being dragged
|
72
|
+
bodyClass: "dragging",
|
73
|
+
// The class giving to an item while being dragged
|
74
|
+
draggedClass: "dragged",
|
75
|
+
// Check if the dragged item may be inside the container.
|
76
|
+
// Use with care, since the search for a valid container entails a depth first search
|
77
|
+
// and may be quite expensive.
|
78
|
+
isValidTarget: function ($item, container) {
|
79
|
+
return true
|
80
|
+
},
|
81
|
+
// Executed before onDrop if placeholder is detached.
|
82
|
+
// This happens if pullPlaceholder is set to false and the drop occurs outside a container.
|
83
|
+
onCancel: function ($item, container, _super, event) {
|
84
|
+
},
|
85
|
+
// Executed at the beginning of a mouse move event.
|
86
|
+
// The Placeholder has not been moved yet.
|
87
|
+
onDrag: function ($item, position, _super, event) {
|
88
|
+
$item.css(position)
|
89
|
+
},
|
90
|
+
// Called after the drag has been started,
|
91
|
+
// that is the mouse button is being held down and
|
92
|
+
// the mouse is moving.
|
93
|
+
// The container is the closest initialized container.
|
94
|
+
// Therefore it might not be the container, that actually contains the item.
|
95
|
+
onDragStart: function ($item, container, _super, event) {
|
96
|
+
$item.css({
|
97
|
+
height: $item.outerHeight(),
|
98
|
+
width: $item.outerWidth()
|
99
|
+
})
|
100
|
+
$item.addClass(container.group.options.draggedClass)
|
101
|
+
$("body").addClass(container.group.options.bodyClass)
|
102
|
+
},
|
103
|
+
// Called when the mouse button is being released
|
104
|
+
onDrop: function ($item, container, _super, event) {
|
105
|
+
$item.removeClass(container.group.options.draggedClass).removeAttr("style")
|
106
|
+
$("body").removeClass(container.group.options.bodyClass)
|
107
|
+
// START MONKEY PATCH (for submitting form when heading positions are changed on touchscreen)
|
108
|
+
$item.trigger('movimento:drop:complete', $item)
|
109
|
+
// END MONKEY PATCH
|
110
|
+
},
|
111
|
+
// Called on mousedown. If falsy value is returned, the dragging will not start.
|
112
|
+
// Ignore if element clicked is input, select or textarea
|
113
|
+
onMousedown: function ($item, _super, event) {
|
114
|
+
if (!event.target.nodeName.match(/^(input|select|textarea)$/i)) {
|
115
|
+
event.preventDefault()
|
116
|
+
return true
|
117
|
+
}
|
118
|
+
},
|
119
|
+
// The class of the placeholder (must match placeholder option markup)
|
120
|
+
placeholderClass: "placeholder",
|
121
|
+
// Template for the placeholder. Can be any valid jQuery input
|
122
|
+
// e.g. a string, a DOM element.
|
123
|
+
// The placeholder must have the class "placeholder"
|
124
|
+
placeholder: '<li class="placeholder"></li>',
|
125
|
+
// If true, the position of the placeholder is calculated on every mousemove.
|
126
|
+
// If false, it is only calculated when the mouse is above a container.
|
127
|
+
pullPlaceholder: true,
|
128
|
+
// Specifies serialization of the container group.
|
129
|
+
// The pair $parent/$children is either container/items or item/subcontainers.
|
130
|
+
serialize: function ($parent, $children, parentIsContainer) {
|
131
|
+
var result = $.extend({}, $parent.data())
|
132
|
+
|
133
|
+
if(parentIsContainer)
|
134
|
+
return [$children]
|
135
|
+
else if ($children[0]){
|
136
|
+
result.children = $children
|
137
|
+
}
|
138
|
+
|
139
|
+
delete result.subContainers
|
140
|
+
delete result.sortable
|
141
|
+
|
142
|
+
return result
|
143
|
+
},
|
144
|
+
// Set tolerance while dragging. Positive values decrease sensitivity,
|
145
|
+
// negative values increase it.
|
146
|
+
tolerance: 0
|
147
|
+
}, // end group defaults
|
148
|
+
containerGroups = {},
|
149
|
+
groupCounter = 0,
|
150
|
+
emptyBox = {
|
151
|
+
left: 0,
|
152
|
+
top: 0,
|
153
|
+
bottom: 0,
|
154
|
+
right:0
|
155
|
+
},
|
156
|
+
eventNames = {
|
157
|
+
start: "touchstart.sortable mousedown.sortable",
|
158
|
+
drop: "touchend.sortable touchcancel.sortable mouseup.sortable",
|
159
|
+
drag: "touchmove.sortable mousemove.sortable",
|
160
|
+
scroll: "scroll.sortable"
|
161
|
+
},
|
162
|
+
subContainerKey = "subContainers"
|
163
|
+
|
164
|
+
/*
|
165
|
+
* a is Array [left, right, top, bottom]
|
166
|
+
* b is array [left, top]
|
167
|
+
*/
|
168
|
+
function d(a,b) {
|
169
|
+
var x = Math.max(0, a[0] - b[0], b[0] - a[1]),
|
170
|
+
y = Math.max(0, a[2] - b[1], b[1] - a[3])
|
171
|
+
return x+y;
|
172
|
+
}
|
173
|
+
|
174
|
+
function setDimensions(array, dimensions, tolerance, useOffset) {
|
175
|
+
var i = array.length,
|
176
|
+
offsetMethod = useOffset ? "offset" : "position"
|
177
|
+
tolerance = tolerance || 0
|
178
|
+
|
179
|
+
while(i--){
|
180
|
+
var el = array[i].el ? array[i].el : $(array[i]),
|
181
|
+
// use fitting method
|
182
|
+
pos = el[offsetMethod]()
|
183
|
+
pos.left += parseInt(el.css('margin-left'), 10)
|
184
|
+
pos.top += parseInt(el.css('margin-top'),10)
|
185
|
+
dimensions[i] = [
|
186
|
+
pos.left - tolerance,
|
187
|
+
pos.left + el.outerWidth() + tolerance,
|
188
|
+
pos.top - tolerance,
|
189
|
+
pos.top + el.outerHeight() + tolerance
|
190
|
+
]
|
191
|
+
}
|
192
|
+
}
|
193
|
+
|
194
|
+
function getRelativePosition(pointer, element) {
|
195
|
+
var offset = element.offset()
|
196
|
+
return {
|
197
|
+
left: pointer.left - offset.left,
|
198
|
+
top: pointer.top - offset.top
|
199
|
+
}
|
200
|
+
}
|
201
|
+
|
202
|
+
function sortByDistanceDesc(dimensions, pointer, lastPointer) {
|
203
|
+
pointer = [pointer.left, pointer.top]
|
204
|
+
lastPointer = lastPointer && [lastPointer.left, lastPointer.top]
|
205
|
+
|
206
|
+
var dim,
|
207
|
+
i = dimensions.length,
|
208
|
+
distances = []
|
209
|
+
|
210
|
+
while(i--){
|
211
|
+
dim = dimensions[i]
|
212
|
+
distances[i] = [i,d(dim,pointer), lastPointer && d(dim, lastPointer)]
|
213
|
+
}
|
214
|
+
distances = distances.sort(function (a,b) {
|
215
|
+
return b[1] - a[1] || b[2] - a[2] || b[0] - a[0]
|
216
|
+
})
|
217
|
+
|
218
|
+
// last entry is the closest
|
219
|
+
return distances
|
220
|
+
}
|
221
|
+
|
222
|
+
function ContainerGroup(options) {
|
223
|
+
this.options = $.extend({}, groupDefaults, options)
|
224
|
+
this.containers = []
|
225
|
+
|
226
|
+
if(!this.options.rootGroup){
|
227
|
+
this.scrollProxy = $.proxy(this.scroll, this)
|
228
|
+
this.dragProxy = $.proxy(this.drag, this)
|
229
|
+
this.dropProxy = $.proxy(this.drop, this)
|
230
|
+
this.placeholder = $(this.options.placeholder)
|
231
|
+
|
232
|
+
if(!options.isValidTarget)
|
233
|
+
this.options.isValidTarget = undefined
|
234
|
+
}
|
235
|
+
}
|
236
|
+
|
237
|
+
ContainerGroup.get = function (options) {
|
238
|
+
if(!containerGroups[options.group]) {
|
239
|
+
if(options.group === undefined)
|
240
|
+
options.group = groupCounter ++
|
241
|
+
|
242
|
+
containerGroups[options.group] = new ContainerGroup(options)
|
243
|
+
}
|
244
|
+
|
245
|
+
return containerGroups[options.group]
|
246
|
+
}
|
247
|
+
|
248
|
+
ContainerGroup.prototype = {
|
249
|
+
dragInit: function (e, itemContainer) {
|
250
|
+
this.$document = $(itemContainer.el[0].ownerDocument)
|
251
|
+
|
252
|
+
// get item to drag
|
253
|
+
var closestItem = $(e.target).closest(this.options.itemSelector);
|
254
|
+
// using the length of this item, prevents the plugin from being started if there is no handle being clicked on.
|
255
|
+
// this may also be helpful in instantiating multidrag.
|
256
|
+
if (closestItem.length) {
|
257
|
+
this.item = closestItem;
|
258
|
+
this.itemContainer = itemContainer;
|
259
|
+
if (this.item.is(this.options.exclude) || !this.options.onMousedown(this.item, groupDefaults.onMousedown, e)) {
|
260
|
+
return;
|
261
|
+
}
|
262
|
+
this.setPointer(e);
|
263
|
+
this.toggleListeners('on');
|
264
|
+
this.setupDelayTimer();
|
265
|
+
this.dragInitDone = true;
|
266
|
+
}
|
267
|
+
},
|
268
|
+
drag: function (e) {
|
269
|
+
if(!this.dragging){
|
270
|
+
if(!this.distanceMet(e) || !this.delayMet)
|
271
|
+
return
|
272
|
+
|
273
|
+
this.options.onDragStart(this.item, this.itemContainer, groupDefaults.onDragStart, e)
|
274
|
+
this.item.before(this.placeholder)
|
275
|
+
this.dragging = true
|
276
|
+
}
|
277
|
+
|
278
|
+
this.setPointer(e)
|
279
|
+
// place item under the cursor
|
280
|
+
this.options.onDrag(this.item,
|
281
|
+
getRelativePosition(this.pointer, this.item.offsetParent()),
|
282
|
+
groupDefaults.onDrag,
|
283
|
+
e)
|
284
|
+
|
285
|
+
var p = this.getPointer(e),
|
286
|
+
box = this.sameResultBox,
|
287
|
+
t = this.options.tolerance
|
288
|
+
|
289
|
+
if(!box || box.top - t > p.top || box.bottom + t < p.top || box.left - t > p.left || box.right + t < p.left)
|
290
|
+
if(!this.searchValidTarget()){
|
291
|
+
this.placeholder.detach()
|
292
|
+
this.lastAppendedItem = undefined
|
293
|
+
}
|
294
|
+
},
|
295
|
+
drop: function (e) {
|
296
|
+
this.toggleListeners('off')
|
297
|
+
|
298
|
+
this.dragInitDone = false
|
299
|
+
|
300
|
+
if(this.dragging){
|
301
|
+
// processing Drop, check if placeholder is detached
|
302
|
+
if(this.placeholder.closest("html")[0]){
|
303
|
+
this.placeholder.before(this.item).detach()
|
304
|
+
} else {
|
305
|
+
this.options.onCancel(this.item, this.itemContainer, groupDefaults.onCancel, e)
|
306
|
+
}
|
307
|
+
this.options.onDrop(this.item, this.getContainer(this.item), groupDefaults.onDrop, e)
|
308
|
+
|
309
|
+
// cleanup
|
310
|
+
this.clearDimensions()
|
311
|
+
this.clearOffsetParent()
|
312
|
+
this.lastAppendedItem = this.sameResultBox = undefined
|
313
|
+
this.dragging = false
|
314
|
+
}
|
315
|
+
},
|
316
|
+
searchValidTarget: function (pointer, lastPointer) {
|
317
|
+
if(!pointer){
|
318
|
+
pointer = this.relativePointer || this.pointer
|
319
|
+
lastPointer = this.lastRelativePointer || this.lastPointer
|
320
|
+
}
|
321
|
+
|
322
|
+
var distances = sortByDistanceDesc(this.getContainerDimensions(),
|
323
|
+
pointer,
|
324
|
+
lastPointer),
|
325
|
+
i = distances.length
|
326
|
+
|
327
|
+
while(i--){
|
328
|
+
var index = distances[i][0],
|
329
|
+
distance = distances[i][1]
|
330
|
+
|
331
|
+
if(!distance || this.options.pullPlaceholder){
|
332
|
+
var container = this.containers[index]
|
333
|
+
if(!container.disabled){
|
334
|
+
if(!this.$getOffsetParent()){
|
335
|
+
var offsetParent = container.getItemOffsetParent()
|
336
|
+
pointer = getRelativePosition(pointer, offsetParent)
|
337
|
+
lastPointer = getRelativePosition(lastPointer, offsetParent)
|
338
|
+
}
|
339
|
+
if(container.searchValidTarget(pointer, lastPointer))
|
340
|
+
return true
|
341
|
+
}
|
342
|
+
}
|
343
|
+
}
|
344
|
+
if(this.sameResultBox)
|
345
|
+
this.sameResultBox = undefined
|
346
|
+
},
|
347
|
+
movePlaceholder: function (container, item, method, sameResultBox) {
|
348
|
+
var lastAppendedItem = this.lastAppendedItem
|
349
|
+
if(!sameResultBox && lastAppendedItem && lastAppendedItem[0] === item[0])
|
350
|
+
return;
|
351
|
+
|
352
|
+
item[method](this.placeholder)
|
353
|
+
this.lastAppendedItem = item
|
354
|
+
this.sameResultBox = sameResultBox
|
355
|
+
this.options.afterMove(this.placeholder, container, item)
|
356
|
+
},
|
357
|
+
getContainerDimensions: function () {
|
358
|
+
if(!this.containerDimensions)
|
359
|
+
setDimensions(this.containers, this.containerDimensions = [], this.options.tolerance, !this.$getOffsetParent())
|
360
|
+
return this.containerDimensions
|
361
|
+
},
|
362
|
+
getContainer: function (element) {
|
363
|
+
return element.closest(this.options.containerSelector).data(pluginName)
|
364
|
+
},
|
365
|
+
$getOffsetParent: function () {
|
366
|
+
if(this.offsetParent === undefined){
|
367
|
+
var i = this.containers.length - 1,
|
368
|
+
offsetParent = this.containers[i].getItemOffsetParent()
|
369
|
+
|
370
|
+
if(!this.options.rootGroup){
|
371
|
+
while(i--){
|
372
|
+
if(offsetParent[0] != this.containers[i].getItemOffsetParent()[0]){
|
373
|
+
// If every container has the same offset parent,
|
374
|
+
// use position() which is relative to this parent,
|
375
|
+
// otherwise use offset()
|
376
|
+
// compare #setDimensions
|
377
|
+
offsetParent = false
|
378
|
+
break;
|
379
|
+
}
|
380
|
+
}
|
381
|
+
}
|
382
|
+
|
383
|
+
this.offsetParent = offsetParent
|
384
|
+
}
|
385
|
+
return this.offsetParent
|
386
|
+
},
|
387
|
+
setPointer: function (e) {
|
388
|
+
var pointer = this.getPointer(e)
|
389
|
+
|
390
|
+
if(this.$getOffsetParent()){
|
391
|
+
var relativePointer = getRelativePosition(pointer, this.$getOffsetParent())
|
392
|
+
this.lastRelativePointer = this.relativePointer
|
393
|
+
this.relativePointer = relativePointer
|
394
|
+
}
|
395
|
+
|
396
|
+
this.lastPointer = this.pointer
|
397
|
+
this.pointer = pointer
|
398
|
+
},
|
399
|
+
distanceMet: function (e) {
|
400
|
+
var currentPointer = this.getPointer(e)
|
401
|
+
return (Math.max(
|
402
|
+
Math.abs(this.pointer.left - currentPointer.left),
|
403
|
+
Math.abs(this.pointer.top - currentPointer.top)
|
404
|
+
) >= this.options.distance)
|
405
|
+
},
|
406
|
+
getPointer: function(e) {
|
407
|
+
var o = e.originalEvent || e.originalEvent.touches && e.originalEvent.touches[0]
|
408
|
+
return {
|
409
|
+
left: e.pageX || o.pageX,
|
410
|
+
top: e.pageY || o.pageY
|
411
|
+
}
|
412
|
+
},
|
413
|
+
setupDelayTimer: function () {
|
414
|
+
var that = this
|
415
|
+
this.delayMet = !this.options.delay
|
416
|
+
|
417
|
+
// init delay timer if needed
|
418
|
+
if (!this.delayMet) {
|
419
|
+
clearTimeout(this._mouseDelayTimer);
|
420
|
+
this._mouseDelayTimer = setTimeout(function() {
|
421
|
+
that.delayMet = true
|
422
|
+
}, this.options.delay)
|
423
|
+
}
|
424
|
+
},
|
425
|
+
scroll: function (e) {
|
426
|
+
this.clearDimensions()
|
427
|
+
this.clearOffsetParent() // TODO is this needed?
|
428
|
+
},
|
429
|
+
toggleListeners: function (method) {
|
430
|
+
var that = this,
|
431
|
+
events = ['drag','drop','scroll']
|
432
|
+
|
433
|
+
$.each(events,function (i,event) {
|
434
|
+
that.$document[method](eventNames[event], that[event + 'Proxy'])
|
435
|
+
})
|
436
|
+
},
|
437
|
+
clearOffsetParent: function () {
|
438
|
+
this.offsetParent = undefined
|
439
|
+
},
|
440
|
+
// Recursively clear container and item dimensions
|
441
|
+
clearDimensions: function () {
|
442
|
+
this.traverse(function(object){
|
443
|
+
object._clearDimensions()
|
444
|
+
})
|
445
|
+
},
|
446
|
+
traverse: function(callback) {
|
447
|
+
callback(this)
|
448
|
+
var i = this.containers.length
|
449
|
+
while(i--){
|
450
|
+
this.containers[i].traverse(callback)
|
451
|
+
}
|
452
|
+
},
|
453
|
+
_clearDimensions: function(){
|
454
|
+
this.containerDimensions = undefined
|
455
|
+
},
|
456
|
+
_destroy: function () {
|
457
|
+
containerGroups[this.options.group] = undefined
|
458
|
+
}
|
459
|
+
}
|
460
|
+
|
461
|
+
function Container(element, options) {
|
462
|
+
this.el = element
|
463
|
+
this.options = $.extend( {}, containerDefaults, options)
|
464
|
+
|
465
|
+
this.group = ContainerGroup.get(this.options)
|
466
|
+
this.rootGroup = this.options.rootGroup || this.group
|
467
|
+
this.handle = this.rootGroup.options.handle || this.rootGroup.options.itemSelector
|
468
|
+
|
469
|
+
var itemPath = this.rootGroup.options.itemPath
|
470
|
+
this.target = itemPath ? this.el.find(itemPath) : this.el
|
471
|
+
|
472
|
+
this.target.on(eventNames.start, this.handle, $.proxy(this.dragInit, this))
|
473
|
+
|
474
|
+
if(this.options.drop)
|
475
|
+
this.group.containers.push(this)
|
476
|
+
}
|
477
|
+
|
478
|
+
Container.prototype = {
|
479
|
+
dragInit: function (e) {
|
480
|
+
var rootGroup = this.rootGroup
|
481
|
+
|
482
|
+
if( !this.disabled &&
|
483
|
+
!rootGroup.dragInitDone &&
|
484
|
+
this.options.drag &&
|
485
|
+
this.isValidDrag(e)) {
|
486
|
+
rootGroup.dragInit(e, this)
|
487
|
+
}
|
488
|
+
},
|
489
|
+
isValidDrag: function(e) {
|
490
|
+
return e.which == 1 ||
|
491
|
+
e.type == "touchstart" && e.originalEvent.touches.length == 1
|
492
|
+
},
|
493
|
+
searchValidTarget: function (pointer, lastPointer) {
|
494
|
+
var distances = sortByDistanceDesc(this.getItemDimensions(),
|
495
|
+
pointer,
|
496
|
+
lastPointer),
|
497
|
+
i = distances.length,
|
498
|
+
rootGroup = this.rootGroup,
|
499
|
+
validTarget = !rootGroup.options.isValidTarget ||
|
500
|
+
rootGroup.options.isValidTarget(rootGroup.item, this)
|
501
|
+
|
502
|
+
if(!i && validTarget){
|
503
|
+
rootGroup.movePlaceholder(this, this.target, "append")
|
504
|
+
return true
|
505
|
+
} else
|
506
|
+
while(i--){
|
507
|
+
var index = distances[i][0],
|
508
|
+
distance = distances[i][1]
|
509
|
+
if(!distance && this.hasChildGroup(index)){
|
510
|
+
var found = this.getContainerGroup(index).searchValidTarget(pointer, lastPointer)
|
511
|
+
if(found)
|
512
|
+
return true
|
513
|
+
}
|
514
|
+
else if(validTarget){
|
515
|
+
this.movePlaceholder(index, pointer)
|
516
|
+
return true
|
517
|
+
}
|
518
|
+
}
|
519
|
+
},
|
520
|
+
movePlaceholder: function (index, pointer) {
|
521
|
+
var item = $(this.items[index]),
|
522
|
+
dim = this.itemDimensions[index],
|
523
|
+
method = "after",
|
524
|
+
width = item.outerWidth(),
|
525
|
+
height = item.outerHeight(),
|
526
|
+
offset = item.offset(),
|
527
|
+
sameResultBox = {
|
528
|
+
left: offset.left,
|
529
|
+
right: offset.left + width,
|
530
|
+
top: offset.top,
|
531
|
+
bottom: offset.top + height
|
532
|
+
}
|
533
|
+
if(this.options.vertical){
|
534
|
+
var yCenter = (dim[2] + dim[3]) / 2,
|
535
|
+
inUpperHalf = pointer.top <= yCenter
|
536
|
+
if(inUpperHalf){
|
537
|
+
method = "before"
|
538
|
+
sameResultBox.bottom -= height / 2
|
539
|
+
} else
|
540
|
+
sameResultBox.top += height / 2
|
541
|
+
} else {
|
542
|
+
var xCenter = (dim[0] + dim[1]) / 2,
|
543
|
+
inLeftHalf = pointer.left <= xCenter
|
544
|
+
if(inLeftHalf){
|
545
|
+
method = "before"
|
546
|
+
sameResultBox.right -= width / 2
|
547
|
+
} else
|
548
|
+
sameResultBox.left += width / 2
|
549
|
+
}
|
550
|
+
if(this.hasChildGroup(index))
|
551
|
+
sameResultBox = emptyBox
|
552
|
+
this.rootGroup.movePlaceholder(this, item, method, sameResultBox)
|
553
|
+
},
|
554
|
+
getItemDimensions: function () {
|
555
|
+
if(!this.itemDimensions){
|
556
|
+
this.items = this.$getChildren(this.el, "item").filter(
|
557
|
+
":not(." + this.group.options.placeholderClass + ", ." + this.group.options.draggedClass + ")"
|
558
|
+
).get()
|
559
|
+
setDimensions(this.items, this.itemDimensions = [], this.options.tolerance)
|
560
|
+
}
|
561
|
+
return this.itemDimensions
|
562
|
+
},
|
563
|
+
getItemOffsetParent: function () {
|
564
|
+
var offsetParent,
|
565
|
+
el = this.el
|
566
|
+
// Since el might be empty we have to check el itself and
|
567
|
+
// can not do something like el.children().first().offsetParent()
|
568
|
+
if(el.css("position") === "relative" || el.css("position") === "absolute" || el.css("position") === "fixed")
|
569
|
+
offsetParent = el
|
570
|
+
else
|
571
|
+
offsetParent = el.offsetParent()
|
572
|
+
return offsetParent
|
573
|
+
},
|
574
|
+
hasChildGroup: function (index) {
|
575
|
+
return this.options.nested && this.getContainerGroup(index)
|
576
|
+
},
|
577
|
+
getContainerGroup: function (index) {
|
578
|
+
var childGroup = $.data(this.items[index], subContainerKey)
|
579
|
+
if( childGroup === undefined){
|
580
|
+
var childContainers = this.$getChildren(this.items[index], "container")
|
581
|
+
childGroup = false
|
582
|
+
|
583
|
+
if(childContainers[0]){
|
584
|
+
var options = $.extend({}, this.options, {
|
585
|
+
rootGroup: this.rootGroup,
|
586
|
+
group: groupCounter ++
|
587
|
+
})
|
588
|
+
childGroup = childContainers[pluginName](options).data(pluginName).group
|
589
|
+
}
|
590
|
+
$.data(this.items[index], subContainerKey, childGroup)
|
591
|
+
}
|
592
|
+
return childGroup
|
593
|
+
},
|
594
|
+
$getChildren: function (parent, type) {
|
595
|
+
var options = this.rootGroup.options,
|
596
|
+
path = options[type + "Path"],
|
597
|
+
selector = options[type + "Selector"]
|
598
|
+
|
599
|
+
parent = $(parent)
|
600
|
+
if(path)
|
601
|
+
parent = parent.find(path)
|
602
|
+
|
603
|
+
return parent.children(selector)
|
604
|
+
},
|
605
|
+
_serialize: function (parent, isContainer) {
|
606
|
+
var that = this,
|
607
|
+
childType = isContainer ? "item" : "container",
|
608
|
+
|
609
|
+
children = this.$getChildren(parent, childType).not(this.options.exclude).map(function () {
|
610
|
+
return that._serialize($(this), !isContainer)
|
611
|
+
}).get()
|
612
|
+
|
613
|
+
return this.rootGroup.options.serialize(parent, children, isContainer)
|
614
|
+
},
|
615
|
+
traverse: function(callback) {
|
616
|
+
$.each(this.items || [], function(item){
|
617
|
+
var group = $.data(this, subContainerKey)
|
618
|
+
if(group)
|
619
|
+
group.traverse(callback)
|
620
|
+
});
|
621
|
+
|
622
|
+
callback(this)
|
623
|
+
},
|
624
|
+
_clearDimensions: function () {
|
625
|
+
this.itemDimensions = undefined
|
626
|
+
},
|
627
|
+
_destroy: function() {
|
628
|
+
var that = this;
|
629
|
+
|
630
|
+
this.target.off(eventNames.start, this.handle);
|
631
|
+
this.el.removeData(pluginName)
|
632
|
+
|
633
|
+
if(this.options.drop)
|
634
|
+
this.group.containers = $.grep(this.group.containers, function(val){
|
635
|
+
return val != that
|
636
|
+
})
|
637
|
+
|
638
|
+
$.each(this.items || [], function(){
|
639
|
+
$.removeData(this, subContainerKey)
|
640
|
+
})
|
641
|
+
}
|
642
|
+
}
|
643
|
+
|
644
|
+
var API = {
|
645
|
+
enable: function() {
|
646
|
+
this.traverse(function(object){
|
647
|
+
object.disabled = false
|
648
|
+
})
|
649
|
+
},
|
650
|
+
disable: function (){
|
651
|
+
this.traverse(function(object){
|
652
|
+
object.disabled = true
|
653
|
+
})
|
654
|
+
},
|
655
|
+
serialize: function () {
|
656
|
+
return this._serialize(this.el, true)
|
657
|
+
},
|
658
|
+
refresh: function() {
|
659
|
+
this.traverse(function(object){
|
660
|
+
object._clearDimensions()
|
661
|
+
})
|
662
|
+
},
|
663
|
+
destroy: function () {
|
664
|
+
this.traverse(function(object){
|
665
|
+
object._destroy();
|
666
|
+
})
|
667
|
+
}
|
668
|
+
}
|
669
|
+
|
670
|
+
$.extend(Container.prototype, API)
|
671
|
+
|
672
|
+
/**
|
673
|
+
* jQuery API
|
674
|
+
*
|
675
|
+
* Parameters are
|
676
|
+
* either options on init
|
677
|
+
* or a method name followed by arguments to pass to the method
|
678
|
+
*/
|
679
|
+
$.fn[pluginName] = function(methodOrOptions) {
|
680
|
+
var args = Array.prototype.slice.call(arguments, 1)
|
681
|
+
|
682
|
+
return this.map(function(){
|
683
|
+
var $t = $(this),
|
684
|
+
object = $t.data(pluginName)
|
685
|
+
|
686
|
+
if(object && API[methodOrOptions])
|
687
|
+
return API[methodOrOptions].apply(object, args) || this
|
688
|
+
else if(!object && (methodOrOptions === undefined ||
|
689
|
+
typeof methodOrOptions === "object"))
|
690
|
+
$t.data(pluginName, new Container($t, methodOrOptions))
|
691
|
+
|
692
|
+
return this
|
693
|
+
});
|
694
|
+
};
|
695
|
+
|
696
|
+
}(jQuery, window, 'sortable');
|