{"version":3,"sources":["webpack:///./src/components/PDF/Display/index.vue?9a05","webpack:///./src/components/PDF/Display/keys/methods.js","webpack:///src/components/PDF/Display/index.vue","webpack:///./src/components/PDF/Display/index.vue?e664","webpack:///./src/components/PDF/Display/index.vue","webpack:///./node_modules/vue-dragscroll/dist/vue-dragscroll.min.js","webpack:///./src/components/buttons/Buefy/index.vue?e217","webpack:///src/components/buttons/Buefy/index.vue","webpack:///./src/components/buttons/Buefy/index.vue?f1e2","webpack:///./src/components/buttons/Buefy/index.vue","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/index.vue?d06a","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Modal/index.vue?8dd3","webpack:///./src/services/BoardMeetings/BoardPackageDocument/GetBoardPackageDocumentFile.js","webpack:///./src/services/BoardMeetings/BoardPackageDocument/Post.js","webpack:///./src/services/BoardMeetings/BoardPackageDocument/StoreBoardPackageDocumentFile.js","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Modal/parts/methods/list/upload.js","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Modal/parts/methods/list/open.js","webpack:///./src/services/BoardMeetings/BoardPackageDocument/Get.js","webpack:///./src/services/BoardMeetings/BoardPackageDocument/Put.js","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Modal/parts/methods/list/edit.js","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Modal/parts/methods/index.js","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Modal/parts/data.js","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Modal/parts/computed.js","webpack:///src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Modal/index.vue","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Modal/index.vue?35e1","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Modal/index.vue","webpack:///./node_modules/sortablejs/modular/sortable.esm.js","webpack:///./src/services/BoardMeetings/BoardPackageDocument/List.js","webpack:///./src/services/BoardMeetings/BoardPackageDocument/Delete.js","webpack:///./src/services/BoardMeetings/LayoutDocumentSource/List.js","webpack:///./src/services/BoardMeetings/BoardPackage/RenderBoardPackageDocument.js","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/parts/methods/list/onSort.js","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Up/index.vue?ce0b","webpack:///src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Up/index.vue","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Up/index.vue?d0ba","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Up/index.vue","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Down/index.vue?b839","webpack:///src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Down/index.vue","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Down/index.vue?a8b3","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/components/Down/index.vue","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/parts/methods/list/parseList.js","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/parts/methods/index.js","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/parts/data.js","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/parts/computed.js","webpack:///src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/index.vue","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/index.vue?861b","webpack:///./src/pages/Management/boardMeetings/Details/components/BoardPackageLayout/index.vue","webpack:///./src/services/blobutility.js","webpack:///./src/components/Fields/PDFUploader/index.vue?ac4f","webpack:///src/components/Fields/PDFUploader/index.vue","webpack:///./src/components/Fields/PDFUploader/index.vue?3ab9","webpack:///./src/components/Fields/PDFUploader/index.vue","webpack:///./src/components/Fields/PDFUploader/index.vue?a909","webpack:///./src/components/PDF/Display/index.vue?307c"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","directives","name","rawName","value","expression","class","scale","staticStyle","attrs","base64pdf","on","$event","pageCount","Array","_l","page","index","key","style","margin","width","src","_e","position","display","justifyContent","height","top","left","transform","zoom","_v","_s","toPrecision","staticRenderFns","methods","open","direction","amt","Math","sqrt","max","min","components","pdf","data","isOpen","showPDF","loading","component","e","o","module","exports","window","t","n","r","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","__esModule","create","bind","default","prototype","hasOwnProperty","p","s","length","addEventListener","passive","removeEventListener","componentInstance","$emit","CustomEvent","detail","document","createEvent","initCustomEvent","elm","dispatchEvent","iterator","constructor","u","a","f","target","querySelector","console","error","container","active","scrollBy","scrollLeft","scrollTop","v","md","MouseEvent","pageX","touches","pageY","elementFromPoint","pageXOffset","pageYOffset","arg","modifiers","noleft","noright","nomiddle","noback","noforward","w","h","y","firstChild","g","dataset","dragscroll","noDragscroll","which","clientX","clientY","mu","mm","preventDefault","clientWidth","scrollWidth","clientHeight","scrollHeight","pass","x","body","deltaX","deltaY","readyState","inserted","update","JSON","stringify","oldValue","unbind","install","Number","version","split","Error","concat","directive","Vue","VueDragscroll","use","click","text","props","Function","String","type","isRounded","Boolean","padding","openAddModal","preview","float","alignItems","paddingRight","animation","opacity","status","background","textAlign","borderRadius","ref","columns","rows","show","afterUpload","toggle","modalContent","minHeight","scopedSlots","_u","mode","fn","proxy","upload","edit","model","callback","$$v","documentType","option","domProps","source","documentDescription","_get","documentsUpdated","maxWidth","getBPD","params","kms","result","successful","message","file","notifyError","doc","addBoardPackageDocument","json","exception","post","boardPackageDocument","storeBPD","formData","FormData","append","path","boardPackageDocumentID","documentID","documentId","documents","boardPackageID","hoaId","layoutDocumentSourceID","hoaID","layoutAvailabilityID","documentName","then","sources","spot","list","getDocument","$refs","pdfDisplay","nextOrderIndex","getBoardPackageDocument","updateBoardPackageDocument","put","documentUpdateOccurrred","boardPackage","asBase64","computed","mapState","breakpoint","state","win","user","Modal","PDFUploader","PDFDisplay","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread2","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_typeof","obj","configurable","writable","_extends","assign","_objectWithoutPropertiesLoose","excluded","sourceKeys","indexOf","_objectWithoutProperties","sourceSymbolKeys","propertyIsEnumerable","userAgent","pattern","navigator","match","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","el","event","off","matches","selector","substring","msMatchesSelector","webkitMatchesSelector","_","getParentOrHost","host","nodeType","parentNode","closest","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","classList","className","replace","css","prop","val","defaultView","getComputedStyle","currentStyle","matrix","selfOnly","appliedTransforms","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","find","tagName","getElementsByTagName","getWindowScrollingElement","scrollingElement","documentElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","getBoundingClientRect","elRect","bottom","right","innerHeight","innerWidth","containerRect","parseInt","elMatrix","scaleX","scaleY","isScrolledPast","elSide","parentSide","parent","getParentAutoScrollElement","elSideVal","parentSideVal","visible","getChild","childNum","options","includeDragEl","currentChild","children","Sortable","ghost","dragged","draggable","lastChild","last","lastElementChild","previousElementSibling","nodeName","toUpperCase","clone","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","indexOfObject","arr","includeSelf","elem","gotSelf","elemCSS","overflowX","overflowY","extend","dst","isRectEqual","rect1","rect2","round","throttle","ms","args","_this","setTimeout","cancelThrottle","clearTimeout","Polymer","$","jQuery","Zepto","dom","cloneNode","expando","Date","getTime","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","slice","child","rect","fromRect","thisAnimationDuration","childMatrix","addAnimationState","removeAnimationState","splice","animateAll","animating","animationTime","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","animate","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","forRepaintDummy","repaint","easing","animated","offsetWidth","pow","plugins","defaults","initializeByDefault","PluginManager","mount","plugin","pluginName","pluginEvent","eventName","sortable","evt","eventCanceled","cancel","eventNameGlobal","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","_ref","rootEl","targetEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","charAt","substr","initEvent","bubbles","cancelable","to","from","item","pullMode","lastPutMode","undefined","allEventProperties","_excluded","dragEl","parentEl","ghostEl","nextEl","lastDownEl","cloneHidden","dragStarted","moved","activeSortable","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","createElement","supportCssPointerEvents","cssText","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","clear","_dragElInRowColumn","dragRect","targetRect","vertical","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_detectNearestEmptySortable","ret","some","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","_prepareGroup","toFn","pull","sameGroup","group","otherGroup","join","originalGroup","checkPull","checkPut","revertClone","stopPropagation","stopImmediatePropagation","nearestEmptyInsertDetectEvent","nearest","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","toString","sort","disabled","store","handle","test","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","setData","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","_globalDragOver","dropEffect","_onMove","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_ghostIsFirst","spacer","_ghostIsLast","_getSwapDirection","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_generateId","str","href","sum","charCodeAt","_saveInputCheckedState","root","inputs","idx","checked","_nextTick","_cancelNextTick","id","contains","_getDirection","touch","pointerType","originalTarget","shadowRoot","composedPath","button","isContentEditable","criteria","trim","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","floor","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","err","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","ghostMatrix","relativeScrollOffset","dx","dy","b","cssMatrix","appendChild","removeAttribute","_hideClone","cloneId","insertBefore","_loopId","setInterval","effectAllowed","_dragStartId","revert","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","changed","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","side1","scrolledPastTop","scrollBefore","dragIndex","nextElementSibling","after","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","removeChild","save","handleEvent","toArray","order","getAttribute","useAnimation","items","set","destroy","querySelectorAll","utils","is","nextTick","cancelNextTick","detectDirection","element","_len","_key","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","AutoScrollPlugin","AutoScroll","scroll","forceAutoScrollFallback","scrollSensitivity","scrollSpeed","bubbleScroll","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","_ref2","dragOverBubble","drop","clearPointerElemChangedInterval","clearAutoScrolls","nulling","autoScroll","ogElemScroller","newElem","pid","isFallback","scrollCustomFn","sens","speed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","dragStart","_ref3","_ref4","parentSortable","listBoardPackageDocuments","isArray","eraseBoardPackageDocument","delete","listLayoutDocumentSources","renderBPD","_params","map","sequence","onSort","entry","sortOrder","$el","parseList","Promise","resolve","layoutDocumentSource","isDocument","_dataId","available","moveUp","Up","focus","moveDown","Down","BuefyButton","openEditModal","$buefy","dialog","confirm","title","confirmText","hasIcon","onConfirm","erase","$forceUpdate","table","tr","cursor","refresh","getSources","getList","mergeFileName","blob","base64toBlob","showPdf","savingTimeout","promises","_entry","_cloneDeep","createdDate","deletedDate","layoutAvailability","modifiedDate","all","modal","saving","field","label","ModernTable","mounted","b64Data","contentType","sliceSize","byteCharacters","atob","byteArrays","offset","byteNumbers","byteArray","Uint8Array","Blob","newBlob","msSaveOrOpenBlob","URL","createObjectURL","link","download","setAttribute","downloadPdf","revokeObjectURL","showAnyType","mimeType","debug","multiple","attachments","_t","pdfs","flexWrap","_g","pdfOnClick","overflow","palette","tile","boxShadow","refInFor","transition","deleteAttachment","PDF","updateV2","tileShadow","previews","uploadDescription","watch"],"mappings":"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","file":"js/boardMeetingDetails.boardMeetingBoardPackage.7ad2f871.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pdf-display\"},[(_vm.showPDF)?_c('div',{directives:[{name:\"dragscroll\",rawName:\"v-dragscroll\",value:(true),expression:\"true\"}],class:['doc-viewer', { 'zoom-active': _vm.scale > 0.9 }]},[_c('pdf',{staticStyle:{\"display\":\"none\"},attrs:{\"src\":_vm.base64pdf},on:{\"num-pages\":function($event){_vm.pageCount = new Array($event)}}}),_vm._l((_vm.pageCount),function(page,index){return _c('pdf',{key:index,style:({ margin: 'auto', width: ((100 * _vm.scale) + \"%\") }),attrs:{\"src\":_vm.src,\"scale\":_vm.scale,\"resize\":true}})})],2):_vm._e(),_c('div',{staticClass:\"doc-controls has-text-center\"},[_c('div',{style:({\n position: 'relative',\n display: 'flex',\n justifyContent: 'space-between',\n height: '60px'\n })},[_c('div'),_c('div',{style:({\n display: 'flex',\n position: 'absolute',\n top: '10px',\n left: '50%',\n transform: 'translateX(-50%)'\n })},[_c('div',{staticClass:\"control\"},[_c('b-button',{on:{\"click\":function($event){return _vm.zoom(-1)}}},[_vm._v(\"-\")])],1),_c('div',{staticClass:\"control\"},[_c('b-button',{on:{\"click\":function($event){return _vm.zoom(1)}}},[_vm._v(\"+\")])],1)]),_c('b-taglist',{attrs:{\"attached\":\"\"}},[_c('b-tag',{attrs:{\"type\":\"is-light\"}},[_vm._v(\"zoom\")]),_c('b-tag',{attrs:{\"type\":\"is-info\"}},[_vm._v(_vm._s((_vm.scale * 100).toPrecision(3))+\"%\")])],1)],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const methods = {\r\n open({ src }) {\r\n this.src = src\r\n },\r\n zoom(direction) {\r\n const amt = Math.sqrt(2)\r\n if (direction > 0) {\r\n this.scale *= amt\r\n } else {\r\n this.scale /= amt\r\n }\r\n\r\n // constrain to min/max\r\n this.scale = Math.max(0.5, Math.min(4, this.scale))\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=15f6b27d&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","!function(e,o){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=o():\"function\"==typeof define&&define.amd?define([],o):\"object\"==typeof exports?exports.VueDragScroll=o():e.VueDragScroll=o()}(window,(function(){return function(e){var o={};function t(n){if(o[n])return o[n].exports;var r=o[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,t),r.l=!0,r.exports}return t.m=e,t.c=o,t.d=function(e,o,n){t.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:n})},t.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},t.t=function(e,o){if(1&o&&(e=t(e)),8&o)return e;if(4&o&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&o&&\"string\"!=typeof e)for(var r in e)t.d(n,r,function(o){return e[o]}.bind(null,r));return n},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,\"a\",o),o},t.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},t.p=\"/dist/\",t(t.s=0)}([function(e,o,t){\"use strict\";t.r(o),t.d(o,\"dragscroll\",(function(){return d}));var n=function(e,o,t){for(var n=0,r=o.length;n=s.scrollWidth||0===s.scrollLeft,p=s.scrollTop+s.clientHeight>=s.scrollHeight||0===s.scrollTop;u=-e+(e=a?n.clientX:n.touches[0].clientX),c=-r+(r=a?n.clientY:n.touches[0].clientY),o.modifiers.pass?(s.scrollLeft-=o.modifiers.y?-0:u,s.scrollTop-=o.modifiers.x?-0:c,s===document.body&&(s.scrollLeft-=o.modifiers.y?-0:u,s.scrollTop-=o.modifiers.x?-0:c),(v||o.modifiers.y)&&m(-u,0),(p||o.modifiers.x)&&m(0,-c)):(o.modifiers.x&&(c=-0),o.modifiers.y&&(u=-0),s.scrollLeft-=u,s.scrollTop-=c,s===document.body&&(s.scrollLeft-=u,s.scrollTop-=c)),f.deltaX=-u,f.deltaY=-c,i(t,\"dragscrollmove\",f)}},n(s,u,s.md),n(window,a,s.mu),n(window,c,s.mm)};d?\"complete\"===document.readyState?v():window.addEventListener(\"load\",v):(r(s,u,s.md),r(window,a,s.mu),r(window,c,s.mm))},d={inserted:function(e,o,t){s(e,o,t)},update:function(e,o,t,n){JSON.stringify(o.value)!==JSON.stringify(o.oldValue)&&s(e,o,t)},unbind:function(e,o,t){var n=e;r(n,u,n.md),r(window,a,n.mu),r(window,c,n.mm)}},f={install:function(e,o){var t=Number(e.version.split(\".\")[0]),n=Number(e.version.split(\".\")[1]);if(t<2&&n<1)throw new Error(\"v-dragscroll supports vue version 2.1 and above. You are using Vue@\".concat(e.version,\". Please upgrade to the latest version of Vue.\"));e.directive(\"dragscroll\",d)}};\"undefined\"!=typeof window&&window.Vue&&(window.VueDragscroll=f,window.Vue.use(f));o.default=f}])}));\n//# sourceMappingURL=vue-dragscroll.min.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-button',{staticClass:\"button is-info is-light is-small is-outline is-rounded\",on:{\"click\":_vm.click}},[_vm._v(_vm._s(_vm.text))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=19458b68&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"role\":\"main\",\"data-id\":\"meeting documents\"}},[_c('div',{style:({ padding: '8px' })},[_c('b-button',{staticClass:\"is-primary is-rounded\",on:{\"click\":_vm.openAddModal}},[_vm._v(\"Add Document\")]),_c('span',{style:({ display: 'inline-block', width: '10px' })}),_c('b-button',{staticClass:\"is-primary is-rounded\",on:{\"click\":_vm.preview}},[_vm._v(\"Preview Document\")]),_c('div',{style:({\n float: 'right',\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-around'\n })},[_c('div',{style:({\n position: 'relative',\n paddingRight: '6px'\n })},[_c('b-icon',{style:({\n animation: 'spinAround .5s infinite linear',\n opacity: _vm.status === 'saving' ? 1 : 0\n }),attrs:{\"icon\":\"loading\",\"size\":\"is-small\"}})],1),(_vm.status === 'saved')?_c('div',{style:({\n background: '#ddd',\n padding: '2px 0px',\n width: '60px',\n textAlign: 'center',\n borderRadius: '4px'\n })},[_vm._v(\" saved \")]):_vm._e(),(_vm.status === 'saving')?_c('div',{style:({\n background: '#ddd',\n padding: '2px 0px',\n width: '60px',\n textAlign: 'center',\n borderRadius: '4px'\n })},[_vm._v(\" saving \")]):_vm._e()])],1),_c('ModernTable',{ref:\"table\",attrs:{\"columns\":_vm.columns,\"rows\":_vm.rows,\"filters\":{\n show: false\n },\"loading\":_vm.loading}}),_c('Modal',{ref:\"modal\",attrs:{\"afterUpload\":_vm.afterUpload}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"toggle\":_vm.toggle,\"loading\":_vm.loading,\"styles\":{ modalContent: { minHeight: '100px' } }},on:{\"update:toggle\":function($event){_vm.toggle=$event}},scopedSlots:_vm._u([(_vm.mode === 'add')?{key:\"header\",fn:function(){return [_vm._v(\"Add Board Package Document\")]},proxy:true}:{key:\"header\",fn:function(){return [_vm._v(\"Edit Board Package Document\")]},proxy:true},{key:\"footer\",fn:function(){return [_c('b-button',{staticClass:\"is-primary\",on:{\"click\":function($event){_vm.toggle = false}}},[_vm._v(\"Close\")]),(_vm.mode === 'add')?_c('b-button',{staticClass:\"is-primary\",style:({ float: 'right' }),on:{\"click\":_vm.upload}},[_vm._v(\"Upload\")]):_vm._e(),(_vm.mode === 'edit')?_c('b-button',{staticClass:\"is-primary\",style:({ float: 'right' }),on:{\"click\":_vm.edit}},[_vm._v(\"Update\")]):_vm._e()]},proxy:true}],null,true)},[_c('b-field',{attrs:{\"label\":\"Document Type\"}},[_c('b-select',{model:{value:(_vm.documentType),callback:function ($$v) {_vm.documentType=$$v},expression:\"documentType\"}},_vm._l((_vm.sources),function(option,index){return _c('option',{key:index,domProps:{\"value\":option}},[_vm._v(\" \"+_vm._s(option.source)+\" \")])}),0)],1),_c('b-field',{attrs:{\"label\":\"Document Description\"}},[_c('b-input',{model:{value:(_vm.documentDescription),callback:function ($$v) {_vm.documentDescription=$$v},expression:\"documentDescription\"}})],1),(_vm._get(_vm.documentType, 'layoutDocumentSourceID', null) === 3)?_c('div',[(_vm.mode === 'add')?_c('div',[_c('PDFUploader',{attrs:{\"updateV2\":_vm.documentsUpdated,\"multiple\":false}})],1):_vm._e(),(_vm.mode === 'edit')?_c('div',[_c('PDFDisplay',{ref:\"pdfDisplay\",style:({\n maxWidth: '800px',\n height: '640px',\n position: 'relative',\n margin: '0 auto'\n })}),_c('PDFUploader',{attrs:{\"updateV2\":_vm.documentsUpdated,\"multiple\":false}})],1):_vm._e()]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\r\n example:\r\n import { getBPD } from '@/services/BoardMeetings/BoardPackageDocument/GetBoardPackageDocumentFile';\r\n\r\n const { doc, successful, message } = await getBPD ({\r\n params: {\r\n boardPackageDocumentID: '',\r\n asBase64: true\r\n }\r\n });\r\n if (!successful) {\r\n console.error (message);\r\n return;\r\n }\r\n*/\r\n//\r\nimport kms from '@/services/kms'\r\nimport { notifyError } from '@/services/notify'\r\n//\r\nexport async function getBPD({ params }) {\r\n try {\r\n const result = await kms.get(\r\n `/BoardMeetings/BoardPackageDocument/GetBoardPackageDocumentFile`,\r\n {\r\n params\r\n }\r\n )\r\n\r\n return {\r\n successful: true,\r\n message: '',\r\n file: result\r\n }\r\n } catch (exception) {\r\n console.error(exception)\r\n }\r\n\r\n let message = `The board package document file could not be retrieved.`\r\n notifyError(message)\r\n\r\n return {\r\n successful: false,\r\n message,\r\n doc: null\r\n }\r\n}\r\n\r\n///////\r\n","/*\r\n\timport { addBoardPackageDocument } from '@/services/BoardMeetings/BoardPackageDocument/Post';\r\n\r\n const boardPackageDocument = await addBoardPackageDocument ({\r\n json: {\r\n \"hoaID\": hoaID,\r\n boardPackageID: 45,\r\n\r\n // \"documentID\": 0,\r\n \"layoutDocumentSourceID\": 2,\r\n \"layoutAvailabilityID\": 1,\r\n // \"sortOrder\": 0,\r\n // \"documentName\": \"string\",\r\n\r\n \"documentName\": \"name of the document\", \r\n \r\n }\r\n }).then (({ successful, message, boardPackageDocument }) => {\r\n if (!successful) {\r\n throw message;\r\n }\r\n\r\n return boardPackageDocument\r\n });\r\n*/\r\n\r\n/*\r\n exception.fields {\r\n phoneNumber: [ '' ], \r\n }\r\n*/\r\n//\r\n//\r\n//\r\nimport kms from '@/services/kms'\r\n//\r\nimport { notifyError } from '@/services/notify'\r\n//\r\nexport async function addBoardPackageDocument({ json }) {\r\n let exception = ''\r\n\r\n try {\r\n const result = await kms.post(`/BoardMeetings/BoardPackageDocument`, json)\r\n\r\n return {\r\n successful: true,\r\n message: 'The board meeting document was added successfully.',\r\n exception: null,\r\n boardPackageDocument: result\r\n }\r\n } catch (_exception) {\r\n exception = _exception\r\n }\r\n\r\n let message = 'The board meeting document could not be added.'\r\n notifyError(message)\r\n\r\n return {\r\n successful: false,\r\n message,\r\n exception,\r\n boardPackageDocument: null\r\n }\r\n}\r\n","/*\r\n example:\r\n // note: calls notifyError internally\r\n \r\n import { storeBPD } from '@/services/BoardMeetings/BoardPackageDocument/StoreBoardPackageDocumentFile';\r\n\r\n const { documentID, successful, message } = await storeBPD ({\r\n doc,\r\n params: {\r\n\t\t\t\tboardPackageDocumentID\r\n }\r\n });\r\n if (!successful) {\r\n notifyProblem (message);\r\n return;\r\n }\r\n*/\r\n//\r\nimport kms from '@/services/kms'\r\nimport { notifyError } from '@/services/notify'\r\n//\r\nexport async function storeBPD({ doc, params }) {\r\n try {\r\n const formData = new FormData()\r\n formData.append('file', doc)\r\n\r\n const path = `/BoardMeetings/BoardPackageDocument/StoreBoardPackageDocumentFile?boardPackageDocumentID=${params.boardPackageDocumentID}`\r\n\r\n const result = await kms.post(path, formData, {\r\n 'Content-Type': 'multipart/form-data'\r\n })\r\n\r\n return {\r\n successful: true,\r\n message: '',\r\n documentID: result.documentId,\r\n result\r\n }\r\n } catch (exception) {\r\n console.error(exception)\r\n }\r\n\r\n let message = `The board pacakge document could not be added.`\r\n notifyError(message)\r\n\r\n return {\r\n successful: false,\r\n message,\r\n result: null,\r\n documentID: null\r\n }\r\n}\r\n\r\n///////\r\n","/*\r\n Summary:\r\n // metadata creation for board package documents\r\n [post] /BoardMeetings/BoardPackageDocument {\r\n boardPackageID\r\n }\r\n returns {\r\n boardPackageDocumentID\r\n }\r\n\r\n // attaches a file to metadata created in the previous step\r\n [post] /BoardMeetings/BoardPackageDocument/StoreBoardPackageDocumentFile {\r\n boardPackageDocumentID\r\n }\r\n*/\r\n\r\nimport { addBoardPackageDocument } from '@/services/BoardMeetings/BoardPackageDocument/Post'\r\nimport { storeBPD } from '@/services/BoardMeetings/BoardPackageDocument/StoreBoardPackageDocumentFile'\r\n\r\nexport async function upload() {\r\n this.loading = true\r\n\r\n const { documentDescription, documentType, documents, boardPackageID, hoaId } = this\r\n const { layoutDocumentSourceID } = documentType\r\n\r\n const boardPackageDocument = await addBoardPackageDocument({\r\n json: {\r\n hoaID: hoaId,\r\n boardPackageID,\r\n //\r\n layoutDocumentSourceID,\r\n layoutAvailabilityID: 1,\r\n\r\n documentName: documentDescription\r\n }\r\n }).then(({ successful, message, boardPackageDocument }) => {\r\n if (!successful) {\r\n this.loading = false\r\n throw message\r\n }\r\n\r\n return boardPackageDocument\r\n })\r\n\r\n if (layoutDocumentSourceID === 3) {\r\n const { boardPackageDocumentID } = boardPackageDocument\r\n\r\n const { successful, message } = await storeBPD({\r\n doc: documents[0],\r\n params: {\r\n boardPackageDocumentID\r\n }\r\n })\r\n if (!successful) {\r\n this.loading = false\r\n throw new Error(message)\r\n }\r\n }\r\n\r\n this.afterUpload()\r\n\r\n this.loading = false\r\n this.toggle = false\r\n}\r\n","import _get from 'lodash/get'\r\n\r\nexport async function open({\r\n mode,\r\n boardPackageID,\r\n boardPackageDocumentID,\r\n documentName = '',\r\n sources,\r\n spot,\r\n list = []\r\n}) {\r\n this.loading = true\r\n this.toggle = true\r\n\r\n this.mode = mode\r\n this.boardPackageID = boardPackageID\r\n\r\n this.documents = []\r\n this.sources = sources\r\n this.documentDescription = documentName\r\n\r\n if (mode === 'edit') {\r\n this.boardPackageDocumentID = boardPackageDocumentID\r\n this.spot = spot\r\n this.documentType = _get(spot, 'layoutDocumentSource', null)\r\n\r\n const layoutDocumentSourceID = _get(\r\n spot,\r\n ['layoutDocumentSource', 'layoutDocumentSourceID'],\r\n null\r\n )\r\n\r\n if (layoutDocumentSourceID === 3) {\r\n await this.getDocument({\r\n boardPackageDocumentID\r\n })\r\n\r\n this.$refs.pdfDisplay.open({\r\n src: this.documents[0]\r\n })\r\n }\r\n } else if (mode === 'add') {\r\n this.nextOrderIndex = list.length\r\n }\r\n\r\n this.loading = false\r\n}\r\n","/*\r\n /BoardMeetings/BoardPackageDocument/{boardPackageDocumentID}\r\n \r\n import { getBoardPackageDocument } from '@/services/BoardMeetings/BoardPackageDocument/Get';\r\n\r\n const { result, successful, message } = await getBoardPackageDocument ({\r\n\t\tboardPackageDocumentID\r\n });\r\n if (!successful) {\r\n notifyError (message);\r\n return;\r\n }\r\n*/\r\n\r\nimport kms from '@/services/kms'\r\nimport { notifyError } from '@/services/notify'\r\n\r\nexport async function getBoardPackageDocument({ boardPackageDocumentID }) {\r\n try {\r\n const result = await kms.get(`/BoardMeetings/BoardPackageDocument/${boardPackageDocumentID}`)\r\n\r\n return {\r\n successful: true,\r\n message: `The board package document was retrieved successfully.`,\r\n result\r\n }\r\n } catch (exception) {\r\n console.error(exception)\r\n }\r\n\r\n const message = `The ${boardPackageDocumentID} could not be retrieved. It might have been deleted or you might not have permission to open it.`\r\n notifyError(message)\r\n\r\n return {\r\n successful: false,\r\n message,\r\n result: null\r\n }\r\n}\r\n","/*\r\n\timport { updateBoardPackageDocument } from '@/services/BoardMeetings/BoardPackageDocument/Put';\r\n\r\n const boardPackageDocument = await addBoardPackageDocument ({\r\n json: {\r\n \"hoaID\": hoaID,\r\n boardPackageID: 45,\r\n\r\n // \"documentID\": 0,\r\n \"layoutDocumentSourceID\": 2,\r\n \"layoutAvailabilityID\": 1,\r\n // \"sortOrder\": 0,\r\n // \"documentName\": \"string\",\r\n\r\n \"documentName\": \"name of the document\", \r\n \r\n }\r\n }).then (({ successful, message, boardPackageDocument }) => {\r\n if (!successful) {\r\n throw message;\r\n }\r\n\r\n return boardPackageDocument\r\n });\r\n*/\r\n\r\n/*\r\n exception.fields {\r\n phoneNumber: [ '' ], \r\n }\r\n*/\r\n//\r\n//\r\n//\r\nimport kms from '@/services/kms'\r\n//\r\nimport { notifyError } from '@/services/notify'\r\n//\r\nexport async function updateBoardPackageDocument({ json }) {\r\n let exception = ''\r\n\r\n try {\r\n const result = await kms.put(`/BoardMeetings/BoardPackageDocument`, json)\r\n\r\n return {\r\n successful: true,\r\n message: 'The board meeting document was added successfully.',\r\n exception: null,\r\n boardPackageDocument: result\r\n }\r\n } catch (_exception) {\r\n exception = _exception\r\n }\r\n\r\n let message = 'The board meeting document could not be added.'\r\n notifyError(message)\r\n\r\n return {\r\n successful: false,\r\n message,\r\n exception,\r\n boardPackageDocument: null\r\n }\r\n}\r\n","/*\r\n Summary:\r\n // get the data,\r\n // so that the data can be modified & reuploaded...\r\n [get] /BoardMeetings/BoardPackageDocument\r\n \r\n // if the document is updated,\r\n // the new document is overwritten\r\n [post] /BoardMeetings/BoardPackageDocument/StoreBoardPackageDocumentFile {\r\n boardPackageDocumentID\r\n }\r\n \r\n [put] /BoardMeetings/BoardPackageDocument {\r\n \r\n }\r\n*/\r\n\r\nimport { getBoardPackageDocument } from '@/services/BoardMeetings/BoardPackageDocument/Get'\r\nimport { updateBoardPackageDocument } from '@/services/BoardMeetings/BoardPackageDocument/Put'\r\nimport { storeBPD } from '@/services/BoardMeetings/BoardPackageDocument/StoreBoardPackageDocumentFile'\r\n\r\nimport { notifyError } from '@/services/notify'\r\n\r\nexport async function edit() {\r\n this.loading = true\r\n\r\n const { documentDescription, documents, boardPackageDocumentID } = this\r\n\r\n const { boardPackageDocument } = await getBoardPackageDocument({\r\n boardPackageDocumentID\r\n }).then(({ successful, message, result }) => {\r\n if (!successful) {\r\n notifyError(message)\r\n throw new Error(message)\r\n }\r\n\r\n return {\r\n boardPackageDocument: result\r\n }\r\n })\r\n\r\n if (this.documentUpdateOccurrred) {\r\n const { documentID, successful, message } = await storeBPD({\r\n doc: documents[0],\r\n params: {\r\n boardPackageDocumentID\r\n }\r\n })\r\n if (!successful) {\r\n this.loading = false\r\n throw new Error(message)\r\n }\r\n\r\n boardPackageDocument.documentID = documentID\r\n }\r\n\r\n delete boardPackageDocument.boardPackage\r\n boardPackageDocument.documentName = documentDescription\r\n\r\n await updateBoardPackageDocument({\r\n json: boardPackageDocument\r\n }).then(({ successful, message, boardPackageDocument }) => {\r\n if (!successful) {\r\n throw message\r\n }\r\n\r\n return boardPackageDocument\r\n })\r\n\r\n this.afterUpload()\r\n\r\n this.loading = false\r\n this.toggle = false\r\n}\r\n","//\r\n\r\nimport { getBPD } from '@/services/BoardMeetings/BoardPackageDocument/GetBoardPackageDocumentFile'\r\n\r\nimport { upload } from './list/upload'\r\nimport { open } from './list/open'\r\nimport { edit } from './list/edit'\r\n\r\nimport _get from 'lodash/get'\r\n\r\nexport const methods = {\r\n _get,\r\n\r\n documentsUpdated({ documents }) {\r\n this.documents = documents\r\n this.documentUpdateOccurrred = true\r\n },\r\n\r\n edit,\r\n upload,\r\n\r\n async getDocument({ boardPackageDocumentID }) {\r\n const { file, successful, message } = await getBPD({\r\n params: {\r\n boardPackageDocumentID,\r\n asBase64: true\r\n }\r\n })\r\n if (!successful) {\r\n console.error(message)\r\n return\r\n }\r\n\r\n this.documents = [file]\r\n },\r\n\r\n open\r\n}\r\n","export function data() {\r\n return {\r\n toggle: false,\r\n loading: false,\r\n mode: 'add',\r\n //\r\n sources: [],\r\n //\r\n documentType: {\r\n layoutDocumentSourceID: 3\r\n },\r\n documentDescription: '',\r\n //\r\n documentUpdateOccurrred: false,\r\n documents: []\r\n //\r\n }\r\n}\r\n","import { mapState } from 'vuex'\r\n\r\nexport const computed = {\r\n ...mapState({\r\n breakpoint: state => state.win.breakpoint,\r\n hoaId: state => state.user.hoaId\r\n })\r\n}\r\n\r\n//\r\n","\r\n\r\n\r\n","import mod from \"-!../../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=fda30c8e&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**!\n * Sortable 1.15.0\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n folding = false; // Do not \"unfold\" after around dragEl if reverted\n\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","/*\r\n import { notifyError } from '@/services/notify'\r\n\r\n\timport { listBoardPackageDocuments } from '@/services/BoardMeetings/BoardPackageDocument/List';\r\n\r\n const { list, successful, message } = await listBoardPackageDocuments ({\r\n params: {\r\n\t\t\thoaID,\r\n boardPackageID\r\n }\r\n });\r\n if (!successful) {\r\n notifyError (message);\r\n return;\r\n }\r\n*/\r\n\r\nimport _get from 'lodash/get'\r\nimport kms from '@/services/kms'\r\n\r\nexport async function listBoardPackageDocuments({ params }) {\r\n let message = 'The board meetings list could not be retrieved.'\r\n\r\n try {\r\n const result = await kms.get(`/BoardMeetings/BoardPackageDocument/List`, {\r\n params: {\r\n hoaID: params.hoaID,\r\n boardPackageID: params.boardPackageID\r\n }\r\n })\r\n\r\n let list = _get(result, 'results', [])\r\n if (!Array.isArray(list)) {\r\n list = []\r\n }\r\n\r\n return {\r\n successful: true,\r\n message,\r\n list\r\n }\r\n } catch (exception) {\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n successful: false,\r\n message,\r\n list: []\r\n }\r\n}\r\n","/*\r\n\timport { eraseBoardPackageDocument } from '@/services/BoardMeetings/BoardPackageDocument/Delete';\r\n\r\n await eraseBoardPackageDocument ({\r\n json: {\r\n \"hoaID\": hoaID,\r\n boardPackageID: 45,\r\n\r\n // \"documentID\": 0,\r\n \"layoutDocumentSourceID\": 2,\r\n \"layoutAvailabilityID\": 1,\r\n // \"sortOrder\": 0,\r\n // \"documentName\": \"string\",\r\n\r\n \"documentName\": \"name of the document\", \r\n \r\n }\r\n }).then (({ successful, message }) => {\r\n if (!successful) {\r\n throw message;\r\n }\r\n });\r\n*/\r\n\r\n/*\r\n exception.fields {\r\n phoneNumber: [ '' ], \r\n }\r\n*/\r\n//\r\n//\r\n//\r\nimport kms from '@/services/kms'\r\n//\r\nimport { notifyError } from '@/services/notify'\r\n//\r\nexport async function eraseBoardPackageDocument({ boardPackageDocumentID }) {\r\n let exception = ''\r\n\r\n try {\r\n const result = await kms.delete(\r\n `/BoardMeetings/BoardPackageDocument/${boardPackageDocumentID}?forceDelete=false`\r\n )\r\n\r\n return {\r\n successful: true,\r\n message: 'The board meeting document was deleted successfully.',\r\n exception: null,\r\n boardPackageDocument: result\r\n }\r\n } catch (_exception) {\r\n exception = _exception\r\n }\r\n\r\n let message = 'The board meeting document could not be deleted.'\r\n notifyError(message)\r\n\r\n return {\r\n successful: false,\r\n message,\r\n exception,\r\n boardPackageDocument: null\r\n }\r\n}\r\n","/*\r\n\timport { listLayoutDocumentSources } from '@/services/BoardMeetings/LayoutDocumentSource/List';\r\n\r\n const { sources, successful, message } = await listLayoutDocumentSources ({\r\n params: {\r\n hoaID\r\n }\r\n });\r\n if (!successful) {\r\n console.error (message);\r\n return;\r\n }\r\n*/\r\n\r\nimport _get from 'lodash/get'\r\nimport kms from '@/services/kms'\r\nimport { notifyError } from '@/services/notify'\r\n\r\nexport async function listLayoutDocumentSources({ params }) {\r\n try {\r\n const result = await kms.get(`/BoardMeetings/LayoutDocumentSource/List`, {\r\n params: {\r\n hoaID: params.hoaID\r\n }\r\n })\r\n\r\n let list = _get(result, 'results', [])\r\n if (!Array.isArray(list)) {\r\n list = []\r\n }\r\n\r\n return {\r\n successful: true,\r\n message: '',\r\n sources: list\r\n }\r\n } catch (exception) {\r\n console.error(exception)\r\n }\r\n\r\n let message = 'The document source layouts could not be retrieved.'\r\n notifyError(message)\r\n\r\n return {\r\n successful: false,\r\n message,\r\n sources: []\r\n }\r\n}\r\n","/*\r\n example:\r\n import { renderBPD } from '@/services/BoardMeetings/BoardPackage/RenderBoardPackageDocument';\r\n\r\n const { sequence, successful, message } = await renderBPD ({\r\n params: {\r\n boardPackageID: '',\r\n mergeFileName: '',\r\n asBase64: true\r\n }\r\n });\r\n if (!successful) {\r\n console.error (message);\r\n return;\r\n }\r\n*/\r\n//\r\nimport kms from '@/services/kms'\r\nimport { notifyError } from '@/services/notify'\r\n//\r\nexport async function renderBPD({ params }) {\r\n try {\r\n const _params = Object.keys(params)\r\n .map(key => {\r\n return key + '=' + params[key]\r\n })\r\n .join('&')\r\n\r\n const result = await kms.post(\r\n `/BoardMeetings/BoardPackage/RenderBoardPackageDocument?${_params}`\r\n )\r\n\r\n return {\r\n successful: true,\r\n message: '',\r\n sequence: result\r\n }\r\n } catch (exception) {\r\n console.error(exception)\r\n }\r\n\r\n let message = `The minutes file could not be retrieved.`\r\n notifyError(message)\r\n\r\n return {\r\n successful: false,\r\n message,\r\n sequence: null\r\n }\r\n}\r\n\r\n///////\r\n","export function onSort() {\r\n const component = this\r\n const { sortable } = this\r\n\r\n var order = sortable.toArray()\r\n for (let a = 0; a < order.length; a++) {\r\n const boardPackageDocumentID = parseInt(order[a])\r\n\r\n const entry = component.list.find(entry => {\r\n return entry.boardPackageDocumentID === boardPackageDocumentID\r\n })\r\n\r\n entry.sortOrder = a\r\n }\r\n\r\n component.update()\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-button',{ref:\"button\",attrs:{\"aria-label\":\"move document forward one\",\"rounded\":true},on:{\"click\":function($event){return _vm.click({ button: _vm.$refs.button.$el })}}},[_c('div',{staticClass:\"icon-uparrow\",staticStyle:{\"height\":\"20px\",\"width\":\"20px\",\"background-size\":\"contain\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=2d70825e&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-button',{ref:\"button\",attrs:{\"aria-label\":\"move document back one\",\"rounded\":true},on:{\"click\":function($event){return _vm.click({ button: _vm.$refs.button.$el })}}},[_c('div',{staticClass:\"icon-downarrow\",staticStyle:{\"height\":\"20px\",\"width\":\"20px\",\"background-size\":\"contain\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=46be539a&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import _get from 'lodash/get'\r\nimport Up from '../../../components/Up'\r\nimport Down from '../../../components/Down'\r\nimport BuefyButton from '@/components/buttons/Buefy'\r\n\r\nexport async function parseList() {\r\n const component = this\r\n const { sortable } = this\r\n\r\n this.rows = []\r\n this.loading = true\r\n\r\n await new Promise(resolve => {\r\n setTimeout(() => {\r\n resolve()\r\n }, 100)\r\n })\r\n\r\n this.loading = false\r\n\r\n this.rows = this.list\r\n .sort((a, b) => {\r\n return a.sortOrder > b.sortOrder\r\n })\r\n .map(spot => {\r\n const documentName = _get(spot, 'documentName', '')\r\n const boardPackageDocumentID = _get(spot, 'boardPackageDocumentID', '')\r\n\r\n const layoutDocumentSource = _get(spot, ['layoutDocumentSource', 'source'], '')\r\n const layoutDocumentSourceID = _get(\r\n spot,\r\n ['layoutDocumentSource', 'layoutDocumentSourceID'],\r\n ''\r\n )\r\n\r\n const isDocument = layoutDocumentSourceID === 3\r\n\r\n return {\r\n _dataId: boardPackageDocumentID,\r\n documentName,\r\n layoutDocumentSource,\r\n available: false,\r\n moveUp: {\r\n component: Up,\r\n props: {\r\n click({ button }) {\r\n var order = sortable.toArray()\r\n\r\n for (let a = 0; a < order.length; a++) {\r\n if (order[a] === boardPackageDocumentID.toString()) {\r\n const item = order.splice(a, 1)[0]\r\n order.splice(a - 1, 0, item)\r\n break\r\n }\r\n }\r\n\r\n sortable.sort(order)\r\n component.onSort()\r\n\r\n setTimeout(() => {\r\n try {\r\n button.focus()\r\n } catch (x) {\r\n console.error(x)\r\n }\r\n }, 1000)\r\n }\r\n }\r\n },\r\n moveDown: {\r\n component: Down,\r\n props: {\r\n click({ button }) {\r\n var order = sortable.toArray()\r\n\r\n for (let a = 0; a < order.length; a++) {\r\n if (order[a] === boardPackageDocumentID.toString()) {\r\n const item = order.splice(a, 1)[0]\r\n order.splice(a + 1, 0, item)\r\n break\r\n }\r\n }\r\n\r\n sortable.sort(order)\r\n component.onSort()\r\n\r\n setTimeout(() => {\r\n try {\r\n button.focus()\r\n } catch (x) {\r\n console.error(x)\r\n }\r\n }, 1000)\r\n }\r\n }\r\n },\r\n ...(isDocument\r\n ? {\r\n edit: {\r\n component: BuefyButton,\r\n props: {\r\n text: 'edit',\r\n click() {\r\n component.openEditModal({\r\n spot,\r\n documentName,\r\n boardPackageDocumentID\r\n })\r\n }\r\n }\r\n }\r\n }\r\n : {\r\n edit: ''\r\n }),\r\n delete: {\r\n component: BuefyButton,\r\n props: {\r\n text: 'delete',\r\n type: 'is-danger',\r\n click() {\r\n component.$buefy.dialog.confirm({\r\n title: 'Deleting Document',\r\n message: `Are you sure you want to delete document \"${documentName}\"? This action cannot be undone.`,\r\n confirmText: 'Delete Document',\r\n type: 'is-danger',\r\n hasIcon: true,\r\n onConfirm: () => {\r\n component.loading = true\r\n component.erase({\r\n boardPackageDocumentID\r\n })\r\n }\r\n })\r\n }\r\n }\r\n }\r\n }\r\n })\r\n\r\n this.$forceUpdate()\r\n\r\n await new Promise(resolve => {\r\n setTimeout(() => {\r\n resolve()\r\n }, 500)\r\n })\r\n\r\n const element = this.$refs.table.$el.querySelectorAll('tbody')[0]\r\n element.querySelectorAll('tr').forEach(tr => {\r\n /* eslint-disable no-empty */\r\n try {\r\n tr.style.cursor = 'move'\r\n } catch (x) {}\r\n })\r\n}\r\n","//\r\n\r\nimport { notifyError } from '@/services/notify'\r\nimport { listBoardPackageDocuments } from '@/services/BoardMeetings/BoardPackageDocument/List'\r\nimport { eraseBoardPackageDocument } from '@/services/BoardMeetings/BoardPackageDocument/Delete'\r\nimport { listLayoutDocumentSources } from '@/services/BoardMeetings/LayoutDocumentSource/List'\r\nimport { updateBoardPackageDocument } from '@/services/BoardMeetings/BoardPackageDocument/Put'\r\nimport { renderBPD } from '@/services/BoardMeetings/BoardPackage/RenderBoardPackageDocument'\r\nimport { base64toBlob, showPdf } from '@/services/blobutility'\r\n\r\nimport { onSort } from './list/onSort'\r\nimport { parseList } from './list/parseList'\r\n\r\nimport _cloneDeep from 'lodash/cloneDeep'\r\n\r\nexport const methods = {\r\n async refresh() {\r\n this.loading = true\r\n\r\n await this.getSources()\r\n await this.getList()\r\n await this.parseList()\r\n\r\n this.loading = false\r\n },\r\n\r\n async preview() {\r\n const { sequence, successful, message } = await renderBPD({\r\n params: {\r\n boardPackageID: this.boardPackageID,\r\n mergeFileName: 'Documents',\r\n asBase64: true\r\n }\r\n })\r\n if (!successful) {\r\n console.error(message)\r\n return\r\n }\r\n\r\n const blob = base64toBlob(sequence.split('data:application/pdf;base64,')[1], 'application/pdf')\r\n showPdf(blob)\r\n },\r\n\r\n async getSources() {\r\n const hoaID = this.hoaId\r\n\r\n const { sources, successful, message } = await listLayoutDocumentSources({\r\n params: {\r\n hoaID\r\n }\r\n })\r\n if (!successful) {\r\n console.error(message)\r\n return\r\n }\r\n\r\n this.sources = sources\r\n },\r\n\r\n /*\r\n route that takes: {\r\n boardPackageID\r\n boardPackageDocumentIDs: [] \r\n }\r\n */\r\n async update() {\r\n this.status = 'saving'\r\n clearTimeout(this.savingTimeout)\r\n\r\n const promises = this.list.map(_entry => {\r\n const entry = _cloneDeep(_entry)\r\n\r\n delete entry.boardPackage\r\n delete entry.createdDate\r\n delete entry.deletedDate\r\n delete entry.layoutAvailability\r\n delete entry.layoutDocumentSource\r\n delete entry.modifiedDate\r\n\r\n return new Promise(async resolve => {\r\n await updateBoardPackageDocument({\r\n json: entry\r\n }).then(({ successful, message }) => {\r\n if (!successful) {\r\n throw new Error(message)\r\n }\r\n\r\n resolve()\r\n })\r\n })\r\n })\r\n\r\n await Promise.all(promises)\r\n\r\n this.savingTimeout = setTimeout(() => {\r\n this.status = 'saved'\r\n }, 300)\r\n },\r\n\r\n onSort,\r\n parseList,\r\n\r\n async getList() {\r\n const { list, successful, message } = await listBoardPackageDocuments({\r\n params: {\r\n hoaID: this.hoaId,\r\n boardPackageID: this.boardPackageID\r\n }\r\n })\r\n if (!successful) {\r\n notifyError(message)\r\n return\r\n }\r\n\r\n this.list = list\r\n },\r\n\r\n async erase({ boardPackageDocumentID }) {\r\n await eraseBoardPackageDocument({\r\n boardPackageDocumentID\r\n }).then(({ successful, message }) => {\r\n if (!successful) {\r\n throw message\r\n }\r\n })\r\n\r\n this.refresh()\r\n },\r\n\r\n afterUpload() {\r\n this.loading = true\r\n this.refresh()\r\n },\r\n\r\n openEditModal({ boardPackageDocumentID, documentName, spot }) {\r\n this.$refs.modal.open({\r\n mode: 'edit',\r\n //\r\n boardPackageID: this.boardPackageID,\r\n sources: this.sources,\r\n //\r\n boardPackageDocumentID,\r\n documentName,\r\n spot,\r\n //\r\n rows: this.rows\r\n })\r\n },\r\n\r\n openAddModal() {\r\n this.$refs.modal.open({\r\n mode: 'add',\r\n //\r\n boardPackageID: this.boardPackageID,\r\n sources: this.sources,\r\n list: this.list,\r\n //\r\n rows: this.rows\r\n })\r\n }\r\n}\r\n","import _get from 'lodash/get'\r\n\r\nexport function data() {\r\n return {\r\n loading: false,\r\n boardPackageID: parseInt(_get(this, ['$route', 'params', 'id'], '')),\r\n\r\n // saving, saved\r\n status: 'saved',\r\n saving: true,\r\n savingTimeout: null,\r\n\r\n rows: [],\r\n list: [],\r\n columns: [\r\n {\r\n field: 'documentName',\r\n label: 'Document Name'\r\n },\r\n {\r\n field: 'documentSource',\r\n label: 'Document Source'\r\n },\r\n {\r\n field: 'available',\r\n label: 'Available'\r\n },\r\n {\r\n field: 'edit',\r\n label: ''\r\n },\r\n {\r\n field: 'delete',\r\n label: ''\r\n }\r\n ]\r\n }\r\n}\r\n","import { mapState } from 'vuex'\r\n\r\nexport const computed = {\r\n ...mapState({\r\n hoaId: state => state.user.hoaId\r\n })\r\n}\r\n\r\n//\r\n","\r\n\r\n\r\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=7fb7ba68&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/*\r\n import { base64toBlob, showPdf } from '@/services/blobutility'\r\n*/\r\n\r\nexport const base64toBlob = (b64Data, contentType) => {\r\n const sliceSize = 512\r\n const byteCharacters = atob(b64Data)\r\n const byteArrays = []\r\n\r\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n const slice = byteCharacters.slice(offset, offset + sliceSize)\r\n\r\n const byteNumbers = new Array(slice.length)\r\n for (let i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i)\r\n }\r\n\r\n const byteArray = new Uint8Array(byteNumbers)\r\n byteArrays.push(byteArray)\r\n }\r\n\r\n const blob = new Blob(byteArrays, { type: contentType })\r\n return blob\r\n}\r\n\r\nexport const showPdf = blob => {\r\n var newBlob = new Blob([blob], { type: 'application/pdf' })\r\n\r\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\r\n window.navigator.msSaveOrOpenBlob(newBlob)\r\n } else {\r\n const data = window.URL.createObjectURL(newBlob)\r\n\r\n var link = document.createElement('a')\r\n link.download = 'download.pdf'\r\n link.setAttribute('download', 'download.pdf')\r\n link.href = data\r\n\r\n window.open(link, '_blank')\r\n }\r\n\r\n return\r\n}\r\n\r\nexport const downloadPdf = blob => {\r\n var newBlob = new Blob([blob], { type: 'application/pdf' })\r\n\r\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\r\n window.navigator.msSaveOrOpenBlob(newBlob)\r\n } else {\r\n const data = window.URL.createObjectURL(newBlob)\r\n var link = document.createElement('a')\r\n link.download = 'download.pdf'\r\n link.setAttribute('download', 'download.pdf')\r\n link.href = data\r\n link.click()\r\n\r\n setTimeout(function() {\r\n window.URL.revokeObjectURL(data)\r\n 100\r\n })\r\n }\r\n\r\n return\r\n}\r\n\r\nexport const showAnyType = (blob, mimeType) => {\r\n console.debug('showAnyType...')\r\n var newBlob = new Blob([blob], { type: mimeType })\r\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\r\n window.navigator.msSaveOrOpenBlob(newBlob)\r\n } else {\r\n const data = window.URL.createObjectURL(newBlob)\r\n var link = document.createElement('a')\r\n link.href = data\r\n\r\n window.open(data, '_blank')\r\n\r\n setTimeout(function() {\r\n window.URL.revokeObjectURL(data)\r\n 100\r\n })\r\n }\r\n\r\n return\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"uploader\",staticClass:\"PDFUploader\",attrs:{\"pdf-uploader\":\"\"}},[_c('b-upload',{attrs:{\"multiple\":_vm.multiple,\"drag-drop\":\"\",\"expanded\":\"\",\"accept\":\"application/pdf\"},model:{value:(_vm.attachments),callback:function ($$v) {_vm.attachments=$$v},expression:\"attachments\"}},[_c('section',{staticClass:\"section\"},[_c('div',{staticClass:\"content has-text-centered\"},[_c('p',[_c('b-icon',{attrs:{\"icon\":\"upload\",\"size\":\"is-large\"}})],1),_vm._t(\"default\"),(_vm.multiple)?_c('p',[_vm._v(\"Drop the PDFs here or click to choose.\")]):_vm._e(),(!_vm.multiple)?_c('div',[(Array.isArray(_vm.pdfs) && _vm.pdfs.length === 1)?_c('p',[_vm._v(\" To replace the selected PDF, Drop another PDF here or click to choose. \")]):_c('p',[_vm._v(\"Drop a PDF here or click to choose.\")])]):_vm._e()],2)])]),(_vm.multiple)?_c('div',{style:({ padding: '8px' })},[_vm._v(\" \"+_vm._s(_vm.attachments.length)+\" PDF's selected for upload \")]):_vm._e(),_c('div',{style:({ position: 'relative', display: 'flex', flexWrap: 'wrap', width: '100%' })},[_vm._l((_vm.pdfs),function(pdf,index){return _c('div',_vm._g({key:index,style:(Object.assign({}, (typeof _vm.pdfOnClick === 'function' ? { cursor: 'pointer' } : {}),\n {position: 'relative',\n display: 'flex',\n alignItems: 'center',\n width: '200px',\n height: '200px',\n overflow: 'hidden',\n background: _vm.palette.tile,\n borderRadius: '4px',\n margin: '10px',\n boxShadow: (\"0 0 4px 1px \" + (_vm.palette.tileShadow))}))},\n typeof _vm.pdfOnClick === 'function'\n ? {\n click: function () {\n _vm.pdfOnClick({ index: index, pdf: pdf })\n }\n }\n : {}\n ),[_c('PDF',{staticStyle:{\"display\":\"none\"},attrs:{\"src\":_vm.base64pdf},on:{\"num-pages\":function($event){_vm.pageCount = new Array($event)}}}),_vm._l((_vm.pageCount),function(page,index){return _c('PDF',{key:index,ref:'pdf-' + index,refInFor:true,style:({\n margin: 'auto',\n width: ((100 * 1) + \"%\"),\n opacity: _vm.loading ? 0 : 1,\n transition: _vm.transition ? '.2s opacity' : ''\n }),attrs:{\"src\":pdf,\"scale\":1,\"resize\":true,\"page\":index + 1}})}),_c('button',{staticClass:\"delete is-medium\",style:({\n position: 'absolute',\n top: '10px',\n right: '10px'\n }),attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.deleteAttachment(index)}}})],2)}),_c('b-loading',{attrs:{\"is-full-page\":false},model:{value:(_vm.loading),callback:function ($$v) {_vm.loading=$$v},expression:\"loading\"}})],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=161b617a&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\""],"sourceRoot":""}