Changeset 3464338
- Timestamp:
- 02/18/2026 12:49:41 PM (6 weeks ago)
- Location:
- folders-4-gravity
- Files:
-
- 22 added
- 6 deleted
- 44 edited
- 1 copied
-
tags/1.0.9 (copied) (copied from folders-4-gravity/trunk)
-
tags/1.0.9/assets/js/Sortable.min.js (modified) (1 diff)
-
tags/1.0.9/folders-4-gravity.php (modified) (5 diffs)
-
tags/1.0.9/includes/class-gravity-ops-form-folders.php (modified) (10 diffs)
-
tags/1.0.9/includes/class-gravity-ops-views-folders.php (modified) (7 diffs)
-
tags/1.0.9/readme.txt (modified) (3 diffs)
-
tags/1.0.9/vendor/F4G/autoload.php (modified) (1 diff)
-
tags/1.0.9/vendor/F4G/composer/autoload_classmap.php (modified) (1 diff)
-
tags/1.0.9/vendor/F4G/composer/autoload_files.php (deleted)
-
tags/1.0.9/vendor/F4G/composer/autoload_real.php (modified) (2 diffs)
-
tags/1.0.9/vendor/F4G/composer/autoload_static.php (modified) (3 diffs)
-
tags/1.0.9/vendor/F4G/composer/installed.json (modified) (3 diffs)
-
tags/1.0.9/vendor/F4G/composer/installed.php (modified) (2 diffs)
-
tags/1.0.9/vendor/F4G/gravityops/core/assets/css/admin.css (modified) (2 diffs)
-
tags/1.0.9/vendor/F4G/gravityops/core/assets/js/admin.js (modified) (4 diffs)
-
tags/1.0.9/vendor/F4G/gravityops/core/src/Admin (deleted)
-
tags/1.0.9/vendor/F4G/gravityops/core/src/SuiteCore (added)
-
tags/1.0.9/vendor/F4G/gravityops/core/src/SuiteCore/Admin (added)
-
tags/1.0.9/vendor/F4G/gravityops/core/src/SuiteCore/Admin/AdminShell.php (added)
-
tags/1.0.9/vendor/F4G/gravityops/core/src/SuiteCore/Admin/ReviewPrompter.php (added)
-
tags/1.0.9/vendor/F4G/gravityops/core/src/SuiteCore/Admin/SuiteMenu.php (added)
-
tags/1.0.9/vendor/F4G/gravityops/core/src/SuiteCore/Admin/SurveyPrompter.php (added)
-
tags/1.0.9/vendor/F4G/gravityops/core/src/SuiteCore/Admin/TrustedLogin.php (added)
-
tags/1.0.9/vendor/F4G/gravityops/core/src/SuiteCore/AdminAssetHelper.php (added)
-
tags/1.0.9/vendor/F4G/gravityops/core/src/SuiteCore/Config.php (added)
-
tags/1.0.9/vendor/F4G/gravityops/core/src/SuiteCore/SuiteCatalog.php (added)
-
tags/1.0.9/vendor/F4G/gravityops/core/src/SuiteCore/SuiteCore.php (added)
-
tags/1.0.9/vendor/F4G/gravityops/core/src/SuiteRegistry.php (deleted)
-
tags/1.0.9/vendor/F4G/trustedlogin/client/src/Config.php (modified) (2 diffs)
-
tags/1.0.9/vendor/F4G/trustedlogin/client/src/Utils.php (modified) (1 diff)
-
tags/1.0.9/vendor/F4G/trustedlogin/client/tests/bootstrap.php (modified) (1 diff)
-
tags/1.0.9/vendor/autoload.php (modified) (1 diff)
-
tags/1.0.9/vendor/composer/autoload_aliases.php (modified) (2 diffs)
-
tags/1.0.9/vendor/composer/autoload_real.php (modified) (2 diffs)
-
tags/1.0.9/vendor/composer/autoload_static.php (modified) (2 diffs)
-
tags/1.0.9/vendor/composer/installed.json (modified) (2 diffs)
-
tags/1.0.9/vendor/composer/installed.php (modified) (3 diffs)
-
trunk/assets/js/Sortable.min.js (modified) (1 diff)
-
trunk/folders-4-gravity.php (modified) (5 diffs)
-
trunk/includes/class-gravity-ops-form-folders.php (modified) (10 diffs)
-
trunk/includes/class-gravity-ops-views-folders.php (modified) (7 diffs)
-
trunk/readme.txt (modified) (3 diffs)
-
trunk/vendor/F4G/autoload.php (modified) (1 diff)
-
trunk/vendor/F4G/composer/autoload_classmap.php (modified) (1 diff)
-
trunk/vendor/F4G/composer/autoload_files.php (deleted)
-
trunk/vendor/F4G/composer/autoload_real.php (modified) (2 diffs)
-
trunk/vendor/F4G/composer/autoload_static.php (modified) (3 diffs)
-
trunk/vendor/F4G/composer/installed.json (modified) (3 diffs)
-
trunk/vendor/F4G/composer/installed.php (modified) (2 diffs)
-
trunk/vendor/F4G/gravityops/core/assets/css/admin.css (modified) (2 diffs)
-
trunk/vendor/F4G/gravityops/core/assets/js/admin.js (modified) (4 diffs)
-
trunk/vendor/F4G/gravityops/core/src/Admin (deleted)
-
trunk/vendor/F4G/gravityops/core/src/SuiteCore (added)
-
trunk/vendor/F4G/gravityops/core/src/SuiteCore/Admin (added)
-
trunk/vendor/F4G/gravityops/core/src/SuiteCore/Admin/AdminShell.php (added)
-
trunk/vendor/F4G/gravityops/core/src/SuiteCore/Admin/ReviewPrompter.php (added)
-
trunk/vendor/F4G/gravityops/core/src/SuiteCore/Admin/SuiteMenu.php (added)
-
trunk/vendor/F4G/gravityops/core/src/SuiteCore/Admin/SurveyPrompter.php (added)
-
trunk/vendor/F4G/gravityops/core/src/SuiteCore/Admin/TrustedLogin.php (added)
-
trunk/vendor/F4G/gravityops/core/src/SuiteCore/AdminAssetHelper.php (added)
-
trunk/vendor/F4G/gravityops/core/src/SuiteCore/Config.php (added)
-
trunk/vendor/F4G/gravityops/core/src/SuiteCore/SuiteCatalog.php (added)
-
trunk/vendor/F4G/gravityops/core/src/SuiteCore/SuiteCore.php (added)
-
trunk/vendor/F4G/gravityops/core/src/SuiteRegistry.php (deleted)
-
trunk/vendor/F4G/trustedlogin/client/src/Config.php (modified) (2 diffs)
-
trunk/vendor/F4G/trustedlogin/client/src/Utils.php (modified) (1 diff)
-
trunk/vendor/F4G/trustedlogin/client/tests/bootstrap.php (modified) (1 diff)
-
trunk/vendor/autoload.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_aliases.php (modified) (2 diffs)
-
trunk/vendor/composer/autoload_real.php (modified) (2 diffs)
-
trunk/vendor/composer/autoload_static.php (modified) (2 diffs)
-
trunk/vendor/composer/installed.json (modified) (2 diffs)
-
trunk/vendor/composer/installed.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
folders-4-gravity/tags/1.0.9/assets/js/Sortable.min.js
r3319442 r3464338 1 /*! Sortable 1.15. 6- MIT | git://github.com/SortableJS/Sortable.git */2 !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Sortable=e()}(this,function(){"use strict";function e(e,t){var n,o=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,n)),o}function I(o){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?e(Object(i),!0).forEach(function(t){var e,n;e=o,t=i[n=t],n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(i)):e(Object(i)).forEach(function(t){Object.defineProperty(o,t,Object.getOwnPropertyDescriptor(i,t))})}return o}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)}function a(){return(a=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n,o=arguments[e];for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(t[n]=o[n])}return t}).apply(this,arguments)}function i(t,e){if(null==t)return{};var n,o=function(t,e){if(null==t)return{};for(var n,o={},i=Object.keys(t),r=0;r<i.length;r++)n=i[r],0<=e.indexOf(n)||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols)for(var i=Object.getOwnPropertySymbols(t),r=0;r<i.length;r++)n=i[r],0<=e.indexOf(n)||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n]);return o}function r(t){return function(t){if(Array.isArray(t))return l(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return l(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Map"===(n="Object"===n&&t.constructor?t.constructor.name:n)||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(t,e):void 0}}(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 l(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function t(t){if("undefined"!=typeof window&&window.navigator)return!!navigator.userAgent.match(t)}var y=t(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),w=t(/Edge/i),s=t(/firefox/i),u=t(/safari/i)&&!t(/chrome/i)&&!t(/android/i),c=t(/iP(ad|od|hone)/i),n=t(/chrome/i)&&t(/android/i),d={capture:!1,passive:!1};function h(t,e,n){t.addEventListener(e,n,!y&&d)}function p(t,e,n){t.removeEventListener(e,n,!y&&d)}function f(t,e){if(e&&(">"===e[0]&&(e=e.substring(1)),t))try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return}}function g(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function P(t,e,n,o){if(t){n=n||document;do{if(null!=e&&(">"!==e[0]||t.parentNode===n)&&f(t,e)||o&&t===n)return t}while(t!==n&&(t=g(t)))}return null}var m,v=/\s+/g;function k(t,e,n){var o;t&&e&&(t.classList?t.classList[n?"add":"remove"](e):(o=(" "+t.className+" ").replace(v," ").replace(" "+e+" "," "),t.className=(o+(n?" "+e:"")).replace(v," ")))}function R(t,e,n){var o=t&&t.style;if(o){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];o[e=!(e in o||-1!==e.indexOf("webkit"))?"-webkit-"+e:e]=n+("string"==typeof n?"":"px")}}function b(t,e){var n="";if("string"==typeof t)n=t;else do{var o=R(t,"transform")}while(o&&"none"!==o&&(n=o+" "+n),!e&&(t=t.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function D(t,e,n){if(t){var o=t.getElementsByTagName(e),i=0,r=o.length;if(n)for(;i<r;i++)n(o[i],i);return o}return[]}function O(){var t=document.scrollingElement;return t||document.documentElement}function X(t,e,n,o,i){if(t.getBoundingClientRect||t===window){var r,a,l,s,c,u,d=t!==window&&t.parentNode&&t!==O()?(a=(r=t.getBoundingClientRect()).top,l=r.left,s=r.bottom,c=r.right,u=r.height,r.width):(l=a=0,s=window.innerHeight,c=window.innerWidth,u=window.innerHeight,window.innerWidth);if((e||n)&&t!==window&&(i=i||t.parentNode,!y))do{if(i&&i.getBoundingClientRect&&("none"!==R(i,"transform")||n&&"static"!==R(i,"position"))){var h=i.getBoundingClientRect();a-=h.top+parseInt(R(i,"border-top-width")),l-=h.left+parseInt(R(i,"border-left-width")),s=a+r.height,c=l+r.width;break}}while(i=i.parentNode);return o&&t!==window&&(o=(e=b(i||t))&&e.a,t=e&&e.d,e&&(s=(a/=t)+(u/=t),c=(l/=o)+(d/=o))),{top:a,left:l,bottom:s,right:c,width:d,height:u}}}function Y(t,e,n){for(var o=M(t,!0),i=X(t)[e];o;){var r=X(o)[n];if(!("top"===n||"left"===n?r<=i:i<=r))return o;if(o===O())break;o=M(o,!1)}return!1}function B(t,e,n,o){for(var i=0,r=0,a=t.children;r<a.length;){if("none"!==a[r].style.display&&a[r]!==jt.ghost&&(o||a[r]!==jt.dragged)&&P(a[r],n.draggable,t,!1)){if(i===e)return a[r];i++}r++}return null}function F(t,e){for(var n=t.lastElementChild;n&&(n===jt.ghost||"none"===R(n,"display")||e&&!f(n,e));)n=n.previousElementSibling;return n||null}function j(t,e){var n=0;if(!t||!t.parentNode)return-1;for(;t=t.previousElementSibling;)"TEMPLATE"===t.nodeName.toUpperCase()||t===jt.clone||e&&!f(t,e)||n++;return n}function E(t){var e=0,n=0,o=O();if(t)do{var i=b(t),r=i.a,i=i.d}while(e+=t.scrollLeft*r,n+=t.scrollTop*i,t!==o&&(t=t.parentNode));return[e,n]}function M(t,e){if(!t||!t.getBoundingClientRect)return O();var n=t,o=!1;do{if(n.clientWidth<n.scrollWidth||n.clientHeight<n.scrollHeight){var i=R(n);if(n.clientWidth<n.scrollWidth&&("auto"==i.overflowX||"scroll"==i.overflowX)||n.clientHeight<n.scrollHeight&&("auto"==i.overflowY||"scroll"==i.overflowY)){if(!n.getBoundingClientRect||n===document.body)return O();if(o||e)return n;o=!0}}}while(n=n.parentNode);return O()}function S(t,e){return Math.round(t.top)===Math.round(e.top)&&Math.round(t.left)===Math.round(e.left)&&Math.round(t.height)===Math.round(e.height)&&Math.round(t.width)===Math.round(e.width)}function _(e,n){return function(){var t;m||(1===(t=arguments).length?e.call(this,t[0]):e.apply(this,t),m=setTimeout(function(){m=void 0},n))}}function H(t,e,n){t.scrollLeft+=e,t.scrollTop+=n}function C(t){var e=window.Polymer,n=window.jQuery||window.Zepto;return e&&e.dom?e.dom(t).cloneNode(!0):n?n(t).clone(!0)[0]:t.cloneNode(!0)}function T(t,e){R(t,"position","absolute"),R(t,"top",e.top),R(t,"left",e.left),R(t,"width",e.width),R(t,"height",e.height)}function x(t){R(t,"position",""),R(t,"top",""),R(t,"left",""),R(t,"width",""),R(t,"height","")}function L(n,o,i){var r={};return Array.from(n.children).forEach(function(t){var e;P(t,o.draggable,n,!1)&&!t.animated&&t!==i&&(e=X(t),r.left=Math.min(null!==(t=r.left)&&void 0!==t?t:1/0,e.left),r.top=Math.min(null!==(t=r.top)&&void 0!==t?t:1/0,e.top),r.right=Math.max(null!==(t=r.right)&&void 0!==t?t:-1/0,e.right),r.bottom=Math.max(null!==(t=r.bottom)&&void 0!==t?t:-1/0,e.bottom))}),r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}var K="Sortable"+(new Date).getTime();function A(){var e,o=[];return{captureAnimationState:function(){o=[],this.options.animation&&[].slice.call(this.el.children).forEach(function(t){var e,n;"none"!==R(t,"display")&&t!==jt.ghost&&(o.push({target:t,rect:X(t)}),e=I({},o[o.length-1].rect),!t.thisAnimationDuration||(n=b(t,!0))&&(e.top-=n.f,e.left-=n.e),t.fromRect=e)})},addAnimationState:function(t){o.push(t)},removeAnimationState:function(t){o.splice(function(t,e){for(var n in t)if(t.hasOwnProperty(n))for(var o in e)if(e.hasOwnProperty(o)&&e[o]===t[n][o])return Number(n);return-1}(o,{target:t}),1)},animateAll:function(t){var c=this;if(!this.options.animation)return clearTimeout(e),void("function"==typeof t&&t());var u=!1,d=0;o.forEach(function(t){var e=0,n=t.target,o=n.fromRect,i=X(n),r=n.prevFromRect,a=n.prevToRect,l=t.rect,s=b(n,!0);s&&(i.top-=s.f,i.left-=s.e),n.toRect=i,n.thisAnimationDuration&&S(r,i)&&!S(o,i)&&(l.top-i.top)/(l.left-i.left)==(o.top-i.top)/(o.left-i.left)&&(t=l,s=r,r=a,a=c.options,e=Math.sqrt(Math.pow(s.top-t.top,2)+Math.pow(s.left-t.left,2))/Math.sqrt(Math.pow(s.top-r.top,2)+Math.pow(s.left-r.left,2))*a.animation),S(i,o)||(n.prevFromRect=o,n.prevToRect=i,e=e||c.options.animation,c.animate(n,l,i,e)),e&&(u=!0,d=Math.max(d,e),clearTimeout(n.animationResetTimer),n.animationResetTimer=setTimeout(function(){n.animationTime=0,n.prevFromRect=null,n.fromRect=null,n.prevToRect=null,n.thisAnimationDuration=null},e),n.thisAnimationDuration=e)}),clearTimeout(e),u?e=setTimeout(function(){"function"==typeof t&&t()},d):"function"==typeof t&&t(),o=[]},animate:function(t,e,n,o){var i,r;o&&(R(t,"transition",""),R(t,"transform",""),i=(r=b(this.el))&&r.a,r=r&&r.d,i=(e.left-n.left)/(i||1),r=(e.top-n.top)/(r||1),t.animatingX=!!i,t.animatingY=!!r,R(t,"transform","translate3d("+i+"px,"+r+"px,0)"),this.forRepaintDummy=t.offsetWidth,R(t,"transition","transform "+o+"ms"+(this.options.easing?" "+this.options.easing:"")),R(t,"transform","translate3d(0,0,0)"),"number"==typeof t.animated&&clearTimeout(t.animated),t.animated=setTimeout(function(){R(t,"transition",""),R(t,"transform",""),t.animated=!1,t.animatingX=!1,t.animatingY=!1},o))}}}var N=[],W={initializeByDefault:!0},z={mount:function(e){for(var t in W)!W.hasOwnProperty(t)||t in e||(e[t]=W[t]);N.forEach(function(t){if(t.pluginName===e.pluginName)throw"Sortable: Cannot mount plugin ".concat(e.pluginName," more than once")}),N.push(e)},pluginEvent:function(e,n,o){var t=this;this.eventCanceled=!1,o.cancel=function(){t.eventCanceled=!0};var i=e+"Global";N.forEach(function(t){n[t.pluginName]&&(n[t.pluginName][i]&&n[t.pluginName][i](I({sortable:n},o)),n.options[t.pluginName]&&n[t.pluginName][e]&&n[t.pluginName][e](I({sortable:n},o)))})},initializePlugins:function(n,o,i,t){for(var e in N.forEach(function(t){var e=t.pluginName;(n.options[e]||t.initializeByDefault)&&((t=new t(n,o,n.options)).sortable=n,t.options=n.options,n[e]=t,a(i,t.defaults))}),n.options){var r;n.options.hasOwnProperty(e)&&(void 0!==(r=this.modifyOption(n,e,n.options[e]))&&(n.options[e]=r))}},getEventProperties:function(e,n){var o={};return N.forEach(function(t){"function"==typeof t.eventProperties&&a(o,t.eventProperties.call(n[t.pluginName],e))}),o},modifyOption:function(e,n,o){var i;return N.forEach(function(t){e[t.pluginName]&&t.optionListeners&&"function"==typeof t.optionListeners[n]&&(i=t.optionListeners[n].call(e[t.pluginName],o))}),i}};function G(t){var e=t.sortable,n=t.rootEl,o=t.name,i=t.targetEl,r=t.cloneEl,a=t.toEl,l=t.fromEl,s=t.oldIndex,c=t.newIndex,u=t.oldDraggableIndex,d=t.newDraggableIndex,h=t.originalEvent,p=t.putSortable,f=t.extraEventProperties;if(e=e||n&&n[K]){var g,m=e.options,t="on"+o.charAt(0).toUpperCase()+o.substr(1);!window.CustomEvent||y||w?(g=document.createEvent("Event")).initEvent(o,!0,!0):g=new CustomEvent(o,{bubbles:!0,cancelable:!0}),g.to=a||n,g.from=l||n,g.item=i||n,g.clone=r,g.oldIndex=s,g.newIndex=c,g.oldDraggableIndex=u,g.newDraggableIndex=d,g.originalEvent=h,g.pullMode=p?p.lastPutMode:void 0;var v,b=I(I({},f),z.getEventProperties(o,e));for(v in b)g[v]=b[v];n&&n.dispatchEvent(g),m[t]&&m[t].call(e,g)}}function U(t,e){var n=(o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{}).evt,o=i(o,q);z.pluginEvent.bind(jt)(t,e,I({dragEl:Z,parentEl:$,ghostEl:Q,rootEl:J,nextEl:tt,lastDownEl:et,cloneEl:nt,cloneHidden:ot,dragStarted:mt,putSortable:ct,activeSortable:jt.active,originalEvent:n,oldIndex:it,oldDraggableIndex:at,newIndex:rt,newDraggableIndex:lt,hideGhostForTarget:Xt,unhideGhostForTarget:Yt,cloneNowHidden:function(){ot=!0},cloneNowShown:function(){ot=!1},dispatchSortableEvent:function(t){V({sortable:e,name:t,originalEvent:n})}},o))}var q=["evt"];function V(t){G(I({putSortable:ct,cloneEl:nt,targetEl:Z,rootEl:J,oldIndex:it,oldDraggableIndex:at,newIndex:rt,newDraggableIndex:lt},t))}var Z,$,Q,J,tt,et,nt,ot,it,rt,at,lt,st,ct,ut,dt,ht,pt,ft,gt,mt,vt,bt,yt,wt,Dt=!1,Et=!1,St=[],_t=!1,Ct=!1,Tt=[],xt=!1,Ot=[],Mt="undefined"!=typeof document,At=c,Nt=w||y?"cssFloat":"float",It=Mt&&!n&&!c&&"draggable"in document.createElement("div"),Pt=function(){if(Mt){if(y)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents}}(),kt=function(t,e){var n=R(t),o=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),i=B(t,0,e),r=B(t,1,e),a=i&&R(i),l=r&&R(r),s=a&&parseInt(a.marginLeft)+parseInt(a.marginRight)+X(i).width,t=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+X(r).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(i&&a.float&&"none"!==a.float){e="left"===a.float?"left":"right";return!r||"both"!==l.clear&&l.clear!==e?"horizontal":"vertical"}return i&&("block"===a.display||"flex"===a.display||"table"===a.display||"grid"===a.display||o<=s&&"none"===n[Nt]||r&&"none"===n[Nt]&&o<s+t)?"vertical":"horizontal"},Rt=function(t){function l(r,a){return function(t,e,n,o){var i=t.options.group.name&&e.options.group.name&&t.options.group.name===e.options.group.name;if(null==r&&(a||i))return!0;if(null==r||!1===r)return!1;if(a&&"clone"===r)return r;if("function"==typeof r)return l(r(t,e,n,o),a)(t,e,n,o);e=(a?t:e).options.group.name;return!0===r||"string"==typeof r&&r===e||r.join&&-1<r.indexOf(e)}}var e={},n=t.group;n&&"object"==o(n)||(n={name:n}),e.name=n.name,e.checkPull=l(n.pull,!0),e.checkPut=l(n.put),e.revertClone=n.revertClone,t.group=e},Xt=function(){!Pt&&Q&&R(Q,"display","none")},Yt=function(){!Pt&&Q&&R(Q,"display","")};Mt&&!n&&document.addEventListener("click",function(t){if(Et)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),Et=!1},!0);function Bt(t){if(Z){t=t.touches?t.touches[0]:t;var e=(i=t.clientX,r=t.clientY,St.some(function(t){var e=t[K].options.emptyInsertThreshold;if(e&&!F(t)){var n=X(t),o=i>=n.left-e&&i<=n.right+e,e=r>=n.top-e&&r<=n.bottom+e;return o&&e?a=t:void 0}}),a);if(e){var n,o={};for(n in t)t.hasOwnProperty(n)&&(o[n]=t[n]);o.target=o.rootEl=e,o.preventDefault=void 0,o.stopPropagation=void 0,e[K]._onDragOver(o)}}var i,r,a}function Ft(t){Z&&Z.parentNode[K]._isOutsideThisEl(t.target)}function jt(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=a({},e),t[K]=this;var n,o,i={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return kt(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==jt.supportPointer&&"PointerEvent"in window&&(!u||c),emptyInsertThreshold:5};for(n in z.initializePlugins(this,t,i),i)n in e||(e[n]=i[n]);for(o in Rt(e),this)"_"===o.charAt(0)&&"function"==typeof this[o]&&(this[o]=this[o].bind(this));this.nativeDraggable=!e.forceFallback&&It,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?h(t,"pointerdown",this._onTapStart):(h(t,"mousedown",this._onTapStart),h(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(h(t,"dragover",this),h(t,"dragenter",this)),St.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),a(this,A())}function Ht(t,e,n,o,i,r,a,l){var s,c,u=t[K],d=u.options.onMove;return!window.CustomEvent||y||w?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=e,s.from=t,s.dragged=n,s.draggedRect=o,s.related=i||e,s.relatedRect=r||X(e),s.willInsertAfter=l,s.originalEvent=a,t.dispatchEvent(s),c=d?d.call(u,s,a):c}function Lt(t){t.draggable=!1}function Kt(){xt=!1}function Wt(t){return setTimeout(t,0)}function zt(t){return clearTimeout(t)}jt.prototype={constructor:jt,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(vt=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,Z):this.options.direction},_onTapStart:function(e){if(e.cancelable){var n=this,o=this.el,t=this.options,i=t.preventOnFilter,r=e.type,a=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,l=(a||e).target,s=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,c=t.filter;if(!function(t){Ot.length=0;var e=t.getElementsByTagName("input"),n=e.length;for(;n--;){var o=e[n];o.checked&&Ot.push(o)}}(o),!Z&&!(/mousedown|pointerdown/.test(r)&&0!==e.button||t.disabled)&&!s.isContentEditable&&(this.nativeDraggable||!u||!l||"SELECT"!==l.tagName.toUpperCase())&&!((l=P(l,t.draggable,o,!1))&&l.animated||et===l)){if(it=j(l),at=j(l,t.draggable),"function"==typeof c){if(c.call(this,e,l,this))return V({sortable:n,rootEl:s,name:"filter",targetEl:l,toEl:o,fromEl:o}),U("filter",n,{evt:e}),void(i&&e.preventDefault())}else if(c=c&&c.split(",").some(function(t){if(t=P(s,t.trim(),o,!1))return V({sortable:n,rootEl:t,name:"filter",targetEl:l,fromEl:o,toEl:o}),U("filter",n,{evt:e}),!0}))return void(i&&e.preventDefault());t.handle&&!P(s,t.handle,o,!1)||this._prepareDragStart(e,a,l)}}},_prepareDragStart:function(t,e,n){var o,i=this,r=i.el,a=i.options,l=r.ownerDocument;n&&!Z&&n.parentNode===r&&(o=X(n),J=r,$=(Z=n).parentNode,tt=Z.nextSibling,et=n,st=a.group,ut={target:jt.dragged=Z,clientX:(e||t).clientX,clientY:(e||t).clientY},ft=ut.clientX-o.left,gt=ut.clientY-o.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,Z.style["will-change"]="all",o=function(){U("delayEnded",i,{evt:t}),jt.eventCanceled?i._onDrop():(i._disableDelayedDragEvents(),!s&&i.nativeDraggable&&(Z.draggable=!0),i._triggerDragStart(t,e),V({sortable:i,name:"choose",originalEvent:t}),k(Z,a.chosenClass,!0))},a.ignore.split(",").forEach(function(t){D(Z,t.trim(),Lt)}),h(l,"dragover",Bt),h(l,"mousemove",Bt),h(l,"touchmove",Bt),a.supportPointer?(h(l,"pointerup",i._onDrop),this.nativeDraggable||h(l,"pointercancel",i._onDrop)):(h(l,"mouseup",i._onDrop),h(l,"touchend",i._onDrop),h(l,"touchcancel",i._onDrop)),s&&this.nativeDraggable&&(this.options.touchStartThreshold=4,Z.draggable=!0),U("delayStart",this,{evt:t}),!a.delay||a.delayOnTouchOnly&&!e||this.nativeDraggable&&(w||y)?o():jt.eventCanceled?this._onDrop():(a.supportPointer?(h(l,"pointerup",i._disableDelayedDrag),h(l,"pointercancel",i._disableDelayedDrag)):(h(l,"mouseup",i._disableDelayedDrag),h(l,"touchend",i._disableDelayedDrag),h(l,"touchcancel",i._disableDelayedDrag)),h(l,"mousemove",i._delayedDragTouchMoveHandler),h(l,"touchmove",i._delayedDragTouchMoveHandler),a.supportPointer&&h(l,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(o,a.delay)))},_delayedDragTouchMoveHandler:function(t){t=t.touches?t.touches[0]:t;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){Z&&Lt(Z),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;p(t,"mouseup",this._disableDelayedDrag),p(t,"touchend",this._disableDelayedDrag),p(t,"touchcancel",this._disableDelayedDrag),p(t,"pointerup",this._disableDelayedDrag),p(t,"pointercancel",this._disableDelayedDrag),p(t,"mousemove",this._delayedDragTouchMoveHandler),p(t,"touchmove",this._delayedDragTouchMoveHandler),p(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?h(document,"pointermove",this._onTouchMove):h(document,e?"touchmove":"mousemove",this._onTouchMove):(h(Z,"dragend",this),h(J,"dragstart",this._onDragStart));try{document.selection?Wt(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){var n;Dt=!1,J&&Z?(U("dragStarted",this,{evt:e}),this.nativeDraggable&&h(document,"dragover",Ft),n=this.options,t||k(Z,n.dragClass,!1),k(Z,n.ghostClass,!0),jt.active=this,t&&this._appendGhost(),V({sortable:this,name:"start",originalEvent:e})):this._nulling()},_emulateDragOver:function(){if(dt){this._lastX=dt.clientX,this._lastY=dt.clientY,Xt();for(var t=document.elementFromPoint(dt.clientX,dt.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(dt.clientX,dt.clientY))!==e;)e=t;if(Z.parentNode[K]._isOutsideThisEl(t),e)do{if(e[K])if(e[K]._onDragOver({clientX:dt.clientX,clientY:dt.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break}while(e=g(t=e));Yt()}},_onTouchMove:function(t){if(ut){var e=this.options,n=e.fallbackTolerance,o=e.fallbackOffset,i=t.touches?t.touches[0]:t,r=Q&&b(Q,!0),a=Q&&r&&r.a,l=Q&&r&&r.d,e=At&&wt&&E(wt),a=(i.clientX-ut.clientX+o.x)/(a||1)+(e?e[0]-Tt[0]:0)/(a||1),l=(i.clientY-ut.clientY+o.y)/(l||1)+(e?e[1]-Tt[1]:0)/(l||1);if(!jt.active&&!Dt){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))<n)return;this._onDragStart(t,!0)}Q&&(r?(r.e+=a-(ht||0),r.f+=l-(pt||0)):r={a:1,b:0,c:0,d:1,e:a,f:l},r="matrix(".concat(r.a,",").concat(r.b,",").concat(r.c,",").concat(r.d,",").concat(r.e,",").concat(r.f,")"),R(Q,"webkitTransform",r),R(Q,"mozTransform",r),R(Q,"msTransform",r),R(Q,"transform",r),ht=a,pt=l,dt=i),t.cancelable&&t.preventDefault()}},_appendGhost:function(){if(!Q){var t=this.options.fallbackOnBody?document.body:J,e=X(Z,!0,At,!0,t),n=this.options;if(At){for(wt=t;"static"===R(wt,"position")&&"none"===R(wt,"transform")&&wt!==document;)wt=wt.parentNode;wt!==document.body&&wt!==document.documentElement?(wt===document&&(wt=O()),e.top+=wt.scrollTop,e.left+=wt.scrollLeft):wt=O(),Tt=E(wt)}k(Q=Z.cloneNode(!0),n.ghostClass,!1),k(Q,n.fallbackClass,!0),k(Q,n.dragClass,!0),R(Q,"transition",""),R(Q,"transform",""),R(Q,"box-sizing","border-box"),R(Q,"margin",0),R(Q,"top",e.top),R(Q,"left",e.left),R(Q,"width",e.width),R(Q,"height",e.height),R(Q,"opacity","0.8"),R(Q,"position",At?"absolute":"fixed"),R(Q,"zIndex","100000"),R(Q,"pointerEvents","none"),jt.ghost=Q,t.appendChild(Q),R(Q,"transform-origin",ft/parseInt(Q.style.width)*100+"% "+gt/parseInt(Q.style.height)*100+"%")}},_onDragStart:function(t,e){var n=this,o=t.dataTransfer,i=n.options;U("dragStart",this,{evt:t}),jt.eventCanceled?this._onDrop():(U("setupClone",this),jt.eventCanceled||((nt=C(Z)).removeAttribute("id"),nt.draggable=!1,nt.style["will-change"]="",this._hideClone(),k(nt,this.options.chosenClass,!1),jt.clone=nt),n.cloneId=Wt(function(){U("clone",n),jt.eventCanceled||(n.options.removeCloneOnHide||J.insertBefore(nt,Z),n._hideClone(),V({sortable:n,name:"clone"}))}),e||k(Z,i.dragClass,!0),e?(Et=!0,n._loopId=setInterval(n._emulateDragOver,50)):(p(document,"mouseup",n._onDrop),p(document,"touchend",n._onDrop),p(document,"touchcancel",n._onDrop),o&&(o.effectAllowed="move",i.setData&&i.setData.call(n,o,Z)),h(document,"drop",n),R(Z,"transform","translateZ(0)")),Dt=!0,n._dragStartId=Wt(n._dragStarted.bind(n,e,t)),h(document,"selectstart",n),mt=!0,window.getSelection().removeAllRanges(),u&&R(document.body,"user-select","none"))},_onDragOver:function(n){var o,i,r,t,e,a=this.el,l=n.target,s=this.options,c=s.group,u=jt.active,d=st===c,h=s.sort,p=ct||u,f=this,g=!1;if(!xt){if(void 0!==n.preventDefault&&n.cancelable&&n.preventDefault(),l=P(l,s.draggable,a,!0),O("dragOver"),jt.eventCanceled)return g;if(Z.contains(n.target)||l.animated&&l.animatingX&&l.animatingY||f._ignoreWhileAnimating===l)return A(!1);if(Et=!1,u&&!s.disabled&&(d?h||(i=$!==J):ct===this||(this.lastPutMode=st.checkPull(this,u,Z,n))&&c.checkPut(this,u,Z,n))){if(r="vertical"===this._getDirection(n,l),o=X(Z),O("dragOverValid"),jt.eventCanceled)return g;if(i)return $=J,M(),this._hideClone(),O("revert"),jt.eventCanceled||(tt?J.insertBefore(Z,tt):J.appendChild(Z)),A(!0);var m=F(a,s.draggable);if(m&&(S=n,c=r,x=X(F((E=this).el,E.options.draggable)),E=L(E.el,E.options,Q),!(c?S.clientX>E.right+10||S.clientY>x.bottom&&S.clientX>x.left:S.clientY>E.bottom+10||S.clientX>x.right&&S.clientY>x.top)||m.animated)){if(m&&(t=n,e=r,C=X(B((_=this).el,0,_.options,!0)),_=L(_.el,_.options,Q),e?t.clientX<_.left-10||t.clientY<C.top&&t.clientX<C.right:t.clientY<_.top-10||t.clientY<C.bottom&&t.clientX<C.left)){var v=B(a,0,s,!0);if(v===Z)return A(!1);if(D=X(l=v),!1!==Ht(J,a,Z,o,l,D,n,!1))return M(),a.insertBefore(Z,v),$=a,N(),A(!0)}else if(l.parentNode===a){var b,y,w,D=X(l),E=Z.parentNode!==a,S=(S=Z.animated&&Z.toRect||o,x=l.animated&&l.toRect||D,_=(e=r)?S.left:S.top,t=e?S.right:S.bottom,C=e?S.width:S.height,v=e?x.left:x.top,S=e?x.right:x.bottom,x=e?x.width:x.height,!(_===v||t===S||_+C/2===v+x/2)),_=r?"top":"left",C=Y(l,"top","top")||Y(Z,"top","top"),v=C?C.scrollTop:void 0;if(vt!==l&&(y=D[_],_t=!1,Ct=!S&&s.invertSwap||E),0!==(b=function(t,e,n,o,i,r,a,l){var s=o?t.clientY:t.clientX,c=o?n.height:n.width,t=o?n.top:n.left,o=o?n.bottom:n.right,n=!1;if(!a)if(l&&yt<c*i){if(_t=!_t&&(1===bt?t+c*r/2<s:s<o-c*r/2)?!0:_t)n=!0;else if(1===bt?s<t+yt:o-yt<s)return-bt}else if(t+c*(1-i)/2<s&&s<o-c*(1-i)/2)return function(t){return j(Z)<j(t)?1:-1}(e);if((n=n||a)&&(s<t+c*r/2||o-c*r/2<s))return t+c/2<s?1:-1;return 0}(n,l,D,r,S?1:s.swapThreshold,null==s.invertedSwapThreshold?s.swapThreshold:s.invertedSwapThreshold,Ct,vt===l)))for(var T=j(Z);(w=$.children[T-=b])&&("none"===R(w,"display")||w===Q););if(0===b||w===l)return A(!1);bt=b;var x=(vt=l).nextElementSibling,E=!1,S=Ht(J,a,Z,o,l,D,n,E=1===b);if(!1!==S)return 1!==S&&-1!==S||(E=1===S),xt=!0,setTimeout(Kt,30),M(),E&&!x?a.appendChild(Z):l.parentNode.insertBefore(Z,E?x:l),C&&H(C,0,v-C.scrollTop),$=Z.parentNode,void 0===y||Ct||(yt=Math.abs(y-X(l)[_])),N(),A(!0)}}else{if(m===Z)return A(!1);if((l=m&&a===n.target?m:l)&&(D=X(l)),!1!==Ht(J,a,Z,o,l,D,n,!!l))return M(),m&&m.nextSibling?a.insertBefore(Z,m.nextSibling):a.appendChild(Z),$=a,N(),A(!0)}if(a.contains(Z))return A(!1)}return!1}function O(t,e){U(t,f,I({evt:n,isOwner:d,axis:r?"vertical":"horizontal",revert:i,dragRect:o,targetRect:D,canSort:h,fromSortable:p,target:l,completed:A,onMove:function(t,e){return Ht(J,a,Z,o,t,X(t),n,e)},changed:N},e))}function M(){O("dragOverAnimationCapture"),f.captureAnimationState(),f!==p&&p.captureAnimationState()}function A(t){return O("dragOverCompleted",{insertion:t}),t&&(d?u._hideClone():u._showClone(f),f!==p&&(k(Z,(ct||u).options.ghostClass,!1),k(Z,s.ghostClass,!0)),ct!==f&&f!==jt.active?ct=f:f===jt.active&&ct&&(ct=null),p===f&&(f._ignoreWhileAnimating=l),f.animateAll(function(){O("dragOverAnimationComplete"),f._ignoreWhileAnimating=null}),f!==p&&(p.animateAll(),p._ignoreWhileAnimating=null)),(l===Z&&!Z.animated||l===a&&!l.animated)&&(vt=null),s.dragoverBubble||n.rootEl||l===document||(Z.parentNode[K]._isOutsideThisEl(n.target),t||Bt(n)),!s.dragoverBubble&&n.stopPropagation&&n.stopPropagation(),g=!0}function N(){rt=j(Z),lt=j(Z,s.draggable),V({sortable:f,name:"change",toEl:a,newIndex:rt,newDraggableIndex:lt,originalEvent:n})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){p(document,"mousemove",this._onTouchMove),p(document,"touchmove",this._onTouchMove),p(document,"pointermove",this._onTouchMove),p(document,"dragover",Bt),p(document,"mousemove",Bt),p(document,"touchmove",Bt)},_offUpEvents:function(){var t=this.el.ownerDocument;p(t,"mouseup",this._onDrop),p(t,"touchend",this._onDrop),p(t,"pointerup",this._onDrop),p(t,"pointercancel",this._onDrop),p(t,"touchcancel",this._onDrop),p(document,"selectstart",this)},_onDrop:function(t){var e=this.el,n=this.options;rt=j(Z),lt=j(Z,n.draggable),U("drop",this,{evt:t}),$=Z&&Z.parentNode,rt=j(Z),lt=j(Z,n.draggable),jt.eventCanceled||(_t=Ct=Dt=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),zt(this.cloneId),zt(this._dragStartId),this.nativeDraggable&&(p(document,"drop",this),p(e,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),u&&R(document.body,"user-select",""),R(Z,"transform",""),t&&(mt&&(t.cancelable&&t.preventDefault(),n.dropBubble||t.stopPropagation()),Q&&Q.parentNode&&Q.parentNode.removeChild(Q),(J===$||ct&&"clone"!==ct.lastPutMode)&&nt&&nt.parentNode&&nt.parentNode.removeChild(nt),Z&&(this.nativeDraggable&&p(Z,"dragend",this),Lt(Z),Z.style["will-change"]="",mt&&!Dt&&k(Z,(ct||this).options.ghostClass,!1),k(Z,this.options.chosenClass,!1),V({sortable:this,name:"unchoose",toEl:$,newIndex:null,newDraggableIndex:null,originalEvent:t}),J!==$?(0<=rt&&(V({rootEl:$,name:"add",toEl:$,fromEl:J,originalEvent:t}),V({sortable:this,name:"remove",toEl:$,originalEvent:t}),V({rootEl:$,name:"sort",toEl:$,fromEl:J,originalEvent:t}),V({sortable:this,name:"sort",toEl:$,originalEvent:t})),ct&&ct.save()):rt!==it&&0<=rt&&(V({sortable:this,name:"update",toEl:$,originalEvent:t}),V({sortable:this,name:"sort",toEl:$,originalEvent:t})),jt.active&&(null!=rt&&-1!==rt||(rt=it,lt=at),V({sortable:this,name:"end",toEl:$,originalEvent:t}),this.save())))),this._nulling()},_nulling:function(){U("nulling",this),J=Z=$=Q=tt=nt=et=ot=ut=dt=mt=rt=lt=it=at=vt=bt=ct=st=jt.dragged=jt.ghost=jt.clone=jt.active=null,Ot.forEach(function(t){t.checked=!0}),Ot.length=ht=pt=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":Z&&(this._onDragOver(t),function(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move");t.cancelable&&t.preventDefault()}(t));break;case"selectstart":t.preventDefault()}},toArray:function(){for(var t,e=[],n=this.el.children,o=0,i=n.length,r=this.options;o<i;o++)P(t=n[o],r.draggable,this.el,!1)&&e.push(t.getAttribute(r.dataIdAttr)||function(t){var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,o=0;for(;n--;)o+=e.charCodeAt(n);return o.toString(36)}(t));return e},sort:function(t,e){var n={},o=this.el;this.toArray().forEach(function(t,e){e=o.children[e];P(e,this.options.draggable,o,!1)&&(n[t]=e)},this),e&&this.captureAnimationState(),t.forEach(function(t){n[t]&&(o.removeChild(n[t]),o.appendChild(n[t]))}),e&&this.animateAll()},save:function(){var t=this.options.store;t&&t.set&&t.set(this)},closest:function(t,e){return P(t,e||this.options.draggable,this.el,!1)},option:function(t,e){var n=this.options;if(void 0===e)return n[t];var o=z.modifyOption(this,t,e);n[t]=void 0!==o?o:e,"group"===t&&Rt(n)},destroy:function(){U("destroy",this);var t=this.el;t[K]=null,p(t,"mousedown",this._onTapStart),p(t,"touchstart",this._onTapStart),p(t,"pointerdown",this._onTapStart),this.nativeDraggable&&(p(t,"dragover",this),p(t,"dragenter",this)),Array.prototype.forEach.call(t.querySelectorAll("[draggable]"),function(t){t.removeAttribute("draggable")}),this._onDrop(),this._disableDelayedDragEvents(),St.splice(St.indexOf(this.el),1),this.el=t=null},_hideClone:function(){ot||(U("hideClone",this),jt.eventCanceled||(R(nt,"display","none"),this.options.removeCloneOnHide&&nt.parentNode&&nt.parentNode.removeChild(nt),ot=!0))},_showClone:function(t){"clone"===t.lastPutMode?ot&&(U("showClone",this),jt.eventCanceled||(Z.parentNode!=J||this.options.group.revertClone?tt?J.insertBefore(nt,tt):J.appendChild(nt):J.insertBefore(nt,Z),this.options.group.revertClone&&this.animate(Z,nt),R(nt,"display",""),ot=!1)):this._hideClone()}},Mt&&h(document,"touchmove",function(t){(jt.active||Dt)&&t.cancelable&&t.preventDefault()}),jt.utils={on:h,off:p,css:R,find:D,is:function(t,e){return!!P(t,e,t,!1)},extend:function(t,e){if(t&&e)for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},throttle:_,closest:P,toggleClass:k,clone:C,index:j,nextTick:Wt,cancelNextTick:zt,detectDirection:kt,getChild:B,expando:K},jt.get=function(t){return t[K]},jt.mount=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];(e=e[0].constructor===Array?e[0]:e).forEach(function(t){if(!t.prototype||!t.prototype.constructor)throw"Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(t));t.utils&&(jt.utils=I(I({},jt.utils),t.utils)),z.mount(t)})},jt.create=function(t,e){return new jt(t,e)};var Gt,Ut,qt,Vt,Zt,$t,Qt=[],Jt=!(jt.version="1.15.6");function te(){Qt.forEach(function(t){clearInterval(t.pid)}),Qt=[]}function ee(){clearInterval($t)}var ne,oe=_(function(n,t,e,o){if(t.scroll){var i,r=(n.touches?n.touches[0]:n).clientX,a=(n.touches?n.touches[0]:n).clientY,l=t.scrollSensitivity,s=t.scrollSpeed,c=O(),u=!1;Ut!==e&&(Ut=e,te(),Gt=t.scroll,i=t.scrollFn,!0===Gt&&(Gt=M(e,!0)));var d=0,h=Gt;do{var p=h,f=X(p),g=f.top,m=f.bottom,v=f.left,b=f.right,y=f.width,w=f.height,D=void 0,E=void 0,S=p.scrollWidth,_=p.scrollHeight,C=R(p),T=p.scrollLeft,f=p.scrollTop,E=p===c?(D=y<S&&("auto"===C.overflowX||"scroll"===C.overflowX||"visible"===C.overflowX),w<_&&("auto"===C.overflowY||"scroll"===C.overflowY||"visible"===C.overflowY)):(D=y<S&&("auto"===C.overflowX||"scroll"===C.overflowX),w<_&&("auto"===C.overflowY||"scroll"===C.overflowY)),T=D&&(Math.abs(b-r)<=l&&T+y<S)-(Math.abs(v-r)<=l&&!!T),f=E&&(Math.abs(m-a)<=l&&f+w<_)-(Math.abs(g-a)<=l&&!!f);if(!Qt[d])for(var x=0;x<=d;x++)Qt[x]||(Qt[x]={});Qt[d].vx==T&&Qt[d].vy==f&&Qt[d].el===p||(Qt[d].el=p,Qt[d].vx=T,Qt[d].vy=f,clearInterval(Qt[d].pid),0==T&&0==f||(u=!0,Qt[d].pid=setInterval(function(){o&&0===this.layer&&jt.active._onTouchMove(Zt);var t=Qt[this.layer].vy?Qt[this.layer].vy*s:0,e=Qt[this.layer].vx?Qt[this.layer].vx*s:0;"function"==typeof i&&"continue"!==i.call(jt.dragged.parentNode[K],e,t,n,Zt,Qt[this.layer].el)||H(Qt[this.layer].el,e,t)}.bind({layer:d}),24))),d++}while(t.bubbleScroll&&h!==c&&(h=M(h,!1)));Jt=u}},30),n=function(t){var e=t.originalEvent,n=t.putSortable,o=t.dragEl,i=t.activeSortable,r=t.dispatchSortableEvent,a=t.hideGhostForTarget,t=t.unhideGhostForTarget;e&&(i=n||i,a(),e=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:e,e=document.elementFromPoint(e.clientX,e.clientY),t(),i&&!i.el.contains(e)&&(r("spill"),this.onSpill({dragEl:o,putSortable:n})))};function ie(){}function re(){}ie.prototype={startIndex:null,dragStart:function(t){t=t.oldDraggableIndex;this.startIndex=t},onSpill:function(t){var e=t.dragEl,n=t.putSortable;this.sortable.captureAnimationState(),n&&n.captureAnimationState();t=B(this.sortable.el,this.startIndex,this.options);t?this.sortable.el.insertBefore(e,t):this.sortable.el.appendChild(e),this.sortable.animateAll(),n&&n.animateAll()},drop:n},a(ie,{pluginName:"revertOnSpill"}),re.prototype={onSpill:function(t){var e=t.dragEl,t=t.putSortable||this.sortable;t.captureAnimationState(),e.parentNode&&e.parentNode.removeChild(e),t.animateAll()},drop:n},a(re,{pluginName:"removeOnSpill"});var ae,le,se,ce,ue,de=[],he=[],pe=!1,fe=!1,ge=!1;function me(n,o){he.forEach(function(t,e){e=o.children[t.sortableIndex+(n?Number(e):0)];e?o.insertBefore(t,e):o.appendChild(t)})}function ve(){de.forEach(function(t){t!==se&&t.parentNode&&t.parentNode.removeChild(t)})}return jt.mount(new function(){function t(){for(var t in this.defaults={scroll:!0,forceAutoScrollFallback:!1,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:!0},this)"_"===t.charAt(0)&&"function"==typeof this[t]&&(this[t]=this[t].bind(this))}return t.prototype={dragStarted:function(t){t=t.originalEvent;this.sortable.nativeDraggable?h(document,"dragover",this._handleAutoScroll):this.options.supportPointer?h(document,"pointermove",this._handleFallbackAutoScroll):t.touches?h(document,"touchmove",this._handleFallbackAutoScroll):h(document,"mousemove",this._handleFallbackAutoScroll)},dragOverCompleted:function(t){t=t.originalEvent;this.options.dragOverBubble||t.rootEl||this._handleAutoScroll(t)},drop:function(){this.sortable.nativeDraggable?p(document,"dragover",this._handleAutoScroll):(p(document,"pointermove",this._handleFallbackAutoScroll),p(document,"touchmove",this._handleFallbackAutoScroll),p(document,"mousemove",this._handleFallbackAutoScroll)),ee(),te(),clearTimeout(m),m=void 0},nulling:function(){Zt=Ut=Gt=Jt=$t=qt=Vt=null,Qt.length=0},_handleFallbackAutoScroll:function(t){this._handleAutoScroll(t,!0)},_handleAutoScroll:function(e,n){var o,i=this,r=(e.touches?e.touches[0]:e).clientX,a=(e.touches?e.touches[0]:e).clientY,t=document.elementFromPoint(r,a);Zt=e,n||this.options.forceAutoScrollFallback||w||y||u?(oe(e,this.options,t,n),o=M(t,!0),!Jt||$t&&r===qt&&a===Vt||($t&&ee(),$t=setInterval(function(){var t=M(document.elementFromPoint(r,a),!0);t!==o&&(o=t,te()),oe(e,i.options,t,n)},10),qt=r,Vt=a)):this.options.bubbleScroll&&M(t,!0)!==O()?oe(e,this.options,M(t,!1),!1):te()}},a(t,{pluginName:"scroll",initializeByDefault:!0})}),jt.mount(re,ie),jt.mount(new function(){function t(){this.defaults={swapClass:"sortable-swap-highlight"}}return t.prototype={dragStart:function(t){t=t.dragEl;ne=t},dragOverValid:function(t){var e=t.completed,n=t.target,o=t.onMove,i=t.activeSortable,r=t.changed,a=t.cancel;i.options.swap&&(t=this.sortable.el,i=this.options,n&&n!==t&&(t=ne,ne=!1!==o(n)?(k(n,i.swapClass,!0),n):null,t&&t!==ne&&k(t,i.swapClass,!1)),r(),e(!0),a())},drop:function(t){var e,n,o=t.activeSortable,i=t.putSortable,r=t.dragEl,a=i||this.sortable,l=this.options;ne&&k(ne,l.swapClass,!1),ne&&(l.swap||i&&i.options.swap)&&r!==ne&&(a.captureAnimationState(),a!==o&&o.captureAnimationState(),n=ne,t=(e=r).parentNode,l=n.parentNode,t&&l&&!t.isEqualNode(n)&&!l.isEqualNode(e)&&(i=j(e),r=j(n),t.isEqualNode(l)&&i<r&&r++,t.insertBefore(n,t.children[i]),l.insertBefore(e,l.children[r])),a.animateAll(),a!==o&&o.animateAll())},nulling:function(){ne=null}},a(t,{pluginName:"swap",eventProperties:function(){return{swapItem:ne}}})}),jt.mount(new function(){function t(o){for(var t in this)"_"===t.charAt(0)&&"function"==typeof this[t]&&(this[t]=this[t].bind(this));o.options.avoidImplicitDeselect||(o.options.supportPointer?h(document,"pointerup",this._deselectMultiDrag):(h(document,"mouseup",this._deselectMultiDrag),h(document,"touchend",this._deselectMultiDrag))),h(document,"keydown",this._checkKeyDown),h(document,"keyup",this._checkKeyUp),this.defaults={selectedClass:"sortable-selected",multiDragKey:null,avoidImplicitDeselect:!1,setData:function(t,e){var n="";de.length&&le===o?de.forEach(function(t,e){n+=(e?", ":"")+t.textContent}):n=e.textContent,t.setData("Text",n)}}}return t.prototype={multiDragKeyDown:!1,isMultiDrag:!1,delayStartGlobal:function(t){t=t.dragEl;se=t},delayEnded:function(){this.isMultiDrag=~de.indexOf(se)},setupClone:function(t){var e=t.sortable,t=t.cancel;if(this.isMultiDrag){for(var n=0;n<de.length;n++)he.push(C(de[n])),he[n].sortableIndex=de[n].sortableIndex,he[n].draggable=!1,he[n].style["will-change"]="",k(he[n],this.options.selectedClass,!1),de[n]===se&&k(he[n],this.options.chosenClass,!1);e._hideClone(),t()}},clone:function(t){var e=t.sortable,n=t.rootEl,o=t.dispatchSortableEvent,t=t.cancel;this.isMultiDrag&&(this.options.removeCloneOnHide||de.length&&le===e&&(me(!0,n),o("clone"),t()))},showClone:function(t){var e=t.cloneNowShown,n=t.rootEl,t=t.cancel;this.isMultiDrag&&(me(!1,n),he.forEach(function(t){R(t,"display","")}),e(),ue=!1,t())},hideClone:function(t){var e=this,n=(t.sortable,t.cloneNowHidden),t=t.cancel;this.isMultiDrag&&(he.forEach(function(t){R(t,"display","none"),e.options.removeCloneOnHide&&t.parentNode&&t.parentNode.removeChild(t)}),n(),ue=!0,t())},dragStartGlobal:function(t){t.sortable;!this.isMultiDrag&&le&&le.multiDrag._deselectMultiDrag(),de.forEach(function(t){t.sortableIndex=j(t)}),de=de.sort(function(t,e){return t.sortableIndex-e.sortableIndex}),ge=!0},dragStarted:function(t){var e,n=this,t=t.sortable;this.isMultiDrag&&(this.options.sort&&(t.captureAnimationState(),this.options.animation&&(de.forEach(function(t){t!==se&&R(t,"position","absolute")}),e=X(se,!1,!0,!0),de.forEach(function(t){t!==se&&T(t,e)}),pe=fe=!0)),t.animateAll(function(){pe=fe=!1,n.options.animation&&de.forEach(function(t){x(t)}),n.options.sort&&ve()}))},dragOver:function(t){var e=t.target,n=t.completed,t=t.cancel;fe&&~de.indexOf(e)&&(n(!1),t())},revert:function(t){var n,o,e=t.fromSortable,i=t.rootEl,r=t.sortable,a=t.dragRect;1<de.length&&(de.forEach(function(t){r.addAnimationState({target:t,rect:fe?X(t):a}),x(t),t.fromRect=a,e.removeAnimationState(t)}),fe=!1,n=!this.options.removeCloneOnHide,o=i,de.forEach(function(t,e){e=o.children[t.sortableIndex+(n?Number(e):0)];e?o.insertBefore(t,e):o.appendChild(t)}))},dragOverCompleted:function(t){var e,n=t.sortable,o=t.isOwner,i=t.insertion,r=t.activeSortable,a=t.parentEl,l=t.putSortable,t=this.options;i&&(o&&r._hideClone(),pe=!1,t.animation&&1<de.length&&(fe||!o&&!r.options.sort&&!l)&&(e=X(se,!1,!0,!0),de.forEach(function(t){t!==se&&(T(t,e),a.appendChild(t))}),fe=!0),o||(fe||ve(),1<de.length?(o=ue,r._showClone(n),r.options.animation&&!ue&&o&&he.forEach(function(t){r.addAnimationState({target:t,rect:ce}),t.fromRect=ce,t.thisAnimationDuration=null})):r._showClone(n)))},dragOverAnimationCapture:function(t){var e=t.dragRect,n=t.isOwner,t=t.activeSortable;de.forEach(function(t){t.thisAnimationDuration=null}),t.options.animation&&!n&&t.multiDrag.isMultiDrag&&(ce=a({},e),e=b(se,!0),ce.top-=e.f,ce.left-=e.e)},dragOverAnimationComplete:function(){fe&&(fe=!1,ve())},drop:function(t){var o,i,r,a,n,e,l,s=t.originalEvent,c=t.rootEl,u=t.parentEl,d=t.sortable,h=t.dispatchSortableEvent,p=t.oldIndex,t=t.putSortable,f=t||this.sortable;s&&(o=this.options,i=u.children,ge||(o.multiDragKey&&!this.multiDragKeyDown&&this._deselectMultiDrag(),k(se,o.selectedClass,!~de.indexOf(se)),~de.indexOf(se)?(de.splice(de.indexOf(se),1),ae=null,G({sortable:d,rootEl:c,name:"deselect",targetEl:se,originalEvent:s})):(de.push(se),G({sortable:d,rootEl:c,name:"select",targetEl:se,originalEvent:s}),s.shiftKey&&ae&&d.el.contains(ae)?(r=j(ae),a=j(se),~r&&~a&&r!==a&&function(){for(var e,t=r<a?(e=r,a):(e=a,r+1),n=o.filter;e<t;e++)~de.indexOf(i[e])||P(i[e],o.draggable,u,!1)&&(n&&("function"==typeof n?n.call(d,s,i[e],d):n.split(",").some(function(t){return P(i[e],t.trim(),u,!1)}))||(k(i[e],o.selectedClass,!0),de.push(i[e]),G({sortable:d,rootEl:c,name:"select",targetEl:i[e],originalEvent:s})))}()):ae=se,le=f)),ge&&this.isMultiDrag&&(fe=!1,(u[K].options.sort||u!==c)&&1<de.length&&(n=X(se),e=j(se,":not(."+this.options.selectedClass+")"),!pe&&o.animation&&(se.thisAnimationDuration=null),f.captureAnimationState(),pe||(o.animation&&(se.fromRect=n,de.forEach(function(t){var e;t.thisAnimationDuration=null,t!==se&&(e=fe?X(t):n,t.fromRect=e,f.addAnimationState({target:t,rect:e}))})),ve(),de.forEach(function(t){i[e]?u.insertBefore(t,i[e]):u.appendChild(t),e++}),p===j(se)&&(l=!1,de.forEach(function(t){t.sortableIndex!==j(t)&&(l=!0)}),l&&(h("update"),h("sort")))),de.forEach(function(t){x(t)}),f.animateAll()),le=f),(c===u||t&&"clone"!==t.lastPutMode)&&he.forEach(function(t){t.parentNode&&t.parentNode.removeChild(t)}))},nullingGlobal:function(){this.isMultiDrag=ge=!1,he.length=0},destroyGlobal:function(){this._deselectMultiDrag(),p(document,"pointerup",this._deselectMultiDrag),p(document,"mouseup",this._deselectMultiDrag),p(document,"touchend",this._deselectMultiDrag),p(document,"keydown",this._checkKeyDown),p(document,"keyup",this._checkKeyUp)},_deselectMultiDrag:function(t){if(!(void 0!==ge&&ge||le!==this.sortable||t&&P(t.target,this.options.draggable,this.sortable.el,!1)||t&&0!==t.button))for(;de.length;){var e=de[0];k(e,this.options.selectedClass,!1),de.shift(),G({sortable:this.sortable,rootEl:this.sortable.el,name:"deselect",targetEl:e,originalEvent:t})}},_checkKeyDown:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!0)},_checkKeyUp:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!1)}},a(t,{pluginName:"multiDrag",utils:{select:function(t){var e=t.parentNode[K];e&&e.options.multiDrag&&!~de.indexOf(t)&&(le&&le!==e&&(le.multiDrag._deselectMultiDrag(),le=e),k(t,e.options.selectedClass,!0),de.push(t))},deselect:function(t){var e=t.parentNode[K],n=de.indexOf(t);e&&e.options.multiDrag&&~n&&(k(t,e.options.selectedClass,!1),de.splice(n,1))}},eventProperties:function(){var n=this,o=[],i=[];return de.forEach(function(t){var e;o.push({multiDragElement:t,index:t.sortableIndex}),e=fe&&t!==se?-1:fe?j(t,":not(."+n.options.selectedClass+")"):j(t),i.push({multiDragElement:t,index:e})}),{items:r(de),clones:[].concat(he),oldIndicies:o,newIndicies:i}},optionListeners:{multiDragKey:function(t){return"ctrl"===(t=t.toLowerCase())?t="Control":1<t.length&&(t=t.charAt(0).toUpperCase()+t.substr(1)),t}}})}),jt});1 /*! Sortable 1.15.7 - MIT | git://github.com/SortableJS/Sortable.git */ 2 !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Sortable=e()}(this,function(){"use strict";function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=Array(e);n<e;n++)o[n]=t[n];return o}function i(t,e,n){return(e=function(t){t=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0===n)return("string"===e?String:Number)(t);e=n.call(t,e||"default");if("object"!=typeof e)return e;throw new TypeError("@@toPrimitive must return a primitive value.")}(t,"string");return"symbol"==typeof t?t:t+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(){return(a=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n,o=arguments[e];for(n in o)!{}.hasOwnProperty.call(o,n)||(t[n]=o[n])}return t}).apply(null,arguments)}function r(e,t){var n,o=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,n)),o}function I(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach(function(t){i(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function l(t,e){if(null==t)return{};var n,o=function(t,e){if(null==t)return{};var n,o={};for(n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==e.indexOf(n))continue;o[n]=t[n]}return o}(t,e);if(Object.getOwnPropertySymbols)for(var i=Object.getOwnPropertySymbols(t),r=0;r<i.length;r++)n=i[r],-1===e.indexOf(n)&&{}.propertyIsEnumerable.call(t,n)&&(o[n]=t[n]);return o}function e(t){return function(t){if(Array.isArray(t))return o(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return o(t,e);var n={}.toString.call(t).slice(8,-1);return"Map"===(n="Object"===n&&t.constructor?t.constructor.name:n)||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(t,e):void 0}}(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){return(s="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)}function t(t){if("undefined"!=typeof window&&window.navigator)return!!navigator.userAgent.match(t)}var y=t(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),w=t(/Edge/i),c=t(/firefox/i),u=t(/safari/i)&&!t(/chrome/i)&&!t(/android/i),d=t(/iP(ad|od|hone)/i),n=t(/chrome/i)&&t(/android/i),h={capture:!1,passive:!1};function f(t,e,n){t.addEventListener(e,n,!y&&h)}function p(t,e,n){t.removeEventListener(e,n,!y&&h)}function g(t,e){if(e&&(">"===e[0]&&(e=e.substring(1)),t))try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return}}function m(t){return t.host&&t!==document&&t.host.nodeType&&t.host!==t?t.host:t.parentNode}function P(t,e,n,o){if(t){n=n||document;do{if(null!=e&&(">"!==e[0]||t.parentNode===n)&&g(t,e)||o&&t===n)return t}while(t!==n&&(t=m(t)))}return null}var v,b=/\s+/g;function k(t,e,n){var o;t&&e&&(t.classList?t.classList[n?"add":"remove"](e):(o=(" "+t.className+" ").replace(b," ").replace(" "+e+" "," "),t.className=(o+(n?" "+e:"")).replace(b," ")))}function R(t,e,n){var o=t&&t.style;if(o){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];o[e=!(e in o||-1!==e.indexOf("webkit"))?"-webkit-"+e:e]=n+("string"==typeof n?"":"px")}}function D(t,e){var n="";if("string"==typeof t)n=t;else do{var o=R(t,"transform")}while(o&&"none"!==o&&(n=o+" "+n),!e&&(t=t.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function E(t,e,n){if(t){var o=t.getElementsByTagName(e),i=0,r=o.length;if(n)for(;i<r;i++)n(o[i],i);return o}return[]}function O(){var t=document.scrollingElement;return t||document.documentElement}function X(t,e,n,o,i){if(t.getBoundingClientRect||t===window){var r,a,l,s,c,u,d=t!==window&&t.parentNode&&t!==O()?(a=(r=t.getBoundingClientRect()).top,l=r.left,s=r.bottom,c=r.right,u=r.height,r.width):(l=a=0,s=window.innerHeight,c=window.innerWidth,u=window.innerHeight,window.innerWidth);if((e||n)&&t!==window&&(i=i||t.parentNode,!y))do{if(i&&i.getBoundingClientRect&&("none"!==R(i,"transform")||n&&"static"!==R(i,"position"))){var h=i.getBoundingClientRect();a-=h.top+parseInt(R(i,"border-top-width")),l-=h.left+parseInt(R(i,"border-left-width")),s=a+r.height,c=l+r.width;break}}while(i=i.parentNode);return o&&t!==window&&(o=(e=D(i||t))&&e.a,t=e&&e.d,e&&(s=(a/=t)+(u/=t),c=(l/=o)+(d/=o))),{top:a,left:l,bottom:s,right:c,width:d,height:u}}}function Y(t,e,n){for(var o=M(t,!0),i=X(t)[e];o;){var r=X(o)[n];if(!("top"===n||"left"===n?r<=i:i<=r))return o;if(o===O())break;o=M(o,!1)}return!1}function B(t,e,n,o){for(var i=0,r=0,a=t.children;r<a.length;){if("none"!==a[r].style.display&&a[r]!==Ht.ghost&&(o||a[r]!==Ht.dragged)&&P(a[r],n.draggable,t,!1)){if(i===e)return a[r];i++}r++}return null}function F(t,e){for(var n=t.lastElementChild;n&&(n===Ht.ghost||"none"===R(n,"display")||e&&!g(n,e));)n=n.previousElementSibling;return n||null}function j(t,e){var n=0;if(!t||!t.parentNode)return-1;for(;t=t.previousElementSibling;)"TEMPLATE"===t.nodeName.toUpperCase()||t===Ht.clone||e&&!g(t,e)||n++;return n}function S(t){var e=0,n=0,o=O();if(t)do{var i=D(t),r=i.a,i=i.d}while(e+=t.scrollLeft*r,n+=t.scrollTop*i,t!==o&&(t=t.parentNode));return[e,n]}function M(t,e){if(!t||!t.getBoundingClientRect)return O();var n=t,o=!1;do{if(n.clientWidth<n.scrollWidth||n.clientHeight<n.scrollHeight){var i=R(n);if(n.clientWidth<n.scrollWidth&&("auto"==i.overflowX||"scroll"==i.overflowX)||n.clientHeight<n.scrollHeight&&("auto"==i.overflowY||"scroll"==i.overflowY)){if(!n.getBoundingClientRect||n===document.body)return O();if(o||e)return n;o=!0}}}while(n=n.parentNode);return O()}function _(t,e){return Math.round(t.top)===Math.round(e.top)&&Math.round(t.left)===Math.round(e.left)&&Math.round(t.height)===Math.round(e.height)&&Math.round(t.width)===Math.round(e.width)}function C(e,n){return function(){var t;v||(1===(t=arguments).length?e.call(this,t[0]):e.apply(this,t),v=setTimeout(function(){v=void 0},n))}}function H(t,e,n){t.scrollLeft+=e,t.scrollTop+=n}function T(t){var e=window.Polymer,n=window.jQuery||window.Zepto;return e&&e.dom?e.dom(t).cloneNode(!0):n?n(t).clone(!0)[0]:t.cloneNode(!0)}function x(t,e){R(t,"position","absolute"),R(t,"top",e.top),R(t,"left",e.left),R(t,"width",e.width),R(t,"height",e.height)}function A(t){R(t,"position",""),R(t,"top",""),R(t,"left",""),R(t,"width",""),R(t,"height","")}function L(n,o,i){var r={};return Array.from(n.children).forEach(function(t){var e;P(t,o.draggable,n,!1)&&!t.animated&&t!==i&&(e=X(t),r.left=Math.min(null!==(t=r.left)&&void 0!==t?t:1/0,e.left),r.top=Math.min(null!==(t=r.top)&&void 0!==t?t:1/0,e.top),r.right=Math.max(null!==(t=r.right)&&void 0!==t?t:-1/0,e.right),r.bottom=Math.max(null!==(t=r.bottom)&&void 0!==t?t:-1/0,e.bottom))}),r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}var K="Sortable"+(new Date).getTime();function N(){var e,o=[];return{captureAnimationState:function(){o=[],this.options.animation&&[].slice.call(this.el.children).forEach(function(t){var e,n;"none"!==R(t,"display")&&t!==Ht.ghost&&(o.push({target:t,rect:X(t)}),e=I({},o[o.length-1].rect),!t.thisAnimationDuration||(n=D(t,!0))&&(e.top-=n.f,e.left-=n.e),t.fromRect=e)})},addAnimationState:function(t){o.push(t)},removeAnimationState:function(t){o.splice(function(t,e){for(var n in t)if(t.hasOwnProperty(n))for(var o in e)if(e.hasOwnProperty(o)&&e[o]===t[n][o])return Number(n);return-1}(o,{target:t}),1)},animateAll:function(t){var c=this;if(!this.options.animation)return clearTimeout(e),void("function"==typeof t&&t());var u=!1,d=0;o.forEach(function(t){var e=0,n=t.target,o=n.fromRect,i=X(n),r=n.prevFromRect,a=n.prevToRect,l=t.rect,s=D(n,!0);s&&(i.top-=s.f,i.left-=s.e),n.toRect=i,n.thisAnimationDuration&&_(r,i)&&!_(o,i)&&(l.top-i.top)/(l.left-i.left)==(o.top-i.top)/(o.left-i.left)&&(t=l,s=r,r=a,a=c.options,e=Math.sqrt(Math.pow(s.top-t.top,2)+Math.pow(s.left-t.left,2))/Math.sqrt(Math.pow(s.top-r.top,2)+Math.pow(s.left-r.left,2))*a.animation),_(i,o)||(n.prevFromRect=o,n.prevToRect=i,e=e||c.options.animation,c.animate(n,l,i,e)),e&&(u=!0,d=Math.max(d,e),clearTimeout(n.animationResetTimer),n.animationResetTimer=setTimeout(function(){n.animationTime=0,n.prevFromRect=null,n.fromRect=null,n.prevToRect=null,n.thisAnimationDuration=null},e),n.thisAnimationDuration=e)}),clearTimeout(e),u?e=setTimeout(function(){"function"==typeof t&&t()},d):"function"==typeof t&&t(),o=[]},animate:function(t,e,n,o){var i,r;o&&(R(t,"transition",""),R(t,"transform",""),i=(r=D(this.el))&&r.a,r=r&&r.d,i=(e.left-n.left)/(i||1),r=(e.top-n.top)/(r||1),t.animatingX=!!i,t.animatingY=!!r,R(t,"transform","translate3d("+i+"px,"+r+"px,0)"),this.forRepaintDummy=t.offsetWidth,R(t,"transition","transform "+o+"ms"+(this.options.easing?" "+this.options.easing:"")),R(t,"transform","translate3d(0,0,0)"),"number"==typeof t.animated&&clearTimeout(t.animated),t.animated=setTimeout(function(){R(t,"transition",""),R(t,"transform",""),t.animated=!1,t.animatingX=!1,t.animatingY=!1},o))}}}var W=[],z={initializeByDefault:!0},G={mount:function(e){for(var t in z)!z.hasOwnProperty(t)||t in e||(e[t]=z[t]);W.forEach(function(t){if(t.pluginName===e.pluginName)throw"Sortable: Cannot mount plugin ".concat(e.pluginName," more than once")}),W.push(e)},pluginEvent:function(e,n,o){var t=this;this.eventCanceled=!1,o.cancel=function(){t.eventCanceled=!0};var i=e+"Global";W.forEach(function(t){n[t.pluginName]&&(n[t.pluginName][i]&&n[t.pluginName][i](I({sortable:n},o)),n.options[t.pluginName]&&n[t.pluginName][e]&&n[t.pluginName][e](I({sortable:n},o)))})},initializePlugins:function(n,o,i,t){for(var e in W.forEach(function(t){var e=t.pluginName;(n.options[e]||t.initializeByDefault)&&((t=new t(n,o,n.options)).sortable=n,t.options=n.options,n[e]=t,a(i,t.defaults))}),n.options){var r;n.options.hasOwnProperty(e)&&(void 0!==(r=this.modifyOption(n,e,n.options[e]))&&(n.options[e]=r))}},getEventProperties:function(e,n){var o={};return W.forEach(function(t){"function"==typeof t.eventProperties&&a(o,t.eventProperties.call(n[t.pluginName],e))}),o},modifyOption:function(e,n,o){var i;return W.forEach(function(t){e[t.pluginName]&&t.optionListeners&&"function"==typeof t.optionListeners[n]&&(i=t.optionListeners[n].call(e[t.pluginName],o))}),i}};function U(t){var e=t.sortable,n=t.rootEl,o=t.name,i=t.targetEl,r=t.cloneEl,a=t.toEl,l=t.fromEl,s=t.oldIndex,c=t.newIndex,u=t.oldDraggableIndex,d=t.newDraggableIndex,h=t.originalEvent,f=t.putSortable,p=t.extraEventProperties;if(e=e||n&&n[K]){var g,m=e.options,t="on"+o.charAt(0).toUpperCase()+o.substr(1);!window.CustomEvent||y||w?(g=document.createEvent("Event")).initEvent(o,!0,!0):g=new CustomEvent(o,{bubbles:!0,cancelable:!0}),g.to=a||n,g.from=l||n,g.item=i||n,g.clone=r,g.oldIndex=s,g.newIndex=c,g.oldDraggableIndex=u,g.newDraggableIndex=d,g.originalEvent=h,g.pullMode=f?f.lastPutMode:void 0;var v,b=I(I({},p),G.getEventProperties(o,e));for(v in b)g[v]=b[v];n&&n.dispatchEvent(g),m[t]&&m[t].call(e,g)}}function q(t,e){var n=(o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{}).evt,o=l(o,V);G.pluginEvent.bind(Ht)(t,e,I({dragEl:$,parentEl:Q,ghostEl:J,rootEl:tt,nextEl:et,lastDownEl:nt,cloneEl:ot,cloneHidden:it,dragStarted:vt,putSortable:ut,activeSortable:Ht.active,originalEvent:n,oldIndex:rt,oldDraggableIndex:lt,newIndex:at,newDraggableIndex:st,hideGhostForTarget:Yt,unhideGhostForTarget:Bt,cloneNowHidden:function(){it=!0},cloneNowShown:function(){it=!1},dispatchSortableEvent:function(t){Z({sortable:e,name:t,originalEvent:n})}},o))}var V=["evt"];function Z(t){U(I({putSortable:ut,cloneEl:ot,targetEl:$,rootEl:tt,oldIndex:rt,oldDraggableIndex:lt,newIndex:at,newDraggableIndex:st},t))}var $,Q,J,tt,et,nt,ot,it,rt,at,lt,st,ct,ut,dt,ht,ft,pt,gt,mt,vt,bt,yt,wt,Dt,Et=!1,St=!1,_t=[],Ct=!1,Tt=!1,xt=[],Ot=!1,Mt=[],At="undefined"!=typeof document,Nt=d,It=w||y?"cssFloat":"float",Pt=At&&!n&&!d&&"draggable"in document.createElement("div"),kt=function(){if(At){if(y)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents}}(),Rt=function(t,e){var n=R(t),o=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),i=B(t,0,e),r=B(t,1,e),a=i&&R(i),l=r&&R(r),s=a&&parseInt(a.marginLeft)+parseInt(a.marginRight)+X(i).width,t=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+X(r).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(i&&a.float&&"none"!==a.float){e="left"===a.float?"left":"right";return!r||"both"!==l.clear&&l.clear!==e?"horizontal":"vertical"}return i&&("block"===a.display||"flex"===a.display||"table"===a.display||"grid"===a.display||o<=s&&"none"===n[It]||r&&"none"===n[It]&&o<s+t)?"vertical":"horizontal"},Xt=function(t){function l(r,a){return function(t,e,n,o){var i=t.options.group.name&&e.options.group.name&&t.options.group.name===e.options.group.name;if(null==r&&(a||i))return!0;if(null==r||!1===r)return!1;if(a&&"clone"===r)return r;if("function"==typeof r)return l(r(t,e,n,o),a)(t,e,n,o);e=(a?t:e).options.group.name;return!0===r||"string"==typeof r&&r===e||r.join&&-1<r.indexOf(e)}}var e={},n=t.group;n&&"object"==s(n)||(n={name:n}),e.name=n.name,e.checkPull=l(n.pull,!0),e.checkPut=l(n.put),e.revertClone=n.revertClone,t.group=e},Yt=function(){!kt&&J&&R(J,"display","none")},Bt=function(){!kt&&J&&R(J,"display","")};At&&!n&&document.addEventListener("click",function(t){if(St)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),St=!1},!0);function Ft(t){if($){t=t.touches?t.touches[0]:t;var e=(i=t.clientX,r=t.clientY,_t.some(function(t){var e=t[K].options.emptyInsertThreshold;if(e&&!F(t)){var n=X(t),o=i>=n.left-e&&i<=n.right+e,e=r>=n.top-e&&r<=n.bottom+e;return o&&e?a=t:void 0}}),a);if(e){var n,o={};for(n in t)t.hasOwnProperty(n)&&(o[n]=t[n]);o.target=o.rootEl=e,o.preventDefault=void 0,o.stopPropagation=void 0,e[K]._onDragOver(o)}}var i,r,a}function jt(t){$&&$.parentNode[K]._isOutsideThisEl(t.target)}function Ht(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=a({},e),t[K]=this;var n,o,i={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Rt(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Ht.supportPointer&&"PointerEvent"in window&&(!u||d),emptyInsertThreshold:5};for(n in G.initializePlugins(this,t,i),i)n in e||(e[n]=i[n]);for(o in Xt(e),this)"_"===o.charAt(0)&&"function"==typeof this[o]&&(this[o]=this[o].bind(this));this.nativeDraggable=!e.forceFallback&&Pt,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?f(t,"pointerdown",this._onTapStart):(f(t,"mousedown",this._onTapStart),f(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(f(t,"dragover",this),f(t,"dragenter",this)),_t.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),a(this,N())}function Lt(t,e,n,o,i,r,a,l){var s,c,u=t[K],d=u.options.onMove;return!window.CustomEvent||y||w?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=e,s.from=t,s.dragged=n,s.draggedRect=o,s.related=i||e,s.relatedRect=r||X(e),s.willInsertAfter=l,s.originalEvent=a,t.dispatchEvent(s),c=d?d.call(u,s,a):c}function Kt(t){t.draggable=!1}function Wt(){Ot=!1}function zt(t){return setTimeout(t,0)}function Gt(t){return clearTimeout(t)}Ht.prototype={constructor:Ht,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(bt=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,$):this.options.direction},_onTapStart:function(e){if(e.cancelable){var n=this,o=this.el,t=this.options,i=t.preventOnFilter,r=e.type,a=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,l=(a||e).target,s=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,c=t.filter;if(!function(t){Mt.length=0;var e=t.getElementsByTagName("input"),n=e.length;for(;n--;){var o=e[n];o.checked&&Mt.push(o)}}(o),!$&&!(/mousedown|pointerdown/.test(r)&&0!==e.button||t.disabled)&&!s.isContentEditable&&(this.nativeDraggable||!u||!l||"SELECT"!==l.tagName.toUpperCase())&&!((l=P(l,t.draggable,o,!1))&&l.animated||nt===l)){if(rt=j(l),lt=j(l,t.draggable),"function"==typeof c){if(c.call(this,e,l,this))return Z({sortable:n,rootEl:s,name:"filter",targetEl:l,toEl:o,fromEl:o}),q("filter",n,{evt:e}),void(i&&e.preventDefault())}else if(c=c&&c.split(",").some(function(t){if(t=P(s,t.trim(),o,!1))return Z({sortable:n,rootEl:t,name:"filter",targetEl:l,fromEl:o,toEl:o}),q("filter",n,{evt:e}),!0}))return void(i&&e.preventDefault());t.handle&&!P(s,t.handle,o,!1)||this._prepareDragStart(e,a,l)}}},_prepareDragStart:function(t,e,n){var o,i=this,r=i.el,a=i.options,l=r.ownerDocument;n&&!$&&n.parentNode===r&&(o=X(n),tt=r,Q=($=n).parentNode,et=$.nextSibling,nt=n,ct=a.group,dt={target:Ht.dragged=$,clientX:(e||t).clientX,clientY:(e||t).clientY},gt=dt.clientX-o.left,mt=dt.clientY-o.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,$.style["will-change"]="all",o=function(){q("delayEnded",i,{evt:t}),Ht.eventCanceled?i._onDrop():(i._disableDelayedDragEvents(),!c&&i.nativeDraggable&&($.draggable=!0),i._triggerDragStart(t,e),Z({sortable:i,name:"choose",originalEvent:t}),k($,a.chosenClass,!0))},a.ignore.split(",").forEach(function(t){E($,t.trim(),Kt)}),f(l,"dragover",Ft),f(l,"mousemove",Ft),f(l,"touchmove",Ft),a.supportPointer?(f(l,"pointerup",i._onDrop),this.nativeDraggable||f(l,"pointercancel",i._onDrop)):(f(l,"mouseup",i._onDrop),f(l,"touchend",i._onDrop),f(l,"touchcancel",i._onDrop)),c&&this.nativeDraggable&&(this.options.touchStartThreshold=4,$.draggable=!0),q("delayStart",this,{evt:t}),!a.delay||a.delayOnTouchOnly&&!e||this.nativeDraggable&&(w||y)?o():Ht.eventCanceled?this._onDrop():(a.supportPointer?(f(l,"pointerup",i._disableDelayedDrag),f(l,"pointercancel",i._disableDelayedDrag)):(f(l,"mouseup",i._disableDelayedDrag),f(l,"touchend",i._disableDelayedDrag),f(l,"touchcancel",i._disableDelayedDrag)),f(l,"mousemove",i._delayedDragTouchMoveHandler),f(l,"touchmove",i._delayedDragTouchMoveHandler),a.supportPointer&&f(l,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(o,a.delay)))},_delayedDragTouchMoveHandler:function(t){t=t.touches?t.touches[0]:t;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){$&&Kt($),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;p(t,"mouseup",this._disableDelayedDrag),p(t,"touchend",this._disableDelayedDrag),p(t,"touchcancel",this._disableDelayedDrag),p(t,"pointerup",this._disableDelayedDrag),p(t,"pointercancel",this._disableDelayedDrag),p(t,"mousemove",this._delayedDragTouchMoveHandler),p(t,"touchmove",this._delayedDragTouchMoveHandler),p(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?f(document,"pointermove",this._onTouchMove):f(document,e?"touchmove":"mousemove",this._onTouchMove):(f($,"dragend",this),f(tt,"dragstart",this._onDragStart));try{document.selection?zt(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){var n;Et=!1,tt&&$?(q("dragStarted",this,{evt:e}),this.nativeDraggable&&f(document,"dragover",jt),n=this.options,t||k($,n.dragClass,!1),k($,n.ghostClass,!0),Ht.active=this,t&&this._appendGhost(),Z({sortable:this,name:"start",originalEvent:e})):this._nulling()},_emulateDragOver:function(){if(ht){this._lastX=ht.clientX,this._lastY=ht.clientY,Yt();for(var t=document.elementFromPoint(ht.clientX,ht.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(ht.clientX,ht.clientY))!==e;)e=t;if($.parentNode[K]._isOutsideThisEl(t),e)do{if(e[K])if(e[K]._onDragOver({clientX:ht.clientX,clientY:ht.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break}while(e=m(t=e));Bt()}},_onTouchMove:function(t){if(dt){var e=this.options,n=e.fallbackTolerance,o=e.fallbackOffset,i=t.touches?t.touches[0]:t,r=J&&D(J,!0),a=J&&r&&r.a,l=J&&r&&r.d,e=Nt&&Dt&&S(Dt),a=(i.clientX-dt.clientX+o.x)/(a||1)+(e?e[0]-xt[0]:0)/(a||1),l=(i.clientY-dt.clientY+o.y)/(l||1)+(e?e[1]-xt[1]:0)/(l||1);if(!Ht.active&&!Et){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))<n)return;this._onDragStart(t,!0)}J&&(r?(r.e+=a-(ft||0),r.f+=l-(pt||0)):r={a:1,b:0,c:0,d:1,e:a,f:l},r="matrix(".concat(r.a,",").concat(r.b,",").concat(r.c,",").concat(r.d,",").concat(r.e,",").concat(r.f,")"),R(J,"webkitTransform",r),R(J,"mozTransform",r),R(J,"msTransform",r),R(J,"transform",r),ft=a,pt=l,ht=i),t.cancelable&&t.preventDefault()}},_appendGhost:function(){if(!J){var t=this.options.fallbackOnBody?document.body:tt,e=X($,!0,Nt,!0,t),n=this.options;if(Nt){for(Dt=t;"static"===R(Dt,"position")&&"none"===R(Dt,"transform")&&Dt!==document;)Dt=Dt.parentNode;Dt!==document.body&&Dt!==document.documentElement?(Dt===document&&(Dt=O()),e.top+=Dt.scrollTop,e.left+=Dt.scrollLeft):Dt=O(),xt=S(Dt)}k(J=$.cloneNode(!0),n.ghostClass,!1),k(J,n.fallbackClass,!0),k(J,n.dragClass,!0),R(J,"transition",""),R(J,"transform",""),R(J,"box-sizing","border-box"),R(J,"margin",0),R(J,"top",e.top),R(J,"left",e.left),R(J,"width",e.width),R(J,"height",e.height),R(J,"opacity","0.8"),R(J,"position",Nt?"absolute":"fixed"),R(J,"zIndex","100000"),R(J,"pointerEvents","none"),Ht.ghost=J,t.appendChild(J),R(J,"transform-origin",gt/parseInt(J.style.width)*100+"% "+mt/parseInt(J.style.height)*100+"%")}},_onDragStart:function(t,e){var n=this,o=t.dataTransfer,i=n.options;q("dragStart",this,{evt:t}),Ht.eventCanceled?this._onDrop():(q("setupClone",this),Ht.eventCanceled||((ot=T($)).removeAttribute("id"),ot.draggable=!1,ot.style["will-change"]="",this._hideClone(),k(ot,this.options.chosenClass,!1),Ht.clone=ot),n.cloneId=zt(function(){q("clone",n),Ht.eventCanceled||(n.options.removeCloneOnHide||tt.insertBefore(ot,$),n._hideClone(),Z({sortable:n,name:"clone"}))}),e||k($,i.dragClass,!0),e?(St=!0,n._loopId=setInterval(n._emulateDragOver,50)):(p(document,"mouseup",n._onDrop),p(document,"touchend",n._onDrop),p(document,"touchcancel",n._onDrop),o&&(o.effectAllowed="move",i.setData&&i.setData.call(n,o,$)),f(document,"drop",n),R($,"transform","translateZ(0)")),Et=!0,n._dragStartId=zt(n._dragStarted.bind(n,e,t)),f(document,"selectstart",n),vt=!0,window.getSelection().removeAllRanges(),u&&R(document.body,"user-select","none"))},_onDragOver:function(n){var o,i,r,t,e,a=this.el,l=n.target,s=this.options,c=s.group,u=Ht.active,d=ct===c,h=s.sort,f=ut||u,p=this,g=!1;if(!Ot){if(void 0!==n.preventDefault&&n.cancelable&&n.preventDefault(),l=P(l,s.draggable,a,!0),O("dragOver"),Ht.eventCanceled)return g;if($.contains(n.target)||l.animated&&l.animatingX&&l.animatingY||p._ignoreWhileAnimating===l)return A(!1);if(St=!1,u&&!s.disabled&&(d?h||(i=Q!==tt):ut===this||(this.lastPutMode=ct.checkPull(this,u,$,n))&&c.checkPut(this,u,$,n))){if(r="vertical"===this._getDirection(n,l),o=X($),O("dragOverValid"),Ht.eventCanceled)return g;if(i)return Q=tt,M(),this._hideClone(),O("revert"),Ht.eventCanceled||(et?tt.insertBefore($,et):tt.appendChild($)),A(!0);var m=F(a,s.draggable);if(m&&(S=n,c=r,x=X(F((E=this).el,E.options.draggable)),E=L(E.el,E.options,J),!(c?S.clientX>E.right+10||S.clientY>x.bottom&&S.clientX>x.left:S.clientY>E.bottom+10||S.clientX>x.right&&S.clientY>x.top)||m.animated)){if(m&&(t=n,e=r,C=X(B((_=this).el,0,_.options,!0)),_=L(_.el,_.options,J),e?t.clientX<_.left-10||t.clientY<C.top&&t.clientX<C.right:t.clientY<_.top-10||t.clientY<C.bottom&&t.clientX<C.left)){var v=B(a,0,s,!0);if(v===$)return A(!1);if(D=X(l=v),!1!==Lt(tt,a,$,o,l,D,n,!1))return M(),a.insertBefore($,v),Q=a,N(),A(!0)}else if(l.parentNode===a){var b,y,w,D=X(l),E=$.parentNode!==a,S=(S=$.animated&&$.toRect||o,x=l.animated&&l.toRect||D,_=(e=r)?S.left:S.top,t=e?S.right:S.bottom,C=e?S.width:S.height,v=e?x.left:x.top,S=e?x.right:x.bottom,x=e?x.width:x.height,!(_===v||t===S||_+C/2===v+x/2)),_=r?"top":"left",C=Y(l,"top","top")||Y($,"top","top"),v=C?C.scrollTop:void 0;if(bt!==l&&(y=D[_],Ct=!1,Tt=!S&&s.invertSwap||E),0!==(b=function(t,e,n,o,i,r,a,l){var s=o?t.clientY:t.clientX,c=o?n.height:n.width,t=o?n.top:n.left,o=o?n.bottom:n.right,n=!1;if(!a)if(l&&wt<c*i){if(Ct=!Ct&&(1===yt?t+c*r/2<s:s<o-c*r/2)?!0:Ct)n=!0;else if(1===yt?s<t+wt:o-wt<s)return-yt}else if(t+c*(1-i)/2<s&&s<o-c*(1-i)/2)return function(t){return j($)<j(t)?1:-1}(e);if((n=n||a)&&(s<t+c*r/2||o-c*r/2<s))return t+c/2<s?1:-1;return 0}(n,l,D,r,S?1:s.swapThreshold,null==s.invertedSwapThreshold?s.swapThreshold:s.invertedSwapThreshold,Tt,bt===l)))for(var T=j($);(w=Q.children[T-=b])&&("none"===R(w,"display")||w===J););if(0===b||w===l)return A(!1);yt=b;var x=(bt=l).nextElementSibling,E=!1,S=Lt(tt,a,$,o,l,D,n,E=1===b);if(!1!==S)return 1!==S&&-1!==S||(E=1===S),Ot=!0,setTimeout(Wt,30),M(),E&&!x?a.appendChild($):l.parentNode.insertBefore($,E?x:l),C&&H(C,0,v-C.scrollTop),Q=$.parentNode,void 0===y||Tt||(wt=Math.abs(y-X(l)[_])),N(),A(!0)}}else{if(m===$)return A(!1);if((l=m&&a===n.target?m:l)&&(D=X(l)),!1!==Lt(tt,a,$,o,l,D,n,!!l))return M(),m&&m.nextSibling?a.insertBefore($,m.nextSibling):a.appendChild($),Q=a,N(),A(!0)}if(a.contains($))return A(!1)}return!1}function O(t,e){q(t,p,I({evt:n,isOwner:d,axis:r?"vertical":"horizontal",revert:i,dragRect:o,targetRect:D,canSort:h,fromSortable:f,target:l,completed:A,onMove:function(t,e){return Lt(tt,a,$,o,t,X(t),n,e)},changed:N},e))}function M(){O("dragOverAnimationCapture"),p.captureAnimationState(),p!==f&&f.captureAnimationState()}function A(t){return O("dragOverCompleted",{insertion:t}),t&&(d?u._hideClone():u._showClone(p),p!==f&&(k($,(ut||u).options.ghostClass,!1),k($,s.ghostClass,!0)),ut!==p&&p!==Ht.active?ut=p:p===Ht.active&&ut&&(ut=null),f===p&&(p._ignoreWhileAnimating=l),p.animateAll(function(){O("dragOverAnimationComplete"),p._ignoreWhileAnimating=null}),p!==f&&(f.animateAll(),f._ignoreWhileAnimating=null)),(l===$&&!$.animated||l===a&&!l.animated)&&(bt=null),s.dragoverBubble||n.rootEl||l===document||($.parentNode[K]._isOutsideThisEl(n.target),t||Ft(n)),!s.dragoverBubble&&n.stopPropagation&&n.stopPropagation(),g=!0}function N(){at=j($),st=j($,s.draggable),Z({sortable:p,name:"change",toEl:a,newIndex:at,newDraggableIndex:st,originalEvent:n})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){p(document,"mousemove",this._onTouchMove),p(document,"touchmove",this._onTouchMove),p(document,"pointermove",this._onTouchMove),p(document,"dragover",Ft),p(document,"mousemove",Ft),p(document,"touchmove",Ft)},_offUpEvents:function(){var t=this.el.ownerDocument;p(t,"mouseup",this._onDrop),p(t,"touchend",this._onDrop),p(t,"pointerup",this._onDrop),p(t,"pointercancel",this._onDrop),p(t,"touchcancel",this._onDrop),p(document,"selectstart",this)},_onDrop:function(t){var e=this.el,n=this.options;at=j($),st=j($,n.draggable),q("drop",this,{evt:t}),Q=$&&$.parentNode,at=j($),st=j($,n.draggable),Ht.eventCanceled||(Ct=Tt=Et=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Gt(this.cloneId),Gt(this._dragStartId),this.nativeDraggable&&(p(document,"drop",this),p(e,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),u&&R(document.body,"user-select",""),R($,"transform",""),t&&(vt&&(t.cancelable&&t.preventDefault(),n.dropBubble||t.stopPropagation()),J&&J.parentNode&&J.parentNode.removeChild(J),(tt===Q||ut&&"clone"!==ut.lastPutMode)&&ot&&ot.parentNode&&ot.parentNode.removeChild(ot),$&&(this.nativeDraggable&&p($,"dragend",this),Kt($),$.style["will-change"]="",vt&&!Et&&k($,(ut||this).options.ghostClass,!1),k($,this.options.chosenClass,!1),Z({sortable:this,name:"unchoose",toEl:Q,newIndex:null,newDraggableIndex:null,originalEvent:t}),tt!==Q?(0<=at&&(Z({rootEl:Q,name:"add",toEl:Q,fromEl:tt,originalEvent:t}),Z({sortable:this,name:"remove",toEl:Q,originalEvent:t}),Z({rootEl:Q,name:"sort",toEl:Q,fromEl:tt,originalEvent:t}),Z({sortable:this,name:"sort",toEl:Q,originalEvent:t})),ut&&ut.save()):at!==rt&&0<=at&&(Z({sortable:this,name:"update",toEl:Q,originalEvent:t}),Z({sortable:this,name:"sort",toEl:Q,originalEvent:t})),Ht.active&&(null!=at&&-1!==at||(at=rt,st=lt),Z({sortable:this,name:"end",toEl:Q,originalEvent:t}),this.save())))),this._nulling()},_nulling:function(){q("nulling",this),tt=$=Q=J=et=ot=nt=it=dt=ht=vt=at=st=rt=lt=bt=yt=ut=ct=Ht.dragged=Ht.ghost=Ht.clone=Ht.active=null;var e=this.el;Mt.forEach(function(t){e.contains(t)&&(t.checked=!0)}),Mt.length=ft=pt=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":$&&(this._onDragOver(t),function(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move");t.cancelable&&t.preventDefault()}(t));break;case"selectstart":t.preventDefault()}},toArray:function(){for(var t,e=[],n=this.el.children,o=0,i=n.length,r=this.options;o<i;o++)P(t=n[o],r.draggable,this.el,!1)&&e.push(t.getAttribute(r.dataIdAttr)||function(t){var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,o=0;for(;n--;)o+=e.charCodeAt(n);return o.toString(36)}(t));return e},sort:function(t,e){var n={},o=this.el;this.toArray().forEach(function(t,e){e=o.children[e];P(e,this.options.draggable,o,!1)&&(n[t]=e)},this),e&&this.captureAnimationState(),t.forEach(function(t){n[t]&&(o.removeChild(n[t]),o.appendChild(n[t]))}),e&&this.animateAll()},save:function(){var t=this.options.store;t&&t.set&&t.set(this)},closest:function(t,e){return P(t,e||this.options.draggable,this.el,!1)},option:function(t,e){var n=this.options;if(void 0===e)return n[t];var o=G.modifyOption(this,t,e);n[t]=void 0!==o?o:e,"group"===t&&Xt(n)},destroy:function(){q("destroy",this);var t=this.el;t[K]=null,p(t,"mousedown",this._onTapStart),p(t,"touchstart",this._onTapStart),p(t,"pointerdown",this._onTapStart),this.nativeDraggable&&(p(t,"dragover",this),p(t,"dragenter",this)),Array.prototype.forEach.call(t.querySelectorAll("[draggable]"),function(t){t.removeAttribute("draggable")}),this._onDrop(),this._disableDelayedDragEvents(),_t.splice(_t.indexOf(this.el),1),this.el=t=null},_hideClone:function(){it||(q("hideClone",this),Ht.eventCanceled||(R(ot,"display","none"),this.options.removeCloneOnHide&&ot.parentNode&&ot.parentNode.removeChild(ot),it=!0))},_showClone:function(t){"clone"===t.lastPutMode?it&&(q("showClone",this),Ht.eventCanceled||($.parentNode!=tt||this.options.group.revertClone?et?tt.insertBefore(ot,et):tt.appendChild(ot):tt.insertBefore(ot,$),this.options.group.revertClone&&this.animate($,ot),R(ot,"display",""),it=!1)):this._hideClone()}},At&&f(document,"touchmove",function(t){(Ht.active||Et)&&t.cancelable&&t.preventDefault()}),Ht.utils={on:f,off:p,css:R,find:E,is:function(t,e){return!!P(t,e,t,!1)},extend:function(t,e){if(t&&e)for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},throttle:C,closest:P,toggleClass:k,clone:T,index:j,nextTick:zt,cancelNextTick:Gt,detectDirection:Rt,getChild:B,expando:K},Ht.get=function(t){return t[K]},Ht.mount=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];(e=e[0].constructor===Array?e[0]:e).forEach(function(t){if(!t.prototype||!t.prototype.constructor)throw"Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(t));t.utils&&(Ht.utils=I(I({},Ht.utils),t.utils)),G.mount(t)})},Ht.create=function(t,e){return new Ht(t,e)};var Ut,qt,Vt,Zt,$t,Qt,Jt=[],te=!(Ht.version="1.15.7");function ee(){Jt.forEach(function(t){clearInterval(t.pid)}),Jt=[]}function ne(){clearInterval(Qt)}var oe,ie=C(function(n,t,e,o){if(t.scroll){var i,r=(n.touches?n.touches[0]:n).clientX,a=(n.touches?n.touches[0]:n).clientY,l=t.scrollSensitivity,s=t.scrollSpeed,c=O(),u=!1;qt!==e&&(qt=e,ee(),Ut=t.scroll,i=t.scrollFn,!0===Ut&&(Ut=M(e,!0)));var d=0,h=Ut;do{var f=h,p=X(f),g=p.top,m=p.bottom,v=p.left,b=p.right,y=p.width,w=p.height,D=void 0,E=void 0,S=f.scrollWidth,_=f.scrollHeight,C=R(f),T=f.scrollLeft,p=f.scrollTop,E=f===c?(D=y<S&&("auto"===C.overflowX||"scroll"===C.overflowX||"visible"===C.overflowX),w<_&&("auto"===C.overflowY||"scroll"===C.overflowY||"visible"===C.overflowY)):(D=y<S&&("auto"===C.overflowX||"scroll"===C.overflowX),w<_&&("auto"===C.overflowY||"scroll"===C.overflowY)),T=D&&(Math.abs(b-r)<=l&&T+y<S)-(Math.abs(v-r)<=l&&!!T),p=E&&(Math.abs(m-a)<=l&&p+w<_)-(Math.abs(g-a)<=l&&!!p);if(!Jt[d])for(var x=0;x<=d;x++)Jt[x]||(Jt[x]={});Jt[d].vx==T&&Jt[d].vy==p&&Jt[d].el===f||(Jt[d].el=f,Jt[d].vx=T,Jt[d].vy=p,clearInterval(Jt[d].pid),0==T&&0==p||(u=!0,Jt[d].pid=setInterval(function(){o&&0===this.layer&&Ht.active._onTouchMove($t);var t=Jt[this.layer].vy?Jt[this.layer].vy*s:0,e=Jt[this.layer].vx?Jt[this.layer].vx*s:0;"function"==typeof i&&"continue"!==i.call(Ht.dragged.parentNode[K],e,t,n,$t,Jt[this.layer].el)||H(Jt[this.layer].el,e,t)}.bind({layer:d}),24))),d++}while(t.bubbleScroll&&h!==c&&(h=M(h,!1)));te=u}},30),n=function(t){var e=t.originalEvent,n=t.putSortable,o=t.dragEl,i=t.activeSortable,r=t.dispatchSortableEvent,a=t.hideGhostForTarget,t=t.unhideGhostForTarget;e&&(i=n||i,a(),e=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:e,e=document.elementFromPoint(e.clientX,e.clientY),t(),i&&!i.el.contains(e)&&(r("spill"),this.onSpill({dragEl:o,putSortable:n})))};function re(){}function ae(){}re.prototype={startIndex:null,dragStart:function(t){t=t.oldDraggableIndex;this.startIndex=t},onSpill:function(t){var e=t.dragEl,n=t.putSortable;this.sortable.captureAnimationState(),n&&n.captureAnimationState();t=B(this.sortable.el,this.startIndex,this.options);t?this.sortable.el.insertBefore(e,t):this.sortable.el.appendChild(e),this.sortable.animateAll(),n&&n.animateAll()},drop:n},a(re,{pluginName:"revertOnSpill"}),ae.prototype={onSpill:function(t){var e=t.dragEl,t=t.putSortable||this.sortable;t.captureAnimationState(),e.parentNode&&e.parentNode.removeChild(e),t.animateAll()},drop:n},a(ae,{pluginName:"removeOnSpill"});var le,se,ce,ue,de,he=[],fe=[],pe=!1,ge=!1,me=!1;function ve(n,o){fe.forEach(function(t,e){e=o.children[t.sortableIndex+(n?Number(e):0)];e?o.insertBefore(t,e):o.appendChild(t)})}function be(){he.forEach(function(t){t!==ce&&t.parentNode&&t.parentNode.removeChild(t)})}return Ht.mount(new function(){function t(){for(var t in this.defaults={scroll:!0,forceAutoScrollFallback:!1,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:!0},this)"_"===t.charAt(0)&&"function"==typeof this[t]&&(this[t]=this[t].bind(this))}return t.prototype={dragStarted:function(t){t=t.originalEvent;this.sortable.nativeDraggable?f(document,"dragover",this._handleAutoScroll):this.options.supportPointer?f(document,"pointermove",this._handleFallbackAutoScroll):t.touches?f(document,"touchmove",this._handleFallbackAutoScroll):f(document,"mousemove",this._handleFallbackAutoScroll)},dragOverCompleted:function(t){t=t.originalEvent;this.options.dragOverBubble||t.rootEl||this._handleAutoScroll(t)},drop:function(){this.sortable.nativeDraggable?p(document,"dragover",this._handleAutoScroll):(p(document,"pointermove",this._handleFallbackAutoScroll),p(document,"touchmove",this._handleFallbackAutoScroll),p(document,"mousemove",this._handleFallbackAutoScroll)),ne(),ee(),clearTimeout(v),v=void 0},nulling:function(){$t=qt=Ut=te=Qt=Vt=Zt=null,Jt.length=0},_handleFallbackAutoScroll:function(t){this._handleAutoScroll(t,!0)},_handleAutoScroll:function(e,n){var o,i=this,r=(e.touches?e.touches[0]:e).clientX,a=(e.touches?e.touches[0]:e).clientY,t=document.elementFromPoint(r,a);$t=e,n||this.options.forceAutoScrollFallback||w||y||u?(ie(e,this.options,t,n),o=M(t,!0),!te||Qt&&r===Vt&&a===Zt||(Qt&&ne(),Qt=setInterval(function(){var t=M(document.elementFromPoint(r,a),!0);t!==o&&(o=t,ee()),ie(e,i.options,t,n)},10),Vt=r,Zt=a)):this.options.bubbleScroll&&M(t,!0)!==O()?ie(e,this.options,M(t,!1),!1):ee()}},a(t,{pluginName:"scroll",initializeByDefault:!0})}),Ht.mount(ae,re),Ht.mount(new function(){function t(){this.defaults={swapClass:"sortable-swap-highlight"}}return t.prototype={dragStart:function(t){t=t.dragEl;oe=t},dragOverValid:function(t){var e=t.completed,n=t.target,o=t.onMove,i=t.activeSortable,r=t.changed,a=t.cancel;i.options.swap&&(t=this.sortable.el,i=this.options,n&&n!==t&&(t=oe,oe=!1!==o(n)?(k(n,i.swapClass,!0),n):null,t&&t!==oe&&k(t,i.swapClass,!1)),r(),e(!0),a())},drop:function(t){var e,n,o=t.activeSortable,i=t.putSortable,r=t.dragEl,a=i||this.sortable,l=this.options;oe&&k(oe,l.swapClass,!1),oe&&(l.swap||i&&i.options.swap)&&r!==oe&&(a.captureAnimationState(),a!==o&&o.captureAnimationState(),n=oe,t=(e=r).parentNode,l=n.parentNode,t&&l&&!t.isEqualNode(n)&&!l.isEqualNode(e)&&(i=j(e),r=j(n),t.isEqualNode(l)&&i<r&&r++,t.insertBefore(n,t.children[i]),l.insertBefore(e,l.children[r])),a.animateAll(),a!==o&&o.animateAll())},nulling:function(){oe=null}},a(t,{pluginName:"swap",eventProperties:function(){return{swapItem:oe}}})}),Ht.mount(new function(){function t(o){for(var t in this)"_"===t.charAt(0)&&"function"==typeof this[t]&&(this[t]=this[t].bind(this));o.options.avoidImplicitDeselect||(o.options.supportPointer?f(document,"pointerup",this._deselectMultiDrag):(f(document,"mouseup",this._deselectMultiDrag),f(document,"touchend",this._deselectMultiDrag))),f(document,"keydown",this._checkKeyDown),f(document,"keyup",this._checkKeyUp),this.defaults={selectedClass:"sortable-selected",multiDragKey:null,avoidImplicitDeselect:!1,setData:function(t,e){var n="";he.length&&se===o?he.forEach(function(t,e){n+=(e?", ":"")+t.textContent}):n=e.textContent,t.setData("Text",n)}}}return t.prototype={multiDragKeyDown:!1,isMultiDrag:!1,delayStartGlobal:function(t){t=t.dragEl;ce=t},delayEnded:function(){this.isMultiDrag=~he.indexOf(ce)},setupClone:function(t){var e=t.sortable,t=t.cancel;if(this.isMultiDrag){for(var n=0;n<he.length;n++)fe.push(T(he[n])),fe[n].sortableIndex=he[n].sortableIndex,fe[n].draggable=!1,fe[n].style["will-change"]="",k(fe[n],this.options.selectedClass,!1),he[n]===ce&&k(fe[n],this.options.chosenClass,!1);e._hideClone(),t()}},clone:function(t){var e=t.sortable,n=t.rootEl,o=t.dispatchSortableEvent,t=t.cancel;this.isMultiDrag&&(this.options.removeCloneOnHide||he.length&&se===e&&(ve(!0,n),o("clone"),t()))},showClone:function(t){var e=t.cloneNowShown,n=t.rootEl,t=t.cancel;this.isMultiDrag&&(ve(!1,n),fe.forEach(function(t){R(t,"display","")}),e(),de=!1,t())},hideClone:function(t){var e=this,n=(t.sortable,t.cloneNowHidden),t=t.cancel;this.isMultiDrag&&(fe.forEach(function(t){R(t,"display","none"),e.options.removeCloneOnHide&&t.parentNode&&t.parentNode.removeChild(t)}),n(),de=!0,t())},dragStartGlobal:function(t){t.sortable;!this.isMultiDrag&&se&&se.multiDrag._deselectMultiDrag(),he.forEach(function(t){t.sortableIndex=j(t)}),he=he.sort(function(t,e){return t.sortableIndex-e.sortableIndex}),me=!0},dragStarted:function(t){var e,n=this,t=t.sortable;this.isMultiDrag&&(this.options.sort&&(t.captureAnimationState(),this.options.animation&&(he.forEach(function(t){t!==ce&&R(t,"position","absolute")}),e=X(ce,!1,!0,!0),he.forEach(function(t){t!==ce&&x(t,e)}),pe=ge=!0)),t.animateAll(function(){pe=ge=!1,n.options.animation&&he.forEach(function(t){A(t)}),n.options.sort&&be()}))},dragOver:function(t){var e=t.target,n=t.completed,t=t.cancel;ge&&~he.indexOf(e)&&(n(!1),t())},revert:function(t){var n,o,e=t.fromSortable,i=t.rootEl,r=t.sortable,a=t.dragRect;1<he.length&&(he.forEach(function(t){r.addAnimationState({target:t,rect:ge?X(t):a}),A(t),t.fromRect=a,e.removeAnimationState(t)}),ge=!1,n=!this.options.removeCloneOnHide,o=i,he.forEach(function(t,e){e=o.children[t.sortableIndex+(n?Number(e):0)];e?o.insertBefore(t,e):o.appendChild(t)}))},dragOverCompleted:function(t){var e,n=t.sortable,o=t.isOwner,i=t.insertion,r=t.activeSortable,a=t.parentEl,l=t.putSortable,t=this.options;i&&(o&&r._hideClone(),pe=!1,t.animation&&1<he.length&&(ge||!o&&!r.options.sort&&!l)&&(e=X(ce,!1,!0,!0),he.forEach(function(t){t!==ce&&(x(t,e),a.appendChild(t))}),ge=!0),o||(ge||be(),1<he.length?(o=de,r._showClone(n),r.options.animation&&!de&&o&&fe.forEach(function(t){r.addAnimationState({target:t,rect:ue}),t.fromRect=ue,t.thisAnimationDuration=null})):r._showClone(n)))},dragOverAnimationCapture:function(t){var e=t.dragRect,n=t.isOwner,t=t.activeSortable;he.forEach(function(t){t.thisAnimationDuration=null}),t.options.animation&&!n&&t.multiDrag.isMultiDrag&&(ue=a({},e),e=D(ce,!0),ue.top-=e.f,ue.left-=e.e)},dragOverAnimationComplete:function(){ge&&(ge=!1,be())},drop:function(t){var o,i,r,a,n,e,l,s=t.originalEvent,c=t.rootEl,u=t.parentEl,d=t.sortable,h=t.dispatchSortableEvent,f=t.oldIndex,t=t.putSortable,p=t||this.sortable;s&&(o=this.options,i=u.children,me||(o.multiDragKey&&!this.multiDragKeyDown&&this._deselectMultiDrag(),k(ce,o.selectedClass,!~he.indexOf(ce)),~he.indexOf(ce)?(he.splice(he.indexOf(ce),1),le=null,U({sortable:d,rootEl:c,name:"deselect",targetEl:ce,originalEvent:s})):(he.push(ce),U({sortable:d,rootEl:c,name:"select",targetEl:ce,originalEvent:s}),s.shiftKey&&le&&d.el.contains(le)?(r=j(le),a=j(ce),~r&&~a&&r!==a&&function(){for(var e,t=r<a?(e=r,a):(e=a,r+1),n=o.filter;e<t;e++)~he.indexOf(i[e])||P(i[e],o.draggable,u,!1)&&(n&&("function"==typeof n?n.call(d,s,i[e],d):n.split(",").some(function(t){return P(i[e],t.trim(),u,!1)}))||(k(i[e],o.selectedClass,!0),he.push(i[e]),U({sortable:d,rootEl:c,name:"select",targetEl:i[e],originalEvent:s})))}()):le=ce,se=p)),me&&this.isMultiDrag&&(ge=!1,(u[K].options.sort||u!==c)&&1<he.length&&(n=X(ce),e=j(ce,":not(."+this.options.selectedClass+")"),!pe&&o.animation&&(ce.thisAnimationDuration=null),p.captureAnimationState(),pe||(o.animation&&(ce.fromRect=n,he.forEach(function(t){var e;t.thisAnimationDuration=null,t!==ce&&(e=ge?X(t):n,t.fromRect=e,p.addAnimationState({target:t,rect:e}))})),be(),he.forEach(function(t){i[e]?u.insertBefore(t,i[e]):u.appendChild(t),e++}),f===j(ce)&&(l=!1,he.forEach(function(t){t.sortableIndex!==j(t)&&(l=!0)}),l&&(h("update"),h("sort")))),he.forEach(function(t){A(t)}),p.animateAll()),se=p),(c===u||t&&"clone"!==t.lastPutMode)&&fe.forEach(function(t){t.parentNode&&t.parentNode.removeChild(t)}))},nullingGlobal:function(){this.isMultiDrag=me=!1,fe.length=0},destroyGlobal:function(){this._deselectMultiDrag(),p(document,"pointerup",this._deselectMultiDrag),p(document,"mouseup",this._deselectMultiDrag),p(document,"touchend",this._deselectMultiDrag),p(document,"keydown",this._checkKeyDown),p(document,"keyup",this._checkKeyUp)},_deselectMultiDrag:function(t){if(!(void 0!==me&&me||se!==this.sortable||t&&P(t.target,this.options.draggable,this.sortable.el,!1)||t&&0!==t.button))for(;he.length;){var e=he[0];k(e,this.options.selectedClass,!1),he.shift(),U({sortable:this.sortable,rootEl:this.sortable.el,name:"deselect",targetEl:e,originalEvent:t})}},_checkKeyDown:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!0)},_checkKeyUp:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!1)}},a(t,{pluginName:"multiDrag",utils:{select:function(t){var e=t.parentNode[K];e&&e.options.multiDrag&&!~he.indexOf(t)&&(se&&se!==e&&(se.multiDrag._deselectMultiDrag(),se=e),k(t,e.options.selectedClass,!0),he.push(t))},deselect:function(t){var e=t.parentNode[K],n=he.indexOf(t);e&&e.options.multiDrag&&~n&&(k(t,e.options.selectedClass,!1),he.splice(n,1))}},eventProperties:function(){var n=this,o=[],i=[];return he.forEach(function(t){var e;o.push({multiDragElement:t,index:t.sortableIndex}),e=ge&&t!==ce?-1:ge?j(t,":not(."+n.options.selectedClass+")"):j(t),i.push({multiDragElement:t,index:e})}),{items:e(he),clones:[].concat(fe),oldIndicies:o,newIndicies:i}},optionListeners:{multiDragKey:function(t){return"ctrl"===(t=t.toLowerCase())?t="Control":1<t.length&&(t=t.charAt(0).toUpperCase()+t.substr(1)),t}}})}),Ht}); -
folders-4-gravity/tags/1.0.9/folders-4-gravity.php
r3444414 r3464338 5 5 * Author URI: https://brightleafdigital.io/ 6 6 * Description: Organize your Gravity Forms and Gravity Views by folders. 7 * Version: 1.0. 87 * Version: 1.0.9 8 8 * Author: BrightLeaf Digital 9 9 * License: GPL-2.0+ … … 11 11 */ 12 12 13 use function F4G\GravityOps\Core\Admin\gravityops_shell;13 use F4G\GravityOps\Core\SuiteCore\SuiteCore; 14 14 15 15 if ( ! defined( 'ABSPATH' ) ) { 16 16 exit; 17 17 } 18 19 define( 'FOLDERS_4_GRAVITY_VERSION', '1.0.9' ); 20 define( 'FOLDERS_4_GRAVITY_BASENAME', plugin_basename( __FILE__ ) ); 18 21 19 22 require_once __DIR__ . '/vendor/autoload.php'; … … 23 26 } 24 27 25 // Instantiate this plugin's copy of the AdminShell early so provider negotiation can happen on plugins_loaded.28 // Register this plugin with SuiteCore early so the latest provider can be selected. 26 29 add_action( 27 30 'plugins_loaded', 28 31 function () { 29 gravityops_shell(); 32 if ( file_exists( __DIR__ . '/vendor/F4G/gravityops/core/assets/' ) ) { 33 $assets_base_url = plugins_url( 'vendor/F4G/gravityops/core/assets/', __FILE__ ); 34 } else { 35 $assets_base_url = plugins_url( 'vendor/gravityops/core/assets/', __FILE__ ); 36 } 37 38 SuiteCore::register( 39 [ 40 'assets_base_url' => $assets_base_url, 41 ] 42 ); 30 43 }, 31 44 1 … … 43 56 return; 44 57 } 45 46 // Ensure GravityOps shared assets resolve when library is vendor-installed in this plugin.47 add_filter(48 'gravityops_assets_base_url',49 function ( $url ) {50 if ( $url ) {51 return $url;52 }53 54 if ( file_exists( __DIR__ . '/vendor/F4G/gravityops/core/assets/' ) ) {55 return plugins_url( 'vendor/F4G/gravityops/core/assets/', __FILE__ );56 }57 58 return plugins_url( 'vendor/gravityops/core/assets/', __FILE__ );59 }60 );61 58 62 59 add_action( … … 77 74 } 78 75 ); 79 80 define( 'FOLDERS_4_GRAVITY_VERSION', '1.0.8' );81 define( 'FOLDERS_4_GRAVITY_BASENAME', plugin_basename( __FILE__ ) );82 76 83 77 /** -
folders-4-gravity/tags/1.0.9/includes/class-gravity-ops-form-folders.php
r3444414 r3464338 1 1 <?php 2 2 3 use F4G\GravityOps\Core\Admin\ReviewPrompter; 4 use F4G\GravityOps\Core\Admin\SuiteMenu; 5 use F4G\GravityOps\Core\Admin\SurveyPrompter; 6 use F4G\GravityOps\Core\Admin\AdminShell; 3 use F4G\GravityOps\Core\SuiteCore\SuiteCore; 7 4 use F4G\GravityOps\Core\Utils\AssetHelper as Assets; 8 use function F4G\GravityOps\Core\Admin\gravityops_shell;9 5 if (!defined('ABSPATH')) { 10 6 exit; … … 102 98 { 103 99 $this->assets_helper = new Assets(plugins_url('/', FOLDERS_4_GRAVITY_BASENAME), dirname(__DIR__)); 104 add_filter('gravityops_is_shell_page', [$this, 'filter_is_shell_page'], 10, 2);100 SuiteCore::instance()->shell()->register_shell_page($this->_slug); 105 101 parent::init(); 106 102 $this->register_form_folders_taxonomy(); … … 116 112 } 117 113 /** 118 * Filters the is_shell_page variable to include the form folders page.119 *120 * @param bool $is_shell_page Whether the current page is a shell page.121 * @param string $page The current page slug.122 *123 * @return bool124 */125 public function filter_is_shell_page($is_shell_page, $page)126 {127 if ($page === $this->_slug) {128 return true;129 }130 return $is_shell_page;131 }132 /**133 114 * Initializes the admin functionality of the plugin. 134 115 * … … 143 124 }); 144 125 $this->register_form_folders_taxonomy(); 145 $review_prompter = new ReviewPrompter($this->prefix, $this->_title, 'https://wordpress.org/support/plugin/folders-4-gravity/reviews/#new-post');126 $review_prompter = SuiteCore::instance()->review_prompter($this->prefix, $this->_title, 'https://wordpress.org/support/plugin/folders-4-gravity/reviews/#new-post'); 146 127 $review_prompter->init(); 147 128 $review_prompter->maybe_show_review_request($this->get_usage_count(), 10); 148 $survey_prompter = new SurveyPrompter($this->prefix, $this->_title, $this->_version, 'free');129 $survey_prompter = SuiteCore::instance()->survey_prompter($this->prefix, $this->_title, $this->_version, 'free'); 149 130 $survey_prompter->init(); 150 131 // Register the GravityOps AdminShell page for the free Folders plugin. 151 132 // Tabs: Overview (render), Help (render), Affiliation (external link) 152 gravityops_shell()->register_plugin_page('folders-4-gravity', ['title' => $this->_title, 'menu_title' => $this->_short_title, 'subtitle' => '', 'links' => [], 'tabs' => ['overview' => ['label' => 'Overview', 'type' => 'render', 'callback' => [$this, 'gops_render_overview']], 'help' => ['label' => 'Help', 'type' => 'render', 'callback' => [$this, 'gops_render_help']], 'affiliation' => ['label' => 'Affiliation', 'type' => 'link', 'url' => 'https://brightleafdigital.io/affiliate/']]]);133 SuiteCore::instance()->shell()->register_plugin_page('folders-4-gravity', ['title' => $this->_title, 'menu_title' => $this->_short_title, 'subtitle' => '', 'links' => [], 'tabs' => ['overview' => ['label' => 'Overview', 'type' => 'render', 'callback' => [$this, 'gops_render_overview']], 'help' => ['label' => 'Help', 'type' => 'render', 'callback' => [$this, 'gops_render_help']], 'affiliation' => ['label' => 'Affiliation', 'type' => 'link', 'url' => 'https://brightleafdigital.io/affiliate/']]]); 153 134 } 154 135 /** … … 173 154 public function get_app_menu_icon() 174 155 { 175 return Suite Menu::get_plugin_icon_url('folders-4-gravity') ?: 'dashicons-portfolio';156 return SuiteCore::instance()->suite_menu()->get_plugin_icon_url('folders-4-gravity') ?: 'dashicons-portfolio'; 176 157 } 177 158 /** … … 285 266 public function gops_render_help() 286 267 { 287 AdminShell::render_help_tab(['Learn More' => 'https://brightleafdigital.io/folders-4-gravity/', 'Docs' => 'https://brightleafdigital.io/folders-4-gravity/#docs', 'Community forum' => 'https://brightleafdigital.io/community/', 'Open a support request' => 'https://brightleafdigital.io/support/', 'Join the community' => 'https://brightleafdigital.io/plugintomember']);268 SuiteCore::instance()->shell()->render_help_tab(['Learn More' => 'https://brightleafdigital.io/folders-4-gravity/', 'Docs' => 'https://brightleafdigital.io/folders-4-gravity/#docs', 'Community forum' => 'https://brightleafdigital.io/community/', 'Open a support request' => 'https://brightleafdigital.io/support/', 'Join the community' => 'https://brightleafdigital.io/plugintomember']); 288 269 } 289 270 /** … … 510 491 public function uninstall() 511 492 { 493 parent::uninstall(); 512 494 $forms = GFAPI::get_forms(); 513 495 foreach ($forms as $form) { … … 521 503 } 522 504 } 505 delete_option("{$this->prefix}folder_order"); 506 delete_option("{$this->prefix}review_prompter_usage_count"); 507 delete_option("{$this->prefix}survey_status"); 523 508 } 524 509 /** … … 732 717 <?php 733 718 echo '<div class="wrap gops-admin">'; 734 gravityops_shell()->render_header_only(['slug' => 'folders-4-gravity', 'title' => 'Forms in Folder: ' . $folder->name]);719 SuiteCore::instance()->shell()->render_header_only(['slug' => 'folders-4-gravity', 'title' => 'Forms in Folder: ' . $folder->name]); 735 720 echo '<div class="gops-notices" aria-live="polite"></div>'; 736 721 echo '<section class="gops-content">'; … … 903 888 $folders = $this->get_ordered_folders(); 904 889 echo '<div class="wrap gops-admin">'; 905 gravityops_shell()->render_header_only(['slug' => 'folders-4-gravity', 'title' => 'Form Folders']);890 SuiteCore::instance()->shell()->render_header_only(['slug' => 'folders-4-gravity', 'title' => 'Form Folders']); 906 891 echo '<div class="gops-notices" aria-live="polite"></div>'; 907 892 echo '<section class="gops-content">'; -
folders-4-gravity/tags/1.0.9/includes/class-gravity-ops-views-folders.php
r3444414 r3464338 1 1 <?php 2 2 3 use F4G\GravityOps\Core\SuiteCore\SuiteCore; 3 4 use F4G\GravityOps\Core\Utils\AssetHelper; 4 use F4G\GravityOps\Core\Admin\AdminShell;5 use F4G\GravityOps\Core\Admin\SuiteMenu;6 5 use GV\View; 7 use function F4G\GravityOps\Core\Admin\gravityops_shell;8 6 if (!defined('ABSPATH')) { 9 7 exit; … … 102 100 { 103 101 parent::init(); 104 add_filter('gravityops_is_shell_page', [$this, 'filter_is_shell_page'], 10, 2);102 SuiteCore::instance()->shell()->register_shell_page($this->_slug); 105 103 $this->register_views_folders_taxonomy(); 106 104 $this->assets_helper = new AssetHelper(plugins_url('/', FOLDERS_4_GRAVITY_BASENAME), dirname(__DIR__)); … … 114 112 add_action("wp_ajax_{$this->prefix}save_view_order", [$this, 'handle_save_view_order']); 115 113 add_action("wp_ajax_{$this->prefix}save_views_folder_order", [$this, 'ajax_save_views_folder_order']); 116 }117 /**118 * Filters the is_shell_page variable to include the view folders page.119 *120 * @param bool $is_shell_page Whether the current page is a shell page.121 * @param string $page The current page slug.122 *123 * @return bool124 */125 public function filter_is_shell_page($is_shell_page, $page)126 {127 if ($page === $this->_slug) {128 return true;129 }130 return $is_shell_page;131 114 } 132 115 /** … … 470 453 public function uninstall() 471 454 { 455 parent::uninstall(); 472 456 // Get all views 473 457 $views = get_posts(['post_type' => 'gravityview', 'numberposts' => -1, 'post_status' => 'any']); … … 483 467 } 484 468 } 469 delete_option("{$this->prefix}views_folder_order"); 485 470 } 486 471 /** … … 558 543 <?php 559 544 echo '<div class="wrap gops-admin">'; 560 gravityops_shell()->render_header_only(['slug' => 'folders-4-gravity', 'title' => 'Views in Folder: ' . $folder->name]);545 SuiteCore::instance()->shell()->render_header_only(['slug' => 'folders-4-gravity', 'title' => 'Views in Folder: ' . $folder->name]); 561 546 echo '<div class="gops-notices" aria-live="polite"></div>'; 562 547 echo '<section class="gops-content">'; … … 943 928 <?php 944 929 echo '<div class="wrap gops-admin">'; 945 gravityops_shell()->render_header_only(['slug' => 'folders-4-gravity', 'title' => 'View Folders']);930 SuiteCore::instance()->shell()->render_header_only(['slug' => 'folders-4-gravity', 'title' => 'View Folders']); 946 931 echo '<div class="gops-notices" aria-live="polite"></div>'; 947 932 echo '<section class="gops-content">'; -
folders-4-gravity/tags/1.0.9/readme.txt
r3444414 r3464338 4 4 Requires at least: 6.5 5 5 Tested up to: 6.9 6 Stable tag: 1.0. 86 Stable tag: 1.0.9 7 7 Requires PHP: 8.0 8 8 License: GPLv2 … … 155 155 == Changelog == 156 156 157 = 1.0.9 = 158 - Updated dependencies 159 - Fixed uninstall process to properly clear everything 160 - Updated core GravityOps library to improve the update plugin process among other small fixes 161 157 162 = 1.0.8 = 158 163 - Improved styling and UI to match branding … … 168 173 - Updated plugin menu 169 174 170 = 1.0.4 =171 - Updated plugin name172 - Updated readme173 174 175 175 176 == Upgrade Notice == -
folders-4-gravity/tags/1.0.9/vendor/F4G/autoload.php
r3444414 r3464338 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit 941b013c5c321411e1f82cc27d0865e3::getLoader();22 return ComposerAutoloaderInit7502a0c0e9c4b8dde0abaa515c496c83::getLoader(); -
folders-4-gravity/tags/1.0.9/vendor/F4G/composer/autoload_classmap.php
r3444414 r3464338 8 8 return array( 9 9 'F4G\\Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 10 'F4G\\GravityOps\\Core\\Admin\\AdminShell' => $vendorDir . '/gravityops/core/src/Admin/AdminShell.php', 11 'F4G\\GravityOps\\Core\\Admin\\ReviewPrompter' => $vendorDir . '/gravityops/core/src/Admin/ReviewPrompter.php', 12 'F4G\\GravityOps\\Core\\Admin\\SettingsHeader' => $vendorDir . '/gravityops/core/src/Admin/SettingsHeader.php', 13 'F4G\\GravityOps\\Core\\Admin\\SuiteMenu' => $vendorDir . '/gravityops/core/src/Admin/SuiteMenu.php', 14 'F4G\\GravityOps\\Core\\Admin\\SurveyPrompter' => $vendorDir . '/gravityops/core/src/Admin/SurveyPrompter.php', 15 'F4G\\GravityOps\\Core\\Admin\\TrustedLogin' => $vendorDir . '/gravityops/core/src/Admin/TrustedLogin.php', 16 'F4G\\GravityOps\\Core\\SuiteRegistry' => $vendorDir . '/gravityops/core/src/SuiteRegistry.php', 10 'F4G\\GravityOps\\Core\\SuiteCore\\AdminAssetHelper' => $vendorDir . '/gravityops/core/src/SuiteCore/AdminAssetHelper.php', 11 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\AdminShell' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/AdminShell.php', 12 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\ReviewPrompter' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/ReviewPrompter.php', 13 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\SuiteMenu' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/SuiteMenu.php', 14 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\SurveyPrompter' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/SurveyPrompter.php', 15 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\TrustedLogin' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/TrustedLogin.php', 16 'F4G\\GravityOps\\Core\\SuiteCore\\Config' => $vendorDir . '/gravityops/core/src/SuiteCore/Config.php', 17 'F4G\\GravityOps\\Core\\SuiteCore\\SuiteCatalog' => $vendorDir . '/gravityops/core/src/SuiteCore/SuiteCatalog.php', 18 'F4G\\GravityOps\\Core\\SuiteCore\\SuiteCore' => $vendorDir . '/gravityops/core/src/SuiteCore/SuiteCore.php', 17 19 'F4G\\GravityOps\\Core\\Traits\\SingletonTrait' => $vendorDir . '/gravityops/core/src/Traits/SingletonTrait.php', 18 20 'F4G\\GravityOps\\Core\\Utils\\AssetHelper' => $vendorDir . '/gravityops/core/src/Utils/AssetHelper.php', -
folders-4-gravity/tags/1.0.9/vendor/F4G/composer/autoload_real.php
r3444414 r3464338 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 941b013c5c321411e1f82cc27d0865e35 class ComposerAutoloaderInit7502a0c0e9c4b8dde0abaa515c496c83 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit 941b013c5c321411e1f82cc27d0865e3', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit7502a0c0e9c4b8dde0abaa515c496c83', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \F4G\Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit 941b013c5c321411e1f82cc27d0865e3', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit7502a0c0e9c4b8dde0abaa515c496c83', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\F4G\Composer\Autoload\ComposerStaticInit 941b013c5c321411e1f82cc27d0865e3::getInitializer($loader));32 call_user_func(\F4G\Composer\Autoload\ComposerStaticInit7502a0c0e9c4b8dde0abaa515c496c83::getInitializer($loader)); 33 33 34 34 $loader->setClassMapAuthoritative(true); 35 35 $loader->register(true); 36 36 37 $filesToLoad = \F4G\Composer\Autoload\ComposerStaticInit941b013c5c321411e1f82cc27d0865e3::$files;38 $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {39 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {40 $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;41 42 require $file;43 }44 }, null, null);45 foreach ($filesToLoad as $fileIdentifier => $file) {46 $requireFile($fileIdentifier, $file);47 }48 49 37 return $loader; 50 38 } -
folders-4-gravity/tags/1.0.9/vendor/F4G/composer/autoload_static.php
r3444414 r3464338 5 5 namespace F4G\Composer\Autoload; 6 6 7 class ComposerStaticInit 941b013c5c321411e1f82cc27d0865e37 class ComposerStaticInit7502a0c0e9c4b8dde0abaa515c496c83 8 8 { 9 public static $files = array (10 '2f157b4875352413a310aa7df2168fd0' => __DIR__ . '/..' . '/gravityops/core/src/Admin/functions.php',11 );12 13 9 public static $prefixLengthsPsr4 = array ( 14 10 'F' => … … 32 28 public static $classMap = array ( 33 29 'F4G\\Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 34 'F4G\\GravityOps\\Core\\Admin\\AdminShell' => __DIR__ . '/..' . '/gravityops/core/src/Admin/AdminShell.php', 35 'F4G\\GravityOps\\Core\\Admin\\ReviewPrompter' => __DIR__ . '/..' . '/gravityops/core/src/Admin/ReviewPrompter.php', 36 'F4G\\GravityOps\\Core\\Admin\\SettingsHeader' => __DIR__ . '/..' . '/gravityops/core/src/Admin/SettingsHeader.php', 37 'F4G\\GravityOps\\Core\\Admin\\SuiteMenu' => __DIR__ . '/..' . '/gravityops/core/src/Admin/SuiteMenu.php', 38 'F4G\\GravityOps\\Core\\Admin\\SurveyPrompter' => __DIR__ . '/..' . '/gravityops/core/src/Admin/SurveyPrompter.php', 39 'F4G\\GravityOps\\Core\\Admin\\TrustedLogin' => __DIR__ . '/..' . '/gravityops/core/src/Admin/TrustedLogin.php', 40 'F4G\\GravityOps\\Core\\SuiteRegistry' => __DIR__ . '/..' . '/gravityops/core/src/SuiteRegistry.php', 30 'F4G\\GravityOps\\Core\\SuiteCore\\AdminAssetHelper' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/AdminAssetHelper.php', 31 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\AdminShell' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/AdminShell.php', 32 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\ReviewPrompter' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/ReviewPrompter.php', 33 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\SuiteMenu' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/SuiteMenu.php', 34 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\SurveyPrompter' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/SurveyPrompter.php', 35 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\TrustedLogin' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/TrustedLogin.php', 36 'F4G\\GravityOps\\Core\\SuiteCore\\Config' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Config.php', 37 'F4G\\GravityOps\\Core\\SuiteCore\\SuiteCatalog' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/SuiteCatalog.php', 38 'F4G\\GravityOps\\Core\\SuiteCore\\SuiteCore' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/SuiteCore.php', 41 39 'F4G\\GravityOps\\Core\\Traits\\SingletonTrait' => __DIR__ . '/..' . '/gravityops/core/src/Traits/SingletonTrait.php', 42 40 'F4G\\GravityOps\\Core\\Utils\\AssetHelper' => __DIR__ . '/..' . '/gravityops/core/src/Utils/AssetHelper.php', … … 63 61 { 64 62 return \Closure::bind(function () use ($loader) { 65 $loader->prefixLengthsPsr4 = ComposerStaticInit 941b013c5c321411e1f82cc27d0865e3::$prefixLengthsPsr4;66 $loader->prefixDirsPsr4 = ComposerStaticInit 941b013c5c321411e1f82cc27d0865e3::$prefixDirsPsr4;67 $loader->classMap = ComposerStaticInit 941b013c5c321411e1f82cc27d0865e3::$classMap;63 $loader->prefixLengthsPsr4 = ComposerStaticInit7502a0c0e9c4b8dde0abaa515c496c83::$prefixLengthsPsr4; 64 $loader->prefixDirsPsr4 = ComposerStaticInit7502a0c0e9c4b8dde0abaa515c496c83::$prefixDirsPsr4; 65 $loader->classMap = ComposerStaticInit7502a0c0e9c4b8dde0abaa515c496c83::$classMap; 68 66 69 67 }, null, ClassLoader::class); -
folders-4-gravity/tags/1.0.9/vendor/F4G/composer/installed.json
r3444414 r3464338 3 3 { 4 4 "name": "gravityops/core", 5 "version": " 1.1.0",6 "version_normalized": " 1.1.0.0",5 "version": "2.0.1", 6 "version_normalized": "2.0.1.0", 7 7 "source": { 8 8 "type": "git", 9 "url": "git@github.com: Eitan-brightleaf/gravityops.git",10 "reference": " cee27f55738670dc141b58af37d0feb74d4ce47e"9 "url": "git@github.com:BrightLeaf-Digital/gravityops.git", 10 "reference": "2535a2a105334f0bac61b112d8707ba9bc6e18b2" 11 11 }, 12 12 "dist": { 13 13 "type": "zip", 14 "url": "https://api.github.com/repos/ Eitan-brightleaf/gravityops/zipball/cee27f55738670dc141b58af37d0feb74d4ce47e",15 "reference": " cee27f55738670dc141b58af37d0feb74d4ce47e",14 "url": "https://api.github.com/repos/BrightLeaf-Digital/gravityops/zipball/2535a2a105334f0bac61b112d8707ba9bc6e18b2", 15 "reference": "2535a2a105334f0bac61b112d8707ba9bc6e18b2", 16 16 "shasum": "" 17 17 }, … … 20 20 "trustedlogin/client": "^v1.9" 21 21 }, 22 "time": "2026-0 1-21T19:42:14+00:00",22 "time": "2026-02-18T09:47:24+00:00", 23 23 "type": "library", 24 24 "installation-source": "source", … … 26 26 "psr-4": { 27 27 "F4G\\GravityOps\\Core\\": "src/" 28 }, 29 "files": [ 30 "src/Admin/functions.php" 31 ] 28 } 32 29 }, 33 30 "license": [ -
folders-4-gravity/tags/1.0.9/vendor/F4G/composer/installed.php
r3444414 r3464338 5 5 'pretty_version' => 'dev-main', 6 6 'version' => 'dev-main', 7 'reference' => ' ea1976bf64f83a1677f8a105e53b378a86a790b7',7 'reference' => 'ad4aff1922296c8195cc41f79365ef62c43c3eff', 8 8 'type' => 'library', 9 9 'install_path' => __DIR__ . '/../', … … 17 17 'gravityops/core' => 18 18 array ( 19 'pretty_version' => ' 1.1.0',20 'version' => ' 1.1.0.0',21 'reference' => ' cee27f55738670dc141b58af37d0feb74d4ce47e',19 'pretty_version' => '2.0.1', 20 'version' => '2.0.1.0', 21 'reference' => '2535a2a105334f0bac61b112d8707ba9bc6e18b2', 22 22 'type' => 'library', 23 23 'install_path' => __DIR__ . '/../gravityops/core', -
folders-4-gravity/tags/1.0.9/vendor/F4G/gravityops/core/assets/css/admin.css
r3444414 r3464338 31 31 .gops-tab{padding:6px 14px;border-radius:999px;background:transparent;border:0;text-decoration:none;color:var(--gops-color-muted);font-weight: 500;} 32 32 .gops-tab.is-active{background: var(--gops-color-primary);color:#fff} 33 .gops-tab__badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 6px;border-radius:999px;background:#5F6EEA;color:#fff;font-size:11px;font-weight:700;line-height:1;margin-left:6px;border:0} 34 35 /* Toolbar */ 36 .gops-actions{display:flex;justify-content:flex-end;margin:6px 0 14px} 33 37 34 38 /* Content / cards */ … … 76 80 .gops-link{color:#5F6EEA;text-decoration:none} /* Accent Product Blue */ 77 81 .gops-link:hover{text-decoration:underline; color: #4A57C6;} 82 button.gops-link{background:none;border:0;padding:0;font:inherit;line-height:1.3;cursor:pointer} 83 84 /* Loading state */ 85 .gops-action-button.is-loading{opacity:.7;pointer-events:none} 86 .gops-spinner{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;margin-left:6px;vertical-align:-2px;animation:gops-spin .7s linear infinite} 87 @keyframes gops-spin{to{transform:rotate(360deg)}} 88 89 /* Modal */ 90 .gops-modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;z-index:100000} 91 .gops-modal.is-open{display:flex} 92 .gops-modal__backdrop{position:absolute;inset:0;background:rgba(26,20,41,.6)} 93 .gops-modal__dialog{position:relative;z-index:1;background:#fff;border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.25);width:min(720px,92vw);max-height:80vh;display:flex;flex-direction:column;padding:12px 16px} 94 .gops-modal__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px} 95 .gops-modal__title{margin:0;font-size:18px;color:var(--gops-color-text)} 96 .gops-modal__close{background:none;border:0;font-size:26px;line-height:1;cursor:pointer;color:var(--gops-color-muted);transition:color .15s ease} 97 .gops-modal__close:hover{color:var(--gops-color-primary)} 98 .gops-modal__body{overflow:auto;padding:0 4px} 99 .gops-modal__content{margin:0;color:var(--gops-color-text);font-size:13px;line-height:1.4} 100 .gops-modal__content h3, 101 .gops-modal__content h4 { 102 margin: 1em 0 0.3em; 103 font-size: 15px; 104 color: var(--gops-color-primary); 105 font-weight: 600; 106 } 107 .gops-modal__content h3:first-child, 108 .gops-modal__content h4:first-child { 109 margin-top: 0; 110 } 111 .gops-modal__content ul { 112 margin: 0 0 0.8em 0; 113 padding: 0 0 0 1.4em; 114 list-style-type: disc !important; 115 } 116 .gops-modal__content li { 117 margin-bottom: 0.3em; 118 display: list-item !important; 119 } 120 .gops-modal__content p { 121 margin: 0 0 0.6em; 122 } 123 .gops-modal__footer{margin-top:8px;display:flex;justify-content:flex-end;border-top:1px solid var(--gops-color-border);padding-top:10px} 78 124 79 125 /* Brand primary button styling within our admin */ -
folders-4-gravity/tags/1.0.9/vendor/F4G/gravityops/core/assets/js/admin.js
r3444414 r3464338 5 5 function qsa(s, c) { 6 6 return Array.prototype.slice.call((c || document).querySelectorAll(s)); 7 } 8 function getAdminConfig() { 9 const root = qs('.gops-admin'); 10 const fallback = {}; 11 if (root) { 12 fallback.nonce = root.getAttribute('data-gops-nonce') || ''; 13 fallback.ajaxUrl = root.getAttribute('data-gops-ajax') || ''; 14 } 15 return Object.assign({}, fallback, window.gopsAdmin || {}); 16 } 17 18 function showNotice(type, message) { 19 const wrap = qs('.gops-admin') || document; 20 const header = qs('.gops-header', wrap) || qs('.gops-header'); 21 const box = ensureNoticesContainer( 22 wrap, 23 header || wrap.firstElementChild 24 ); 25 if (!box) { 26 return; 27 } 28 const notice = document.createElement('div'); 29 notice.className = 'notice notice-' + type + ' is-dismissible'; 30 const p = document.createElement('p'); 31 p.textContent = message; 32 notice.appendChild(p); 33 const btn = document.createElement('button'); 34 btn.type = 'button'; 35 btn.className = 'notice-dismiss'; 36 btn.innerHTML = 37 '<span class="screen-reader-text">Dismiss this notice.</span>'; 38 btn.addEventListener('click', function () { 39 notice.remove(); 40 }); 41 notice.appendChild(btn); 42 box.appendChild(notice); 43 } 44 45 function setButtonLoading(btn, isLoading) { 46 if (!btn) { 47 return; 48 } 49 if (isLoading) { 50 if (!btn.dataset.gopsOriginalText) { 51 btn.dataset.gopsOriginalText = btn.textContent.trim(); 52 } 53 btn.classList.add('is-loading'); 54 btn.disabled = true; 55 if (!qs('.gops-spinner', btn)) { 56 const spinner = document.createElement('span'); 57 spinner.className = 'gops-spinner'; 58 btn.appendChild(spinner); 59 } 60 } else { 61 btn.classList.remove('is-loading'); 62 btn.disabled = false; 63 const spinner = qs('.gops-spinner', btn); 64 if (spinner) { 65 spinner.remove(); 66 } 67 } 68 } 69 70 function ajaxRequest(action, data) { 71 const cfg = getAdminConfig(); 72 const url = cfg.ajaxUrl || window.ajaxurl || ''; 73 const payload = Object.assign( 74 { 75 action, 76 nonce: cfg.nonce || '', 77 }, 78 data || {} 79 ); 80 return jQuery.post(url, payload); 81 } 82 83 function replaceTileHtml(slug, html) { 84 if (!slug || !html) { 85 return; 86 } 87 const tile = qs('.gops-tile[data-gops-tile="' + slug + '"]'); 88 if (tile) { 89 tile.outerHTML = html; 90 } 91 } 92 93 function updateUpdatesCount(count, updatableCount) { 94 const tabs = qs('.gops-tabs'); 95 if (tabs) { 96 let updatesTab = qs('[data-gops-tab="updates"]', tabs); 97 if (count > 0) { 98 if (!updatesTab) { 99 const cfg = getAdminConfig(); 100 const href = cfg.updatesUrl || ''; 101 if (href) { 102 updatesTab = document.createElement('a'); 103 updatesTab.className = 'gops-tab'; 104 updatesTab.setAttribute('data-gops-tab', 'updates'); 105 updatesTab.href = href; 106 updatesTab.textContent = 'Updates'; 107 if ( 108 new URLSearchParams(window.location.search).get( 109 'gops_filter' 110 ) === 'updates' 111 ) { 112 updatesTab.classList.add('is-active'); 113 } 114 const badge = document.createElement('span'); 115 badge.className = 'gops-tab__badge'; 116 badge.setAttribute('data-gops-updates-count', count); 117 badge.textContent = String(count); 118 updatesTab.appendChild(badge); 119 const allTab = qs('[data-gops-tab="all"]', tabs); 120 if (allTab && allTab.nextSibling) { 121 tabs.insertBefore(updatesTab, allTab.nextSibling); 122 } else { 123 tabs.appendChild(updatesTab); 124 } 125 } 126 } else { 127 let badge = qs('.gops-tab__badge', updatesTab); 128 if (!badge) { 129 badge = document.createElement('span'); 130 badge.className = 'gops-tab__badge'; 131 updatesTab.appendChild(badge); 132 } 133 badge.setAttribute('data-gops-updates-count', count); 134 badge.textContent = String(count); 135 } 136 } else if (updatesTab) { 137 updatesTab.remove(); 138 } 139 } 140 141 const actionsWrap = qs('.gops-actions'); 142 if (actionsWrap) { 143 const updateAllBtn = qs('.gops-update-all', actionsWrap); 144 const effectiveUpdatableCount = 145 typeof updatableCount !== 'undefined' ? updatableCount : count; 146 if (effectiveUpdatableCount > 0) { 147 actionsWrap.style.display = ''; 148 if (updateAllBtn) { 149 updateAllBtn.textContent = 150 'Update All (' + effectiveUpdatableCount + ')'; 151 } 152 } else { 153 actionsWrap.style.display = 'none'; 154 } 155 } 156 157 // Update WordPress sidebar menu badge 158 const menuBadge = document.querySelector( 159 '#toplevel_page_gravity_ops .update-plugins' 160 ); 161 if (menuBadge) { 162 if (count > 0) { 163 menuBadge.className = 'update-plugins count-' + count; 164 const inner = menuBadge.querySelector('.plugin-count'); 165 if (inner) { 166 inner.textContent = String(count); 167 } 168 } else { 169 menuBadge.remove(); 170 } 171 } 172 } 173 174 function openChangelogModal(data) { 175 const modal = qs('#gops-changelog-modal'); 176 if (!modal) { 177 return; 178 } 179 const title = qs('.gops-modal__title', modal); 180 const content = qs('.gops-modal__content', modal); 181 const link = qs('.gops-modal__full-link', modal); 182 if (title) { 183 title.textContent = data.title || 'Changelog'; 184 } 185 if (content) { 186 content.innerHTML = data.changelog || 'Changelog not available.'; 187 } 188 if (link) { 189 if (data.full_url) { 190 link.href = data.full_url; 191 link.style.display = ''; 192 } else { 193 link.style.display = 'none'; 194 } 195 } 196 modal.style.display = ''; 197 modal.classList.add('is-open'); 198 modal.setAttribute('aria-hidden', 'false'); 199 } 200 201 function closeChangelogModal() { 202 const modal = qs('#gops-changelog-modal'); 203 if (!modal) { 204 return; 205 } 206 modal.classList.remove('is-open'); 207 modal.style.display = 'none'; 208 modal.setAttribute('aria-hidden', 'true'); 7 209 } 8 210 … … 156 358 if (link && link.href) { 157 359 window.location.href = link.href; 360 } 361 }); 362 363 // Action buttons (update/activate/deactivate/changelog) 364 document.addEventListener('click', function (e) { 365 const btn = e.target.closest('button[data-gops-action]'); 366 if (!btn) { 367 return; 368 } 369 370 const action = btn.getAttribute('data-gops-action') || ''; 371 if (!action) { 372 return; 373 } 374 375 e.preventDefault(); 376 e.stopPropagation(); 377 378 const slug = btn.getAttribute('data-gops-slug') || ''; 379 const pluginFile = btn.getAttribute('data-gops-plugin-file') || ''; 380 381 if (action === 'changelog') { 382 if (!slug) { 383 showNotice('error', 'Missing plugin data.'); 384 return; 385 } 386 setButtonLoading(btn, true); 387 ajaxRequest('gops_get_changelog', { 388 slug, 389 plugin: pluginFile, 390 }) 391 .done(function (resp) { 392 if (resp && resp.success) { 393 openChangelogModal(resp.data || {}); 394 } else { 395 const msg = 396 (resp && resp.data && resp.data.message) || 397 'Unable to load changelog.'; 398 showNotice('error', msg); 399 } 400 }) 401 .fail(function () { 402 showNotice('error', 'Unable to load changelog.'); 403 }) 404 .always(function () { 405 setButtonLoading(btn, false); 406 }); 407 return; 408 } 409 410 if (btn.classList.contains('is-loading')) { 411 return; 412 } 413 414 let request = null; 415 if (action === 'update') { 416 request = ajaxRequest('gops_update_plugin', { 417 slug, 418 plugin: pluginFile, 419 }); 420 } else if (action === 'update-all') { 421 request = ajaxRequest('gops_update_all', {}); 422 } else if (action === 'activate' || action === 'deactivate') { 423 request = ajaxRequest('gops_toggle_plugin', { 424 slug, 425 plugin: pluginFile, 426 toggle: action, 427 }); 428 } 429 430 if (!request) { 431 return; 432 } 433 434 setButtonLoading(btn, true); 435 436 request 437 .done(function (resp) { 438 if (resp && resp.success) { 439 const data = resp.data || {}; 440 if (data.tile_html && data.slug) { 441 replaceTileHtml(data.slug, data.tile_html); 442 } 443 if (data.tiles) { 444 Object.keys(data.tiles).forEach(function (tileSlug) { 445 replaceTileHtml(tileSlug, data.tiles[tileSlug]); 446 }); 447 } 448 if (typeof data.updates_count === 'number') { 449 updateUpdatesCount( 450 data.updates_count, 451 data.updatable_count 452 ); 453 } 454 if (data.message) { 455 showNotice( 456 data.errors && data.errors.length 457 ? 'warning' 458 : 'success', 459 data.message 460 ); 461 } 462 463 // Refresh all updates after a successful action to maintain consistency. 464 if ( 465 action === 'update' || 466 action === 'update-all' || 467 action === 'activate' || 468 action === 'deactivate' 469 ) { 470 triggerBackgroundRefresh(); 471 } 472 if (data.errors && data.errors.length) { 473 data.errors.forEach(function (err) { 474 showNotice('error', err); 475 }); 476 } 477 } else { 478 const msg = 479 (resp && resp.data && resp.data.message) || 480 'Action failed.'; 481 showNotice('error', msg); 482 } 483 }) 484 .fail(function (resp) { 485 let msg = 'Action failed.'; 486 if (resp && resp.responseJSON && resp.responseJSON.data) { 487 msg = resp.responseJSON.data.message || msg; 488 } else if (resp && resp.responseText) { 489 msg = 490 resp.responseText.trim() === '-1' 491 ? 'Security check failed. Refresh and try again.' 492 : resp.responseText; 493 } 494 showNotice('error', msg); 495 }) 496 .always(function () { 497 setButtonLoading(btn, false); 498 }); 499 }); 500 501 // Modal close actions 502 document.addEventListener('click', function (e) { 503 if (e.target.closest('[data-gops-modal-close]')) { 504 e.preventDefault(); 505 closeChangelogModal(); 506 } 507 }); 508 document.addEventListener('keydown', function (e) { 509 if (e.key === 'Escape') { 510 closeChangelogModal(); 158 511 } 159 512 }); … … 306 659 moveNotices(); 307 660 applyFreePluginExternalTabTargets(); 661 triggerBackgroundRefresh(); 308 662 }); 309 663 } else { … … 311 665 moveNotices(); 312 666 applyFreePluginExternalTabTargets(); 667 triggerBackgroundRefresh(); 668 } 669 670 function triggerBackgroundRefresh() { 671 const root = qs('.gops-admin'); 672 if (root && root.dataset.gopsRefresh === '1') { 673 const loader = qs('.gops-header-loader', root); 674 if (loader) { 675 loader.style.display = 'block'; 676 } 677 const tiles = qsa('.gops-tile'); 678 const items = tiles.map(function (tile) { 679 const slug = tile.dataset.gopsTile; 680 const versionEl = qs('.gops-tile__version', tile); 681 const version = versionEl 682 ? versionEl.textContent.replace('v', '').trim() 683 : '0'; 684 return { slug, version }; 685 }); 686 687 ajaxRequest('gops_check_suite_updates', { 688 items: JSON.stringify(items), 689 }) 690 .done(function (resp) { 691 if (resp && resp.success && resp.data) { 692 const data = resp.data; 693 if (data.tiles) { 694 Object.keys(data.tiles).forEach(function (slug) { 695 replaceTileHtml(slug, data.tiles[slug]); 696 }); 697 } 698 if (typeof data.updates_count === 'number') { 699 updateUpdatesCount( 700 data.updates_count, 701 data.updatable_count 702 ); 703 } 704 } 705 }) 706 .always(function () { 707 if (loader) { 708 loader.style.display = 'none'; 709 } 710 }); 711 } 313 712 } 314 713 function applyFreePluginExternalTabTargets() { -
folders-4-gravity/tags/1.0.9/vendor/F4G/trustedlogin/client/src/Config.php
r3444414 r3464338 179 179 ), 180 180 true 181 ) && ! defined( ' TL_DOING_TESTS' ) ) {181 ) && ! defined( 'F4G_TL_DOING_TESTS' ) ) { 182 182 throw new Exception( 'Developer: make sure to change the namespace for the TrustedLogin class. See https://trustedlogin.com/configuration/ for more information.', 501 ); 183 183 } … … 190 190 191 191 if ( isset( $this->settings['vendor']['website'] ) ) { 192 if ( 'https://www.example.com' === $this->settings['vendor']['website'] && ! defined( ' TL_DOING_TESTS' ) ) {192 if ( 'https://www.example.com' === $this->settings['vendor']['website'] && ! defined( 'F4G_TL_DOING_TESTS' ) ) { 193 193 $errors[] = new WP_Error( 'missing_configuration', 'You need to configure the "website" URL to point to the URL where the Vendor plugin is installed.' ); 194 194 } -
folders-4-gravity/tags/1.0.9/vendor/F4G/trustedlogin/client/src/Utils.php
r3444414 r3464338 196 196 $ip = sanitize_text_field( $ip ); 197 197 198 if ( ! defined( ' TL_DOING_TESTS' ) ) {198 if ( ! defined( 'F4G_TL_DOING_TESTS' ) ) { 199 199 $ip = filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE | FILTER_FLAG_NO_PRIV_RANGE ); 200 200 } -
folders-4-gravity/tags/1.0.9/vendor/F4G/trustedlogin/client/tests/bootstrap.php
r3444414 r3464338 11 11 require_once dirname( __DIR__ ) . '/vendor/autoload.php'; 12 12 13 if ( ! defined( ' TL_DOING_TESTS' ) ) {14 define( ' TL_DOING_TESTS', true );13 if ( ! defined( 'F4G_TL_DOING_TESTS' ) ) { 14 define( 'F4G_TL_DOING_TESTS', true ); 15 15 } 16 16 -
folders-4-gravity/tags/1.0.9/vendor/autoload.php
r3444414 r3464338 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit 1458c8d8d2fb085311df4cc2fd82d829::getLoader();22 return ComposerAutoloaderInitab67d0f9d0f6c7e2481d68596d118001::getLoader(); -
folders-4-gravity/tags/1.0.9/vendor/composer/autoload_aliases.php
r3444414 r3464338 5 5 namespace { 6 6 7 }8 namespace GravityOps\Core\Admin {9 if(!function_exists('\\GravityOps\\Core\\Admin\\gravityops_shell')){10 function gravityops_shell(...$args) {11 return \F4G\GravityOps\Core\Admin\gravityops_shell(...func_get_args());12 }13 }14 7 } 15 8 namespace TrustedLogin { … … 42 35 */ 43 36 private array $autoloadAliases = array ( 44 'GravityOps\\Core\\ Admin\\AdminShell' =>37 'GravityOps\\Core\\SuiteCore\\Admin\\AdminShell' => 45 38 array ( 46 39 'type' => 'class', 47 40 'classname' => 'AdminShell', 48 41 'isabstract' => false, 49 'namespace' => 'GravityOps\\Core\\ Admin',50 'extends' => 'F4G\\GravityOps\\Core\\ Admin\\AdminShell',51 'implements' => 52 array ( 53 ), 54 ), 55 'GravityOps\\Core\\ Admin\\ReviewPrompter' =>42 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 43 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\AdminShell', 44 'implements' => 45 array ( 46 ), 47 ), 48 'GravityOps\\Core\\SuiteCore\\Admin\\ReviewPrompter' => 56 49 array ( 57 50 'type' => 'class', 58 51 'classname' => 'ReviewPrompter', 59 52 'isabstract' => false, 60 'namespace' => 'GravityOps\\Core\\Admin', 61 'extends' => 'F4G\\GravityOps\\Core\\Admin\\ReviewPrompter', 62 'implements' => 63 array ( 64 ), 65 ), 66 'GravityOps\\Core\\Admin\\SettingsHeader' => 67 array ( 68 'type' => 'class', 69 'classname' => 'SettingsHeader', 70 'isabstract' => false, 71 'namespace' => 'GravityOps\\Core\\Admin', 72 'extends' => 'F4G\\GravityOps\\Core\\Admin\\SettingsHeader', 73 'implements' => 74 array ( 75 ), 76 ), 77 'GravityOps\\Core\\Admin\\SuiteMenu' => 53 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 54 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\ReviewPrompter', 55 'implements' => 56 array ( 57 ), 58 ), 59 'GravityOps\\Core\\SuiteCore\\Admin\\SuiteMenu' => 78 60 array ( 79 61 'type' => 'class', 80 62 'classname' => 'SuiteMenu', 81 63 'isabstract' => false, 82 'namespace' => 'GravityOps\\Core\\ Admin',83 'extends' => 'F4G\\GravityOps\\Core\\ Admin\\SuiteMenu',84 'implements' => 85 array ( 86 ), 87 ), 88 'GravityOps\\Core\\ Admin\\SurveyPrompter' =>64 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 65 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\SuiteMenu', 66 'implements' => 67 array ( 68 ), 69 ), 70 'GravityOps\\Core\\SuiteCore\\Admin\\SurveyPrompter' => 89 71 array ( 90 72 'type' => 'class', 91 73 'classname' => 'SurveyPrompter', 92 74 'isabstract' => false, 93 'namespace' => 'GravityOps\\Core\\ Admin',94 'extends' => 'F4G\\GravityOps\\Core\\ Admin\\SurveyPrompter',95 'implements' => 96 array ( 97 ), 98 ), 99 'GravityOps\\Core\\ Admin\\TrustedLogin' =>75 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 76 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\SurveyPrompter', 77 'implements' => 78 array ( 79 ), 80 ), 81 'GravityOps\\Core\\SuiteCore\\Admin\\TrustedLogin' => 100 82 array ( 101 83 'type' => 'class', 102 84 'classname' => 'TrustedLogin', 103 85 'isabstract' => false, 104 'namespace' => 'GravityOps\\Core\\Admin', 105 'extends' => 'F4G\\GravityOps\\Core\\Admin\\TrustedLogin', 106 'implements' => 107 array ( 108 ), 109 ), 110 'GravityOps\\Core\\SuiteRegistry' => 111 array ( 112 'type' => 'class', 113 'classname' => 'SuiteRegistry', 114 'isabstract' => false, 115 'namespace' => 'GravityOps\\Core', 116 'extends' => 'F4G\\GravityOps\\Core\\SuiteRegistry', 86 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 87 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\TrustedLogin', 88 'implements' => 89 array ( 90 ), 91 ), 92 'GravityOps\\Core\\SuiteCore\\AdminAssetHelper' => 93 array ( 94 'type' => 'class', 95 'classname' => 'AdminAssetHelper', 96 'isabstract' => false, 97 'namespace' => 'GravityOps\\Core\\SuiteCore', 98 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\AdminAssetHelper', 99 'implements' => 100 array ( 101 ), 102 ), 103 'GravityOps\\Core\\SuiteCore\\Config' => 104 array ( 105 'type' => 'class', 106 'classname' => 'Config', 107 'isabstract' => false, 108 'namespace' => 'GravityOps\\Core\\SuiteCore', 109 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\Config', 110 'implements' => 111 array ( 112 ), 113 ), 114 'GravityOps\\Core\\SuiteCore\\SuiteCatalog' => 115 array ( 116 'type' => 'class', 117 'classname' => 'SuiteCatalog', 118 'isabstract' => false, 119 'namespace' => 'GravityOps\\Core\\SuiteCore', 120 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\SuiteCatalog', 121 'implements' => 122 array ( 123 ), 124 ), 125 'GravityOps\\Core\\SuiteCore\\SuiteCore' => 126 array ( 127 'type' => 'class', 128 'classname' => 'SuiteCore', 129 'isabstract' => false, 130 'namespace' => 'GravityOps\\Core\\SuiteCore', 131 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\SuiteCore', 117 132 'implements' => 118 133 array ( -
folders-4-gravity/tags/1.0.9/vendor/composer/autoload_real.php
r3444414 r3464338 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 1458c8d8d2fb085311df4cc2fd82d8295 class ComposerAutoloaderInitab67d0f9d0f6c7e2481d68596d118001 6 6 { 7 7 private static $loader; … … 23 23 } 24 24 25 spl_autoload_register(array('ComposerAutoloaderInit 1458c8d8d2fb085311df4cc2fd82d829', 'loadClassLoader'), true, true);25 spl_autoload_register(array('ComposerAutoloaderInitab67d0f9d0f6c7e2481d68596d118001', 'loadClassLoader'), true, true); 26 26 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 27 spl_autoload_unregister(array('ComposerAutoloaderInit 1458c8d8d2fb085311df4cc2fd82d829', 'loadClassLoader'));27 spl_autoload_unregister(array('ComposerAutoloaderInitab67d0f9d0f6c7e2481d68596d118001', 'loadClassLoader')); 28 28 29 29 require __DIR__ . '/autoload_static.php'; 30 call_user_func(\Composer\Autoload\ComposerStaticInit 1458c8d8d2fb085311df4cc2fd82d829::getInitializer($loader));30 call_user_func(\Composer\Autoload\ComposerStaticInitab67d0f9d0f6c7e2481d68596d118001::getInitializer($loader)); 31 31 32 32 $loader->register(true); -
folders-4-gravity/tags/1.0.9/vendor/composer/autoload_static.php
r3444414 r3464338 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit 1458c8d8d2fb085311df4cc2fd82d8297 class ComposerStaticInitab67d0f9d0f6c7e2481d68596d118001 8 8 { 9 9 public static $classMap = array ( … … 14 14 { 15 15 return \Closure::bind(function () use ($loader) { 16 $loader->classMap = ComposerStaticInit 1458c8d8d2fb085311df4cc2fd82d829::$classMap;16 $loader->classMap = ComposerStaticInitab67d0f9d0f6c7e2481d68596d118001::$classMap; 17 17 18 18 }, null, ClassLoader::class); -
folders-4-gravity/tags/1.0.9/vendor/composer/installed.json
r3444414 r3464338 3 3 { 4 4 "name": "gravityops/core", 5 "version": " 1.1.0",6 "version_normalized": " 1.1.0.0",5 "version": "2.0.1", 6 "version_normalized": "2.0.1.0", 7 7 "source": { 8 8 "type": "git", 9 "url": "git@github.com: Eitan-brightleaf/gravityops.git",10 "reference": " cee27f55738670dc141b58af37d0feb74d4ce47e"9 "url": "git@github.com:BrightLeaf-Digital/gravityops.git", 10 "reference": "2535a2a105334f0bac61b112d8707ba9bc6e18b2" 11 11 }, 12 12 "dist": { 13 13 "type": "zip", 14 "url": "https://api.github.com/repos/ Eitan-brightleaf/gravityops/zipball/cee27f55738670dc141b58af37d0feb74d4ce47e",15 "reference": " cee27f55738670dc141b58af37d0feb74d4ce47e",14 "url": "https://api.github.com/repos/BrightLeaf-Digital/gravityops/zipball/2535a2a105334f0bac61b112d8707ba9bc6e18b2", 15 "reference": "2535a2a105334f0bac61b112d8707ba9bc6e18b2", 16 16 "shasum": "" 17 17 }, … … 20 20 "trustedlogin/client": "^v1.9" 21 21 }, 22 "time": "2026-0 1-21T19:42:14+00:00",22 "time": "2026-02-18T09:47:24+00:00", 23 23 "type": "library", 24 24 "installation-source": "source", -
folders-4-gravity/tags/1.0.9/vendor/composer/installed.php
r3444414 r3464338 4 4 'pretty_version' => 'dev-main', 5 5 'version' => 'dev-main', 6 'reference' => ' ea1976bf64f83a1677f8a105e53b378a86a790b7',6 'reference' => 'ad4aff1922296c8195cc41f79365ef62c43c3eff', 7 7 'type' => 'library', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 'gravityops/core' => array( 14 'pretty_version' => ' 1.1.0',15 'version' => ' 1.1.0.0',16 'reference' => ' cee27f55738670dc141b58af37d0feb74d4ce47e',14 'pretty_version' => '2.0.1', 15 'version' => '2.0.1.0', 16 'reference' => '2535a2a105334f0bac61b112d8707ba9bc6e18b2', 17 17 'type' => 'library', 18 18 'install_path' => __DIR__ . '/../gravityops/core', … … 23 23 'pretty_version' => 'dev-main', 24 24 'version' => 'dev-main', 25 'reference' => ' ea1976bf64f83a1677f8a105e53b378a86a790b7',25 'reference' => 'ad4aff1922296c8195cc41f79365ef62c43c3eff', 26 26 'type' => 'library', 27 27 'install_path' => __DIR__ . '/../../', -
folders-4-gravity/trunk/assets/js/Sortable.min.js
r3319442 r3464338 1 /*! Sortable 1.15. 6- MIT | git://github.com/SortableJS/Sortable.git */2 !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Sortable=e()}(this,function(){"use strict";function e(e,t){var n,o=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,n)),o}function I(o){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?e(Object(i),!0).forEach(function(t){var e,n;e=o,t=i[n=t],n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(i)):e(Object(i)).forEach(function(t){Object.defineProperty(o,t,Object.getOwnPropertyDescriptor(i,t))})}return o}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)}function a(){return(a=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n,o=arguments[e];for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(t[n]=o[n])}return t}).apply(this,arguments)}function i(t,e){if(null==t)return{};var n,o=function(t,e){if(null==t)return{};for(var n,o={},i=Object.keys(t),r=0;r<i.length;r++)n=i[r],0<=e.indexOf(n)||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols)for(var i=Object.getOwnPropertySymbols(t),r=0;r<i.length;r++)n=i[r],0<=e.indexOf(n)||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n]);return o}function r(t){return function(t){if(Array.isArray(t))return l(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return l(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Map"===(n="Object"===n&&t.constructor?t.constructor.name:n)||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(t,e):void 0}}(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 l(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function t(t){if("undefined"!=typeof window&&window.navigator)return!!navigator.userAgent.match(t)}var y=t(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),w=t(/Edge/i),s=t(/firefox/i),u=t(/safari/i)&&!t(/chrome/i)&&!t(/android/i),c=t(/iP(ad|od|hone)/i),n=t(/chrome/i)&&t(/android/i),d={capture:!1,passive:!1};function h(t,e,n){t.addEventListener(e,n,!y&&d)}function p(t,e,n){t.removeEventListener(e,n,!y&&d)}function f(t,e){if(e&&(">"===e[0]&&(e=e.substring(1)),t))try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return}}function g(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function P(t,e,n,o){if(t){n=n||document;do{if(null!=e&&(">"!==e[0]||t.parentNode===n)&&f(t,e)||o&&t===n)return t}while(t!==n&&(t=g(t)))}return null}var m,v=/\s+/g;function k(t,e,n){var o;t&&e&&(t.classList?t.classList[n?"add":"remove"](e):(o=(" "+t.className+" ").replace(v," ").replace(" "+e+" "," "),t.className=(o+(n?" "+e:"")).replace(v," ")))}function R(t,e,n){var o=t&&t.style;if(o){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];o[e=!(e in o||-1!==e.indexOf("webkit"))?"-webkit-"+e:e]=n+("string"==typeof n?"":"px")}}function b(t,e){var n="";if("string"==typeof t)n=t;else do{var o=R(t,"transform")}while(o&&"none"!==o&&(n=o+" "+n),!e&&(t=t.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function D(t,e,n){if(t){var o=t.getElementsByTagName(e),i=0,r=o.length;if(n)for(;i<r;i++)n(o[i],i);return o}return[]}function O(){var t=document.scrollingElement;return t||document.documentElement}function X(t,e,n,o,i){if(t.getBoundingClientRect||t===window){var r,a,l,s,c,u,d=t!==window&&t.parentNode&&t!==O()?(a=(r=t.getBoundingClientRect()).top,l=r.left,s=r.bottom,c=r.right,u=r.height,r.width):(l=a=0,s=window.innerHeight,c=window.innerWidth,u=window.innerHeight,window.innerWidth);if((e||n)&&t!==window&&(i=i||t.parentNode,!y))do{if(i&&i.getBoundingClientRect&&("none"!==R(i,"transform")||n&&"static"!==R(i,"position"))){var h=i.getBoundingClientRect();a-=h.top+parseInt(R(i,"border-top-width")),l-=h.left+parseInt(R(i,"border-left-width")),s=a+r.height,c=l+r.width;break}}while(i=i.parentNode);return o&&t!==window&&(o=(e=b(i||t))&&e.a,t=e&&e.d,e&&(s=(a/=t)+(u/=t),c=(l/=o)+(d/=o))),{top:a,left:l,bottom:s,right:c,width:d,height:u}}}function Y(t,e,n){for(var o=M(t,!0),i=X(t)[e];o;){var r=X(o)[n];if(!("top"===n||"left"===n?r<=i:i<=r))return o;if(o===O())break;o=M(o,!1)}return!1}function B(t,e,n,o){for(var i=0,r=0,a=t.children;r<a.length;){if("none"!==a[r].style.display&&a[r]!==jt.ghost&&(o||a[r]!==jt.dragged)&&P(a[r],n.draggable,t,!1)){if(i===e)return a[r];i++}r++}return null}function F(t,e){for(var n=t.lastElementChild;n&&(n===jt.ghost||"none"===R(n,"display")||e&&!f(n,e));)n=n.previousElementSibling;return n||null}function j(t,e){var n=0;if(!t||!t.parentNode)return-1;for(;t=t.previousElementSibling;)"TEMPLATE"===t.nodeName.toUpperCase()||t===jt.clone||e&&!f(t,e)||n++;return n}function E(t){var e=0,n=0,o=O();if(t)do{var i=b(t),r=i.a,i=i.d}while(e+=t.scrollLeft*r,n+=t.scrollTop*i,t!==o&&(t=t.parentNode));return[e,n]}function M(t,e){if(!t||!t.getBoundingClientRect)return O();var n=t,o=!1;do{if(n.clientWidth<n.scrollWidth||n.clientHeight<n.scrollHeight){var i=R(n);if(n.clientWidth<n.scrollWidth&&("auto"==i.overflowX||"scroll"==i.overflowX)||n.clientHeight<n.scrollHeight&&("auto"==i.overflowY||"scroll"==i.overflowY)){if(!n.getBoundingClientRect||n===document.body)return O();if(o||e)return n;o=!0}}}while(n=n.parentNode);return O()}function S(t,e){return Math.round(t.top)===Math.round(e.top)&&Math.round(t.left)===Math.round(e.left)&&Math.round(t.height)===Math.round(e.height)&&Math.round(t.width)===Math.round(e.width)}function _(e,n){return function(){var t;m||(1===(t=arguments).length?e.call(this,t[0]):e.apply(this,t),m=setTimeout(function(){m=void 0},n))}}function H(t,e,n){t.scrollLeft+=e,t.scrollTop+=n}function C(t){var e=window.Polymer,n=window.jQuery||window.Zepto;return e&&e.dom?e.dom(t).cloneNode(!0):n?n(t).clone(!0)[0]:t.cloneNode(!0)}function T(t,e){R(t,"position","absolute"),R(t,"top",e.top),R(t,"left",e.left),R(t,"width",e.width),R(t,"height",e.height)}function x(t){R(t,"position",""),R(t,"top",""),R(t,"left",""),R(t,"width",""),R(t,"height","")}function L(n,o,i){var r={};return Array.from(n.children).forEach(function(t){var e;P(t,o.draggable,n,!1)&&!t.animated&&t!==i&&(e=X(t),r.left=Math.min(null!==(t=r.left)&&void 0!==t?t:1/0,e.left),r.top=Math.min(null!==(t=r.top)&&void 0!==t?t:1/0,e.top),r.right=Math.max(null!==(t=r.right)&&void 0!==t?t:-1/0,e.right),r.bottom=Math.max(null!==(t=r.bottom)&&void 0!==t?t:-1/0,e.bottom))}),r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}var K="Sortable"+(new Date).getTime();function A(){var e,o=[];return{captureAnimationState:function(){o=[],this.options.animation&&[].slice.call(this.el.children).forEach(function(t){var e,n;"none"!==R(t,"display")&&t!==jt.ghost&&(o.push({target:t,rect:X(t)}),e=I({},o[o.length-1].rect),!t.thisAnimationDuration||(n=b(t,!0))&&(e.top-=n.f,e.left-=n.e),t.fromRect=e)})},addAnimationState:function(t){o.push(t)},removeAnimationState:function(t){o.splice(function(t,e){for(var n in t)if(t.hasOwnProperty(n))for(var o in e)if(e.hasOwnProperty(o)&&e[o]===t[n][o])return Number(n);return-1}(o,{target:t}),1)},animateAll:function(t){var c=this;if(!this.options.animation)return clearTimeout(e),void("function"==typeof t&&t());var u=!1,d=0;o.forEach(function(t){var e=0,n=t.target,o=n.fromRect,i=X(n),r=n.prevFromRect,a=n.prevToRect,l=t.rect,s=b(n,!0);s&&(i.top-=s.f,i.left-=s.e),n.toRect=i,n.thisAnimationDuration&&S(r,i)&&!S(o,i)&&(l.top-i.top)/(l.left-i.left)==(o.top-i.top)/(o.left-i.left)&&(t=l,s=r,r=a,a=c.options,e=Math.sqrt(Math.pow(s.top-t.top,2)+Math.pow(s.left-t.left,2))/Math.sqrt(Math.pow(s.top-r.top,2)+Math.pow(s.left-r.left,2))*a.animation),S(i,o)||(n.prevFromRect=o,n.prevToRect=i,e=e||c.options.animation,c.animate(n,l,i,e)),e&&(u=!0,d=Math.max(d,e),clearTimeout(n.animationResetTimer),n.animationResetTimer=setTimeout(function(){n.animationTime=0,n.prevFromRect=null,n.fromRect=null,n.prevToRect=null,n.thisAnimationDuration=null},e),n.thisAnimationDuration=e)}),clearTimeout(e),u?e=setTimeout(function(){"function"==typeof t&&t()},d):"function"==typeof t&&t(),o=[]},animate:function(t,e,n,o){var i,r;o&&(R(t,"transition",""),R(t,"transform",""),i=(r=b(this.el))&&r.a,r=r&&r.d,i=(e.left-n.left)/(i||1),r=(e.top-n.top)/(r||1),t.animatingX=!!i,t.animatingY=!!r,R(t,"transform","translate3d("+i+"px,"+r+"px,0)"),this.forRepaintDummy=t.offsetWidth,R(t,"transition","transform "+o+"ms"+(this.options.easing?" "+this.options.easing:"")),R(t,"transform","translate3d(0,0,0)"),"number"==typeof t.animated&&clearTimeout(t.animated),t.animated=setTimeout(function(){R(t,"transition",""),R(t,"transform",""),t.animated=!1,t.animatingX=!1,t.animatingY=!1},o))}}}var N=[],W={initializeByDefault:!0},z={mount:function(e){for(var t in W)!W.hasOwnProperty(t)||t in e||(e[t]=W[t]);N.forEach(function(t){if(t.pluginName===e.pluginName)throw"Sortable: Cannot mount plugin ".concat(e.pluginName," more than once")}),N.push(e)},pluginEvent:function(e,n,o){var t=this;this.eventCanceled=!1,o.cancel=function(){t.eventCanceled=!0};var i=e+"Global";N.forEach(function(t){n[t.pluginName]&&(n[t.pluginName][i]&&n[t.pluginName][i](I({sortable:n},o)),n.options[t.pluginName]&&n[t.pluginName][e]&&n[t.pluginName][e](I({sortable:n},o)))})},initializePlugins:function(n,o,i,t){for(var e in N.forEach(function(t){var e=t.pluginName;(n.options[e]||t.initializeByDefault)&&((t=new t(n,o,n.options)).sortable=n,t.options=n.options,n[e]=t,a(i,t.defaults))}),n.options){var r;n.options.hasOwnProperty(e)&&(void 0!==(r=this.modifyOption(n,e,n.options[e]))&&(n.options[e]=r))}},getEventProperties:function(e,n){var o={};return N.forEach(function(t){"function"==typeof t.eventProperties&&a(o,t.eventProperties.call(n[t.pluginName],e))}),o},modifyOption:function(e,n,o){var i;return N.forEach(function(t){e[t.pluginName]&&t.optionListeners&&"function"==typeof t.optionListeners[n]&&(i=t.optionListeners[n].call(e[t.pluginName],o))}),i}};function G(t){var e=t.sortable,n=t.rootEl,o=t.name,i=t.targetEl,r=t.cloneEl,a=t.toEl,l=t.fromEl,s=t.oldIndex,c=t.newIndex,u=t.oldDraggableIndex,d=t.newDraggableIndex,h=t.originalEvent,p=t.putSortable,f=t.extraEventProperties;if(e=e||n&&n[K]){var g,m=e.options,t="on"+o.charAt(0).toUpperCase()+o.substr(1);!window.CustomEvent||y||w?(g=document.createEvent("Event")).initEvent(o,!0,!0):g=new CustomEvent(o,{bubbles:!0,cancelable:!0}),g.to=a||n,g.from=l||n,g.item=i||n,g.clone=r,g.oldIndex=s,g.newIndex=c,g.oldDraggableIndex=u,g.newDraggableIndex=d,g.originalEvent=h,g.pullMode=p?p.lastPutMode:void 0;var v,b=I(I({},f),z.getEventProperties(o,e));for(v in b)g[v]=b[v];n&&n.dispatchEvent(g),m[t]&&m[t].call(e,g)}}function U(t,e){var n=(o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{}).evt,o=i(o,q);z.pluginEvent.bind(jt)(t,e,I({dragEl:Z,parentEl:$,ghostEl:Q,rootEl:J,nextEl:tt,lastDownEl:et,cloneEl:nt,cloneHidden:ot,dragStarted:mt,putSortable:ct,activeSortable:jt.active,originalEvent:n,oldIndex:it,oldDraggableIndex:at,newIndex:rt,newDraggableIndex:lt,hideGhostForTarget:Xt,unhideGhostForTarget:Yt,cloneNowHidden:function(){ot=!0},cloneNowShown:function(){ot=!1},dispatchSortableEvent:function(t){V({sortable:e,name:t,originalEvent:n})}},o))}var q=["evt"];function V(t){G(I({putSortable:ct,cloneEl:nt,targetEl:Z,rootEl:J,oldIndex:it,oldDraggableIndex:at,newIndex:rt,newDraggableIndex:lt},t))}var Z,$,Q,J,tt,et,nt,ot,it,rt,at,lt,st,ct,ut,dt,ht,pt,ft,gt,mt,vt,bt,yt,wt,Dt=!1,Et=!1,St=[],_t=!1,Ct=!1,Tt=[],xt=!1,Ot=[],Mt="undefined"!=typeof document,At=c,Nt=w||y?"cssFloat":"float",It=Mt&&!n&&!c&&"draggable"in document.createElement("div"),Pt=function(){if(Mt){if(y)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents}}(),kt=function(t,e){var n=R(t),o=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),i=B(t,0,e),r=B(t,1,e),a=i&&R(i),l=r&&R(r),s=a&&parseInt(a.marginLeft)+parseInt(a.marginRight)+X(i).width,t=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+X(r).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(i&&a.float&&"none"!==a.float){e="left"===a.float?"left":"right";return!r||"both"!==l.clear&&l.clear!==e?"horizontal":"vertical"}return i&&("block"===a.display||"flex"===a.display||"table"===a.display||"grid"===a.display||o<=s&&"none"===n[Nt]||r&&"none"===n[Nt]&&o<s+t)?"vertical":"horizontal"},Rt=function(t){function l(r,a){return function(t,e,n,o){var i=t.options.group.name&&e.options.group.name&&t.options.group.name===e.options.group.name;if(null==r&&(a||i))return!0;if(null==r||!1===r)return!1;if(a&&"clone"===r)return r;if("function"==typeof r)return l(r(t,e,n,o),a)(t,e,n,o);e=(a?t:e).options.group.name;return!0===r||"string"==typeof r&&r===e||r.join&&-1<r.indexOf(e)}}var e={},n=t.group;n&&"object"==o(n)||(n={name:n}),e.name=n.name,e.checkPull=l(n.pull,!0),e.checkPut=l(n.put),e.revertClone=n.revertClone,t.group=e},Xt=function(){!Pt&&Q&&R(Q,"display","none")},Yt=function(){!Pt&&Q&&R(Q,"display","")};Mt&&!n&&document.addEventListener("click",function(t){if(Et)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),Et=!1},!0);function Bt(t){if(Z){t=t.touches?t.touches[0]:t;var e=(i=t.clientX,r=t.clientY,St.some(function(t){var e=t[K].options.emptyInsertThreshold;if(e&&!F(t)){var n=X(t),o=i>=n.left-e&&i<=n.right+e,e=r>=n.top-e&&r<=n.bottom+e;return o&&e?a=t:void 0}}),a);if(e){var n,o={};for(n in t)t.hasOwnProperty(n)&&(o[n]=t[n]);o.target=o.rootEl=e,o.preventDefault=void 0,o.stopPropagation=void 0,e[K]._onDragOver(o)}}var i,r,a}function Ft(t){Z&&Z.parentNode[K]._isOutsideThisEl(t.target)}function jt(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=a({},e),t[K]=this;var n,o,i={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return kt(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==jt.supportPointer&&"PointerEvent"in window&&(!u||c),emptyInsertThreshold:5};for(n in z.initializePlugins(this,t,i),i)n in e||(e[n]=i[n]);for(o in Rt(e),this)"_"===o.charAt(0)&&"function"==typeof this[o]&&(this[o]=this[o].bind(this));this.nativeDraggable=!e.forceFallback&&It,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?h(t,"pointerdown",this._onTapStart):(h(t,"mousedown",this._onTapStart),h(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(h(t,"dragover",this),h(t,"dragenter",this)),St.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),a(this,A())}function Ht(t,e,n,o,i,r,a,l){var s,c,u=t[K],d=u.options.onMove;return!window.CustomEvent||y||w?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=e,s.from=t,s.dragged=n,s.draggedRect=o,s.related=i||e,s.relatedRect=r||X(e),s.willInsertAfter=l,s.originalEvent=a,t.dispatchEvent(s),c=d?d.call(u,s,a):c}function Lt(t){t.draggable=!1}function Kt(){xt=!1}function Wt(t){return setTimeout(t,0)}function zt(t){return clearTimeout(t)}jt.prototype={constructor:jt,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(vt=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,Z):this.options.direction},_onTapStart:function(e){if(e.cancelable){var n=this,o=this.el,t=this.options,i=t.preventOnFilter,r=e.type,a=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,l=(a||e).target,s=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,c=t.filter;if(!function(t){Ot.length=0;var e=t.getElementsByTagName("input"),n=e.length;for(;n--;){var o=e[n];o.checked&&Ot.push(o)}}(o),!Z&&!(/mousedown|pointerdown/.test(r)&&0!==e.button||t.disabled)&&!s.isContentEditable&&(this.nativeDraggable||!u||!l||"SELECT"!==l.tagName.toUpperCase())&&!((l=P(l,t.draggable,o,!1))&&l.animated||et===l)){if(it=j(l),at=j(l,t.draggable),"function"==typeof c){if(c.call(this,e,l,this))return V({sortable:n,rootEl:s,name:"filter",targetEl:l,toEl:o,fromEl:o}),U("filter",n,{evt:e}),void(i&&e.preventDefault())}else if(c=c&&c.split(",").some(function(t){if(t=P(s,t.trim(),o,!1))return V({sortable:n,rootEl:t,name:"filter",targetEl:l,fromEl:o,toEl:o}),U("filter",n,{evt:e}),!0}))return void(i&&e.preventDefault());t.handle&&!P(s,t.handle,o,!1)||this._prepareDragStart(e,a,l)}}},_prepareDragStart:function(t,e,n){var o,i=this,r=i.el,a=i.options,l=r.ownerDocument;n&&!Z&&n.parentNode===r&&(o=X(n),J=r,$=(Z=n).parentNode,tt=Z.nextSibling,et=n,st=a.group,ut={target:jt.dragged=Z,clientX:(e||t).clientX,clientY:(e||t).clientY},ft=ut.clientX-o.left,gt=ut.clientY-o.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,Z.style["will-change"]="all",o=function(){U("delayEnded",i,{evt:t}),jt.eventCanceled?i._onDrop():(i._disableDelayedDragEvents(),!s&&i.nativeDraggable&&(Z.draggable=!0),i._triggerDragStart(t,e),V({sortable:i,name:"choose",originalEvent:t}),k(Z,a.chosenClass,!0))},a.ignore.split(",").forEach(function(t){D(Z,t.trim(),Lt)}),h(l,"dragover",Bt),h(l,"mousemove",Bt),h(l,"touchmove",Bt),a.supportPointer?(h(l,"pointerup",i._onDrop),this.nativeDraggable||h(l,"pointercancel",i._onDrop)):(h(l,"mouseup",i._onDrop),h(l,"touchend",i._onDrop),h(l,"touchcancel",i._onDrop)),s&&this.nativeDraggable&&(this.options.touchStartThreshold=4,Z.draggable=!0),U("delayStart",this,{evt:t}),!a.delay||a.delayOnTouchOnly&&!e||this.nativeDraggable&&(w||y)?o():jt.eventCanceled?this._onDrop():(a.supportPointer?(h(l,"pointerup",i._disableDelayedDrag),h(l,"pointercancel",i._disableDelayedDrag)):(h(l,"mouseup",i._disableDelayedDrag),h(l,"touchend",i._disableDelayedDrag),h(l,"touchcancel",i._disableDelayedDrag)),h(l,"mousemove",i._delayedDragTouchMoveHandler),h(l,"touchmove",i._delayedDragTouchMoveHandler),a.supportPointer&&h(l,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(o,a.delay)))},_delayedDragTouchMoveHandler:function(t){t=t.touches?t.touches[0]:t;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){Z&&Lt(Z),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;p(t,"mouseup",this._disableDelayedDrag),p(t,"touchend",this._disableDelayedDrag),p(t,"touchcancel",this._disableDelayedDrag),p(t,"pointerup",this._disableDelayedDrag),p(t,"pointercancel",this._disableDelayedDrag),p(t,"mousemove",this._delayedDragTouchMoveHandler),p(t,"touchmove",this._delayedDragTouchMoveHandler),p(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?h(document,"pointermove",this._onTouchMove):h(document,e?"touchmove":"mousemove",this._onTouchMove):(h(Z,"dragend",this),h(J,"dragstart",this._onDragStart));try{document.selection?Wt(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){var n;Dt=!1,J&&Z?(U("dragStarted",this,{evt:e}),this.nativeDraggable&&h(document,"dragover",Ft),n=this.options,t||k(Z,n.dragClass,!1),k(Z,n.ghostClass,!0),jt.active=this,t&&this._appendGhost(),V({sortable:this,name:"start",originalEvent:e})):this._nulling()},_emulateDragOver:function(){if(dt){this._lastX=dt.clientX,this._lastY=dt.clientY,Xt();for(var t=document.elementFromPoint(dt.clientX,dt.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(dt.clientX,dt.clientY))!==e;)e=t;if(Z.parentNode[K]._isOutsideThisEl(t),e)do{if(e[K])if(e[K]._onDragOver({clientX:dt.clientX,clientY:dt.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break}while(e=g(t=e));Yt()}},_onTouchMove:function(t){if(ut){var e=this.options,n=e.fallbackTolerance,o=e.fallbackOffset,i=t.touches?t.touches[0]:t,r=Q&&b(Q,!0),a=Q&&r&&r.a,l=Q&&r&&r.d,e=At&&wt&&E(wt),a=(i.clientX-ut.clientX+o.x)/(a||1)+(e?e[0]-Tt[0]:0)/(a||1),l=(i.clientY-ut.clientY+o.y)/(l||1)+(e?e[1]-Tt[1]:0)/(l||1);if(!jt.active&&!Dt){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))<n)return;this._onDragStart(t,!0)}Q&&(r?(r.e+=a-(ht||0),r.f+=l-(pt||0)):r={a:1,b:0,c:0,d:1,e:a,f:l},r="matrix(".concat(r.a,",").concat(r.b,",").concat(r.c,",").concat(r.d,",").concat(r.e,",").concat(r.f,")"),R(Q,"webkitTransform",r),R(Q,"mozTransform",r),R(Q,"msTransform",r),R(Q,"transform",r),ht=a,pt=l,dt=i),t.cancelable&&t.preventDefault()}},_appendGhost:function(){if(!Q){var t=this.options.fallbackOnBody?document.body:J,e=X(Z,!0,At,!0,t),n=this.options;if(At){for(wt=t;"static"===R(wt,"position")&&"none"===R(wt,"transform")&&wt!==document;)wt=wt.parentNode;wt!==document.body&&wt!==document.documentElement?(wt===document&&(wt=O()),e.top+=wt.scrollTop,e.left+=wt.scrollLeft):wt=O(),Tt=E(wt)}k(Q=Z.cloneNode(!0),n.ghostClass,!1),k(Q,n.fallbackClass,!0),k(Q,n.dragClass,!0),R(Q,"transition",""),R(Q,"transform",""),R(Q,"box-sizing","border-box"),R(Q,"margin",0),R(Q,"top",e.top),R(Q,"left",e.left),R(Q,"width",e.width),R(Q,"height",e.height),R(Q,"opacity","0.8"),R(Q,"position",At?"absolute":"fixed"),R(Q,"zIndex","100000"),R(Q,"pointerEvents","none"),jt.ghost=Q,t.appendChild(Q),R(Q,"transform-origin",ft/parseInt(Q.style.width)*100+"% "+gt/parseInt(Q.style.height)*100+"%")}},_onDragStart:function(t,e){var n=this,o=t.dataTransfer,i=n.options;U("dragStart",this,{evt:t}),jt.eventCanceled?this._onDrop():(U("setupClone",this),jt.eventCanceled||((nt=C(Z)).removeAttribute("id"),nt.draggable=!1,nt.style["will-change"]="",this._hideClone(),k(nt,this.options.chosenClass,!1),jt.clone=nt),n.cloneId=Wt(function(){U("clone",n),jt.eventCanceled||(n.options.removeCloneOnHide||J.insertBefore(nt,Z),n._hideClone(),V({sortable:n,name:"clone"}))}),e||k(Z,i.dragClass,!0),e?(Et=!0,n._loopId=setInterval(n._emulateDragOver,50)):(p(document,"mouseup",n._onDrop),p(document,"touchend",n._onDrop),p(document,"touchcancel",n._onDrop),o&&(o.effectAllowed="move",i.setData&&i.setData.call(n,o,Z)),h(document,"drop",n),R(Z,"transform","translateZ(0)")),Dt=!0,n._dragStartId=Wt(n._dragStarted.bind(n,e,t)),h(document,"selectstart",n),mt=!0,window.getSelection().removeAllRanges(),u&&R(document.body,"user-select","none"))},_onDragOver:function(n){var o,i,r,t,e,a=this.el,l=n.target,s=this.options,c=s.group,u=jt.active,d=st===c,h=s.sort,p=ct||u,f=this,g=!1;if(!xt){if(void 0!==n.preventDefault&&n.cancelable&&n.preventDefault(),l=P(l,s.draggable,a,!0),O("dragOver"),jt.eventCanceled)return g;if(Z.contains(n.target)||l.animated&&l.animatingX&&l.animatingY||f._ignoreWhileAnimating===l)return A(!1);if(Et=!1,u&&!s.disabled&&(d?h||(i=$!==J):ct===this||(this.lastPutMode=st.checkPull(this,u,Z,n))&&c.checkPut(this,u,Z,n))){if(r="vertical"===this._getDirection(n,l),o=X(Z),O("dragOverValid"),jt.eventCanceled)return g;if(i)return $=J,M(),this._hideClone(),O("revert"),jt.eventCanceled||(tt?J.insertBefore(Z,tt):J.appendChild(Z)),A(!0);var m=F(a,s.draggable);if(m&&(S=n,c=r,x=X(F((E=this).el,E.options.draggable)),E=L(E.el,E.options,Q),!(c?S.clientX>E.right+10||S.clientY>x.bottom&&S.clientX>x.left:S.clientY>E.bottom+10||S.clientX>x.right&&S.clientY>x.top)||m.animated)){if(m&&(t=n,e=r,C=X(B((_=this).el,0,_.options,!0)),_=L(_.el,_.options,Q),e?t.clientX<_.left-10||t.clientY<C.top&&t.clientX<C.right:t.clientY<_.top-10||t.clientY<C.bottom&&t.clientX<C.left)){var v=B(a,0,s,!0);if(v===Z)return A(!1);if(D=X(l=v),!1!==Ht(J,a,Z,o,l,D,n,!1))return M(),a.insertBefore(Z,v),$=a,N(),A(!0)}else if(l.parentNode===a){var b,y,w,D=X(l),E=Z.parentNode!==a,S=(S=Z.animated&&Z.toRect||o,x=l.animated&&l.toRect||D,_=(e=r)?S.left:S.top,t=e?S.right:S.bottom,C=e?S.width:S.height,v=e?x.left:x.top,S=e?x.right:x.bottom,x=e?x.width:x.height,!(_===v||t===S||_+C/2===v+x/2)),_=r?"top":"left",C=Y(l,"top","top")||Y(Z,"top","top"),v=C?C.scrollTop:void 0;if(vt!==l&&(y=D[_],_t=!1,Ct=!S&&s.invertSwap||E),0!==(b=function(t,e,n,o,i,r,a,l){var s=o?t.clientY:t.clientX,c=o?n.height:n.width,t=o?n.top:n.left,o=o?n.bottom:n.right,n=!1;if(!a)if(l&&yt<c*i){if(_t=!_t&&(1===bt?t+c*r/2<s:s<o-c*r/2)?!0:_t)n=!0;else if(1===bt?s<t+yt:o-yt<s)return-bt}else if(t+c*(1-i)/2<s&&s<o-c*(1-i)/2)return function(t){return j(Z)<j(t)?1:-1}(e);if((n=n||a)&&(s<t+c*r/2||o-c*r/2<s))return t+c/2<s?1:-1;return 0}(n,l,D,r,S?1:s.swapThreshold,null==s.invertedSwapThreshold?s.swapThreshold:s.invertedSwapThreshold,Ct,vt===l)))for(var T=j(Z);(w=$.children[T-=b])&&("none"===R(w,"display")||w===Q););if(0===b||w===l)return A(!1);bt=b;var x=(vt=l).nextElementSibling,E=!1,S=Ht(J,a,Z,o,l,D,n,E=1===b);if(!1!==S)return 1!==S&&-1!==S||(E=1===S),xt=!0,setTimeout(Kt,30),M(),E&&!x?a.appendChild(Z):l.parentNode.insertBefore(Z,E?x:l),C&&H(C,0,v-C.scrollTop),$=Z.parentNode,void 0===y||Ct||(yt=Math.abs(y-X(l)[_])),N(),A(!0)}}else{if(m===Z)return A(!1);if((l=m&&a===n.target?m:l)&&(D=X(l)),!1!==Ht(J,a,Z,o,l,D,n,!!l))return M(),m&&m.nextSibling?a.insertBefore(Z,m.nextSibling):a.appendChild(Z),$=a,N(),A(!0)}if(a.contains(Z))return A(!1)}return!1}function O(t,e){U(t,f,I({evt:n,isOwner:d,axis:r?"vertical":"horizontal",revert:i,dragRect:o,targetRect:D,canSort:h,fromSortable:p,target:l,completed:A,onMove:function(t,e){return Ht(J,a,Z,o,t,X(t),n,e)},changed:N},e))}function M(){O("dragOverAnimationCapture"),f.captureAnimationState(),f!==p&&p.captureAnimationState()}function A(t){return O("dragOverCompleted",{insertion:t}),t&&(d?u._hideClone():u._showClone(f),f!==p&&(k(Z,(ct||u).options.ghostClass,!1),k(Z,s.ghostClass,!0)),ct!==f&&f!==jt.active?ct=f:f===jt.active&&ct&&(ct=null),p===f&&(f._ignoreWhileAnimating=l),f.animateAll(function(){O("dragOverAnimationComplete"),f._ignoreWhileAnimating=null}),f!==p&&(p.animateAll(),p._ignoreWhileAnimating=null)),(l===Z&&!Z.animated||l===a&&!l.animated)&&(vt=null),s.dragoverBubble||n.rootEl||l===document||(Z.parentNode[K]._isOutsideThisEl(n.target),t||Bt(n)),!s.dragoverBubble&&n.stopPropagation&&n.stopPropagation(),g=!0}function N(){rt=j(Z),lt=j(Z,s.draggable),V({sortable:f,name:"change",toEl:a,newIndex:rt,newDraggableIndex:lt,originalEvent:n})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){p(document,"mousemove",this._onTouchMove),p(document,"touchmove",this._onTouchMove),p(document,"pointermove",this._onTouchMove),p(document,"dragover",Bt),p(document,"mousemove",Bt),p(document,"touchmove",Bt)},_offUpEvents:function(){var t=this.el.ownerDocument;p(t,"mouseup",this._onDrop),p(t,"touchend",this._onDrop),p(t,"pointerup",this._onDrop),p(t,"pointercancel",this._onDrop),p(t,"touchcancel",this._onDrop),p(document,"selectstart",this)},_onDrop:function(t){var e=this.el,n=this.options;rt=j(Z),lt=j(Z,n.draggable),U("drop",this,{evt:t}),$=Z&&Z.parentNode,rt=j(Z),lt=j(Z,n.draggable),jt.eventCanceled||(_t=Ct=Dt=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),zt(this.cloneId),zt(this._dragStartId),this.nativeDraggable&&(p(document,"drop",this),p(e,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),u&&R(document.body,"user-select",""),R(Z,"transform",""),t&&(mt&&(t.cancelable&&t.preventDefault(),n.dropBubble||t.stopPropagation()),Q&&Q.parentNode&&Q.parentNode.removeChild(Q),(J===$||ct&&"clone"!==ct.lastPutMode)&&nt&&nt.parentNode&&nt.parentNode.removeChild(nt),Z&&(this.nativeDraggable&&p(Z,"dragend",this),Lt(Z),Z.style["will-change"]="",mt&&!Dt&&k(Z,(ct||this).options.ghostClass,!1),k(Z,this.options.chosenClass,!1),V({sortable:this,name:"unchoose",toEl:$,newIndex:null,newDraggableIndex:null,originalEvent:t}),J!==$?(0<=rt&&(V({rootEl:$,name:"add",toEl:$,fromEl:J,originalEvent:t}),V({sortable:this,name:"remove",toEl:$,originalEvent:t}),V({rootEl:$,name:"sort",toEl:$,fromEl:J,originalEvent:t}),V({sortable:this,name:"sort",toEl:$,originalEvent:t})),ct&&ct.save()):rt!==it&&0<=rt&&(V({sortable:this,name:"update",toEl:$,originalEvent:t}),V({sortable:this,name:"sort",toEl:$,originalEvent:t})),jt.active&&(null!=rt&&-1!==rt||(rt=it,lt=at),V({sortable:this,name:"end",toEl:$,originalEvent:t}),this.save())))),this._nulling()},_nulling:function(){U("nulling",this),J=Z=$=Q=tt=nt=et=ot=ut=dt=mt=rt=lt=it=at=vt=bt=ct=st=jt.dragged=jt.ghost=jt.clone=jt.active=null,Ot.forEach(function(t){t.checked=!0}),Ot.length=ht=pt=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":Z&&(this._onDragOver(t),function(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move");t.cancelable&&t.preventDefault()}(t));break;case"selectstart":t.preventDefault()}},toArray:function(){for(var t,e=[],n=this.el.children,o=0,i=n.length,r=this.options;o<i;o++)P(t=n[o],r.draggable,this.el,!1)&&e.push(t.getAttribute(r.dataIdAttr)||function(t){var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,o=0;for(;n--;)o+=e.charCodeAt(n);return o.toString(36)}(t));return e},sort:function(t,e){var n={},o=this.el;this.toArray().forEach(function(t,e){e=o.children[e];P(e,this.options.draggable,o,!1)&&(n[t]=e)},this),e&&this.captureAnimationState(),t.forEach(function(t){n[t]&&(o.removeChild(n[t]),o.appendChild(n[t]))}),e&&this.animateAll()},save:function(){var t=this.options.store;t&&t.set&&t.set(this)},closest:function(t,e){return P(t,e||this.options.draggable,this.el,!1)},option:function(t,e){var n=this.options;if(void 0===e)return n[t];var o=z.modifyOption(this,t,e);n[t]=void 0!==o?o:e,"group"===t&&Rt(n)},destroy:function(){U("destroy",this);var t=this.el;t[K]=null,p(t,"mousedown",this._onTapStart),p(t,"touchstart",this._onTapStart),p(t,"pointerdown",this._onTapStart),this.nativeDraggable&&(p(t,"dragover",this),p(t,"dragenter",this)),Array.prototype.forEach.call(t.querySelectorAll("[draggable]"),function(t){t.removeAttribute("draggable")}),this._onDrop(),this._disableDelayedDragEvents(),St.splice(St.indexOf(this.el),1),this.el=t=null},_hideClone:function(){ot||(U("hideClone",this),jt.eventCanceled||(R(nt,"display","none"),this.options.removeCloneOnHide&&nt.parentNode&&nt.parentNode.removeChild(nt),ot=!0))},_showClone:function(t){"clone"===t.lastPutMode?ot&&(U("showClone",this),jt.eventCanceled||(Z.parentNode!=J||this.options.group.revertClone?tt?J.insertBefore(nt,tt):J.appendChild(nt):J.insertBefore(nt,Z),this.options.group.revertClone&&this.animate(Z,nt),R(nt,"display",""),ot=!1)):this._hideClone()}},Mt&&h(document,"touchmove",function(t){(jt.active||Dt)&&t.cancelable&&t.preventDefault()}),jt.utils={on:h,off:p,css:R,find:D,is:function(t,e){return!!P(t,e,t,!1)},extend:function(t,e){if(t&&e)for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},throttle:_,closest:P,toggleClass:k,clone:C,index:j,nextTick:Wt,cancelNextTick:zt,detectDirection:kt,getChild:B,expando:K},jt.get=function(t){return t[K]},jt.mount=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];(e=e[0].constructor===Array?e[0]:e).forEach(function(t){if(!t.prototype||!t.prototype.constructor)throw"Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(t));t.utils&&(jt.utils=I(I({},jt.utils),t.utils)),z.mount(t)})},jt.create=function(t,e){return new jt(t,e)};var Gt,Ut,qt,Vt,Zt,$t,Qt=[],Jt=!(jt.version="1.15.6");function te(){Qt.forEach(function(t){clearInterval(t.pid)}),Qt=[]}function ee(){clearInterval($t)}var ne,oe=_(function(n,t,e,o){if(t.scroll){var i,r=(n.touches?n.touches[0]:n).clientX,a=(n.touches?n.touches[0]:n).clientY,l=t.scrollSensitivity,s=t.scrollSpeed,c=O(),u=!1;Ut!==e&&(Ut=e,te(),Gt=t.scroll,i=t.scrollFn,!0===Gt&&(Gt=M(e,!0)));var d=0,h=Gt;do{var p=h,f=X(p),g=f.top,m=f.bottom,v=f.left,b=f.right,y=f.width,w=f.height,D=void 0,E=void 0,S=p.scrollWidth,_=p.scrollHeight,C=R(p),T=p.scrollLeft,f=p.scrollTop,E=p===c?(D=y<S&&("auto"===C.overflowX||"scroll"===C.overflowX||"visible"===C.overflowX),w<_&&("auto"===C.overflowY||"scroll"===C.overflowY||"visible"===C.overflowY)):(D=y<S&&("auto"===C.overflowX||"scroll"===C.overflowX),w<_&&("auto"===C.overflowY||"scroll"===C.overflowY)),T=D&&(Math.abs(b-r)<=l&&T+y<S)-(Math.abs(v-r)<=l&&!!T),f=E&&(Math.abs(m-a)<=l&&f+w<_)-(Math.abs(g-a)<=l&&!!f);if(!Qt[d])for(var x=0;x<=d;x++)Qt[x]||(Qt[x]={});Qt[d].vx==T&&Qt[d].vy==f&&Qt[d].el===p||(Qt[d].el=p,Qt[d].vx=T,Qt[d].vy=f,clearInterval(Qt[d].pid),0==T&&0==f||(u=!0,Qt[d].pid=setInterval(function(){o&&0===this.layer&&jt.active._onTouchMove(Zt);var t=Qt[this.layer].vy?Qt[this.layer].vy*s:0,e=Qt[this.layer].vx?Qt[this.layer].vx*s:0;"function"==typeof i&&"continue"!==i.call(jt.dragged.parentNode[K],e,t,n,Zt,Qt[this.layer].el)||H(Qt[this.layer].el,e,t)}.bind({layer:d}),24))),d++}while(t.bubbleScroll&&h!==c&&(h=M(h,!1)));Jt=u}},30),n=function(t){var e=t.originalEvent,n=t.putSortable,o=t.dragEl,i=t.activeSortable,r=t.dispatchSortableEvent,a=t.hideGhostForTarget,t=t.unhideGhostForTarget;e&&(i=n||i,a(),e=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:e,e=document.elementFromPoint(e.clientX,e.clientY),t(),i&&!i.el.contains(e)&&(r("spill"),this.onSpill({dragEl:o,putSortable:n})))};function ie(){}function re(){}ie.prototype={startIndex:null,dragStart:function(t){t=t.oldDraggableIndex;this.startIndex=t},onSpill:function(t){var e=t.dragEl,n=t.putSortable;this.sortable.captureAnimationState(),n&&n.captureAnimationState();t=B(this.sortable.el,this.startIndex,this.options);t?this.sortable.el.insertBefore(e,t):this.sortable.el.appendChild(e),this.sortable.animateAll(),n&&n.animateAll()},drop:n},a(ie,{pluginName:"revertOnSpill"}),re.prototype={onSpill:function(t){var e=t.dragEl,t=t.putSortable||this.sortable;t.captureAnimationState(),e.parentNode&&e.parentNode.removeChild(e),t.animateAll()},drop:n},a(re,{pluginName:"removeOnSpill"});var ae,le,se,ce,ue,de=[],he=[],pe=!1,fe=!1,ge=!1;function me(n,o){he.forEach(function(t,e){e=o.children[t.sortableIndex+(n?Number(e):0)];e?o.insertBefore(t,e):o.appendChild(t)})}function ve(){de.forEach(function(t){t!==se&&t.parentNode&&t.parentNode.removeChild(t)})}return jt.mount(new function(){function t(){for(var t in this.defaults={scroll:!0,forceAutoScrollFallback:!1,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:!0},this)"_"===t.charAt(0)&&"function"==typeof this[t]&&(this[t]=this[t].bind(this))}return t.prototype={dragStarted:function(t){t=t.originalEvent;this.sortable.nativeDraggable?h(document,"dragover",this._handleAutoScroll):this.options.supportPointer?h(document,"pointermove",this._handleFallbackAutoScroll):t.touches?h(document,"touchmove",this._handleFallbackAutoScroll):h(document,"mousemove",this._handleFallbackAutoScroll)},dragOverCompleted:function(t){t=t.originalEvent;this.options.dragOverBubble||t.rootEl||this._handleAutoScroll(t)},drop:function(){this.sortable.nativeDraggable?p(document,"dragover",this._handleAutoScroll):(p(document,"pointermove",this._handleFallbackAutoScroll),p(document,"touchmove",this._handleFallbackAutoScroll),p(document,"mousemove",this._handleFallbackAutoScroll)),ee(),te(),clearTimeout(m),m=void 0},nulling:function(){Zt=Ut=Gt=Jt=$t=qt=Vt=null,Qt.length=0},_handleFallbackAutoScroll:function(t){this._handleAutoScroll(t,!0)},_handleAutoScroll:function(e,n){var o,i=this,r=(e.touches?e.touches[0]:e).clientX,a=(e.touches?e.touches[0]:e).clientY,t=document.elementFromPoint(r,a);Zt=e,n||this.options.forceAutoScrollFallback||w||y||u?(oe(e,this.options,t,n),o=M(t,!0),!Jt||$t&&r===qt&&a===Vt||($t&&ee(),$t=setInterval(function(){var t=M(document.elementFromPoint(r,a),!0);t!==o&&(o=t,te()),oe(e,i.options,t,n)},10),qt=r,Vt=a)):this.options.bubbleScroll&&M(t,!0)!==O()?oe(e,this.options,M(t,!1),!1):te()}},a(t,{pluginName:"scroll",initializeByDefault:!0})}),jt.mount(re,ie),jt.mount(new function(){function t(){this.defaults={swapClass:"sortable-swap-highlight"}}return t.prototype={dragStart:function(t){t=t.dragEl;ne=t},dragOverValid:function(t){var e=t.completed,n=t.target,o=t.onMove,i=t.activeSortable,r=t.changed,a=t.cancel;i.options.swap&&(t=this.sortable.el,i=this.options,n&&n!==t&&(t=ne,ne=!1!==o(n)?(k(n,i.swapClass,!0),n):null,t&&t!==ne&&k(t,i.swapClass,!1)),r(),e(!0),a())},drop:function(t){var e,n,o=t.activeSortable,i=t.putSortable,r=t.dragEl,a=i||this.sortable,l=this.options;ne&&k(ne,l.swapClass,!1),ne&&(l.swap||i&&i.options.swap)&&r!==ne&&(a.captureAnimationState(),a!==o&&o.captureAnimationState(),n=ne,t=(e=r).parentNode,l=n.parentNode,t&&l&&!t.isEqualNode(n)&&!l.isEqualNode(e)&&(i=j(e),r=j(n),t.isEqualNode(l)&&i<r&&r++,t.insertBefore(n,t.children[i]),l.insertBefore(e,l.children[r])),a.animateAll(),a!==o&&o.animateAll())},nulling:function(){ne=null}},a(t,{pluginName:"swap",eventProperties:function(){return{swapItem:ne}}})}),jt.mount(new function(){function t(o){for(var t in this)"_"===t.charAt(0)&&"function"==typeof this[t]&&(this[t]=this[t].bind(this));o.options.avoidImplicitDeselect||(o.options.supportPointer?h(document,"pointerup",this._deselectMultiDrag):(h(document,"mouseup",this._deselectMultiDrag),h(document,"touchend",this._deselectMultiDrag))),h(document,"keydown",this._checkKeyDown),h(document,"keyup",this._checkKeyUp),this.defaults={selectedClass:"sortable-selected",multiDragKey:null,avoidImplicitDeselect:!1,setData:function(t,e){var n="";de.length&&le===o?de.forEach(function(t,e){n+=(e?", ":"")+t.textContent}):n=e.textContent,t.setData("Text",n)}}}return t.prototype={multiDragKeyDown:!1,isMultiDrag:!1,delayStartGlobal:function(t){t=t.dragEl;se=t},delayEnded:function(){this.isMultiDrag=~de.indexOf(se)},setupClone:function(t){var e=t.sortable,t=t.cancel;if(this.isMultiDrag){for(var n=0;n<de.length;n++)he.push(C(de[n])),he[n].sortableIndex=de[n].sortableIndex,he[n].draggable=!1,he[n].style["will-change"]="",k(he[n],this.options.selectedClass,!1),de[n]===se&&k(he[n],this.options.chosenClass,!1);e._hideClone(),t()}},clone:function(t){var e=t.sortable,n=t.rootEl,o=t.dispatchSortableEvent,t=t.cancel;this.isMultiDrag&&(this.options.removeCloneOnHide||de.length&&le===e&&(me(!0,n),o("clone"),t()))},showClone:function(t){var e=t.cloneNowShown,n=t.rootEl,t=t.cancel;this.isMultiDrag&&(me(!1,n),he.forEach(function(t){R(t,"display","")}),e(),ue=!1,t())},hideClone:function(t){var e=this,n=(t.sortable,t.cloneNowHidden),t=t.cancel;this.isMultiDrag&&(he.forEach(function(t){R(t,"display","none"),e.options.removeCloneOnHide&&t.parentNode&&t.parentNode.removeChild(t)}),n(),ue=!0,t())},dragStartGlobal:function(t){t.sortable;!this.isMultiDrag&&le&&le.multiDrag._deselectMultiDrag(),de.forEach(function(t){t.sortableIndex=j(t)}),de=de.sort(function(t,e){return t.sortableIndex-e.sortableIndex}),ge=!0},dragStarted:function(t){var e,n=this,t=t.sortable;this.isMultiDrag&&(this.options.sort&&(t.captureAnimationState(),this.options.animation&&(de.forEach(function(t){t!==se&&R(t,"position","absolute")}),e=X(se,!1,!0,!0),de.forEach(function(t){t!==se&&T(t,e)}),pe=fe=!0)),t.animateAll(function(){pe=fe=!1,n.options.animation&&de.forEach(function(t){x(t)}),n.options.sort&&ve()}))},dragOver:function(t){var e=t.target,n=t.completed,t=t.cancel;fe&&~de.indexOf(e)&&(n(!1),t())},revert:function(t){var n,o,e=t.fromSortable,i=t.rootEl,r=t.sortable,a=t.dragRect;1<de.length&&(de.forEach(function(t){r.addAnimationState({target:t,rect:fe?X(t):a}),x(t),t.fromRect=a,e.removeAnimationState(t)}),fe=!1,n=!this.options.removeCloneOnHide,o=i,de.forEach(function(t,e){e=o.children[t.sortableIndex+(n?Number(e):0)];e?o.insertBefore(t,e):o.appendChild(t)}))},dragOverCompleted:function(t){var e,n=t.sortable,o=t.isOwner,i=t.insertion,r=t.activeSortable,a=t.parentEl,l=t.putSortable,t=this.options;i&&(o&&r._hideClone(),pe=!1,t.animation&&1<de.length&&(fe||!o&&!r.options.sort&&!l)&&(e=X(se,!1,!0,!0),de.forEach(function(t){t!==se&&(T(t,e),a.appendChild(t))}),fe=!0),o||(fe||ve(),1<de.length?(o=ue,r._showClone(n),r.options.animation&&!ue&&o&&he.forEach(function(t){r.addAnimationState({target:t,rect:ce}),t.fromRect=ce,t.thisAnimationDuration=null})):r._showClone(n)))},dragOverAnimationCapture:function(t){var e=t.dragRect,n=t.isOwner,t=t.activeSortable;de.forEach(function(t){t.thisAnimationDuration=null}),t.options.animation&&!n&&t.multiDrag.isMultiDrag&&(ce=a({},e),e=b(se,!0),ce.top-=e.f,ce.left-=e.e)},dragOverAnimationComplete:function(){fe&&(fe=!1,ve())},drop:function(t){var o,i,r,a,n,e,l,s=t.originalEvent,c=t.rootEl,u=t.parentEl,d=t.sortable,h=t.dispatchSortableEvent,p=t.oldIndex,t=t.putSortable,f=t||this.sortable;s&&(o=this.options,i=u.children,ge||(o.multiDragKey&&!this.multiDragKeyDown&&this._deselectMultiDrag(),k(se,o.selectedClass,!~de.indexOf(se)),~de.indexOf(se)?(de.splice(de.indexOf(se),1),ae=null,G({sortable:d,rootEl:c,name:"deselect",targetEl:se,originalEvent:s})):(de.push(se),G({sortable:d,rootEl:c,name:"select",targetEl:se,originalEvent:s}),s.shiftKey&&ae&&d.el.contains(ae)?(r=j(ae),a=j(se),~r&&~a&&r!==a&&function(){for(var e,t=r<a?(e=r,a):(e=a,r+1),n=o.filter;e<t;e++)~de.indexOf(i[e])||P(i[e],o.draggable,u,!1)&&(n&&("function"==typeof n?n.call(d,s,i[e],d):n.split(",").some(function(t){return P(i[e],t.trim(),u,!1)}))||(k(i[e],o.selectedClass,!0),de.push(i[e]),G({sortable:d,rootEl:c,name:"select",targetEl:i[e],originalEvent:s})))}()):ae=se,le=f)),ge&&this.isMultiDrag&&(fe=!1,(u[K].options.sort||u!==c)&&1<de.length&&(n=X(se),e=j(se,":not(."+this.options.selectedClass+")"),!pe&&o.animation&&(se.thisAnimationDuration=null),f.captureAnimationState(),pe||(o.animation&&(se.fromRect=n,de.forEach(function(t){var e;t.thisAnimationDuration=null,t!==se&&(e=fe?X(t):n,t.fromRect=e,f.addAnimationState({target:t,rect:e}))})),ve(),de.forEach(function(t){i[e]?u.insertBefore(t,i[e]):u.appendChild(t),e++}),p===j(se)&&(l=!1,de.forEach(function(t){t.sortableIndex!==j(t)&&(l=!0)}),l&&(h("update"),h("sort")))),de.forEach(function(t){x(t)}),f.animateAll()),le=f),(c===u||t&&"clone"!==t.lastPutMode)&&he.forEach(function(t){t.parentNode&&t.parentNode.removeChild(t)}))},nullingGlobal:function(){this.isMultiDrag=ge=!1,he.length=0},destroyGlobal:function(){this._deselectMultiDrag(),p(document,"pointerup",this._deselectMultiDrag),p(document,"mouseup",this._deselectMultiDrag),p(document,"touchend",this._deselectMultiDrag),p(document,"keydown",this._checkKeyDown),p(document,"keyup",this._checkKeyUp)},_deselectMultiDrag:function(t){if(!(void 0!==ge&&ge||le!==this.sortable||t&&P(t.target,this.options.draggable,this.sortable.el,!1)||t&&0!==t.button))for(;de.length;){var e=de[0];k(e,this.options.selectedClass,!1),de.shift(),G({sortable:this.sortable,rootEl:this.sortable.el,name:"deselect",targetEl:e,originalEvent:t})}},_checkKeyDown:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!0)},_checkKeyUp:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!1)}},a(t,{pluginName:"multiDrag",utils:{select:function(t){var e=t.parentNode[K];e&&e.options.multiDrag&&!~de.indexOf(t)&&(le&&le!==e&&(le.multiDrag._deselectMultiDrag(),le=e),k(t,e.options.selectedClass,!0),de.push(t))},deselect:function(t){var e=t.parentNode[K],n=de.indexOf(t);e&&e.options.multiDrag&&~n&&(k(t,e.options.selectedClass,!1),de.splice(n,1))}},eventProperties:function(){var n=this,o=[],i=[];return de.forEach(function(t){var e;o.push({multiDragElement:t,index:t.sortableIndex}),e=fe&&t!==se?-1:fe?j(t,":not(."+n.options.selectedClass+")"):j(t),i.push({multiDragElement:t,index:e})}),{items:r(de),clones:[].concat(he),oldIndicies:o,newIndicies:i}},optionListeners:{multiDragKey:function(t){return"ctrl"===(t=t.toLowerCase())?t="Control":1<t.length&&(t=t.charAt(0).toUpperCase()+t.substr(1)),t}}})}),jt});1 /*! Sortable 1.15.7 - MIT | git://github.com/SortableJS/Sortable.git */ 2 !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Sortable=e()}(this,function(){"use strict";function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=Array(e);n<e;n++)o[n]=t[n];return o}function i(t,e,n){return(e=function(t){t=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0===n)return("string"===e?String:Number)(t);e=n.call(t,e||"default");if("object"!=typeof e)return e;throw new TypeError("@@toPrimitive must return a primitive value.")}(t,"string");return"symbol"==typeof t?t:t+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(){return(a=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n,o=arguments[e];for(n in o)!{}.hasOwnProperty.call(o,n)||(t[n]=o[n])}return t}).apply(null,arguments)}function r(e,t){var n,o=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,n)),o}function I(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach(function(t){i(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function l(t,e){if(null==t)return{};var n,o=function(t,e){if(null==t)return{};var n,o={};for(n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==e.indexOf(n))continue;o[n]=t[n]}return o}(t,e);if(Object.getOwnPropertySymbols)for(var i=Object.getOwnPropertySymbols(t),r=0;r<i.length;r++)n=i[r],-1===e.indexOf(n)&&{}.propertyIsEnumerable.call(t,n)&&(o[n]=t[n]);return o}function e(t){return function(t){if(Array.isArray(t))return o(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return o(t,e);var n={}.toString.call(t).slice(8,-1);return"Map"===(n="Object"===n&&t.constructor?t.constructor.name:n)||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(t,e):void 0}}(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){return(s="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)}function t(t){if("undefined"!=typeof window&&window.navigator)return!!navigator.userAgent.match(t)}var y=t(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),w=t(/Edge/i),c=t(/firefox/i),u=t(/safari/i)&&!t(/chrome/i)&&!t(/android/i),d=t(/iP(ad|od|hone)/i),n=t(/chrome/i)&&t(/android/i),h={capture:!1,passive:!1};function f(t,e,n){t.addEventListener(e,n,!y&&h)}function p(t,e,n){t.removeEventListener(e,n,!y&&h)}function g(t,e){if(e&&(">"===e[0]&&(e=e.substring(1)),t))try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return}}function m(t){return t.host&&t!==document&&t.host.nodeType&&t.host!==t?t.host:t.parentNode}function P(t,e,n,o){if(t){n=n||document;do{if(null!=e&&(">"!==e[0]||t.parentNode===n)&&g(t,e)||o&&t===n)return t}while(t!==n&&(t=m(t)))}return null}var v,b=/\s+/g;function k(t,e,n){var o;t&&e&&(t.classList?t.classList[n?"add":"remove"](e):(o=(" "+t.className+" ").replace(b," ").replace(" "+e+" "," "),t.className=(o+(n?" "+e:"")).replace(b," ")))}function R(t,e,n){var o=t&&t.style;if(o){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];o[e=!(e in o||-1!==e.indexOf("webkit"))?"-webkit-"+e:e]=n+("string"==typeof n?"":"px")}}function D(t,e){var n="";if("string"==typeof t)n=t;else do{var o=R(t,"transform")}while(o&&"none"!==o&&(n=o+" "+n),!e&&(t=t.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function E(t,e,n){if(t){var o=t.getElementsByTagName(e),i=0,r=o.length;if(n)for(;i<r;i++)n(o[i],i);return o}return[]}function O(){var t=document.scrollingElement;return t||document.documentElement}function X(t,e,n,o,i){if(t.getBoundingClientRect||t===window){var r,a,l,s,c,u,d=t!==window&&t.parentNode&&t!==O()?(a=(r=t.getBoundingClientRect()).top,l=r.left,s=r.bottom,c=r.right,u=r.height,r.width):(l=a=0,s=window.innerHeight,c=window.innerWidth,u=window.innerHeight,window.innerWidth);if((e||n)&&t!==window&&(i=i||t.parentNode,!y))do{if(i&&i.getBoundingClientRect&&("none"!==R(i,"transform")||n&&"static"!==R(i,"position"))){var h=i.getBoundingClientRect();a-=h.top+parseInt(R(i,"border-top-width")),l-=h.left+parseInt(R(i,"border-left-width")),s=a+r.height,c=l+r.width;break}}while(i=i.parentNode);return o&&t!==window&&(o=(e=D(i||t))&&e.a,t=e&&e.d,e&&(s=(a/=t)+(u/=t),c=(l/=o)+(d/=o))),{top:a,left:l,bottom:s,right:c,width:d,height:u}}}function Y(t,e,n){for(var o=M(t,!0),i=X(t)[e];o;){var r=X(o)[n];if(!("top"===n||"left"===n?r<=i:i<=r))return o;if(o===O())break;o=M(o,!1)}return!1}function B(t,e,n,o){for(var i=0,r=0,a=t.children;r<a.length;){if("none"!==a[r].style.display&&a[r]!==Ht.ghost&&(o||a[r]!==Ht.dragged)&&P(a[r],n.draggable,t,!1)){if(i===e)return a[r];i++}r++}return null}function F(t,e){for(var n=t.lastElementChild;n&&(n===Ht.ghost||"none"===R(n,"display")||e&&!g(n,e));)n=n.previousElementSibling;return n||null}function j(t,e){var n=0;if(!t||!t.parentNode)return-1;for(;t=t.previousElementSibling;)"TEMPLATE"===t.nodeName.toUpperCase()||t===Ht.clone||e&&!g(t,e)||n++;return n}function S(t){var e=0,n=0,o=O();if(t)do{var i=D(t),r=i.a,i=i.d}while(e+=t.scrollLeft*r,n+=t.scrollTop*i,t!==o&&(t=t.parentNode));return[e,n]}function M(t,e){if(!t||!t.getBoundingClientRect)return O();var n=t,o=!1;do{if(n.clientWidth<n.scrollWidth||n.clientHeight<n.scrollHeight){var i=R(n);if(n.clientWidth<n.scrollWidth&&("auto"==i.overflowX||"scroll"==i.overflowX)||n.clientHeight<n.scrollHeight&&("auto"==i.overflowY||"scroll"==i.overflowY)){if(!n.getBoundingClientRect||n===document.body)return O();if(o||e)return n;o=!0}}}while(n=n.parentNode);return O()}function _(t,e){return Math.round(t.top)===Math.round(e.top)&&Math.round(t.left)===Math.round(e.left)&&Math.round(t.height)===Math.round(e.height)&&Math.round(t.width)===Math.round(e.width)}function C(e,n){return function(){var t;v||(1===(t=arguments).length?e.call(this,t[0]):e.apply(this,t),v=setTimeout(function(){v=void 0},n))}}function H(t,e,n){t.scrollLeft+=e,t.scrollTop+=n}function T(t){var e=window.Polymer,n=window.jQuery||window.Zepto;return e&&e.dom?e.dom(t).cloneNode(!0):n?n(t).clone(!0)[0]:t.cloneNode(!0)}function x(t,e){R(t,"position","absolute"),R(t,"top",e.top),R(t,"left",e.left),R(t,"width",e.width),R(t,"height",e.height)}function A(t){R(t,"position",""),R(t,"top",""),R(t,"left",""),R(t,"width",""),R(t,"height","")}function L(n,o,i){var r={};return Array.from(n.children).forEach(function(t){var e;P(t,o.draggable,n,!1)&&!t.animated&&t!==i&&(e=X(t),r.left=Math.min(null!==(t=r.left)&&void 0!==t?t:1/0,e.left),r.top=Math.min(null!==(t=r.top)&&void 0!==t?t:1/0,e.top),r.right=Math.max(null!==(t=r.right)&&void 0!==t?t:-1/0,e.right),r.bottom=Math.max(null!==(t=r.bottom)&&void 0!==t?t:-1/0,e.bottom))}),r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}var K="Sortable"+(new Date).getTime();function N(){var e,o=[];return{captureAnimationState:function(){o=[],this.options.animation&&[].slice.call(this.el.children).forEach(function(t){var e,n;"none"!==R(t,"display")&&t!==Ht.ghost&&(o.push({target:t,rect:X(t)}),e=I({},o[o.length-1].rect),!t.thisAnimationDuration||(n=D(t,!0))&&(e.top-=n.f,e.left-=n.e),t.fromRect=e)})},addAnimationState:function(t){o.push(t)},removeAnimationState:function(t){o.splice(function(t,e){for(var n in t)if(t.hasOwnProperty(n))for(var o in e)if(e.hasOwnProperty(o)&&e[o]===t[n][o])return Number(n);return-1}(o,{target:t}),1)},animateAll:function(t){var c=this;if(!this.options.animation)return clearTimeout(e),void("function"==typeof t&&t());var u=!1,d=0;o.forEach(function(t){var e=0,n=t.target,o=n.fromRect,i=X(n),r=n.prevFromRect,a=n.prevToRect,l=t.rect,s=D(n,!0);s&&(i.top-=s.f,i.left-=s.e),n.toRect=i,n.thisAnimationDuration&&_(r,i)&&!_(o,i)&&(l.top-i.top)/(l.left-i.left)==(o.top-i.top)/(o.left-i.left)&&(t=l,s=r,r=a,a=c.options,e=Math.sqrt(Math.pow(s.top-t.top,2)+Math.pow(s.left-t.left,2))/Math.sqrt(Math.pow(s.top-r.top,2)+Math.pow(s.left-r.left,2))*a.animation),_(i,o)||(n.prevFromRect=o,n.prevToRect=i,e=e||c.options.animation,c.animate(n,l,i,e)),e&&(u=!0,d=Math.max(d,e),clearTimeout(n.animationResetTimer),n.animationResetTimer=setTimeout(function(){n.animationTime=0,n.prevFromRect=null,n.fromRect=null,n.prevToRect=null,n.thisAnimationDuration=null},e),n.thisAnimationDuration=e)}),clearTimeout(e),u?e=setTimeout(function(){"function"==typeof t&&t()},d):"function"==typeof t&&t(),o=[]},animate:function(t,e,n,o){var i,r;o&&(R(t,"transition",""),R(t,"transform",""),i=(r=D(this.el))&&r.a,r=r&&r.d,i=(e.left-n.left)/(i||1),r=(e.top-n.top)/(r||1),t.animatingX=!!i,t.animatingY=!!r,R(t,"transform","translate3d("+i+"px,"+r+"px,0)"),this.forRepaintDummy=t.offsetWidth,R(t,"transition","transform "+o+"ms"+(this.options.easing?" "+this.options.easing:"")),R(t,"transform","translate3d(0,0,0)"),"number"==typeof t.animated&&clearTimeout(t.animated),t.animated=setTimeout(function(){R(t,"transition",""),R(t,"transform",""),t.animated=!1,t.animatingX=!1,t.animatingY=!1},o))}}}var W=[],z={initializeByDefault:!0},G={mount:function(e){for(var t in z)!z.hasOwnProperty(t)||t in e||(e[t]=z[t]);W.forEach(function(t){if(t.pluginName===e.pluginName)throw"Sortable: Cannot mount plugin ".concat(e.pluginName," more than once")}),W.push(e)},pluginEvent:function(e,n,o){var t=this;this.eventCanceled=!1,o.cancel=function(){t.eventCanceled=!0};var i=e+"Global";W.forEach(function(t){n[t.pluginName]&&(n[t.pluginName][i]&&n[t.pluginName][i](I({sortable:n},o)),n.options[t.pluginName]&&n[t.pluginName][e]&&n[t.pluginName][e](I({sortable:n},o)))})},initializePlugins:function(n,o,i,t){for(var e in W.forEach(function(t){var e=t.pluginName;(n.options[e]||t.initializeByDefault)&&((t=new t(n,o,n.options)).sortable=n,t.options=n.options,n[e]=t,a(i,t.defaults))}),n.options){var r;n.options.hasOwnProperty(e)&&(void 0!==(r=this.modifyOption(n,e,n.options[e]))&&(n.options[e]=r))}},getEventProperties:function(e,n){var o={};return W.forEach(function(t){"function"==typeof t.eventProperties&&a(o,t.eventProperties.call(n[t.pluginName],e))}),o},modifyOption:function(e,n,o){var i;return W.forEach(function(t){e[t.pluginName]&&t.optionListeners&&"function"==typeof t.optionListeners[n]&&(i=t.optionListeners[n].call(e[t.pluginName],o))}),i}};function U(t){var e=t.sortable,n=t.rootEl,o=t.name,i=t.targetEl,r=t.cloneEl,a=t.toEl,l=t.fromEl,s=t.oldIndex,c=t.newIndex,u=t.oldDraggableIndex,d=t.newDraggableIndex,h=t.originalEvent,f=t.putSortable,p=t.extraEventProperties;if(e=e||n&&n[K]){var g,m=e.options,t="on"+o.charAt(0).toUpperCase()+o.substr(1);!window.CustomEvent||y||w?(g=document.createEvent("Event")).initEvent(o,!0,!0):g=new CustomEvent(o,{bubbles:!0,cancelable:!0}),g.to=a||n,g.from=l||n,g.item=i||n,g.clone=r,g.oldIndex=s,g.newIndex=c,g.oldDraggableIndex=u,g.newDraggableIndex=d,g.originalEvent=h,g.pullMode=f?f.lastPutMode:void 0;var v,b=I(I({},p),G.getEventProperties(o,e));for(v in b)g[v]=b[v];n&&n.dispatchEvent(g),m[t]&&m[t].call(e,g)}}function q(t,e){var n=(o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{}).evt,o=l(o,V);G.pluginEvent.bind(Ht)(t,e,I({dragEl:$,parentEl:Q,ghostEl:J,rootEl:tt,nextEl:et,lastDownEl:nt,cloneEl:ot,cloneHidden:it,dragStarted:vt,putSortable:ut,activeSortable:Ht.active,originalEvent:n,oldIndex:rt,oldDraggableIndex:lt,newIndex:at,newDraggableIndex:st,hideGhostForTarget:Yt,unhideGhostForTarget:Bt,cloneNowHidden:function(){it=!0},cloneNowShown:function(){it=!1},dispatchSortableEvent:function(t){Z({sortable:e,name:t,originalEvent:n})}},o))}var V=["evt"];function Z(t){U(I({putSortable:ut,cloneEl:ot,targetEl:$,rootEl:tt,oldIndex:rt,oldDraggableIndex:lt,newIndex:at,newDraggableIndex:st},t))}var $,Q,J,tt,et,nt,ot,it,rt,at,lt,st,ct,ut,dt,ht,ft,pt,gt,mt,vt,bt,yt,wt,Dt,Et=!1,St=!1,_t=[],Ct=!1,Tt=!1,xt=[],Ot=!1,Mt=[],At="undefined"!=typeof document,Nt=d,It=w||y?"cssFloat":"float",Pt=At&&!n&&!d&&"draggable"in document.createElement("div"),kt=function(){if(At){if(y)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents}}(),Rt=function(t,e){var n=R(t),o=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),i=B(t,0,e),r=B(t,1,e),a=i&&R(i),l=r&&R(r),s=a&&parseInt(a.marginLeft)+parseInt(a.marginRight)+X(i).width,t=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+X(r).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(i&&a.float&&"none"!==a.float){e="left"===a.float?"left":"right";return!r||"both"!==l.clear&&l.clear!==e?"horizontal":"vertical"}return i&&("block"===a.display||"flex"===a.display||"table"===a.display||"grid"===a.display||o<=s&&"none"===n[It]||r&&"none"===n[It]&&o<s+t)?"vertical":"horizontal"},Xt=function(t){function l(r,a){return function(t,e,n,o){var i=t.options.group.name&&e.options.group.name&&t.options.group.name===e.options.group.name;if(null==r&&(a||i))return!0;if(null==r||!1===r)return!1;if(a&&"clone"===r)return r;if("function"==typeof r)return l(r(t,e,n,o),a)(t,e,n,o);e=(a?t:e).options.group.name;return!0===r||"string"==typeof r&&r===e||r.join&&-1<r.indexOf(e)}}var e={},n=t.group;n&&"object"==s(n)||(n={name:n}),e.name=n.name,e.checkPull=l(n.pull,!0),e.checkPut=l(n.put),e.revertClone=n.revertClone,t.group=e},Yt=function(){!kt&&J&&R(J,"display","none")},Bt=function(){!kt&&J&&R(J,"display","")};At&&!n&&document.addEventListener("click",function(t){if(St)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),St=!1},!0);function Ft(t){if($){t=t.touches?t.touches[0]:t;var e=(i=t.clientX,r=t.clientY,_t.some(function(t){var e=t[K].options.emptyInsertThreshold;if(e&&!F(t)){var n=X(t),o=i>=n.left-e&&i<=n.right+e,e=r>=n.top-e&&r<=n.bottom+e;return o&&e?a=t:void 0}}),a);if(e){var n,o={};for(n in t)t.hasOwnProperty(n)&&(o[n]=t[n]);o.target=o.rootEl=e,o.preventDefault=void 0,o.stopPropagation=void 0,e[K]._onDragOver(o)}}var i,r,a}function jt(t){$&&$.parentNode[K]._isOutsideThisEl(t.target)}function Ht(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=a({},e),t[K]=this;var n,o,i={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Rt(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Ht.supportPointer&&"PointerEvent"in window&&(!u||d),emptyInsertThreshold:5};for(n in G.initializePlugins(this,t,i),i)n in e||(e[n]=i[n]);for(o in Xt(e),this)"_"===o.charAt(0)&&"function"==typeof this[o]&&(this[o]=this[o].bind(this));this.nativeDraggable=!e.forceFallback&&Pt,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?f(t,"pointerdown",this._onTapStart):(f(t,"mousedown",this._onTapStart),f(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(f(t,"dragover",this),f(t,"dragenter",this)),_t.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),a(this,N())}function Lt(t,e,n,o,i,r,a,l){var s,c,u=t[K],d=u.options.onMove;return!window.CustomEvent||y||w?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=e,s.from=t,s.dragged=n,s.draggedRect=o,s.related=i||e,s.relatedRect=r||X(e),s.willInsertAfter=l,s.originalEvent=a,t.dispatchEvent(s),c=d?d.call(u,s,a):c}function Kt(t){t.draggable=!1}function Wt(){Ot=!1}function zt(t){return setTimeout(t,0)}function Gt(t){return clearTimeout(t)}Ht.prototype={constructor:Ht,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(bt=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,$):this.options.direction},_onTapStart:function(e){if(e.cancelable){var n=this,o=this.el,t=this.options,i=t.preventOnFilter,r=e.type,a=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,l=(a||e).target,s=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,c=t.filter;if(!function(t){Mt.length=0;var e=t.getElementsByTagName("input"),n=e.length;for(;n--;){var o=e[n];o.checked&&Mt.push(o)}}(o),!$&&!(/mousedown|pointerdown/.test(r)&&0!==e.button||t.disabled)&&!s.isContentEditable&&(this.nativeDraggable||!u||!l||"SELECT"!==l.tagName.toUpperCase())&&!((l=P(l,t.draggable,o,!1))&&l.animated||nt===l)){if(rt=j(l),lt=j(l,t.draggable),"function"==typeof c){if(c.call(this,e,l,this))return Z({sortable:n,rootEl:s,name:"filter",targetEl:l,toEl:o,fromEl:o}),q("filter",n,{evt:e}),void(i&&e.preventDefault())}else if(c=c&&c.split(",").some(function(t){if(t=P(s,t.trim(),o,!1))return Z({sortable:n,rootEl:t,name:"filter",targetEl:l,fromEl:o,toEl:o}),q("filter",n,{evt:e}),!0}))return void(i&&e.preventDefault());t.handle&&!P(s,t.handle,o,!1)||this._prepareDragStart(e,a,l)}}},_prepareDragStart:function(t,e,n){var o,i=this,r=i.el,a=i.options,l=r.ownerDocument;n&&!$&&n.parentNode===r&&(o=X(n),tt=r,Q=($=n).parentNode,et=$.nextSibling,nt=n,ct=a.group,dt={target:Ht.dragged=$,clientX:(e||t).clientX,clientY:(e||t).clientY},gt=dt.clientX-o.left,mt=dt.clientY-o.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,$.style["will-change"]="all",o=function(){q("delayEnded",i,{evt:t}),Ht.eventCanceled?i._onDrop():(i._disableDelayedDragEvents(),!c&&i.nativeDraggable&&($.draggable=!0),i._triggerDragStart(t,e),Z({sortable:i,name:"choose",originalEvent:t}),k($,a.chosenClass,!0))},a.ignore.split(",").forEach(function(t){E($,t.trim(),Kt)}),f(l,"dragover",Ft),f(l,"mousemove",Ft),f(l,"touchmove",Ft),a.supportPointer?(f(l,"pointerup",i._onDrop),this.nativeDraggable||f(l,"pointercancel",i._onDrop)):(f(l,"mouseup",i._onDrop),f(l,"touchend",i._onDrop),f(l,"touchcancel",i._onDrop)),c&&this.nativeDraggable&&(this.options.touchStartThreshold=4,$.draggable=!0),q("delayStart",this,{evt:t}),!a.delay||a.delayOnTouchOnly&&!e||this.nativeDraggable&&(w||y)?o():Ht.eventCanceled?this._onDrop():(a.supportPointer?(f(l,"pointerup",i._disableDelayedDrag),f(l,"pointercancel",i._disableDelayedDrag)):(f(l,"mouseup",i._disableDelayedDrag),f(l,"touchend",i._disableDelayedDrag),f(l,"touchcancel",i._disableDelayedDrag)),f(l,"mousemove",i._delayedDragTouchMoveHandler),f(l,"touchmove",i._delayedDragTouchMoveHandler),a.supportPointer&&f(l,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(o,a.delay)))},_delayedDragTouchMoveHandler:function(t){t=t.touches?t.touches[0]:t;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){$&&Kt($),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;p(t,"mouseup",this._disableDelayedDrag),p(t,"touchend",this._disableDelayedDrag),p(t,"touchcancel",this._disableDelayedDrag),p(t,"pointerup",this._disableDelayedDrag),p(t,"pointercancel",this._disableDelayedDrag),p(t,"mousemove",this._delayedDragTouchMoveHandler),p(t,"touchmove",this._delayedDragTouchMoveHandler),p(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?f(document,"pointermove",this._onTouchMove):f(document,e?"touchmove":"mousemove",this._onTouchMove):(f($,"dragend",this),f(tt,"dragstart",this._onDragStart));try{document.selection?zt(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){var n;Et=!1,tt&&$?(q("dragStarted",this,{evt:e}),this.nativeDraggable&&f(document,"dragover",jt),n=this.options,t||k($,n.dragClass,!1),k($,n.ghostClass,!0),Ht.active=this,t&&this._appendGhost(),Z({sortable:this,name:"start",originalEvent:e})):this._nulling()},_emulateDragOver:function(){if(ht){this._lastX=ht.clientX,this._lastY=ht.clientY,Yt();for(var t=document.elementFromPoint(ht.clientX,ht.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(ht.clientX,ht.clientY))!==e;)e=t;if($.parentNode[K]._isOutsideThisEl(t),e)do{if(e[K])if(e[K]._onDragOver({clientX:ht.clientX,clientY:ht.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break}while(e=m(t=e));Bt()}},_onTouchMove:function(t){if(dt){var e=this.options,n=e.fallbackTolerance,o=e.fallbackOffset,i=t.touches?t.touches[0]:t,r=J&&D(J,!0),a=J&&r&&r.a,l=J&&r&&r.d,e=Nt&&Dt&&S(Dt),a=(i.clientX-dt.clientX+o.x)/(a||1)+(e?e[0]-xt[0]:0)/(a||1),l=(i.clientY-dt.clientY+o.y)/(l||1)+(e?e[1]-xt[1]:0)/(l||1);if(!Ht.active&&!Et){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))<n)return;this._onDragStart(t,!0)}J&&(r?(r.e+=a-(ft||0),r.f+=l-(pt||0)):r={a:1,b:0,c:0,d:1,e:a,f:l},r="matrix(".concat(r.a,",").concat(r.b,",").concat(r.c,",").concat(r.d,",").concat(r.e,",").concat(r.f,")"),R(J,"webkitTransform",r),R(J,"mozTransform",r),R(J,"msTransform",r),R(J,"transform",r),ft=a,pt=l,ht=i),t.cancelable&&t.preventDefault()}},_appendGhost:function(){if(!J){var t=this.options.fallbackOnBody?document.body:tt,e=X($,!0,Nt,!0,t),n=this.options;if(Nt){for(Dt=t;"static"===R(Dt,"position")&&"none"===R(Dt,"transform")&&Dt!==document;)Dt=Dt.parentNode;Dt!==document.body&&Dt!==document.documentElement?(Dt===document&&(Dt=O()),e.top+=Dt.scrollTop,e.left+=Dt.scrollLeft):Dt=O(),xt=S(Dt)}k(J=$.cloneNode(!0),n.ghostClass,!1),k(J,n.fallbackClass,!0),k(J,n.dragClass,!0),R(J,"transition",""),R(J,"transform",""),R(J,"box-sizing","border-box"),R(J,"margin",0),R(J,"top",e.top),R(J,"left",e.left),R(J,"width",e.width),R(J,"height",e.height),R(J,"opacity","0.8"),R(J,"position",Nt?"absolute":"fixed"),R(J,"zIndex","100000"),R(J,"pointerEvents","none"),Ht.ghost=J,t.appendChild(J),R(J,"transform-origin",gt/parseInt(J.style.width)*100+"% "+mt/parseInt(J.style.height)*100+"%")}},_onDragStart:function(t,e){var n=this,o=t.dataTransfer,i=n.options;q("dragStart",this,{evt:t}),Ht.eventCanceled?this._onDrop():(q("setupClone",this),Ht.eventCanceled||((ot=T($)).removeAttribute("id"),ot.draggable=!1,ot.style["will-change"]="",this._hideClone(),k(ot,this.options.chosenClass,!1),Ht.clone=ot),n.cloneId=zt(function(){q("clone",n),Ht.eventCanceled||(n.options.removeCloneOnHide||tt.insertBefore(ot,$),n._hideClone(),Z({sortable:n,name:"clone"}))}),e||k($,i.dragClass,!0),e?(St=!0,n._loopId=setInterval(n._emulateDragOver,50)):(p(document,"mouseup",n._onDrop),p(document,"touchend",n._onDrop),p(document,"touchcancel",n._onDrop),o&&(o.effectAllowed="move",i.setData&&i.setData.call(n,o,$)),f(document,"drop",n),R($,"transform","translateZ(0)")),Et=!0,n._dragStartId=zt(n._dragStarted.bind(n,e,t)),f(document,"selectstart",n),vt=!0,window.getSelection().removeAllRanges(),u&&R(document.body,"user-select","none"))},_onDragOver:function(n){var o,i,r,t,e,a=this.el,l=n.target,s=this.options,c=s.group,u=Ht.active,d=ct===c,h=s.sort,f=ut||u,p=this,g=!1;if(!Ot){if(void 0!==n.preventDefault&&n.cancelable&&n.preventDefault(),l=P(l,s.draggable,a,!0),O("dragOver"),Ht.eventCanceled)return g;if($.contains(n.target)||l.animated&&l.animatingX&&l.animatingY||p._ignoreWhileAnimating===l)return A(!1);if(St=!1,u&&!s.disabled&&(d?h||(i=Q!==tt):ut===this||(this.lastPutMode=ct.checkPull(this,u,$,n))&&c.checkPut(this,u,$,n))){if(r="vertical"===this._getDirection(n,l),o=X($),O("dragOverValid"),Ht.eventCanceled)return g;if(i)return Q=tt,M(),this._hideClone(),O("revert"),Ht.eventCanceled||(et?tt.insertBefore($,et):tt.appendChild($)),A(!0);var m=F(a,s.draggable);if(m&&(S=n,c=r,x=X(F((E=this).el,E.options.draggable)),E=L(E.el,E.options,J),!(c?S.clientX>E.right+10||S.clientY>x.bottom&&S.clientX>x.left:S.clientY>E.bottom+10||S.clientX>x.right&&S.clientY>x.top)||m.animated)){if(m&&(t=n,e=r,C=X(B((_=this).el,0,_.options,!0)),_=L(_.el,_.options,J),e?t.clientX<_.left-10||t.clientY<C.top&&t.clientX<C.right:t.clientY<_.top-10||t.clientY<C.bottom&&t.clientX<C.left)){var v=B(a,0,s,!0);if(v===$)return A(!1);if(D=X(l=v),!1!==Lt(tt,a,$,o,l,D,n,!1))return M(),a.insertBefore($,v),Q=a,N(),A(!0)}else if(l.parentNode===a){var b,y,w,D=X(l),E=$.parentNode!==a,S=(S=$.animated&&$.toRect||o,x=l.animated&&l.toRect||D,_=(e=r)?S.left:S.top,t=e?S.right:S.bottom,C=e?S.width:S.height,v=e?x.left:x.top,S=e?x.right:x.bottom,x=e?x.width:x.height,!(_===v||t===S||_+C/2===v+x/2)),_=r?"top":"left",C=Y(l,"top","top")||Y($,"top","top"),v=C?C.scrollTop:void 0;if(bt!==l&&(y=D[_],Ct=!1,Tt=!S&&s.invertSwap||E),0!==(b=function(t,e,n,o,i,r,a,l){var s=o?t.clientY:t.clientX,c=o?n.height:n.width,t=o?n.top:n.left,o=o?n.bottom:n.right,n=!1;if(!a)if(l&&wt<c*i){if(Ct=!Ct&&(1===yt?t+c*r/2<s:s<o-c*r/2)?!0:Ct)n=!0;else if(1===yt?s<t+wt:o-wt<s)return-yt}else if(t+c*(1-i)/2<s&&s<o-c*(1-i)/2)return function(t){return j($)<j(t)?1:-1}(e);if((n=n||a)&&(s<t+c*r/2||o-c*r/2<s))return t+c/2<s?1:-1;return 0}(n,l,D,r,S?1:s.swapThreshold,null==s.invertedSwapThreshold?s.swapThreshold:s.invertedSwapThreshold,Tt,bt===l)))for(var T=j($);(w=Q.children[T-=b])&&("none"===R(w,"display")||w===J););if(0===b||w===l)return A(!1);yt=b;var x=(bt=l).nextElementSibling,E=!1,S=Lt(tt,a,$,o,l,D,n,E=1===b);if(!1!==S)return 1!==S&&-1!==S||(E=1===S),Ot=!0,setTimeout(Wt,30),M(),E&&!x?a.appendChild($):l.parentNode.insertBefore($,E?x:l),C&&H(C,0,v-C.scrollTop),Q=$.parentNode,void 0===y||Tt||(wt=Math.abs(y-X(l)[_])),N(),A(!0)}}else{if(m===$)return A(!1);if((l=m&&a===n.target?m:l)&&(D=X(l)),!1!==Lt(tt,a,$,o,l,D,n,!!l))return M(),m&&m.nextSibling?a.insertBefore($,m.nextSibling):a.appendChild($),Q=a,N(),A(!0)}if(a.contains($))return A(!1)}return!1}function O(t,e){q(t,p,I({evt:n,isOwner:d,axis:r?"vertical":"horizontal",revert:i,dragRect:o,targetRect:D,canSort:h,fromSortable:f,target:l,completed:A,onMove:function(t,e){return Lt(tt,a,$,o,t,X(t),n,e)},changed:N},e))}function M(){O("dragOverAnimationCapture"),p.captureAnimationState(),p!==f&&f.captureAnimationState()}function A(t){return O("dragOverCompleted",{insertion:t}),t&&(d?u._hideClone():u._showClone(p),p!==f&&(k($,(ut||u).options.ghostClass,!1),k($,s.ghostClass,!0)),ut!==p&&p!==Ht.active?ut=p:p===Ht.active&&ut&&(ut=null),f===p&&(p._ignoreWhileAnimating=l),p.animateAll(function(){O("dragOverAnimationComplete"),p._ignoreWhileAnimating=null}),p!==f&&(f.animateAll(),f._ignoreWhileAnimating=null)),(l===$&&!$.animated||l===a&&!l.animated)&&(bt=null),s.dragoverBubble||n.rootEl||l===document||($.parentNode[K]._isOutsideThisEl(n.target),t||Ft(n)),!s.dragoverBubble&&n.stopPropagation&&n.stopPropagation(),g=!0}function N(){at=j($),st=j($,s.draggable),Z({sortable:p,name:"change",toEl:a,newIndex:at,newDraggableIndex:st,originalEvent:n})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){p(document,"mousemove",this._onTouchMove),p(document,"touchmove",this._onTouchMove),p(document,"pointermove",this._onTouchMove),p(document,"dragover",Ft),p(document,"mousemove",Ft),p(document,"touchmove",Ft)},_offUpEvents:function(){var t=this.el.ownerDocument;p(t,"mouseup",this._onDrop),p(t,"touchend",this._onDrop),p(t,"pointerup",this._onDrop),p(t,"pointercancel",this._onDrop),p(t,"touchcancel",this._onDrop),p(document,"selectstart",this)},_onDrop:function(t){var e=this.el,n=this.options;at=j($),st=j($,n.draggable),q("drop",this,{evt:t}),Q=$&&$.parentNode,at=j($),st=j($,n.draggable),Ht.eventCanceled||(Ct=Tt=Et=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Gt(this.cloneId),Gt(this._dragStartId),this.nativeDraggable&&(p(document,"drop",this),p(e,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),u&&R(document.body,"user-select",""),R($,"transform",""),t&&(vt&&(t.cancelable&&t.preventDefault(),n.dropBubble||t.stopPropagation()),J&&J.parentNode&&J.parentNode.removeChild(J),(tt===Q||ut&&"clone"!==ut.lastPutMode)&&ot&&ot.parentNode&&ot.parentNode.removeChild(ot),$&&(this.nativeDraggable&&p($,"dragend",this),Kt($),$.style["will-change"]="",vt&&!Et&&k($,(ut||this).options.ghostClass,!1),k($,this.options.chosenClass,!1),Z({sortable:this,name:"unchoose",toEl:Q,newIndex:null,newDraggableIndex:null,originalEvent:t}),tt!==Q?(0<=at&&(Z({rootEl:Q,name:"add",toEl:Q,fromEl:tt,originalEvent:t}),Z({sortable:this,name:"remove",toEl:Q,originalEvent:t}),Z({rootEl:Q,name:"sort",toEl:Q,fromEl:tt,originalEvent:t}),Z({sortable:this,name:"sort",toEl:Q,originalEvent:t})),ut&&ut.save()):at!==rt&&0<=at&&(Z({sortable:this,name:"update",toEl:Q,originalEvent:t}),Z({sortable:this,name:"sort",toEl:Q,originalEvent:t})),Ht.active&&(null!=at&&-1!==at||(at=rt,st=lt),Z({sortable:this,name:"end",toEl:Q,originalEvent:t}),this.save())))),this._nulling()},_nulling:function(){q("nulling",this),tt=$=Q=J=et=ot=nt=it=dt=ht=vt=at=st=rt=lt=bt=yt=ut=ct=Ht.dragged=Ht.ghost=Ht.clone=Ht.active=null;var e=this.el;Mt.forEach(function(t){e.contains(t)&&(t.checked=!0)}),Mt.length=ft=pt=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":$&&(this._onDragOver(t),function(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move");t.cancelable&&t.preventDefault()}(t));break;case"selectstart":t.preventDefault()}},toArray:function(){for(var t,e=[],n=this.el.children,o=0,i=n.length,r=this.options;o<i;o++)P(t=n[o],r.draggable,this.el,!1)&&e.push(t.getAttribute(r.dataIdAttr)||function(t){var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,o=0;for(;n--;)o+=e.charCodeAt(n);return o.toString(36)}(t));return e},sort:function(t,e){var n={},o=this.el;this.toArray().forEach(function(t,e){e=o.children[e];P(e,this.options.draggable,o,!1)&&(n[t]=e)},this),e&&this.captureAnimationState(),t.forEach(function(t){n[t]&&(o.removeChild(n[t]),o.appendChild(n[t]))}),e&&this.animateAll()},save:function(){var t=this.options.store;t&&t.set&&t.set(this)},closest:function(t,e){return P(t,e||this.options.draggable,this.el,!1)},option:function(t,e){var n=this.options;if(void 0===e)return n[t];var o=G.modifyOption(this,t,e);n[t]=void 0!==o?o:e,"group"===t&&Xt(n)},destroy:function(){q("destroy",this);var t=this.el;t[K]=null,p(t,"mousedown",this._onTapStart),p(t,"touchstart",this._onTapStart),p(t,"pointerdown",this._onTapStart),this.nativeDraggable&&(p(t,"dragover",this),p(t,"dragenter",this)),Array.prototype.forEach.call(t.querySelectorAll("[draggable]"),function(t){t.removeAttribute("draggable")}),this._onDrop(),this._disableDelayedDragEvents(),_t.splice(_t.indexOf(this.el),1),this.el=t=null},_hideClone:function(){it||(q("hideClone",this),Ht.eventCanceled||(R(ot,"display","none"),this.options.removeCloneOnHide&&ot.parentNode&&ot.parentNode.removeChild(ot),it=!0))},_showClone:function(t){"clone"===t.lastPutMode?it&&(q("showClone",this),Ht.eventCanceled||($.parentNode!=tt||this.options.group.revertClone?et?tt.insertBefore(ot,et):tt.appendChild(ot):tt.insertBefore(ot,$),this.options.group.revertClone&&this.animate($,ot),R(ot,"display",""),it=!1)):this._hideClone()}},At&&f(document,"touchmove",function(t){(Ht.active||Et)&&t.cancelable&&t.preventDefault()}),Ht.utils={on:f,off:p,css:R,find:E,is:function(t,e){return!!P(t,e,t,!1)},extend:function(t,e){if(t&&e)for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},throttle:C,closest:P,toggleClass:k,clone:T,index:j,nextTick:zt,cancelNextTick:Gt,detectDirection:Rt,getChild:B,expando:K},Ht.get=function(t){return t[K]},Ht.mount=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];(e=e[0].constructor===Array?e[0]:e).forEach(function(t){if(!t.prototype||!t.prototype.constructor)throw"Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(t));t.utils&&(Ht.utils=I(I({},Ht.utils),t.utils)),G.mount(t)})},Ht.create=function(t,e){return new Ht(t,e)};var Ut,qt,Vt,Zt,$t,Qt,Jt=[],te=!(Ht.version="1.15.7");function ee(){Jt.forEach(function(t){clearInterval(t.pid)}),Jt=[]}function ne(){clearInterval(Qt)}var oe,ie=C(function(n,t,e,o){if(t.scroll){var i,r=(n.touches?n.touches[0]:n).clientX,a=(n.touches?n.touches[0]:n).clientY,l=t.scrollSensitivity,s=t.scrollSpeed,c=O(),u=!1;qt!==e&&(qt=e,ee(),Ut=t.scroll,i=t.scrollFn,!0===Ut&&(Ut=M(e,!0)));var d=0,h=Ut;do{var f=h,p=X(f),g=p.top,m=p.bottom,v=p.left,b=p.right,y=p.width,w=p.height,D=void 0,E=void 0,S=f.scrollWidth,_=f.scrollHeight,C=R(f),T=f.scrollLeft,p=f.scrollTop,E=f===c?(D=y<S&&("auto"===C.overflowX||"scroll"===C.overflowX||"visible"===C.overflowX),w<_&&("auto"===C.overflowY||"scroll"===C.overflowY||"visible"===C.overflowY)):(D=y<S&&("auto"===C.overflowX||"scroll"===C.overflowX),w<_&&("auto"===C.overflowY||"scroll"===C.overflowY)),T=D&&(Math.abs(b-r)<=l&&T+y<S)-(Math.abs(v-r)<=l&&!!T),p=E&&(Math.abs(m-a)<=l&&p+w<_)-(Math.abs(g-a)<=l&&!!p);if(!Jt[d])for(var x=0;x<=d;x++)Jt[x]||(Jt[x]={});Jt[d].vx==T&&Jt[d].vy==p&&Jt[d].el===f||(Jt[d].el=f,Jt[d].vx=T,Jt[d].vy=p,clearInterval(Jt[d].pid),0==T&&0==p||(u=!0,Jt[d].pid=setInterval(function(){o&&0===this.layer&&Ht.active._onTouchMove($t);var t=Jt[this.layer].vy?Jt[this.layer].vy*s:0,e=Jt[this.layer].vx?Jt[this.layer].vx*s:0;"function"==typeof i&&"continue"!==i.call(Ht.dragged.parentNode[K],e,t,n,$t,Jt[this.layer].el)||H(Jt[this.layer].el,e,t)}.bind({layer:d}),24))),d++}while(t.bubbleScroll&&h!==c&&(h=M(h,!1)));te=u}},30),n=function(t){var e=t.originalEvent,n=t.putSortable,o=t.dragEl,i=t.activeSortable,r=t.dispatchSortableEvent,a=t.hideGhostForTarget,t=t.unhideGhostForTarget;e&&(i=n||i,a(),e=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:e,e=document.elementFromPoint(e.clientX,e.clientY),t(),i&&!i.el.contains(e)&&(r("spill"),this.onSpill({dragEl:o,putSortable:n})))};function re(){}function ae(){}re.prototype={startIndex:null,dragStart:function(t){t=t.oldDraggableIndex;this.startIndex=t},onSpill:function(t){var e=t.dragEl,n=t.putSortable;this.sortable.captureAnimationState(),n&&n.captureAnimationState();t=B(this.sortable.el,this.startIndex,this.options);t?this.sortable.el.insertBefore(e,t):this.sortable.el.appendChild(e),this.sortable.animateAll(),n&&n.animateAll()},drop:n},a(re,{pluginName:"revertOnSpill"}),ae.prototype={onSpill:function(t){var e=t.dragEl,t=t.putSortable||this.sortable;t.captureAnimationState(),e.parentNode&&e.parentNode.removeChild(e),t.animateAll()},drop:n},a(ae,{pluginName:"removeOnSpill"});var le,se,ce,ue,de,he=[],fe=[],pe=!1,ge=!1,me=!1;function ve(n,o){fe.forEach(function(t,e){e=o.children[t.sortableIndex+(n?Number(e):0)];e?o.insertBefore(t,e):o.appendChild(t)})}function be(){he.forEach(function(t){t!==ce&&t.parentNode&&t.parentNode.removeChild(t)})}return Ht.mount(new function(){function t(){for(var t in this.defaults={scroll:!0,forceAutoScrollFallback:!1,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:!0},this)"_"===t.charAt(0)&&"function"==typeof this[t]&&(this[t]=this[t].bind(this))}return t.prototype={dragStarted:function(t){t=t.originalEvent;this.sortable.nativeDraggable?f(document,"dragover",this._handleAutoScroll):this.options.supportPointer?f(document,"pointermove",this._handleFallbackAutoScroll):t.touches?f(document,"touchmove",this._handleFallbackAutoScroll):f(document,"mousemove",this._handleFallbackAutoScroll)},dragOverCompleted:function(t){t=t.originalEvent;this.options.dragOverBubble||t.rootEl||this._handleAutoScroll(t)},drop:function(){this.sortable.nativeDraggable?p(document,"dragover",this._handleAutoScroll):(p(document,"pointermove",this._handleFallbackAutoScroll),p(document,"touchmove",this._handleFallbackAutoScroll),p(document,"mousemove",this._handleFallbackAutoScroll)),ne(),ee(),clearTimeout(v),v=void 0},nulling:function(){$t=qt=Ut=te=Qt=Vt=Zt=null,Jt.length=0},_handleFallbackAutoScroll:function(t){this._handleAutoScroll(t,!0)},_handleAutoScroll:function(e,n){var o,i=this,r=(e.touches?e.touches[0]:e).clientX,a=(e.touches?e.touches[0]:e).clientY,t=document.elementFromPoint(r,a);$t=e,n||this.options.forceAutoScrollFallback||w||y||u?(ie(e,this.options,t,n),o=M(t,!0),!te||Qt&&r===Vt&&a===Zt||(Qt&&ne(),Qt=setInterval(function(){var t=M(document.elementFromPoint(r,a),!0);t!==o&&(o=t,ee()),ie(e,i.options,t,n)},10),Vt=r,Zt=a)):this.options.bubbleScroll&&M(t,!0)!==O()?ie(e,this.options,M(t,!1),!1):ee()}},a(t,{pluginName:"scroll",initializeByDefault:!0})}),Ht.mount(ae,re),Ht.mount(new function(){function t(){this.defaults={swapClass:"sortable-swap-highlight"}}return t.prototype={dragStart:function(t){t=t.dragEl;oe=t},dragOverValid:function(t){var e=t.completed,n=t.target,o=t.onMove,i=t.activeSortable,r=t.changed,a=t.cancel;i.options.swap&&(t=this.sortable.el,i=this.options,n&&n!==t&&(t=oe,oe=!1!==o(n)?(k(n,i.swapClass,!0),n):null,t&&t!==oe&&k(t,i.swapClass,!1)),r(),e(!0),a())},drop:function(t){var e,n,o=t.activeSortable,i=t.putSortable,r=t.dragEl,a=i||this.sortable,l=this.options;oe&&k(oe,l.swapClass,!1),oe&&(l.swap||i&&i.options.swap)&&r!==oe&&(a.captureAnimationState(),a!==o&&o.captureAnimationState(),n=oe,t=(e=r).parentNode,l=n.parentNode,t&&l&&!t.isEqualNode(n)&&!l.isEqualNode(e)&&(i=j(e),r=j(n),t.isEqualNode(l)&&i<r&&r++,t.insertBefore(n,t.children[i]),l.insertBefore(e,l.children[r])),a.animateAll(),a!==o&&o.animateAll())},nulling:function(){oe=null}},a(t,{pluginName:"swap",eventProperties:function(){return{swapItem:oe}}})}),Ht.mount(new function(){function t(o){for(var t in this)"_"===t.charAt(0)&&"function"==typeof this[t]&&(this[t]=this[t].bind(this));o.options.avoidImplicitDeselect||(o.options.supportPointer?f(document,"pointerup",this._deselectMultiDrag):(f(document,"mouseup",this._deselectMultiDrag),f(document,"touchend",this._deselectMultiDrag))),f(document,"keydown",this._checkKeyDown),f(document,"keyup",this._checkKeyUp),this.defaults={selectedClass:"sortable-selected",multiDragKey:null,avoidImplicitDeselect:!1,setData:function(t,e){var n="";he.length&&se===o?he.forEach(function(t,e){n+=(e?", ":"")+t.textContent}):n=e.textContent,t.setData("Text",n)}}}return t.prototype={multiDragKeyDown:!1,isMultiDrag:!1,delayStartGlobal:function(t){t=t.dragEl;ce=t},delayEnded:function(){this.isMultiDrag=~he.indexOf(ce)},setupClone:function(t){var e=t.sortable,t=t.cancel;if(this.isMultiDrag){for(var n=0;n<he.length;n++)fe.push(T(he[n])),fe[n].sortableIndex=he[n].sortableIndex,fe[n].draggable=!1,fe[n].style["will-change"]="",k(fe[n],this.options.selectedClass,!1),he[n]===ce&&k(fe[n],this.options.chosenClass,!1);e._hideClone(),t()}},clone:function(t){var e=t.sortable,n=t.rootEl,o=t.dispatchSortableEvent,t=t.cancel;this.isMultiDrag&&(this.options.removeCloneOnHide||he.length&&se===e&&(ve(!0,n),o("clone"),t()))},showClone:function(t){var e=t.cloneNowShown,n=t.rootEl,t=t.cancel;this.isMultiDrag&&(ve(!1,n),fe.forEach(function(t){R(t,"display","")}),e(),de=!1,t())},hideClone:function(t){var e=this,n=(t.sortable,t.cloneNowHidden),t=t.cancel;this.isMultiDrag&&(fe.forEach(function(t){R(t,"display","none"),e.options.removeCloneOnHide&&t.parentNode&&t.parentNode.removeChild(t)}),n(),de=!0,t())},dragStartGlobal:function(t){t.sortable;!this.isMultiDrag&&se&&se.multiDrag._deselectMultiDrag(),he.forEach(function(t){t.sortableIndex=j(t)}),he=he.sort(function(t,e){return t.sortableIndex-e.sortableIndex}),me=!0},dragStarted:function(t){var e,n=this,t=t.sortable;this.isMultiDrag&&(this.options.sort&&(t.captureAnimationState(),this.options.animation&&(he.forEach(function(t){t!==ce&&R(t,"position","absolute")}),e=X(ce,!1,!0,!0),he.forEach(function(t){t!==ce&&x(t,e)}),pe=ge=!0)),t.animateAll(function(){pe=ge=!1,n.options.animation&&he.forEach(function(t){A(t)}),n.options.sort&&be()}))},dragOver:function(t){var e=t.target,n=t.completed,t=t.cancel;ge&&~he.indexOf(e)&&(n(!1),t())},revert:function(t){var n,o,e=t.fromSortable,i=t.rootEl,r=t.sortable,a=t.dragRect;1<he.length&&(he.forEach(function(t){r.addAnimationState({target:t,rect:ge?X(t):a}),A(t),t.fromRect=a,e.removeAnimationState(t)}),ge=!1,n=!this.options.removeCloneOnHide,o=i,he.forEach(function(t,e){e=o.children[t.sortableIndex+(n?Number(e):0)];e?o.insertBefore(t,e):o.appendChild(t)}))},dragOverCompleted:function(t){var e,n=t.sortable,o=t.isOwner,i=t.insertion,r=t.activeSortable,a=t.parentEl,l=t.putSortable,t=this.options;i&&(o&&r._hideClone(),pe=!1,t.animation&&1<he.length&&(ge||!o&&!r.options.sort&&!l)&&(e=X(ce,!1,!0,!0),he.forEach(function(t){t!==ce&&(x(t,e),a.appendChild(t))}),ge=!0),o||(ge||be(),1<he.length?(o=de,r._showClone(n),r.options.animation&&!de&&o&&fe.forEach(function(t){r.addAnimationState({target:t,rect:ue}),t.fromRect=ue,t.thisAnimationDuration=null})):r._showClone(n)))},dragOverAnimationCapture:function(t){var e=t.dragRect,n=t.isOwner,t=t.activeSortable;he.forEach(function(t){t.thisAnimationDuration=null}),t.options.animation&&!n&&t.multiDrag.isMultiDrag&&(ue=a({},e),e=D(ce,!0),ue.top-=e.f,ue.left-=e.e)},dragOverAnimationComplete:function(){ge&&(ge=!1,be())},drop:function(t){var o,i,r,a,n,e,l,s=t.originalEvent,c=t.rootEl,u=t.parentEl,d=t.sortable,h=t.dispatchSortableEvent,f=t.oldIndex,t=t.putSortable,p=t||this.sortable;s&&(o=this.options,i=u.children,me||(o.multiDragKey&&!this.multiDragKeyDown&&this._deselectMultiDrag(),k(ce,o.selectedClass,!~he.indexOf(ce)),~he.indexOf(ce)?(he.splice(he.indexOf(ce),1),le=null,U({sortable:d,rootEl:c,name:"deselect",targetEl:ce,originalEvent:s})):(he.push(ce),U({sortable:d,rootEl:c,name:"select",targetEl:ce,originalEvent:s}),s.shiftKey&&le&&d.el.contains(le)?(r=j(le),a=j(ce),~r&&~a&&r!==a&&function(){for(var e,t=r<a?(e=r,a):(e=a,r+1),n=o.filter;e<t;e++)~he.indexOf(i[e])||P(i[e],o.draggable,u,!1)&&(n&&("function"==typeof n?n.call(d,s,i[e],d):n.split(",").some(function(t){return P(i[e],t.trim(),u,!1)}))||(k(i[e],o.selectedClass,!0),he.push(i[e]),U({sortable:d,rootEl:c,name:"select",targetEl:i[e],originalEvent:s})))}()):le=ce,se=p)),me&&this.isMultiDrag&&(ge=!1,(u[K].options.sort||u!==c)&&1<he.length&&(n=X(ce),e=j(ce,":not(."+this.options.selectedClass+")"),!pe&&o.animation&&(ce.thisAnimationDuration=null),p.captureAnimationState(),pe||(o.animation&&(ce.fromRect=n,he.forEach(function(t){var e;t.thisAnimationDuration=null,t!==ce&&(e=ge?X(t):n,t.fromRect=e,p.addAnimationState({target:t,rect:e}))})),be(),he.forEach(function(t){i[e]?u.insertBefore(t,i[e]):u.appendChild(t),e++}),f===j(ce)&&(l=!1,he.forEach(function(t){t.sortableIndex!==j(t)&&(l=!0)}),l&&(h("update"),h("sort")))),he.forEach(function(t){A(t)}),p.animateAll()),se=p),(c===u||t&&"clone"!==t.lastPutMode)&&fe.forEach(function(t){t.parentNode&&t.parentNode.removeChild(t)}))},nullingGlobal:function(){this.isMultiDrag=me=!1,fe.length=0},destroyGlobal:function(){this._deselectMultiDrag(),p(document,"pointerup",this._deselectMultiDrag),p(document,"mouseup",this._deselectMultiDrag),p(document,"touchend",this._deselectMultiDrag),p(document,"keydown",this._checkKeyDown),p(document,"keyup",this._checkKeyUp)},_deselectMultiDrag:function(t){if(!(void 0!==me&&me||se!==this.sortable||t&&P(t.target,this.options.draggable,this.sortable.el,!1)||t&&0!==t.button))for(;he.length;){var e=he[0];k(e,this.options.selectedClass,!1),he.shift(),U({sortable:this.sortable,rootEl:this.sortable.el,name:"deselect",targetEl:e,originalEvent:t})}},_checkKeyDown:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!0)},_checkKeyUp:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!1)}},a(t,{pluginName:"multiDrag",utils:{select:function(t){var e=t.parentNode[K];e&&e.options.multiDrag&&!~he.indexOf(t)&&(se&&se!==e&&(se.multiDrag._deselectMultiDrag(),se=e),k(t,e.options.selectedClass,!0),he.push(t))},deselect:function(t){var e=t.parentNode[K],n=he.indexOf(t);e&&e.options.multiDrag&&~n&&(k(t,e.options.selectedClass,!1),he.splice(n,1))}},eventProperties:function(){var n=this,o=[],i=[];return he.forEach(function(t){var e;o.push({multiDragElement:t,index:t.sortableIndex}),e=ge&&t!==ce?-1:ge?j(t,":not(."+n.options.selectedClass+")"):j(t),i.push({multiDragElement:t,index:e})}),{items:e(he),clones:[].concat(fe),oldIndicies:o,newIndicies:i}},optionListeners:{multiDragKey:function(t){return"ctrl"===(t=t.toLowerCase())?t="Control":1<t.length&&(t=t.charAt(0).toUpperCase()+t.substr(1)),t}}})}),Ht}); -
folders-4-gravity/trunk/folders-4-gravity.php
r3444414 r3464338 5 5 * Author URI: https://brightleafdigital.io/ 6 6 * Description: Organize your Gravity Forms and Gravity Views by folders. 7 * Version: 1.0. 87 * Version: 1.0.9 8 8 * Author: BrightLeaf Digital 9 9 * License: GPL-2.0+ … … 11 11 */ 12 12 13 use function F4G\GravityOps\Core\Admin\gravityops_shell;13 use F4G\GravityOps\Core\SuiteCore\SuiteCore; 14 14 15 15 if ( ! defined( 'ABSPATH' ) ) { 16 16 exit; 17 17 } 18 19 define( 'FOLDERS_4_GRAVITY_VERSION', '1.0.9' ); 20 define( 'FOLDERS_4_GRAVITY_BASENAME', plugin_basename( __FILE__ ) ); 18 21 19 22 require_once __DIR__ . '/vendor/autoload.php'; … … 23 26 } 24 27 25 // Instantiate this plugin's copy of the AdminShell early so provider negotiation can happen on plugins_loaded.28 // Register this plugin with SuiteCore early so the latest provider can be selected. 26 29 add_action( 27 30 'plugins_loaded', 28 31 function () { 29 gravityops_shell(); 32 if ( file_exists( __DIR__ . '/vendor/F4G/gravityops/core/assets/' ) ) { 33 $assets_base_url = plugins_url( 'vendor/F4G/gravityops/core/assets/', __FILE__ ); 34 } else { 35 $assets_base_url = plugins_url( 'vendor/gravityops/core/assets/', __FILE__ ); 36 } 37 38 SuiteCore::register( 39 [ 40 'assets_base_url' => $assets_base_url, 41 ] 42 ); 30 43 }, 31 44 1 … … 43 56 return; 44 57 } 45 46 // Ensure GravityOps shared assets resolve when library is vendor-installed in this plugin.47 add_filter(48 'gravityops_assets_base_url',49 function ( $url ) {50 if ( $url ) {51 return $url;52 }53 54 if ( file_exists( __DIR__ . '/vendor/F4G/gravityops/core/assets/' ) ) {55 return plugins_url( 'vendor/F4G/gravityops/core/assets/', __FILE__ );56 }57 58 return plugins_url( 'vendor/gravityops/core/assets/', __FILE__ );59 }60 );61 58 62 59 add_action( … … 77 74 } 78 75 ); 79 80 define( 'FOLDERS_4_GRAVITY_VERSION', '1.0.8' );81 define( 'FOLDERS_4_GRAVITY_BASENAME', plugin_basename( __FILE__ ) );82 76 83 77 /** -
folders-4-gravity/trunk/includes/class-gravity-ops-form-folders.php
r3444414 r3464338 1 1 <?php 2 2 3 use F4G\GravityOps\Core\Admin\ReviewPrompter; 4 use F4G\GravityOps\Core\Admin\SuiteMenu; 5 use F4G\GravityOps\Core\Admin\SurveyPrompter; 6 use F4G\GravityOps\Core\Admin\AdminShell; 3 use F4G\GravityOps\Core\SuiteCore\SuiteCore; 7 4 use F4G\GravityOps\Core\Utils\AssetHelper as Assets; 8 use function F4G\GravityOps\Core\Admin\gravityops_shell;9 5 if (!defined('ABSPATH')) { 10 6 exit; … … 102 98 { 103 99 $this->assets_helper = new Assets(plugins_url('/', FOLDERS_4_GRAVITY_BASENAME), dirname(__DIR__)); 104 add_filter('gravityops_is_shell_page', [$this, 'filter_is_shell_page'], 10, 2);100 SuiteCore::instance()->shell()->register_shell_page($this->_slug); 105 101 parent::init(); 106 102 $this->register_form_folders_taxonomy(); … … 116 112 } 117 113 /** 118 * Filters the is_shell_page variable to include the form folders page.119 *120 * @param bool $is_shell_page Whether the current page is a shell page.121 * @param string $page The current page slug.122 *123 * @return bool124 */125 public function filter_is_shell_page($is_shell_page, $page)126 {127 if ($page === $this->_slug) {128 return true;129 }130 return $is_shell_page;131 }132 /**133 114 * Initializes the admin functionality of the plugin. 134 115 * … … 143 124 }); 144 125 $this->register_form_folders_taxonomy(); 145 $review_prompter = new ReviewPrompter($this->prefix, $this->_title, 'https://wordpress.org/support/plugin/folders-4-gravity/reviews/#new-post');126 $review_prompter = SuiteCore::instance()->review_prompter($this->prefix, $this->_title, 'https://wordpress.org/support/plugin/folders-4-gravity/reviews/#new-post'); 146 127 $review_prompter->init(); 147 128 $review_prompter->maybe_show_review_request($this->get_usage_count(), 10); 148 $survey_prompter = new SurveyPrompter($this->prefix, $this->_title, $this->_version, 'free');129 $survey_prompter = SuiteCore::instance()->survey_prompter($this->prefix, $this->_title, $this->_version, 'free'); 149 130 $survey_prompter->init(); 150 131 // Register the GravityOps AdminShell page for the free Folders plugin. 151 132 // Tabs: Overview (render), Help (render), Affiliation (external link) 152 gravityops_shell()->register_plugin_page('folders-4-gravity', ['title' => $this->_title, 'menu_title' => $this->_short_title, 'subtitle' => '', 'links' => [], 'tabs' => ['overview' => ['label' => 'Overview', 'type' => 'render', 'callback' => [$this, 'gops_render_overview']], 'help' => ['label' => 'Help', 'type' => 'render', 'callback' => [$this, 'gops_render_help']], 'affiliation' => ['label' => 'Affiliation', 'type' => 'link', 'url' => 'https://brightleafdigital.io/affiliate/']]]);133 SuiteCore::instance()->shell()->register_plugin_page('folders-4-gravity', ['title' => $this->_title, 'menu_title' => $this->_short_title, 'subtitle' => '', 'links' => [], 'tabs' => ['overview' => ['label' => 'Overview', 'type' => 'render', 'callback' => [$this, 'gops_render_overview']], 'help' => ['label' => 'Help', 'type' => 'render', 'callback' => [$this, 'gops_render_help']], 'affiliation' => ['label' => 'Affiliation', 'type' => 'link', 'url' => 'https://brightleafdigital.io/affiliate/']]]); 153 134 } 154 135 /** … … 173 154 public function get_app_menu_icon() 174 155 { 175 return Suite Menu::get_plugin_icon_url('folders-4-gravity') ?: 'dashicons-portfolio';156 return SuiteCore::instance()->suite_menu()->get_plugin_icon_url('folders-4-gravity') ?: 'dashicons-portfolio'; 176 157 } 177 158 /** … … 285 266 public function gops_render_help() 286 267 { 287 AdminShell::render_help_tab(['Learn More' => 'https://brightleafdigital.io/folders-4-gravity/', 'Docs' => 'https://brightleafdigital.io/folders-4-gravity/#docs', 'Community forum' => 'https://brightleafdigital.io/community/', 'Open a support request' => 'https://brightleafdigital.io/support/', 'Join the community' => 'https://brightleafdigital.io/plugintomember']);268 SuiteCore::instance()->shell()->render_help_tab(['Learn More' => 'https://brightleafdigital.io/folders-4-gravity/', 'Docs' => 'https://brightleafdigital.io/folders-4-gravity/#docs', 'Community forum' => 'https://brightleafdigital.io/community/', 'Open a support request' => 'https://brightleafdigital.io/support/', 'Join the community' => 'https://brightleafdigital.io/plugintomember']); 288 269 } 289 270 /** … … 510 491 public function uninstall() 511 492 { 493 parent::uninstall(); 512 494 $forms = GFAPI::get_forms(); 513 495 foreach ($forms as $form) { … … 521 503 } 522 504 } 505 delete_option("{$this->prefix}folder_order"); 506 delete_option("{$this->prefix}review_prompter_usage_count"); 507 delete_option("{$this->prefix}survey_status"); 523 508 } 524 509 /** … … 732 717 <?php 733 718 echo '<div class="wrap gops-admin">'; 734 gravityops_shell()->render_header_only(['slug' => 'folders-4-gravity', 'title' => 'Forms in Folder: ' . $folder->name]);719 SuiteCore::instance()->shell()->render_header_only(['slug' => 'folders-4-gravity', 'title' => 'Forms in Folder: ' . $folder->name]); 735 720 echo '<div class="gops-notices" aria-live="polite"></div>'; 736 721 echo '<section class="gops-content">'; … … 903 888 $folders = $this->get_ordered_folders(); 904 889 echo '<div class="wrap gops-admin">'; 905 gravityops_shell()->render_header_only(['slug' => 'folders-4-gravity', 'title' => 'Form Folders']);890 SuiteCore::instance()->shell()->render_header_only(['slug' => 'folders-4-gravity', 'title' => 'Form Folders']); 906 891 echo '<div class="gops-notices" aria-live="polite"></div>'; 907 892 echo '<section class="gops-content">'; -
folders-4-gravity/trunk/includes/class-gravity-ops-views-folders.php
r3444414 r3464338 1 1 <?php 2 2 3 use F4G\GravityOps\Core\SuiteCore\SuiteCore; 3 4 use F4G\GravityOps\Core\Utils\AssetHelper; 4 use F4G\GravityOps\Core\Admin\AdminShell;5 use F4G\GravityOps\Core\Admin\SuiteMenu;6 5 use GV\View; 7 use function F4G\GravityOps\Core\Admin\gravityops_shell;8 6 if (!defined('ABSPATH')) { 9 7 exit; … … 102 100 { 103 101 parent::init(); 104 add_filter('gravityops_is_shell_page', [$this, 'filter_is_shell_page'], 10, 2);102 SuiteCore::instance()->shell()->register_shell_page($this->_slug); 105 103 $this->register_views_folders_taxonomy(); 106 104 $this->assets_helper = new AssetHelper(plugins_url('/', FOLDERS_4_GRAVITY_BASENAME), dirname(__DIR__)); … … 114 112 add_action("wp_ajax_{$this->prefix}save_view_order", [$this, 'handle_save_view_order']); 115 113 add_action("wp_ajax_{$this->prefix}save_views_folder_order", [$this, 'ajax_save_views_folder_order']); 116 }117 /**118 * Filters the is_shell_page variable to include the view folders page.119 *120 * @param bool $is_shell_page Whether the current page is a shell page.121 * @param string $page The current page slug.122 *123 * @return bool124 */125 public function filter_is_shell_page($is_shell_page, $page)126 {127 if ($page === $this->_slug) {128 return true;129 }130 return $is_shell_page;131 114 } 132 115 /** … … 470 453 public function uninstall() 471 454 { 455 parent::uninstall(); 472 456 // Get all views 473 457 $views = get_posts(['post_type' => 'gravityview', 'numberposts' => -1, 'post_status' => 'any']); … … 483 467 } 484 468 } 469 delete_option("{$this->prefix}views_folder_order"); 485 470 } 486 471 /** … … 558 543 <?php 559 544 echo '<div class="wrap gops-admin">'; 560 gravityops_shell()->render_header_only(['slug' => 'folders-4-gravity', 'title' => 'Views in Folder: ' . $folder->name]);545 SuiteCore::instance()->shell()->render_header_only(['slug' => 'folders-4-gravity', 'title' => 'Views in Folder: ' . $folder->name]); 561 546 echo '<div class="gops-notices" aria-live="polite"></div>'; 562 547 echo '<section class="gops-content">'; … … 943 928 <?php 944 929 echo '<div class="wrap gops-admin">'; 945 gravityops_shell()->render_header_only(['slug' => 'folders-4-gravity', 'title' => 'View Folders']);930 SuiteCore::instance()->shell()->render_header_only(['slug' => 'folders-4-gravity', 'title' => 'View Folders']); 946 931 echo '<div class="gops-notices" aria-live="polite"></div>'; 947 932 echo '<section class="gops-content">'; -
folders-4-gravity/trunk/readme.txt
r3444414 r3464338 4 4 Requires at least: 6.5 5 5 Tested up to: 6.9 6 Stable tag: 1.0. 86 Stable tag: 1.0.9 7 7 Requires PHP: 8.0 8 8 License: GPLv2 … … 155 155 == Changelog == 156 156 157 = 1.0.9 = 158 - Updated dependencies 159 - Fixed uninstall process to properly clear everything 160 - Updated core GravityOps library to improve the update plugin process among other small fixes 161 157 162 = 1.0.8 = 158 163 - Improved styling and UI to match branding … … 168 173 - Updated plugin menu 169 174 170 = 1.0.4 =171 - Updated plugin name172 - Updated readme173 174 175 175 176 == Upgrade Notice == -
folders-4-gravity/trunk/vendor/F4G/autoload.php
r3444414 r3464338 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit 941b013c5c321411e1f82cc27d0865e3::getLoader();22 return ComposerAutoloaderInit7502a0c0e9c4b8dde0abaa515c496c83::getLoader(); -
folders-4-gravity/trunk/vendor/F4G/composer/autoload_classmap.php
r3444414 r3464338 8 8 return array( 9 9 'F4G\\Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 10 'F4G\\GravityOps\\Core\\Admin\\AdminShell' => $vendorDir . '/gravityops/core/src/Admin/AdminShell.php', 11 'F4G\\GravityOps\\Core\\Admin\\ReviewPrompter' => $vendorDir . '/gravityops/core/src/Admin/ReviewPrompter.php', 12 'F4G\\GravityOps\\Core\\Admin\\SettingsHeader' => $vendorDir . '/gravityops/core/src/Admin/SettingsHeader.php', 13 'F4G\\GravityOps\\Core\\Admin\\SuiteMenu' => $vendorDir . '/gravityops/core/src/Admin/SuiteMenu.php', 14 'F4G\\GravityOps\\Core\\Admin\\SurveyPrompter' => $vendorDir . '/gravityops/core/src/Admin/SurveyPrompter.php', 15 'F4G\\GravityOps\\Core\\Admin\\TrustedLogin' => $vendorDir . '/gravityops/core/src/Admin/TrustedLogin.php', 16 'F4G\\GravityOps\\Core\\SuiteRegistry' => $vendorDir . '/gravityops/core/src/SuiteRegistry.php', 10 'F4G\\GravityOps\\Core\\SuiteCore\\AdminAssetHelper' => $vendorDir . '/gravityops/core/src/SuiteCore/AdminAssetHelper.php', 11 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\AdminShell' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/AdminShell.php', 12 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\ReviewPrompter' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/ReviewPrompter.php', 13 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\SuiteMenu' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/SuiteMenu.php', 14 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\SurveyPrompter' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/SurveyPrompter.php', 15 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\TrustedLogin' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/TrustedLogin.php', 16 'F4G\\GravityOps\\Core\\SuiteCore\\Config' => $vendorDir . '/gravityops/core/src/SuiteCore/Config.php', 17 'F4G\\GravityOps\\Core\\SuiteCore\\SuiteCatalog' => $vendorDir . '/gravityops/core/src/SuiteCore/SuiteCatalog.php', 18 'F4G\\GravityOps\\Core\\SuiteCore\\SuiteCore' => $vendorDir . '/gravityops/core/src/SuiteCore/SuiteCore.php', 17 19 'F4G\\GravityOps\\Core\\Traits\\SingletonTrait' => $vendorDir . '/gravityops/core/src/Traits/SingletonTrait.php', 18 20 'F4G\\GravityOps\\Core\\Utils\\AssetHelper' => $vendorDir . '/gravityops/core/src/Utils/AssetHelper.php', -
folders-4-gravity/trunk/vendor/F4G/composer/autoload_real.php
r3444414 r3464338 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 941b013c5c321411e1f82cc27d0865e35 class ComposerAutoloaderInit7502a0c0e9c4b8dde0abaa515c496c83 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit 941b013c5c321411e1f82cc27d0865e3', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit7502a0c0e9c4b8dde0abaa515c496c83', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \F4G\Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit 941b013c5c321411e1f82cc27d0865e3', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit7502a0c0e9c4b8dde0abaa515c496c83', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\F4G\Composer\Autoload\ComposerStaticInit 941b013c5c321411e1f82cc27d0865e3::getInitializer($loader));32 call_user_func(\F4G\Composer\Autoload\ComposerStaticInit7502a0c0e9c4b8dde0abaa515c496c83::getInitializer($loader)); 33 33 34 34 $loader->setClassMapAuthoritative(true); 35 35 $loader->register(true); 36 36 37 $filesToLoad = \F4G\Composer\Autoload\ComposerStaticInit941b013c5c321411e1f82cc27d0865e3::$files;38 $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {39 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {40 $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;41 42 require $file;43 }44 }, null, null);45 foreach ($filesToLoad as $fileIdentifier => $file) {46 $requireFile($fileIdentifier, $file);47 }48 49 37 return $loader; 50 38 } -
folders-4-gravity/trunk/vendor/F4G/composer/autoload_static.php
r3444414 r3464338 5 5 namespace F4G\Composer\Autoload; 6 6 7 class ComposerStaticInit 941b013c5c321411e1f82cc27d0865e37 class ComposerStaticInit7502a0c0e9c4b8dde0abaa515c496c83 8 8 { 9 public static $files = array (10 '2f157b4875352413a310aa7df2168fd0' => __DIR__ . '/..' . '/gravityops/core/src/Admin/functions.php',11 );12 13 9 public static $prefixLengthsPsr4 = array ( 14 10 'F' => … … 32 28 public static $classMap = array ( 33 29 'F4G\\Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 34 'F4G\\GravityOps\\Core\\Admin\\AdminShell' => __DIR__ . '/..' . '/gravityops/core/src/Admin/AdminShell.php', 35 'F4G\\GravityOps\\Core\\Admin\\ReviewPrompter' => __DIR__ . '/..' . '/gravityops/core/src/Admin/ReviewPrompter.php', 36 'F4G\\GravityOps\\Core\\Admin\\SettingsHeader' => __DIR__ . '/..' . '/gravityops/core/src/Admin/SettingsHeader.php', 37 'F4G\\GravityOps\\Core\\Admin\\SuiteMenu' => __DIR__ . '/..' . '/gravityops/core/src/Admin/SuiteMenu.php', 38 'F4G\\GravityOps\\Core\\Admin\\SurveyPrompter' => __DIR__ . '/..' . '/gravityops/core/src/Admin/SurveyPrompter.php', 39 'F4G\\GravityOps\\Core\\Admin\\TrustedLogin' => __DIR__ . '/..' . '/gravityops/core/src/Admin/TrustedLogin.php', 40 'F4G\\GravityOps\\Core\\SuiteRegistry' => __DIR__ . '/..' . '/gravityops/core/src/SuiteRegistry.php', 30 'F4G\\GravityOps\\Core\\SuiteCore\\AdminAssetHelper' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/AdminAssetHelper.php', 31 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\AdminShell' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/AdminShell.php', 32 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\ReviewPrompter' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/ReviewPrompter.php', 33 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\SuiteMenu' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/SuiteMenu.php', 34 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\SurveyPrompter' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/SurveyPrompter.php', 35 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\TrustedLogin' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/TrustedLogin.php', 36 'F4G\\GravityOps\\Core\\SuiteCore\\Config' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Config.php', 37 'F4G\\GravityOps\\Core\\SuiteCore\\SuiteCatalog' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/SuiteCatalog.php', 38 'F4G\\GravityOps\\Core\\SuiteCore\\SuiteCore' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/SuiteCore.php', 41 39 'F4G\\GravityOps\\Core\\Traits\\SingletonTrait' => __DIR__ . '/..' . '/gravityops/core/src/Traits/SingletonTrait.php', 42 40 'F4G\\GravityOps\\Core\\Utils\\AssetHelper' => __DIR__ . '/..' . '/gravityops/core/src/Utils/AssetHelper.php', … … 63 61 { 64 62 return \Closure::bind(function () use ($loader) { 65 $loader->prefixLengthsPsr4 = ComposerStaticInit 941b013c5c321411e1f82cc27d0865e3::$prefixLengthsPsr4;66 $loader->prefixDirsPsr4 = ComposerStaticInit 941b013c5c321411e1f82cc27d0865e3::$prefixDirsPsr4;67 $loader->classMap = ComposerStaticInit 941b013c5c321411e1f82cc27d0865e3::$classMap;63 $loader->prefixLengthsPsr4 = ComposerStaticInit7502a0c0e9c4b8dde0abaa515c496c83::$prefixLengthsPsr4; 64 $loader->prefixDirsPsr4 = ComposerStaticInit7502a0c0e9c4b8dde0abaa515c496c83::$prefixDirsPsr4; 65 $loader->classMap = ComposerStaticInit7502a0c0e9c4b8dde0abaa515c496c83::$classMap; 68 66 69 67 }, null, ClassLoader::class); -
folders-4-gravity/trunk/vendor/F4G/composer/installed.json
r3444414 r3464338 3 3 { 4 4 "name": "gravityops/core", 5 "version": " 1.1.0",6 "version_normalized": " 1.1.0.0",5 "version": "2.0.1", 6 "version_normalized": "2.0.1.0", 7 7 "source": { 8 8 "type": "git", 9 "url": "git@github.com: Eitan-brightleaf/gravityops.git",10 "reference": " cee27f55738670dc141b58af37d0feb74d4ce47e"9 "url": "git@github.com:BrightLeaf-Digital/gravityops.git", 10 "reference": "2535a2a105334f0bac61b112d8707ba9bc6e18b2" 11 11 }, 12 12 "dist": { 13 13 "type": "zip", 14 "url": "https://api.github.com/repos/ Eitan-brightleaf/gravityops/zipball/cee27f55738670dc141b58af37d0feb74d4ce47e",15 "reference": " cee27f55738670dc141b58af37d0feb74d4ce47e",14 "url": "https://api.github.com/repos/BrightLeaf-Digital/gravityops/zipball/2535a2a105334f0bac61b112d8707ba9bc6e18b2", 15 "reference": "2535a2a105334f0bac61b112d8707ba9bc6e18b2", 16 16 "shasum": "" 17 17 }, … … 20 20 "trustedlogin/client": "^v1.9" 21 21 }, 22 "time": "2026-0 1-21T19:42:14+00:00",22 "time": "2026-02-18T09:47:24+00:00", 23 23 "type": "library", 24 24 "installation-source": "source", … … 26 26 "psr-4": { 27 27 "F4G\\GravityOps\\Core\\": "src/" 28 }, 29 "files": [ 30 "src/Admin/functions.php" 31 ] 28 } 32 29 }, 33 30 "license": [ -
folders-4-gravity/trunk/vendor/F4G/composer/installed.php
r3444414 r3464338 5 5 'pretty_version' => 'dev-main', 6 6 'version' => 'dev-main', 7 'reference' => ' ea1976bf64f83a1677f8a105e53b378a86a790b7',7 'reference' => 'ad4aff1922296c8195cc41f79365ef62c43c3eff', 8 8 'type' => 'library', 9 9 'install_path' => __DIR__ . '/../', … … 17 17 'gravityops/core' => 18 18 array ( 19 'pretty_version' => ' 1.1.0',20 'version' => ' 1.1.0.0',21 'reference' => ' cee27f55738670dc141b58af37d0feb74d4ce47e',19 'pretty_version' => '2.0.1', 20 'version' => '2.0.1.0', 21 'reference' => '2535a2a105334f0bac61b112d8707ba9bc6e18b2', 22 22 'type' => 'library', 23 23 'install_path' => __DIR__ . '/../gravityops/core', -
folders-4-gravity/trunk/vendor/F4G/gravityops/core/assets/css/admin.css
r3444414 r3464338 31 31 .gops-tab{padding:6px 14px;border-radius:999px;background:transparent;border:0;text-decoration:none;color:var(--gops-color-muted);font-weight: 500;} 32 32 .gops-tab.is-active{background: var(--gops-color-primary);color:#fff} 33 .gops-tab__badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 6px;border-radius:999px;background:#5F6EEA;color:#fff;font-size:11px;font-weight:700;line-height:1;margin-left:6px;border:0} 34 35 /* Toolbar */ 36 .gops-actions{display:flex;justify-content:flex-end;margin:6px 0 14px} 33 37 34 38 /* Content / cards */ … … 76 80 .gops-link{color:#5F6EEA;text-decoration:none} /* Accent Product Blue */ 77 81 .gops-link:hover{text-decoration:underline; color: #4A57C6;} 82 button.gops-link{background:none;border:0;padding:0;font:inherit;line-height:1.3;cursor:pointer} 83 84 /* Loading state */ 85 .gops-action-button.is-loading{opacity:.7;pointer-events:none} 86 .gops-spinner{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;margin-left:6px;vertical-align:-2px;animation:gops-spin .7s linear infinite} 87 @keyframes gops-spin{to{transform:rotate(360deg)}} 88 89 /* Modal */ 90 .gops-modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;z-index:100000} 91 .gops-modal.is-open{display:flex} 92 .gops-modal__backdrop{position:absolute;inset:0;background:rgba(26,20,41,.6)} 93 .gops-modal__dialog{position:relative;z-index:1;background:#fff;border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.25);width:min(720px,92vw);max-height:80vh;display:flex;flex-direction:column;padding:12px 16px} 94 .gops-modal__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px} 95 .gops-modal__title{margin:0;font-size:18px;color:var(--gops-color-text)} 96 .gops-modal__close{background:none;border:0;font-size:26px;line-height:1;cursor:pointer;color:var(--gops-color-muted);transition:color .15s ease} 97 .gops-modal__close:hover{color:var(--gops-color-primary)} 98 .gops-modal__body{overflow:auto;padding:0 4px} 99 .gops-modal__content{margin:0;color:var(--gops-color-text);font-size:13px;line-height:1.4} 100 .gops-modal__content h3, 101 .gops-modal__content h4 { 102 margin: 1em 0 0.3em; 103 font-size: 15px; 104 color: var(--gops-color-primary); 105 font-weight: 600; 106 } 107 .gops-modal__content h3:first-child, 108 .gops-modal__content h4:first-child { 109 margin-top: 0; 110 } 111 .gops-modal__content ul { 112 margin: 0 0 0.8em 0; 113 padding: 0 0 0 1.4em; 114 list-style-type: disc !important; 115 } 116 .gops-modal__content li { 117 margin-bottom: 0.3em; 118 display: list-item !important; 119 } 120 .gops-modal__content p { 121 margin: 0 0 0.6em; 122 } 123 .gops-modal__footer{margin-top:8px;display:flex;justify-content:flex-end;border-top:1px solid var(--gops-color-border);padding-top:10px} 78 124 79 125 /* Brand primary button styling within our admin */ -
folders-4-gravity/trunk/vendor/F4G/gravityops/core/assets/js/admin.js
r3444414 r3464338 5 5 function qsa(s, c) { 6 6 return Array.prototype.slice.call((c || document).querySelectorAll(s)); 7 } 8 function getAdminConfig() { 9 const root = qs('.gops-admin'); 10 const fallback = {}; 11 if (root) { 12 fallback.nonce = root.getAttribute('data-gops-nonce') || ''; 13 fallback.ajaxUrl = root.getAttribute('data-gops-ajax') || ''; 14 } 15 return Object.assign({}, fallback, window.gopsAdmin || {}); 16 } 17 18 function showNotice(type, message) { 19 const wrap = qs('.gops-admin') || document; 20 const header = qs('.gops-header', wrap) || qs('.gops-header'); 21 const box = ensureNoticesContainer( 22 wrap, 23 header || wrap.firstElementChild 24 ); 25 if (!box) { 26 return; 27 } 28 const notice = document.createElement('div'); 29 notice.className = 'notice notice-' + type + ' is-dismissible'; 30 const p = document.createElement('p'); 31 p.textContent = message; 32 notice.appendChild(p); 33 const btn = document.createElement('button'); 34 btn.type = 'button'; 35 btn.className = 'notice-dismiss'; 36 btn.innerHTML = 37 '<span class="screen-reader-text">Dismiss this notice.</span>'; 38 btn.addEventListener('click', function () { 39 notice.remove(); 40 }); 41 notice.appendChild(btn); 42 box.appendChild(notice); 43 } 44 45 function setButtonLoading(btn, isLoading) { 46 if (!btn) { 47 return; 48 } 49 if (isLoading) { 50 if (!btn.dataset.gopsOriginalText) { 51 btn.dataset.gopsOriginalText = btn.textContent.trim(); 52 } 53 btn.classList.add('is-loading'); 54 btn.disabled = true; 55 if (!qs('.gops-spinner', btn)) { 56 const spinner = document.createElement('span'); 57 spinner.className = 'gops-spinner'; 58 btn.appendChild(spinner); 59 } 60 } else { 61 btn.classList.remove('is-loading'); 62 btn.disabled = false; 63 const spinner = qs('.gops-spinner', btn); 64 if (spinner) { 65 spinner.remove(); 66 } 67 } 68 } 69 70 function ajaxRequest(action, data) { 71 const cfg = getAdminConfig(); 72 const url = cfg.ajaxUrl || window.ajaxurl || ''; 73 const payload = Object.assign( 74 { 75 action, 76 nonce: cfg.nonce || '', 77 }, 78 data || {} 79 ); 80 return jQuery.post(url, payload); 81 } 82 83 function replaceTileHtml(slug, html) { 84 if (!slug || !html) { 85 return; 86 } 87 const tile = qs('.gops-tile[data-gops-tile="' + slug + '"]'); 88 if (tile) { 89 tile.outerHTML = html; 90 } 91 } 92 93 function updateUpdatesCount(count, updatableCount) { 94 const tabs = qs('.gops-tabs'); 95 if (tabs) { 96 let updatesTab = qs('[data-gops-tab="updates"]', tabs); 97 if (count > 0) { 98 if (!updatesTab) { 99 const cfg = getAdminConfig(); 100 const href = cfg.updatesUrl || ''; 101 if (href) { 102 updatesTab = document.createElement('a'); 103 updatesTab.className = 'gops-tab'; 104 updatesTab.setAttribute('data-gops-tab', 'updates'); 105 updatesTab.href = href; 106 updatesTab.textContent = 'Updates'; 107 if ( 108 new URLSearchParams(window.location.search).get( 109 'gops_filter' 110 ) === 'updates' 111 ) { 112 updatesTab.classList.add('is-active'); 113 } 114 const badge = document.createElement('span'); 115 badge.className = 'gops-tab__badge'; 116 badge.setAttribute('data-gops-updates-count', count); 117 badge.textContent = String(count); 118 updatesTab.appendChild(badge); 119 const allTab = qs('[data-gops-tab="all"]', tabs); 120 if (allTab && allTab.nextSibling) { 121 tabs.insertBefore(updatesTab, allTab.nextSibling); 122 } else { 123 tabs.appendChild(updatesTab); 124 } 125 } 126 } else { 127 let badge = qs('.gops-tab__badge', updatesTab); 128 if (!badge) { 129 badge = document.createElement('span'); 130 badge.className = 'gops-tab__badge'; 131 updatesTab.appendChild(badge); 132 } 133 badge.setAttribute('data-gops-updates-count', count); 134 badge.textContent = String(count); 135 } 136 } else if (updatesTab) { 137 updatesTab.remove(); 138 } 139 } 140 141 const actionsWrap = qs('.gops-actions'); 142 if (actionsWrap) { 143 const updateAllBtn = qs('.gops-update-all', actionsWrap); 144 const effectiveUpdatableCount = 145 typeof updatableCount !== 'undefined' ? updatableCount : count; 146 if (effectiveUpdatableCount > 0) { 147 actionsWrap.style.display = ''; 148 if (updateAllBtn) { 149 updateAllBtn.textContent = 150 'Update All (' + effectiveUpdatableCount + ')'; 151 } 152 } else { 153 actionsWrap.style.display = 'none'; 154 } 155 } 156 157 // Update WordPress sidebar menu badge 158 const menuBadge = document.querySelector( 159 '#toplevel_page_gravity_ops .update-plugins' 160 ); 161 if (menuBadge) { 162 if (count > 0) { 163 menuBadge.className = 'update-plugins count-' + count; 164 const inner = menuBadge.querySelector('.plugin-count'); 165 if (inner) { 166 inner.textContent = String(count); 167 } 168 } else { 169 menuBadge.remove(); 170 } 171 } 172 } 173 174 function openChangelogModal(data) { 175 const modal = qs('#gops-changelog-modal'); 176 if (!modal) { 177 return; 178 } 179 const title = qs('.gops-modal__title', modal); 180 const content = qs('.gops-modal__content', modal); 181 const link = qs('.gops-modal__full-link', modal); 182 if (title) { 183 title.textContent = data.title || 'Changelog'; 184 } 185 if (content) { 186 content.innerHTML = data.changelog || 'Changelog not available.'; 187 } 188 if (link) { 189 if (data.full_url) { 190 link.href = data.full_url; 191 link.style.display = ''; 192 } else { 193 link.style.display = 'none'; 194 } 195 } 196 modal.style.display = ''; 197 modal.classList.add('is-open'); 198 modal.setAttribute('aria-hidden', 'false'); 199 } 200 201 function closeChangelogModal() { 202 const modal = qs('#gops-changelog-modal'); 203 if (!modal) { 204 return; 205 } 206 modal.classList.remove('is-open'); 207 modal.style.display = 'none'; 208 modal.setAttribute('aria-hidden', 'true'); 7 209 } 8 210 … … 156 358 if (link && link.href) { 157 359 window.location.href = link.href; 360 } 361 }); 362 363 // Action buttons (update/activate/deactivate/changelog) 364 document.addEventListener('click', function (e) { 365 const btn = e.target.closest('button[data-gops-action]'); 366 if (!btn) { 367 return; 368 } 369 370 const action = btn.getAttribute('data-gops-action') || ''; 371 if (!action) { 372 return; 373 } 374 375 e.preventDefault(); 376 e.stopPropagation(); 377 378 const slug = btn.getAttribute('data-gops-slug') || ''; 379 const pluginFile = btn.getAttribute('data-gops-plugin-file') || ''; 380 381 if (action === 'changelog') { 382 if (!slug) { 383 showNotice('error', 'Missing plugin data.'); 384 return; 385 } 386 setButtonLoading(btn, true); 387 ajaxRequest('gops_get_changelog', { 388 slug, 389 plugin: pluginFile, 390 }) 391 .done(function (resp) { 392 if (resp && resp.success) { 393 openChangelogModal(resp.data || {}); 394 } else { 395 const msg = 396 (resp && resp.data && resp.data.message) || 397 'Unable to load changelog.'; 398 showNotice('error', msg); 399 } 400 }) 401 .fail(function () { 402 showNotice('error', 'Unable to load changelog.'); 403 }) 404 .always(function () { 405 setButtonLoading(btn, false); 406 }); 407 return; 408 } 409 410 if (btn.classList.contains('is-loading')) { 411 return; 412 } 413 414 let request = null; 415 if (action === 'update') { 416 request = ajaxRequest('gops_update_plugin', { 417 slug, 418 plugin: pluginFile, 419 }); 420 } else if (action === 'update-all') { 421 request = ajaxRequest('gops_update_all', {}); 422 } else if (action === 'activate' || action === 'deactivate') { 423 request = ajaxRequest('gops_toggle_plugin', { 424 slug, 425 plugin: pluginFile, 426 toggle: action, 427 }); 428 } 429 430 if (!request) { 431 return; 432 } 433 434 setButtonLoading(btn, true); 435 436 request 437 .done(function (resp) { 438 if (resp && resp.success) { 439 const data = resp.data || {}; 440 if (data.tile_html && data.slug) { 441 replaceTileHtml(data.slug, data.tile_html); 442 } 443 if (data.tiles) { 444 Object.keys(data.tiles).forEach(function (tileSlug) { 445 replaceTileHtml(tileSlug, data.tiles[tileSlug]); 446 }); 447 } 448 if (typeof data.updates_count === 'number') { 449 updateUpdatesCount( 450 data.updates_count, 451 data.updatable_count 452 ); 453 } 454 if (data.message) { 455 showNotice( 456 data.errors && data.errors.length 457 ? 'warning' 458 : 'success', 459 data.message 460 ); 461 } 462 463 // Refresh all updates after a successful action to maintain consistency. 464 if ( 465 action === 'update' || 466 action === 'update-all' || 467 action === 'activate' || 468 action === 'deactivate' 469 ) { 470 triggerBackgroundRefresh(); 471 } 472 if (data.errors && data.errors.length) { 473 data.errors.forEach(function (err) { 474 showNotice('error', err); 475 }); 476 } 477 } else { 478 const msg = 479 (resp && resp.data && resp.data.message) || 480 'Action failed.'; 481 showNotice('error', msg); 482 } 483 }) 484 .fail(function (resp) { 485 let msg = 'Action failed.'; 486 if (resp && resp.responseJSON && resp.responseJSON.data) { 487 msg = resp.responseJSON.data.message || msg; 488 } else if (resp && resp.responseText) { 489 msg = 490 resp.responseText.trim() === '-1' 491 ? 'Security check failed. Refresh and try again.' 492 : resp.responseText; 493 } 494 showNotice('error', msg); 495 }) 496 .always(function () { 497 setButtonLoading(btn, false); 498 }); 499 }); 500 501 // Modal close actions 502 document.addEventListener('click', function (e) { 503 if (e.target.closest('[data-gops-modal-close]')) { 504 e.preventDefault(); 505 closeChangelogModal(); 506 } 507 }); 508 document.addEventListener('keydown', function (e) { 509 if (e.key === 'Escape') { 510 closeChangelogModal(); 158 511 } 159 512 }); … … 306 659 moveNotices(); 307 660 applyFreePluginExternalTabTargets(); 661 triggerBackgroundRefresh(); 308 662 }); 309 663 } else { … … 311 665 moveNotices(); 312 666 applyFreePluginExternalTabTargets(); 667 triggerBackgroundRefresh(); 668 } 669 670 function triggerBackgroundRefresh() { 671 const root = qs('.gops-admin'); 672 if (root && root.dataset.gopsRefresh === '1') { 673 const loader = qs('.gops-header-loader', root); 674 if (loader) { 675 loader.style.display = 'block'; 676 } 677 const tiles = qsa('.gops-tile'); 678 const items = tiles.map(function (tile) { 679 const slug = tile.dataset.gopsTile; 680 const versionEl = qs('.gops-tile__version', tile); 681 const version = versionEl 682 ? versionEl.textContent.replace('v', '').trim() 683 : '0'; 684 return { slug, version }; 685 }); 686 687 ajaxRequest('gops_check_suite_updates', { 688 items: JSON.stringify(items), 689 }) 690 .done(function (resp) { 691 if (resp && resp.success && resp.data) { 692 const data = resp.data; 693 if (data.tiles) { 694 Object.keys(data.tiles).forEach(function (slug) { 695 replaceTileHtml(slug, data.tiles[slug]); 696 }); 697 } 698 if (typeof data.updates_count === 'number') { 699 updateUpdatesCount( 700 data.updates_count, 701 data.updatable_count 702 ); 703 } 704 } 705 }) 706 .always(function () { 707 if (loader) { 708 loader.style.display = 'none'; 709 } 710 }); 711 } 313 712 } 314 713 function applyFreePluginExternalTabTargets() { -
folders-4-gravity/trunk/vendor/F4G/trustedlogin/client/src/Config.php
r3444414 r3464338 179 179 ), 180 180 true 181 ) && ! defined( ' TL_DOING_TESTS' ) ) {181 ) && ! defined( 'F4G_TL_DOING_TESTS' ) ) { 182 182 throw new Exception( 'Developer: make sure to change the namespace for the TrustedLogin class. See https://trustedlogin.com/configuration/ for more information.', 501 ); 183 183 } … … 190 190 191 191 if ( isset( $this->settings['vendor']['website'] ) ) { 192 if ( 'https://www.example.com' === $this->settings['vendor']['website'] && ! defined( ' TL_DOING_TESTS' ) ) {192 if ( 'https://www.example.com' === $this->settings['vendor']['website'] && ! defined( 'F4G_TL_DOING_TESTS' ) ) { 193 193 $errors[] = new WP_Error( 'missing_configuration', 'You need to configure the "website" URL to point to the URL where the Vendor plugin is installed.' ); 194 194 } -
folders-4-gravity/trunk/vendor/F4G/trustedlogin/client/src/Utils.php
r3444414 r3464338 196 196 $ip = sanitize_text_field( $ip ); 197 197 198 if ( ! defined( ' TL_DOING_TESTS' ) ) {198 if ( ! defined( 'F4G_TL_DOING_TESTS' ) ) { 199 199 $ip = filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE | FILTER_FLAG_NO_PRIV_RANGE ); 200 200 } -
folders-4-gravity/trunk/vendor/F4G/trustedlogin/client/tests/bootstrap.php
r3444414 r3464338 11 11 require_once dirname( __DIR__ ) . '/vendor/autoload.php'; 12 12 13 if ( ! defined( ' TL_DOING_TESTS' ) ) {14 define( ' TL_DOING_TESTS', true );13 if ( ! defined( 'F4G_TL_DOING_TESTS' ) ) { 14 define( 'F4G_TL_DOING_TESTS', true ); 15 15 } 16 16 -
folders-4-gravity/trunk/vendor/autoload.php
r3444414 r3464338 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit 1458c8d8d2fb085311df4cc2fd82d829::getLoader();22 return ComposerAutoloaderInitab67d0f9d0f6c7e2481d68596d118001::getLoader(); -
folders-4-gravity/trunk/vendor/composer/autoload_aliases.php
r3444414 r3464338 5 5 namespace { 6 6 7 }8 namespace GravityOps\Core\Admin {9 if(!function_exists('\\GravityOps\\Core\\Admin\\gravityops_shell')){10 function gravityops_shell(...$args) {11 return \F4G\GravityOps\Core\Admin\gravityops_shell(...func_get_args());12 }13 }14 7 } 15 8 namespace TrustedLogin { … … 42 35 */ 43 36 private array $autoloadAliases = array ( 44 'GravityOps\\Core\\ Admin\\AdminShell' =>37 'GravityOps\\Core\\SuiteCore\\Admin\\AdminShell' => 45 38 array ( 46 39 'type' => 'class', 47 40 'classname' => 'AdminShell', 48 41 'isabstract' => false, 49 'namespace' => 'GravityOps\\Core\\ Admin',50 'extends' => 'F4G\\GravityOps\\Core\\ Admin\\AdminShell',51 'implements' => 52 array ( 53 ), 54 ), 55 'GravityOps\\Core\\ Admin\\ReviewPrompter' =>42 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 43 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\AdminShell', 44 'implements' => 45 array ( 46 ), 47 ), 48 'GravityOps\\Core\\SuiteCore\\Admin\\ReviewPrompter' => 56 49 array ( 57 50 'type' => 'class', 58 51 'classname' => 'ReviewPrompter', 59 52 'isabstract' => false, 60 'namespace' => 'GravityOps\\Core\\Admin', 61 'extends' => 'F4G\\GravityOps\\Core\\Admin\\ReviewPrompter', 62 'implements' => 63 array ( 64 ), 65 ), 66 'GravityOps\\Core\\Admin\\SettingsHeader' => 67 array ( 68 'type' => 'class', 69 'classname' => 'SettingsHeader', 70 'isabstract' => false, 71 'namespace' => 'GravityOps\\Core\\Admin', 72 'extends' => 'F4G\\GravityOps\\Core\\Admin\\SettingsHeader', 73 'implements' => 74 array ( 75 ), 76 ), 77 'GravityOps\\Core\\Admin\\SuiteMenu' => 53 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 54 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\ReviewPrompter', 55 'implements' => 56 array ( 57 ), 58 ), 59 'GravityOps\\Core\\SuiteCore\\Admin\\SuiteMenu' => 78 60 array ( 79 61 'type' => 'class', 80 62 'classname' => 'SuiteMenu', 81 63 'isabstract' => false, 82 'namespace' => 'GravityOps\\Core\\ Admin',83 'extends' => 'F4G\\GravityOps\\Core\\ Admin\\SuiteMenu',84 'implements' => 85 array ( 86 ), 87 ), 88 'GravityOps\\Core\\ Admin\\SurveyPrompter' =>64 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 65 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\SuiteMenu', 66 'implements' => 67 array ( 68 ), 69 ), 70 'GravityOps\\Core\\SuiteCore\\Admin\\SurveyPrompter' => 89 71 array ( 90 72 'type' => 'class', 91 73 'classname' => 'SurveyPrompter', 92 74 'isabstract' => false, 93 'namespace' => 'GravityOps\\Core\\ Admin',94 'extends' => 'F4G\\GravityOps\\Core\\ Admin\\SurveyPrompter',95 'implements' => 96 array ( 97 ), 98 ), 99 'GravityOps\\Core\\ Admin\\TrustedLogin' =>75 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 76 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\SurveyPrompter', 77 'implements' => 78 array ( 79 ), 80 ), 81 'GravityOps\\Core\\SuiteCore\\Admin\\TrustedLogin' => 100 82 array ( 101 83 'type' => 'class', 102 84 'classname' => 'TrustedLogin', 103 85 'isabstract' => false, 104 'namespace' => 'GravityOps\\Core\\Admin', 105 'extends' => 'F4G\\GravityOps\\Core\\Admin\\TrustedLogin', 106 'implements' => 107 array ( 108 ), 109 ), 110 'GravityOps\\Core\\SuiteRegistry' => 111 array ( 112 'type' => 'class', 113 'classname' => 'SuiteRegistry', 114 'isabstract' => false, 115 'namespace' => 'GravityOps\\Core', 116 'extends' => 'F4G\\GravityOps\\Core\\SuiteRegistry', 86 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 87 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\Admin\\TrustedLogin', 88 'implements' => 89 array ( 90 ), 91 ), 92 'GravityOps\\Core\\SuiteCore\\AdminAssetHelper' => 93 array ( 94 'type' => 'class', 95 'classname' => 'AdminAssetHelper', 96 'isabstract' => false, 97 'namespace' => 'GravityOps\\Core\\SuiteCore', 98 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\AdminAssetHelper', 99 'implements' => 100 array ( 101 ), 102 ), 103 'GravityOps\\Core\\SuiteCore\\Config' => 104 array ( 105 'type' => 'class', 106 'classname' => 'Config', 107 'isabstract' => false, 108 'namespace' => 'GravityOps\\Core\\SuiteCore', 109 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\Config', 110 'implements' => 111 array ( 112 ), 113 ), 114 'GravityOps\\Core\\SuiteCore\\SuiteCatalog' => 115 array ( 116 'type' => 'class', 117 'classname' => 'SuiteCatalog', 118 'isabstract' => false, 119 'namespace' => 'GravityOps\\Core\\SuiteCore', 120 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\SuiteCatalog', 121 'implements' => 122 array ( 123 ), 124 ), 125 'GravityOps\\Core\\SuiteCore\\SuiteCore' => 126 array ( 127 'type' => 'class', 128 'classname' => 'SuiteCore', 129 'isabstract' => false, 130 'namespace' => 'GravityOps\\Core\\SuiteCore', 131 'extends' => 'F4G\\GravityOps\\Core\\SuiteCore\\SuiteCore', 117 132 'implements' => 118 133 array ( -
folders-4-gravity/trunk/vendor/composer/autoload_real.php
r3444414 r3464338 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 1458c8d8d2fb085311df4cc2fd82d8295 class ComposerAutoloaderInitab67d0f9d0f6c7e2481d68596d118001 6 6 { 7 7 private static $loader; … … 23 23 } 24 24 25 spl_autoload_register(array('ComposerAutoloaderInit 1458c8d8d2fb085311df4cc2fd82d829', 'loadClassLoader'), true, true);25 spl_autoload_register(array('ComposerAutoloaderInitab67d0f9d0f6c7e2481d68596d118001', 'loadClassLoader'), true, true); 26 26 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 27 spl_autoload_unregister(array('ComposerAutoloaderInit 1458c8d8d2fb085311df4cc2fd82d829', 'loadClassLoader'));27 spl_autoload_unregister(array('ComposerAutoloaderInitab67d0f9d0f6c7e2481d68596d118001', 'loadClassLoader')); 28 28 29 29 require __DIR__ . '/autoload_static.php'; 30 call_user_func(\Composer\Autoload\ComposerStaticInit 1458c8d8d2fb085311df4cc2fd82d829::getInitializer($loader));30 call_user_func(\Composer\Autoload\ComposerStaticInitab67d0f9d0f6c7e2481d68596d118001::getInitializer($loader)); 31 31 32 32 $loader->register(true); -
folders-4-gravity/trunk/vendor/composer/autoload_static.php
r3444414 r3464338 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit 1458c8d8d2fb085311df4cc2fd82d8297 class ComposerStaticInitab67d0f9d0f6c7e2481d68596d118001 8 8 { 9 9 public static $classMap = array ( … … 14 14 { 15 15 return \Closure::bind(function () use ($loader) { 16 $loader->classMap = ComposerStaticInit 1458c8d8d2fb085311df4cc2fd82d829::$classMap;16 $loader->classMap = ComposerStaticInitab67d0f9d0f6c7e2481d68596d118001::$classMap; 17 17 18 18 }, null, ClassLoader::class); -
folders-4-gravity/trunk/vendor/composer/installed.json
r3444414 r3464338 3 3 { 4 4 "name": "gravityops/core", 5 "version": " 1.1.0",6 "version_normalized": " 1.1.0.0",5 "version": "2.0.1", 6 "version_normalized": "2.0.1.0", 7 7 "source": { 8 8 "type": "git", 9 "url": "git@github.com: Eitan-brightleaf/gravityops.git",10 "reference": " cee27f55738670dc141b58af37d0feb74d4ce47e"9 "url": "git@github.com:BrightLeaf-Digital/gravityops.git", 10 "reference": "2535a2a105334f0bac61b112d8707ba9bc6e18b2" 11 11 }, 12 12 "dist": { 13 13 "type": "zip", 14 "url": "https://api.github.com/repos/ Eitan-brightleaf/gravityops/zipball/cee27f55738670dc141b58af37d0feb74d4ce47e",15 "reference": " cee27f55738670dc141b58af37d0feb74d4ce47e",14 "url": "https://api.github.com/repos/BrightLeaf-Digital/gravityops/zipball/2535a2a105334f0bac61b112d8707ba9bc6e18b2", 15 "reference": "2535a2a105334f0bac61b112d8707ba9bc6e18b2", 16 16 "shasum": "" 17 17 }, … … 20 20 "trustedlogin/client": "^v1.9" 21 21 }, 22 "time": "2026-0 1-21T19:42:14+00:00",22 "time": "2026-02-18T09:47:24+00:00", 23 23 "type": "library", 24 24 "installation-source": "source", -
folders-4-gravity/trunk/vendor/composer/installed.php
r3444414 r3464338 4 4 'pretty_version' => 'dev-main', 5 5 'version' => 'dev-main', 6 'reference' => ' ea1976bf64f83a1677f8a105e53b378a86a790b7',6 'reference' => 'ad4aff1922296c8195cc41f79365ef62c43c3eff', 7 7 'type' => 'library', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 'gravityops/core' => array( 14 'pretty_version' => ' 1.1.0',15 'version' => ' 1.1.0.0',16 'reference' => ' cee27f55738670dc141b58af37d0feb74d4ce47e',14 'pretty_version' => '2.0.1', 15 'version' => '2.0.1.0', 16 'reference' => '2535a2a105334f0bac61b112d8707ba9bc6e18b2', 17 17 'type' => 'library', 18 18 'install_path' => __DIR__ . '/../gravityops/core', … … 23 23 'pretty_version' => 'dev-main', 24 24 'version' => 'dev-main', 25 'reference' => ' ea1976bf64f83a1677f8a105e53b378a86a790b7',25 'reference' => 'ad4aff1922296c8195cc41f79365ef62c43c3eff', 26 26 'type' => 'library', 27 27 'install_path' => __DIR__ . '/../../',
Note: See TracChangeset
for help on using the changeset viewer.