{"version":3,"sources":["webpack:///./src/views/school/SafetyHomeSchool/SchoolBusManage/components/BusRouuteDialog.vue?03cc","webpack:///./src/views/school/SafetyHomeSchool/SchoolBusManage/TheBusRouteManage.vue?47c8","webpack:///./src/views/school/SafetyHomeSchool/SchoolBusManage/TheBusRouteManage.vue","webpack:///./src/views/school/SafetyHomeSchool/SchoolBusManage/components/BusRouuteDialog.vue","webpack:///src/views/school/SafetyHomeSchool/SchoolBusManage/components/BusRouuteDialog.vue","webpack:///./src/views/school/SafetyHomeSchool/SchoolBusManage/components/BusRouuteDialog.vue?e259","webpack:///./src/views/school/SafetyHomeSchool/SchoolBusManage/components/BusRouuteDialog.vue?4f74","webpack:///./node_modules/sortablejs/modular/sortable.esm.js","webpack:///src/views/school/SafetyHomeSchool/SchoolBusManage/TheBusRouteManage.vue","webpack:///./src/views/school/SafetyHomeSchool/SchoolBusManage/TheBusRouteManage.vue?609f","webpack:///./src/views/school/SafetyHomeSchool/SchoolBusManage/TheBusRouteManage.vue?36d1","webpack:///./src/assets/img/edu/marker_sprite.png"],"names":["render","_vm","this","_c","_self","staticClass","attrs","on","addPath","_v","model","value","requestData","routeName","callback","$$v","$set","trim","expression","searchData","tableData","background","color","scopedSlots","_u","key","fn","props","_l","row","schoolBusSiteList","activity","index","siteName","$Common","dateFormatDateTwo","siteArrivalTime","scope","_s","pageSize","pageNum","$index","length","routeDrivingTime","rowData","addTime","$event","editRowInfo","delRowInfo","routeId","total","handleCurrentChange","rowInfo","dialogType","showDialog","close","saveClick","staticRenderFns","type","ref","staticStyle","ruleForm","rules","slot","addSiteClick","getLocation","siteGeographicLocation","dataInterposition","deletBusRoute","mapDialog","center","sel","onBaiduMapReady","positionInfo","url","require","size","width","height","_e","mapAddClick","cencelMapClick","components","Boolean","default","info","Object","String","data","required","message","trigger","tableIndex","lng","lat","BMap","pitchMapInfo","siteLatitudeLongitude","watch","val","computed","methods","$emit","obj","siteSequence","push","split","formName","$refs","validate","valid","e","self","geoCoder","Geocoder","point","res","address","splice","map","item","created","mounted","beforeCreate","beforeMount","beforeUpdate","updated","beforeDestroy","destroy","activated","component","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread2","target","i","arguments","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_typeof","Symbol","iterator","constructor","prototype","configurable","writable","_extends","assign","hasOwnProperty","call","_objectWithoutPropertiesLoose","excluded","sourceKeys","indexOf","_objectWithoutProperties","sourceSymbolKeys","propertyIsEnumerable","version","userAgent","pattern","window","navigator","match","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","el","event","addEventListener","off","removeEventListener","matches","selector","substring","msMatchesSelector","webkitMatchesSelector","_","getParentOrHost","host","document","nodeType","parentNode","closest","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","name","state","classList","className","replace","css","prop","style","defaultView","getComputedStyle","currentStyle","matrix","selfOnly","appliedTransforms","transform","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","find","tagName","list","getElementsByTagName","n","getWindowScrollingElement","scrollingElement","documentElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","getBoundingClientRect","elRect","top","left","bottom","right","innerHeight","innerWidth","containerRect","parseInt","elMatrix","scaleX","a","scaleY","d","isScrolledPast","elSide","parentSide","parent","getParentAutoScrollElement","elSideVal","parentSideVal","visible","getChild","childNum","options","includeDragEl","currentChild","children","display","Sortable","ghost","dragged","draggable","lastChild","last","lastElementChild","previousElementSibling","nodeName","toUpperCase","clone","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollLeft","scrollTop","indexOfObject","arr","Number","includeSelf","elem","gotSelf","clientWidth","scrollWidth","clientHeight","scrollHeight","elemCSS","overflowX","overflowY","body","extend","dst","src","isRectEqual","rect1","rect2","Math","round","throttle","ms","args","_this","setTimeout","cancelThrottle","clearTimeout","scrollBy","x","y","Polymer","$","jQuery","Zepto","dom","cloneNode","expando","Date","getTime","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","animation","slice","child","rect","fromRect","thisAnimationDuration","childMatrix","f","addAnimationState","removeAnimationState","animateAll","animating","animationTime","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","animate","max","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","forRepaintDummy","repaint","easing","animated","offsetWidth","sqrt","pow","plugins","defaults","initializeByDefault","PluginManager","mount","plugin","option","p","pluginName","concat","pluginEvent","eventName","sortable","evt","eventCanceled","cancel","eventNameGlobal","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","dispatchEvent","_ref","rootEl","targetEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","charAt","substr","CustomEvent","createEvent","initEvent","bubbles","cancelable","to","from","pullMode","lastPutMode","undefined","allEventProperties","_excluded","bind","dragEl","parentEl","ghostEl","nextEl","lastDownEl","cloneHidden","dragStarted","moved","activeSortable","active","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","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","paddingRight","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","put","revertClone","preventDefault","stopPropagation","stopImmediatePropagation","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","toString","sort","disabled","store","handle","test","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","setData","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","get","_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","path","composedPath","button","isContentEditable","criteria","_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","elementFromPoint","inserted","ghostMatrix","relativeScrollOffset","dx","dy","b","c","cssMatrix","appendChild","removeAttribute","_hideClone","cloneId","insertBefore","_loopId","setInterval","effectAllowed","_dragStartId","revert","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","changed","firstChild","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","Array","querySelectorAll","utils","is","nextTick","cancelNextTick","detectDirection","element","_len","_key","create","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","BusRouuteDialog","schoolId","$store","mapCenter","waypoints","mapStart","mapEnd","userInfo","getters","getUserInfo","getSchoolBulRoute","$Http","code","$message","messsage","mapClick","$confirm","confirmButtonText","cancelButtonText","then","catch","delSchoolBulRoute","rowDrop","tbody","querySelector","onEnd","currRow","addOrEditSchoolBulRoute","addSchoolBulRoute","editSchoolBulRoute","module","exports"],"mappings":"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","file":"js/chunk-3e30aa24.b7d92152.js","sourcesContent":["export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BusRouuteDialog.vue?vue&type=style&index=0&id=7fd51b49&prod&scoped=true&lang=css\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TheBusRouteManage.vue?vue&type=style&index=0&id=6d45c18a&prod&scoped=true&lang=css\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"page_box\"},[_c('div',{staticClass:\"page_option_box\"},[_c('div',{staticClass:\"option_box\"},[_c('el-button',{attrs:{\"size\":\"mini\",\"type\":\"primary\",\"plain\":\"\",\"icon\":\"el-icon-circle-plus-outline\"},on:{\"click\":_vm.addPath}},[_vm._v(\"新增校车路线\")])],1),_c('div',{staticClass:\"search_box\"},[_c('el-input',{attrs:{\"size\":\"mini\",\"placeholder\":\"路线名称\"},model:{value:(_vm.requestData.routeName),callback:function ($$v) {_vm.$set(_vm.requestData, \"routeName\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"requestData.routeName\"}}),_c('el-button',{attrs:{\"size\":\"mini\",\"type\":\"primary\",\"plain\":\"\",\"icon\":\"el-icon-search\"},on:{\"click\":_vm.searchData}},[_vm._v(\"搜索\")])],1)]),_c('div',{staticClass:\"page_table_box\"},[_c('div',{staticClass:\"school_table_box\"},[_c('el-table',{staticClass:\"table_box\",attrs:{\"data\":_vm.tableData,\"height\":\"100%\",\"header-cell-style\":{ background: '#E2EEFF', color: '#474859' }}},[_c('el-table-column',{attrs:{\"type\":\"expand\"},scopedSlots:_vm._u([{key:\"default\",fn:function(props){return [_c('el-steps',_vm._l((props.row.schoolBusSiteList),function(activity,index){return _c('el-step',{key:index,attrs:{\"title\":activity.siteName,\"description\":_vm.$Common.dateFormatDateTwo(activity.siteArrivalTime)}})}),1)]}}])}),_c('el-table-column',{attrs:{\"label\":\"序号\",\"width\":\"70\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\" \"+_vm._s(_vm.requestData.pageSize * (_vm.requestData.pageNum - 1) + scope.$index + 1)+\" \")]}}])}),_c('el-table-column',{attrs:{\"prop\":\"routeName\",\"label\":\"路线名称\",\"align\":\"center\"}}),_c('el-table-column',{attrs:{\"prop\":\"routeDrivingTime\",\"label\":\"站点数量\",\"align\":\"center\",\"width\":\"170\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(scope.row.schoolBusSiteList.length))])]}}])}),_c('el-table-column',{attrs:{\"prop\":\"routeDrivingTime\",\"label\":\"预计时间\",\"align\":\"center\",\"width\":\"170\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(scope.row.routeDrivingTime)+\"分钟\")])]}}])}),_c('el-table-column',{attrs:{\"prop\":\"addTime\",\"label\":\"创建时间\",\"width\":\"270\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(rowData){return [_vm._v(\" \"+_vm._s(_vm.$Common.dateFormatDateTwo(rowData.row.addTime))+\" \")]}}])}),_c('el-table-column',{attrs:{\"label\":\"操作\",\"width\":\"180\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(rowData){return [_c('el-link',{staticClass:\"link_box\",attrs:{\"type\":\"primary\",\"underline\":false},on:{\"click\":function($event){return _vm.editRowInfo(rowData.row)}}},[_vm._v(\"编辑\")]),_c('el-divider',{attrs:{\"direction\":\"vertical\"}}),_c('el-link',{staticClass:\"link_box\",attrs:{\"type\":\"primary\",\"underline\":false},on:{\"click\":function($event){return _vm.delRowInfo(rowData.row.routeId)}}},[_vm._v(\"删除\")])]}}])})],1)],1),_c('div',{staticClass:\"pagination_box\"},[_c('el-pagination',{attrs:{\"current-page\":_vm.requestData.pageNum,\"page-size\":_vm.requestData.pageSize,\"layout\":\"total, prev, pager, next, jumper\",\"total\":_vm.total},on:{\"current-change\":_vm.handleCurrentChange}})],1)]),_c('bus-rouute-dialog',{attrs:{\"info\":_vm.rowInfo,\"type\":_vm.dialogType,\"showDialog\":_vm.showDialog},on:{\"close\":_vm.close,\"saveClick\":_vm.saveClick}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('el-dialog',{attrs:{\"title\":_vm.type == 'add' ? '添加校车路线信息' : '编辑校车路线信息',\"visible\":_vm.showDialog,\"modal-append-to-body\":false,\"append-to-body\":true,\"close-on-click-modal\":false,\"close-on-press-escape\":false,\"width\":\"70%\"},on:{\"update:visible\":function($event){_vm.showDialog=$event},\"close\":_vm.close}},[_c('div',{staticClass:\"dlialog-box\"},[_c('el-form',{ref:\"ruleForm\",staticClass:\"demo-ruleForm\",staticStyle:{\"width\":\"calc(100% - 20px)\"},attrs:{\"model\":_vm.ruleForm,\"rules\":_vm.rules,\"label-width\":\"100px\"}},[_c('el-form-item',{attrs:{\"label\":\"路线名称:\",\"prop\":\"routeName\"}},[_c('el-input',{staticStyle:{\"width\":\"100%\"},attrs:{\"size\":\"small\",\"clearable\":\"\"},model:{value:(_vm.ruleForm.routeName),callback:function ($$v) {_vm.$set(_vm.ruleForm, \"routeName\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"ruleForm.routeName\"}})],1),_c('el-form-item',{attrs:{\"label\":\"预计时间:\"}},[_c('el-input',{staticStyle:{\"width\":\"100%\"},attrs:{\"size\":\"small\",\"clearable\":\"\"},model:{value:(_vm.ruleForm.routeDrivingTime),callback:function ($$v) {_vm.$set(_vm.ruleForm, \"routeDrivingTime\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"ruleForm.routeDrivingTime\"}},[_c('template',{slot:\"append\"},[_vm._v(\"分钟\")])],2)],1),_c('el-form-item',{attrs:{\"label\":\"站点:\"}},[_c('span',[_vm._v(\"共\"+_vm._s(_vm.ruleForm.schoolBusSiteList.length || 0)+\"站\")]),_c('el-button',{staticClass:\"site_add_box\",attrs:{\"type\":\"success\",\"plain\":\"\",\"size\":\"mini\",\"icon\":\"el-icon-plus\"},on:{\"click\":_vm.addSiteClick}},[_vm._v(\"新增站点\")])],1)],1),_c('el-table',{staticStyle:{\"width\":\"calc(100% - 40px)\",\"margin\":\"0px 20px\"},attrs:{\"data\":_vm.ruleForm.schoolBusSiteList,\"border\":\"\",\"height\":\"350px\"}},[_c('el-table-column',{attrs:{\"prop\":\"siteSequence\",\"label\":\"站点序号\",\"align\":\"center\",\"width\":\"100px\"}}),_c('el-table-column',{attrs:{\"prop\":\"siteName\",\"label\":\"站点名称\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-input',{attrs:{\"size\":\"small\",\"clearable\":\"\"},model:{value:(scope.row.siteName),callback:function ($$v) {_vm.$set(scope.row, \"siteName\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"scope.row.siteName\"}})]}}])}),_c('el-table-column',{attrs:{\"prop\":\"siteArrivalTime\",\"label\":\"到站时间\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-time-picker',{attrs:{\"placeholder\":\"到站时间\",\"value-format\":\"timestamp\",\"size\":\"small\",\"clearable\":\"\"},model:{value:(scope.row.siteArrivalTime),callback:function ($$v) {_vm.$set(scope.row, \"siteArrivalTime\", $$v)},expression:\"scope.row.siteArrivalTime\"}})]}}])}),_c('el-table-column',{attrs:{\"prop\":\"siteGeographicLocation\",\"label\":\"地理位置\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-link',{attrs:{\"type\":\"primary\",\"underline\":false},on:{\"click\":function($event){return _vm.getLocation(scope.$index, scope.row)}}},[_vm._v(_vm._s(scope.row.siteGeographicLocation || \"添加\"))])]}}])}),_c('el-table-column',{attrs:{\"label\":\"操作\",\"align\":\"center\",\"width\":\"200\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"warning\",\"plain\":\"\",\"size\":\"mini\",\"icon\":\"el-icon-edit\"},on:{\"click\":function($event){return _vm.dataInterposition(scope.$index)}}},[_vm._v(\"插入\")]),_c('el-button',{attrs:{\"type\":\"danger\",\"plain\":\"\",\"size\":\"mini\",\"icon\":\"el-icon-delete-solid\"},on:{\"click\":function($event){return _vm.deletBusRoute(scope.$index)}}},[_vm._v(\"删除\")])]}}])})],1)],1),_c('div',{staticClass:\"save-box\"},[_c('div',{staticClass:\"cut_off_rule\"}),_c('div',{staticClass:\"button_box\"},[_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\",\"plain\":\"\"},on:{\"click\":function($event){return _vm.saveClick('ruleForm')}}},[_vm._v(\"提交\")]),_c('el-button',{attrs:{\"size\":\"small\",\"plain\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\"取消\")])],1)]),_c('el-dialog',{attrs:{\"width\":\"50%\",\"title\":\"地理位置\",\"visible\":_vm.mapDialog,\"append-to-body\":\"\",\"close-on-click-modal\":false,\"close-on-press-escape\":false},on:{\"update:visible\":function($event){_vm.mapDialog=$event}}},[_c('div',{staticClass:\"map_box\"},[_c('div',{staticClass:\"map_item_box\"},[(_vm.mapDialog)?_c('baidu-map',{ref:\"map\",staticClass:\"map\",attrs:{\"center\":_vm.center,\"zoom\":15,\"scroll-wheel-zoom\":true,\"double-click-zoom\":false},on:{\"click\":_vm.sel,\"ready\":_vm.onBaiduMapReady}},[_c('bm-navigation',{attrs:{\"anchor\":\"BMAP_ANCHOR_TOP_LEFT\"}}),_c('bm-marker',{attrs:{\"position\":_vm.positionInfo,\"dragging\":true,\"animation\":\"BMAP_ANIMATION_BOUNCE\",\"icon\":{\n url: require('@/assets/img/edu/marker_sprite.png'),\n size: { width: 20, height: 40 }\n }}})],1):_vm._e()],1),_c('div',{staticClass:\"save-box\"},[_c('div',{staticClass:\"cut_off_rule\"}),_c('div',{staticClass:\"button_box\"},[_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\",\"plain\":\"\"},on:{\"click\":_vm.mapAddClick}},[_vm._v(\"添加\")]),_c('el-button',{attrs:{\"size\":\"small\",\"plain\":\"\"},on:{\"click\":_vm.cencelMapClick}},[_vm._v(\"取消\")])],1)])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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!./BusRouuteDialog.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!./BusRouuteDialog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./BusRouuteDialog.vue?vue&type=template&id=7fd51b49&scoped=true\"\nimport script from \"./BusRouuteDialog.vue?vue&type=script&lang=js\"\nexport * from \"./BusRouuteDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./BusRouuteDialog.vue?vue&type=style&index=0&id=7fd51b49&prod&scoped=true&lang=css\"\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 \"7fd51b49\",\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\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!./TheBusRouteManage.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!./TheBusRouteManage.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TheBusRouteManage.vue?vue&type=template&id=6d45c18a&scoped=true\"\nimport script from \"./TheBusRouteManage.vue?vue&type=script&lang=js\"\nexport * from \"./TheBusRouteManage.vue?vue&type=script&lang=js\"\nimport style0 from \"./TheBusRouteManage.vue?vue&type=style&index=0&id=6d45c18a&prod&scoped=true&lang=css\"\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 \"6d45c18a\",\n null\n \n)\n\nexport default component.exports","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAiCAMAAAAJbCvNAAABIFBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/d2sAAAD/fnH/em3la2B/OzUqFBL/eWz7dWntcGT/fG9PJCEhDw0KBAT7eGz2d2v4c2iOQzxZKSU9HRobDAvwc2jdamDBXFOJQDoyFxURCAfwcWbNYVe3V06tUUmdSkOSRD5gLChTJyNMJCBGIB03GRfmcWW5W1KiTEV7OjQuD6FKAAAANnRSTlMAf3yAdxwLcg16ZTEHbCGfkGlOJWFaPi0X5VdSBPDt6s6Vim9LRjg0FBLWJ/jBpEVDH/Pe0azk4JQeAAAB/0lEQVQ4y5WT55aiQBBGERsQEAVRQF1z1okbBsRIMIeJO3HD+7/FljC6Ip4zZ+6vPtz6uuiiwVwuGT4aLTAR7DhkMGe9PT+/Wdli6JiP5OdrvT0ctvXHebPl92LydaC1r4C2dmvkZN/++VcbtEvbNpqHXQLzAfhdxcIser2SnGhXe2g/c96zJCy9B8/1Trfb0WHRG9wwnoLitdOgowKdzWo44z0FUcPp0FWBrtNjGv1cAf9Bi49fkkg+HhwzK2Iegp5B9RYmHw6TJBkCSDL8BUbdNOze1tv29Ntlo6EoxAalHiJhi1ZyOnQq+v3+6CkrERFRltlarcbKItHAADbT0ZyC8Wh9kmqxValSjqXT6VhZYt2xp9TVEPLjxcoKVs9jqTgjCBzHCUyiwmIOZ91Rrz8e6LN8OcEIJQohRNMIUVxCer9TmYk2HiwnalAogcKBQADHaSp+sf1k5uh2ubr+TiEanAtOIy5d247r68Ovu4kaBRvc4OaFhLS7G2fG8vdLck9DPB6TiN39S9/c3ZunrgeNKNBVkYBJvlPPPNyrBdyJg2ZSF2ykQYax/5yu/2QQtABd2oQVsB74p7/5EhyAppiyTJCw9QHM7OUHBXEhJtch66dimgWEUym27oT9sJZaQFyFgPRxRFXl4+zBb7e/mXKiUqC9hPfX2ZzPY+cY9g/Jd2F5Z5tCWgAAAABJRU5ErkJggg==\""],"sourceRoot":""}