{"version":3,"sources":["webpack:///./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/file-saver/dist/FileSaver.min.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/vuedraggable/dist/vuedraggable.common.js","webpack:///./node_modules/core-js/modules/es.object.entries.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/internals/object-to-array.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./node_modules/vue-cropperjs/dist/VueCropper.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/modules/es.array.from.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/sortablejs/modular/sortable.esm.js","webpack:///./node_modules/cropperjs/dist/cropper.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///./node_modules/core-js/modules/es.array.slice.js","webpack:///./src/components/PhotoUploader.vue?8248","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./src/components/ImageCard.vue?90ff","webpack:///./src/components/PhotoEditor.vue?600e","webpack:///src/components/PhotoEditor.vue","webpack:///./src/components/PhotoEditor.vue?c58e","webpack:///./src/components/PhotoEditor.vue","webpack:///src/components/ImageCard.vue","webpack:///./src/components/ImageCard.vue?c779","webpack:///./src/components/ImageCard.vue","webpack:///src/components/PhotoUploader.vue","webpack:///./src/components/PhotoUploader.vue?2ee7","webpack:///./src/components/PhotoUploader.vue"],"names":["toIndexedObject","nativeGetOwnPropertyNames","f","toString","windowNames","window","Object","getOwnPropertyNames","getWindowNames","it","error","slice","module","exports","call","this","b","a","autoBom","console","warn","test","type","Blob","c","d","XMLHttpRequest","open","responseType","onload","g","response","onerror","send","status","e","dispatchEvent","MouseEvent","document","createEvent","initMouseEvent","self","global","navigator","userAgent","saveAs","HTMLAnchorElement","prototype","h","i","URL","webkitURL","j","createElement","name","download","rel","href","origin","location","target","createObjectURL","setTimeout","revokeObjectURL","msSaveOrOpenBlob","title","body","innerText","HTMLElement","safari","FileReader","k","onloadend","result","replace","readAsDataURL","l","m","redefine","anObject","fails","flags","TO_STRING","RegExpPrototype","RegExp","nativeToString","NOT_GENERIC","source","INCORRECT_NAME","R","p","String","rf","undefined","unsafe","modules","installedModules","__webpack_require__","moduleId","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","hasOwnProperty","s","LIBRARY","$export","hide","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","keys","FF_ITERATOR","KEYS","VALUES","returnThis","Base","NAME","Constructor","next","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","proto","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","values","P","F","toInteger","defined","that","pos","length","charCodeAt","charAt","at","S","index","unicode","ignoreCase","multiline","sticky","$keys","enumBugKeys","O","dP","getKeys","defineProperties","Properties","wks","regexpExec","SPECIES","REPLACE_SUPPORTS_NAMED_GROUPS","re","exec","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","apply","arguments","split","KEY","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","constructor","nativeRegExpMethod","fns","nativeMethod","regexp","str","arg2","forceStringMethod","done","strfn","rxfn","string","arg","isObject","is","cof","ARG","tryGet","T","B","callee","getOwnPropertySymbols","has","SRC","$toString","TPL","inspectSource","val","safe","isFunction","join","Function","dPs","IE_PROTO","Empty","PROTOTYPE","createDict","iframeDocument","iframe","lt","gt","style","display","appendChild","src","contentWindow","write","close","store","uid","USE_SYMBOL","$exports","context","INCLUDES","includes","searchString","indexOf","createDesc","toObject","ObjectProto","descriptor","ceil","Math","floor","isNaN","bitmap","configurable","writable","MATCH","regexpFlags","nativeExec","nativeReplace","patchedExec","LAST_INDEX","UPDATES_LAST_INDEX_WRONG","re1","re2","NPCG_INCLUDED","PATCH","lastIndex","reCopy","match","propertyIsEnumerable","core","SHARED","push","version","copyright","ctx","own","out","exp","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","expProto","U","W","fn","classof","builtinExec","TypeError","shared","$includes","el","IObject","valueOf","DESCRIPTORS","gOPS","pIE","$assign","assign","A","K","forEach","aLen","getSymbols","isEnum","concat","__g","max","min","def","tag","stat","__e","IE8_DOM_DEFINE","toPrimitive","Attributes","aFunction","UNSCOPABLES","ArrayProto","Array","toLength","advanceStringIndex","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","maybeToString","REPLACE","$replace","maybeCallNative","searchValue","replaceValue","res","rx","functionalReplace","fullUnicode","results","matchStr","accumulatedResult","nextSourcePosition","matched","position","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","symbols","ch","capture","isRegExp","$iterators","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","forced","toIObject","toAbsoluteIndex","IS_INCLUDES","$this","fromIndex","__webpack_exports__","insertNodeAt","camelize","removeNode","getConsole","cached","cache","hit","regex","_","toUpperCase","node","parentElement","removeChild","fatherNode","refNode","children","nextSibling","insertBefore","id","px","random","addToUnscopables","step","iterated","_t","_i","_k","Arguments","arrayIndexOf","names","STARTS_WITH","$startsWith","startsWith","search","currentScript","scripts","getElementsByTagName","Error","err","stack","readyState","documentElement","setPublicPath_i","_arrayWithHoles","arr","isArray","_iterableToArrayLimit","iterator","_arr","_n","_d","_e","_s","_arrayLikeToArray","len","arr2","_unsupportedIterableToArray","minLen","from","_nonIterableRest","_slicedToArray","_arrayWithoutHoles","_iterableToArray","iter","_nonIterableSpread","_toConsumableArray","external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_","external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default","helper","buildAttribute","propName","computeVmIndex","vnodes","element","map","elt","elm","_computeIndexes","slots","isTransition","footerOffset","elmFromNodes","footerIndex","rawIndexes","idx","filter","ind","emit","evtName","evtData","_this","$nextTick","$emit","toLowerCase","delegateAndEmit","_this2","realList","isTransitionName","vuedraggable_isTransition","_slots","componentOptions","getSlot","slot","scopedSlot","computeChildrenAndOffsets","headerOffset","header","footer","getComponentAttributes","$attrs","componentData","attributes","update","attrs","reduce","on","props","componentDataAttrs","eventsListened","eventsToEmit","readonlyProperties","evt","draggingElement","options","list","required","default","noTransitionOnDrag","Boolean","clone","original","move","draggableComponent","inheritAttrs","data","transitionMode","noneFunctionalComponentMode","render","$slots","_computeChildrenAndOf","$scopedSlots","getTag","created","mounted","_this3","$el","nodeName","getIsFunctional","optionsAdded","onMove","originalEvent","onDragMove","draggable","_sortable","rootContainer","computeIndexes","beforeDestroy","destroy","computed","watch","handler","newOptionValue","updateOptions","deep","fnOptions","_vnode","functional","option","getChildrenNodes","$children","rawNodes","child","_this4","visibleIndexes","getUnderlyingVm","htmlElt","getUnderlyingPotencialDraggableComponent","_ref","vue","__vue__","$options","_componentTag","$parent","emitChanges","_this5","alterList","onList","newList","spliceList","_arguments","splice","updatePosition","oldIndex","newIndex","getRelatedContextFromMoveEvent","_ref2","to","related","component","destination","getVmIndex","domIndex","indexes","numberIndexes","getComponent","componentInstance","resetTransitionData","nodes","transitionContainer","kept","onDragStart","item","_underlying_vm_","onDragAdd","added","onDragRemove","pullMode","removed","onDragUpdate","moved","updateProperty","propertyName","computeFutureIndex","relatedContext","domChildren","currentDOMIndex","currentIndex","draggedInList","willInsertAfter","draggedContext","futureIndex","sendEvt","onDragEnd","Vue","vuedraggable","$","requireObjectCoercible","whitespaces","whitespace","ltrim","rtrim","createMethod","TYPE","start","end","trim","objectKeys","TO_ENTRIES","setPrototypeOf","dummy","Wrapper","NewTarget","NewTargetPrototype","path","wrappedWellKnownSymbolModule","_cropperjs","_cropperjs2","_interopRequireDefault","obj","_objectWithoutProperties","previewPropType","Element","containerStyle","ref","alt","$listeners","imgStyle","viewMode","Number","dragMode","initialAspectRatio","aspectRatio","preview","responsive","restore","checkCrossOrigin","checkOrientation","modal","guides","center","highlight","background","autoCrop","autoCropArea","movable","rotatable","scalable","zoomable","zoomOnTouch","zoomOnWheel","wheelZoomRatio","cropBoxMovable","cropBoxResizable","toggleDragModeOnDblclick","minCanvasWidth","minCanvasHeight","minCropBoxWidth","minCropBoxHeight","minContainerWidth","minContainerHeight","ready","cropstart","cropmove","cropend","crop","zoom","_$options$props","cropper","$refs","img","reset","clear","initCrop","url","onlyColorChanged","enable","disable","offsetX","offsetY","moveTo","x","y","relativeZoom","ratio","_originalEvent","zoomTo","rotate","degree","rotateTo","scaleX","_scaleX","scaleY","_scaleY","scale","getData","rounded","setData","getContainerData","getImageData","getCanvasData","setCanvasData","getCropBoxData","setCropBoxData","getCroppedCanvas","setAspectRatio","setDragMode","getBuiltIn","IS_PURE","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","createPropertyDescriptor","nativeObjectCreate","getOwnPropertyNamesModule","getOwnPropertyNamesExternal","getOwnPropertySymbolsModule","getOwnPropertyDescriptorModule","definePropertyModule","propertyIsEnumerableModule","createNonEnumerableProperty","sharedKey","hiddenKeys","wellKnownSymbol","defineWellKnownSymbol","InternalStateModule","$forEach","HIDDEN","TO_PRIMITIVE","setInternalState","set","getInternalState","getterFor","ObjectPrototype","$Symbol","$stringify","nativeGetOwnPropertyDescriptor","nativeDefineProperty","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","WellKnownSymbolsStore","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","wrap","description","symbol","isSymbol","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$create","V","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","setter","sham","keyFor","sym","useSetter","useSimple","getOwnPropertyDescriptor","FORCED_JSON_STRINGIFY","stringify","replacer","space","$replacer","args","checkCorrectnessOfIteration","INCORRECT_ITERATION","iterable","isForced","inheritIfRequired","NUMBER","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","argument","first","third","radix","maxCode","digits","code","NaN","parseInt","NumberWrapper","_typeof","_defineProperty","_extends","_objectSpread","ownKeys","_objectWithoutPropertiesLoose","excluded","sourceKeys","sourceSymbolKeys","pattern","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","passive","event","addEventListener","off","removeEventListener","matches","selector","substring","msMatchesSelector","webkitMatchesSelector","getParentOrHost","host","nodeType","parentNode","closest","includeCTX","_throttleTimeout","R_SPACE","toggleClass","state","classList","className","css","prop","defaultView","getComputedStyle","currentStyle","matrix","selfOnly","appliedTransforms","transform","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","find","tagName","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","getBoundingClientRect","elRect","top","left","bottom","right","height","width","innerHeight","innerWidth","containerRect","elMatrix","isScrolledPast","elSide","parentSide","parent","getParentAutoScrollElement","elSideVal","parentSideVal","visible","getChild","childNum","currentChild","Sortable","ghost","dragged","lastChild","last","lastElementChild","previousElementSibling","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollLeft","scrollTop","indexOfObject","includeSelf","elem","gotSelf","clientWidth","scrollWidth","clientHeight","scrollHeight","elemCSS","overflowX","overflowY","extend","dst","isRectEqual","rect1","rect2","round","throttle","callback","ms","cancelThrottle","clearTimeout","scrollBy","Polymer","jQuery","Zepto","dom","cloneNode","setRect","rect","unsetRect","expando","Date","getTime","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","animation","fromRect","thisAnimationDuration","childMatrix","addAnimationState","removeAnimationState","animateAll","animating","animationTime","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","animate","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","repaint","easing","animated","offsetWidth","sqrt","pow","plugins","defaults","initializeByDefault","PluginManager","mount","plugin","pluginEvent","eventName","sortable","eventCanceled","cancel","eventNameGlobal","pluginName","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","rootEl","targetEl","cloneEl","toEl","fromEl","oldDraggableIndex","newDraggableIndex","putSortable","extraEventProperties","onName","substr","CustomEvent","initEvent","bubbles","cancelable","lastPutMode","allEventProperties","dragEl","parentEl","ghostEl","nextEl","lastDownEl","cloneHidden","dragStarted","activeSortable","active","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","cssText","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","_dragElInRowColumn","dragRect","targetRect","vertical","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_detectNearestEmptySortable","ret","some","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","_prepareGroup","toFn","pull","sameGroup","group","otherGroup","originalGroup","checkPull","checkPut","put","revertClone","preventDefault","stopPropagation","stopImmediatePropagation","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","sort","disabled","handle","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","_globalDragOver","dropEffect","_onMove","retVal","onMoveFn","draggedRect","relatedRect","_disableDraggable","_unsilent","_ghostIsLast","spacer","_getSwapDirection","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_generateId","sum","_saveInputCheckedState","root","inputs","checked","_nextTick","_cancelNextTick","contains","_getDirection","touch","pointerType","originalTarget","shadowRoot","composedPath","button","isContentEditable","criteria","_prepareDragStart","dragStartFn","ownerDocument","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","inserted","ghostMatrix","relativeScrollOffset","dx","dy","cssMatrix","_hideClone","cloneId","_loopId","setInterval","effectAllowed","_dragStartId","revert","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","changed","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","side1","scrolledPastTop","scrollBefore","dragIndex","nextElementSibling","after","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","save","handleEvent","toArray","order","getAttribute","items","querySelectorAll","removeAttribute","utils","nextTick","cancelNextTick","detectDirection","_len","_key","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","AutoScrollPlugin","AutoScroll","scroll","scrollSensitivity","scrollSpeed","bubbleScroll","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","drop","clearPointerElemChangedInterval","clearAutoScrolls","nulling","autoScroll","ogElemScroller","newElem","pid","lastSwapEl","isFallback","scrollCustomFn","sens","speed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","toSortable","changedTouches","onSpill","Revert","Remove","SwapPlugin","Swap","swapClass","dragStart","dragOverValid","swap","prevSwapEl","_ref3","swapNodes","swapItem","n1","n2","i1","i2","p1","p2","isEqualNode","startIndex","_ref4","parentSortable","lastMultiDragSelect","multiDragSortable","dragEl$1","clonesFromRect","clonesHidden","multiDragElements","multiDragClones","initialFolding","folding","MultiDragPlugin","MultiDrag","_deselectMultiDrag","_checkKeyDown","_checkKeyUp","selectedClass","multiDragKey","multiDragElement","multiDragKeyDown","isMultiDrag","delayStartGlobal","delayEnded","setupClone","sortableIndex","insertMultiDragClones","showClone","hideClone","_ref5","dragStartGlobal","_ref6","multiDrag","_ref7","removeMultiDragElements","dragOver","_ref8","_ref9","insertMultiDragElements","_ref10","dragRectAbsolute","clonesHiddenBefore","dragOverAnimationCapture","_ref11","dragMatrix","dragOverAnimationComplete","_ref12","originalEvt","shiftKey","multiDragIndex","nullingGlobal","destroyGlobal","shift","select","deselect","oldIndicies","newIndicies","clones","clonesInserted","elementsInserted","factory","_classCallCheck","instance","_defineProperties","_createClass","protoProps","staticProps","enumerableOnly","_objectSpread2","getOwnPropertyDescriptors","IS_BROWSER","WINDOW","IS_TOUCH_DEVICE","HAS_POINTER_EVENT","NAMESPACE","ACTION_ALL","ACTION_CROP","ACTION_MOVE","ACTION_ZOOM","ACTION_EAST","ACTION_WEST","ACTION_SOUTH","ACTION_NORTH","ACTION_NORTH_EAST","ACTION_NORTH_WEST","ACTION_SOUTH_EAST","ACTION_SOUTH_WEST","CLASS_CROP","CLASS_DISABLED","CLASS_HIDDEN","CLASS_HIDE","CLASS_INVISIBLE","CLASS_MODAL","CLASS_MOVE","DATA_ACTION","DATA_PREVIEW","DRAG_MODE_CROP","DRAG_MODE_MOVE","DRAG_MODE_NONE","EVENT_CROP","EVENT_CROP_END","EVENT_CROP_MOVE","EVENT_CROP_START","EVENT_DBLCLICK","EVENT_TOUCH_START","EVENT_TOUCH_MOVE","EVENT_TOUCH_END","EVENT_POINTER_DOWN","EVENT_POINTER_MOVE","EVENT_POINTER_UP","EVENT_READY","EVENT_RESIZE","EVENT_WHEEL","EVENT_ZOOM","MIME_TYPE_JPEG","REGEXP_ACTIONS","REGEXP_DATA_URL","REGEXP_DATA_URL_JPEG","REGEXP_TAG_NAME","MIN_CONTAINER_WIDTH","MIN_CONTAINER_HEIGHT","DEFAULTS","TEMPLATE","isNumber","isPositiveNumber","Infinity","isUndefined","isPlainObject","_constructor","REGEXP_DECIMALS","normalizeDecimalNumber","times","REGEXP_SUFFIX","setStyle","styles","hasClass","addClass","add","removeClass","remove","REGEXP_CAMEL_CASE","toParamCase","dataset","setAttribute","removeData","REGEXP_SPACES","onceSupported","supported","once","listener","removeListener","listeners","addListener","_handler","_element$listeners","_len2","_key2","Event","detail","initCustomEvent","getOffset","box","pageXOffset","clientLeft","pageYOffset","clientTop","REGEXP_ORIGINS","isCrossOriginURL","parts","protocol","hostname","port","addTimestamp","timestamp","getTransforms","WebkitTransform","msTransform","getMaxZoomRatio","pointers","pointers2","maxRatio","pointer","pointerId","pointer2","x1","startX","y1","startY","x2","endX","y2","endY","z1","z2","getPointer","endOnly","pageX","pageY","getPointersCenter","count","getAdjustedSizes","isValidWidth","isValidHeight","adjustedWidth","getRotatedSizes","arc","PI","sinArc","sin","cosArc","cos","newWidth","newHeight","getSourceCanvas","image","imageAspectRatio","imageNaturalWidth","naturalWidth","imageNaturalHeight","naturalHeight","_ref6$rotate","_ref6$scaleX","_ref6$scaleY","_ref8$fillColor","fillColor","_ref8$imageSmoothingE","imageSmoothingEnabled","_ref8$imageSmoothingQ","imageSmoothingQuality","_ref8$maxWidth","maxWidth","_ref8$maxHeight","maxHeight","_ref8$minWidth","minWidth","_ref8$minHeight","minHeight","canvas","getContext","maxSizes","minSizes","destMaxSizes","destMinSizes","destWidth","destHeight","params","fillStyle","fillRect","translate","drawImage","param","fromCharCode","getStringFromCharCode","dataView","getUint8","REGEXP_DATA_URL_HEAD","dataURLToArrayBuffer","dataURL","base64","binary","atob","arrayBuffer","ArrayBuffer","uint8","Uint8Array","arrayBufferToDataURL","mimeType","chunks","chunkSize","subarray","btoa","resetAndGetOrientation","orientation","DataView","littleEndian","app1Start","ifdStart","byteLength","offset","exifIDCode","tiffOffset","endianness","getUint16","firstIFDOffset","getUint32","_offset","_length","setUint16","parseOrientation","initContainer","initCanvas","initCropBox","renderCanvas","cropped","renderCropBox","containerData","offsetHeight","imageData","rotated","canvasWidth","canvasHeight","canvasData","limited","limitCanvas","oldLeft","oldTop","initialCanvasData","sizeLimited","positionLimited","cropBoxData","_getAdjustedSizes","newCanvasLeft","newCanvasTop","minLeft","minTop","maxLeft","maxTop","transformed","_getRotatedSizes","renderImage","limitCropBox","output","initialCropBoxData","maxCropBoxWidth","maxCropBoxHeight","face","cropBox","initPreview","crossOrigin","crossOriginUrl","viewBox","viewBoxImage","previews","querySelector","html","innerHTML","resetPreview","cropBoxWidth","cropBoxHeight","originalWidth","originalHeight","events","onCropStart","cropStart","onWheel","wheel","onDblclick","dblclick","onCropMove","cropMove","onCropEnd","cropEnd","onResize","resize","unbind","handlers","dragBox","delta","wheeling","deltaY","wheelDelta","buttons","ctrlKey","action","identifier","cropping","change","renderable","range","check","side","initialImageData","hasSameSize","isImg","replaced","uncreate","load","originalUrl","_this$canvasData","pivot","oldRatio","sized","widthChanged","heightChanged","HTMLCanvasElement","_this$getData","initialX","initialY","initialWidth","initialHeight","_options$imageSmoothi","srcWidth","srcHeight","dstX","dstY","dstWidth","dstHeight","sourceWidth","sourceHeight","srcX","srcY","croppable","AnotherCropper","Cropper","reloading","sizing","init","toDataURL","read","xhr","onabort","ontimeout","onprogress","getResponseHeader","abort","withCredentials","_parseOrientation","stop","isIOSWebKit","build","sizingImage","template","getElementsByClassName","unbuild","copyConstructorProperties","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","desc","createProperty","arrayMethodHasSpeciesSupport","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","ACCESSORS","0","1","nativeSlice","fin","_vm","_h","$createElement","_c","_self","staticClass","_v","machine","Title","StockNumber","domProps","photoCount","dateModified","DateModified","modifiedBy","unsavedPhotoCount","class","isMobile","inputFilter","model","$$v","photos","expression","enableBulkSelect","$event","bulkSelect","selected","deleteMultipleImages","uploadImages","updateSelectedMachine","imagesForCards","updateSortOrder","draggableDisabled","_l","file","enter","leave","loading","addToSelectedImages","deleteImage","disableDrag","archivedImages","restoreImage","staticRenderFns","arrayLikeToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","getImageSource","isArchived","fakeIndex","showModal","archiveLength","directives","rawName","selectImage","stockNumber","BlobImageUrl","downloadImage","displayCroppedImage","onCloseModal","setBoxData","cropImage","cropImg","mixins","UploaderMixins","components","openModal","selectedMachine","deg","JSON","updateImage","updateImageData","parse","PhotoEditor","defualt","croppedImage","now","imageDeleted","Search","FileUpload","ImageCard","files","passedMachine","windowWidth","authorizedArchiveImageAccounts","localStorage","getMachineData","$route","EquipmentDataService","getImagesForCards","displayNoPhotos","ImageCount","ModifiedBy","archiveActive","profileEmail","$store","user","email","ImageData","Status","Resorted","SortOrder","sortedImages","newImages","IsNewFile","uploadExistingImageData","uploadNewImageData","confirm","deleteSelected","removeImagesFromArray","imagesToDelete","deleteSelectedImages","isInArray","array","checkArrayDups","PrevSortOrder"],"mappings":"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","file":"static/js/about.b5a8f6a4.js","sourcesContent":["var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.js.map","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"01f9\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(\"2d00\");\nvar $export = __webpack_require__(\"5ca1\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar $iterCreate = __webpack_require__(\"41a0\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar getPrototypeOf = __webpack_require__(\"38fd\");\nvar ITERATOR = __webpack_require__(\"2b4c\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n/***/ }),\n\n/***/ \"02f4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar defined = __webpack_require__(\"be13\");\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n/***/ }),\n\n/***/ \"0390\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar at = __webpack_require__(\"02f4\")(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ \"0bfb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = __webpack_require__(\"cb7c\");\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"0d58\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(\"ce10\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"1495\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar getKeys = __webpack_require__(\"0d58\");\n\nmodule.exports = __webpack_require__(\"9e1e\") ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"214f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n__webpack_require__(\"b0c5\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar fails = __webpack_require__(\"79e5\");\nvar defined = __webpack_require__(\"be13\");\nvar wks = __webpack_require__(\"2b4c\");\nvar regexpExec = __webpack_require__(\"520a\");\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n\n\n/***/ }),\n\n/***/ \"230e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar document = __webpack_require__(\"7726\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"23c6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(\"2d95\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n\n/***/ \"2621\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"2aba\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar has = __webpack_require__(\"69a8\");\nvar SRC = __webpack_require__(\"ca5a\")('src');\nvar $toString = __webpack_require__(\"fa5b\");\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(\"8378\").inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"2aeb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(\"cb7c\");\nvar dPs = __webpack_require__(\"1495\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(\"230e\")('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(\"fab2\").appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"2b4c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"5537\")('wks');\nvar uid = __webpack_require__(\"ca5a\");\nvar Symbol = __webpack_require__(\"7726\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ \"2d00\":\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"2d95\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"2fdb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n\nvar $export = __webpack_require__(\"5ca1\");\nvar context = __webpack_require__(\"d2c8\");\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ \"32e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar createDesc = __webpack_require__(\"4630\");\nmodule.exports = __webpack_require__(\"9e1e\") ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"38fd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(\"69a8\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n\n/***/ \"41a0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(\"2aeb\");\nvar descriptor = __webpack_require__(\"4630\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(\"32e9\")(IteratorPrototype, __webpack_require__(\"2b4c\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n\n/***/ \"456d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(\"4bf8\");\nvar $keys = __webpack_require__(\"0d58\");\n\n__webpack_require__(\"5eda\")('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n/***/ }),\n\n/***/ \"4588\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"4630\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ \"4bf8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"5147\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n\n\n/***/ }),\n\n/***/ \"520a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar regexpFlags = __webpack_require__(\"0bfb\");\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ \"52a7\":\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"5537\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(\"8378\");\nvar global = __webpack_require__(\"7726\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(\"2d00\") ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"5ca1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar core = __webpack_require__(\"8378\");\nvar hide = __webpack_require__(\"32e9\");\nvar redefine = __webpack_require__(\"2aba\");\nvar ctx = __webpack_require__(\"9b43\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ \"5eda\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(\"5ca1\");\nvar core = __webpack_require__(\"8378\");\nvar fails = __webpack_require__(\"79e5\");\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n\n/***/ \"5f1b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classof = __webpack_require__(\"23c6\");\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n\n\n/***/ }),\n\n/***/ \"613b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"5537\")('keys');\nvar uid = __webpack_require__(\"ca5a\");\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"626a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(\"2d95\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"6762\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// https://github.com/tc39/Array.prototype.includes\nvar $export = __webpack_require__(\"5ca1\");\nvar $includes = __webpack_require__(\"c366\")(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n__webpack_require__(\"9c6c\")('includes');\n\n\n/***/ }),\n\n/***/ \"6821\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(\"626a\");\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"69a8\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"6a99\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(\"d3f4\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"7333\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = __webpack_require__(\"9e1e\");\nvar getKeys = __webpack_require__(\"0d58\");\nvar gOPS = __webpack_require__(\"2621\");\nvar pIE = __webpack_require__(\"52a7\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IObject = __webpack_require__(\"626a\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(\"79e5\")(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n\n\n/***/ }),\n\n/***/ \"7726\":\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"77f1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"79e5\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ \"7f20\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(\"86cc\").f;\nvar has = __webpack_require__(\"69a8\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n\n/***/ \"8378\":\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.11' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"84f2\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"86cc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(\"9e1e\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"9b43\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(\"d8e8\");\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ \"9c6c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(\"2b4c\")('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(\"32e9\")(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ \"9def\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(\"4588\");\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"9e1e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(\"79e5\")(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"a352\":\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"sortablejs\");\n\n/***/ }),\n\n/***/ \"a481\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar toLength = __webpack_require__(\"9def\");\nvar toInteger = __webpack_require__(\"4588\");\nvar advanceStringIndex = __webpack_require__(\"0390\");\nvar regExpExec = __webpack_require__(\"5f1b\");\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\n__webpack_require__(\"214f\")('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n\n\n/***/ }),\n\n/***/ \"aae3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(\"d3f4\");\nvar cof = __webpack_require__(\"2d95\");\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ \"ac6a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $iterators = __webpack_require__(\"cadf\");\nvar getKeys = __webpack_require__(\"0d58\");\nvar redefine = __webpack_require__(\"2aba\");\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar wks = __webpack_require__(\"2b4c\");\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n\n\n/***/ }),\n\n/***/ \"b0c5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar regexpExec = __webpack_require__(\"520a\");\n__webpack_require__(\"5ca1\")({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n\n\n/***/ }),\n\n/***/ \"be13\":\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"c366\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(\"6821\");\nvar toLength = __webpack_require__(\"9def\");\nvar toAbsoluteIndex = __webpack_require__(\"77f1\");\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n\n/***/ \"c649\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return insertNodeAt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return camelize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return console; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return removeNode; });\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"a481\");\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction getConsole() {\n if (typeof window !== \"undefined\") {\n return window.console;\n }\n\n return global.console;\n}\n\nvar console = getConsole();\n\nfunction cached(fn) {\n var cache = Object.create(null);\n return function cachedFn(str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\n\nvar regex = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(regex, function (_, c) {\n return c ? c.toUpperCase() : \"\";\n });\n});\n\nfunction removeNode(node) {\n if (node.parentElement !== null) {\n node.parentElement.removeChild(node);\n }\n}\n\nfunction insertNodeAt(fatherNode, node, position) {\n var refNode = position === 0 ? fatherNode.children[0] : fatherNode.children[position - 1].nextSibling;\n fatherNode.insertBefore(node, refNode);\n}\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"c69a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(\"9e1e\") && !__webpack_require__(\"79e5\")(function () {\n return Object.defineProperty(__webpack_require__(\"230e\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"c8ba\":\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n\n/***/ \"ca5a\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"cadf\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(\"9c6c\");\nvar step = __webpack_require__(\"d53b\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar toIObject = __webpack_require__(\"6821\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(\"01f9\")(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ \"cb7c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"ce10\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"69a8\");\nvar toIObject = __webpack_require__(\"6821\");\nvar arrayIndexOf = __webpack_require__(\"c366\")(false);\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"d2c8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = __webpack_require__(\"aae3\");\nvar defined = __webpack_require__(\"be13\");\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n\n\n/***/ }),\n\n/***/ \"d3f4\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"d53b\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n\n/***/ }),\n\n/***/ \"d8e8\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"e11e\":\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ \"f559\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n\nvar $export = __webpack_require__(\"5ca1\");\nvar toLength = __webpack_require__(\"9def\");\nvar context = __webpack_require__(\"d2c8\");\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n\n\n/***/ }),\n\n/***/ \"f6fd\":\n/***/ (function(module, exports) {\n\n// document.currentScript polyfill by Adam Miller\n\n// MIT license\n\n(function(document){\n var currentScript = \"currentScript\",\n scripts = document.getElementsByTagName('script'); // Live NodeList collection\n\n // If browser needs currentScript polyfill, add get currentScript() to the document object\n if (!(currentScript in document)) {\n Object.defineProperty(document, currentScript, {\n get: function(){\n\n // IE 6-10 supports script readyState\n // IE 10+ support stack trace\n try { throw new Error(); }\n catch (err) {\n\n // Find the second match for the \"at\" string to get file src url from stack.\n // Specifically works with the format of stack traces in IE.\n var i, res = ((/.*at [^\\(]*\\((.*):.+:.+\\)$/ig).exec(err.stack) || [false])[1];\n\n // For all scripts on the page, if src matches or if ready state is interactive, return the script tag\n for(i in scripts){\n if(scripts[i].src == res || scripts[i].readyState == \"interactive\"){\n return scripts[i];\n }\n }\n\n // If no match, return null\n return null;\n }\n }\n });\n }\n})(document);\n\n\n/***/ }),\n\n/***/ \"f751\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(\"5ca1\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(\"7333\") });\n\n\n/***/ }),\n\n/***/ \"fa5b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"5537\")('native-function-to-string', Function.toString);\n\n\n/***/ }),\n\n/***/ \"fab2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(\"7726\").document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"fb15\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n if (true) {\n __webpack_require__(\"f6fd\")\n }\n\n var setPublicPath_i\n if ((setPublicPath_i = window.document.currentScript) && (setPublicPath_i = setPublicPath_i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n __webpack_require__.p = setPublicPath_i[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\n/* harmony default export */ var setPublicPath = (null);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.assign.js\nvar es6_object_assign = __webpack_require__(\"f751\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.starts-with.js\nvar es6_string_starts_with = __webpack_require__(\"f559\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom.iterable.js\nvar web_dom_iterable = __webpack_require__(\"ac6a\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.iterator.js\nvar es6_array_iterator = __webpack_require__(\"cadf\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.keys.js\nvar es6_object_keys = __webpack_require__(\"456d\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js\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++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js\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// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js\n\n\n\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.array.includes.js\nvar es7_array_includes = __webpack_require__(\"6762\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.includes.js\nvar es6_string_includes = __webpack_require__(\"2fdb\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js\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// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\n\n\n\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n// EXTERNAL MODULE: external {\"commonjs\":\"sortablejs\",\"commonjs2\":\"sortablejs\",\"amd\":\"sortablejs\",\"root\":\"Sortable\"}\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_ = __webpack_require__(\"a352\");\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_);\n\n// EXTERNAL MODULE: ./src/util/helper.js\nvar helper = __webpack_require__(\"c649\");\n\n// CONCATENATED MODULE: ./src/vuedraggable.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction buildAttribute(object, propName, value) {\n if (value === undefined) {\n return object;\n }\n\n object = object || {};\n object[propName] = value;\n return object;\n}\n\nfunction computeVmIndex(vnodes, element) {\n return vnodes.map(function (elt) {\n return elt.elm;\n }).indexOf(element);\n}\n\nfunction _computeIndexes(slots, children, isTransition, footerOffset) {\n if (!slots) {\n return [];\n }\n\n var elmFromNodes = slots.map(function (elt) {\n return elt.elm;\n });\n var footerIndex = children.length - footerOffset;\n\n var rawIndexes = _toConsumableArray(children).map(function (elt, idx) {\n return idx >= footerIndex ? elmFromNodes.length : elmFromNodes.indexOf(elt);\n });\n\n return isTransition ? rawIndexes.filter(function (ind) {\n return ind !== -1;\n }) : rawIndexes;\n}\n\nfunction emit(evtName, evtData) {\n var _this = this;\n\n this.$nextTick(function () {\n return _this.$emit(evtName.toLowerCase(), evtData);\n });\n}\n\nfunction delegateAndEmit(evtName) {\n var _this2 = this;\n\n return function (evtData) {\n if (_this2.realList !== null) {\n _this2[\"onDrag\" + evtName](evtData);\n }\n\n emit.call(_this2, evtName, evtData);\n };\n}\n\nfunction isTransitionName(name) {\n return [\"transition-group\", \"TransitionGroup\"].includes(name);\n}\n\nfunction vuedraggable_isTransition(slots) {\n if (!slots || slots.length !== 1) {\n return false;\n }\n\n var _slots = _slicedToArray(slots, 1),\n componentOptions = _slots[0].componentOptions;\n\n if (!componentOptions) {\n return false;\n }\n\n return isTransitionName(componentOptions.tag);\n}\n\nfunction getSlot(slot, scopedSlot, key) {\n return slot[key] || (scopedSlot[key] ? scopedSlot[key]() : undefined);\n}\n\nfunction computeChildrenAndOffsets(children, slot, scopedSlot) {\n var headerOffset = 0;\n var footerOffset = 0;\n var header = getSlot(slot, scopedSlot, \"header\");\n\n if (header) {\n headerOffset = header.length;\n children = children ? [].concat(_toConsumableArray(header), _toConsumableArray(children)) : _toConsumableArray(header);\n }\n\n var footer = getSlot(slot, scopedSlot, \"footer\");\n\n if (footer) {\n footerOffset = footer.length;\n children = children ? [].concat(_toConsumableArray(children), _toConsumableArray(footer)) : _toConsumableArray(footer);\n }\n\n return {\n children: children,\n headerOffset: headerOffset,\n footerOffset: footerOffset\n };\n}\n\nfunction getComponentAttributes($attrs, componentData) {\n var attributes = null;\n\n var update = function update(name, value) {\n attributes = buildAttribute(attributes, name, value);\n };\n\n var attrs = Object.keys($attrs).filter(function (key) {\n return key === \"id\" || key.startsWith(\"data-\");\n }).reduce(function (res, key) {\n res[key] = $attrs[key];\n return res;\n }, {});\n update(\"attrs\", attrs);\n\n if (!componentData) {\n return attributes;\n }\n\n var on = componentData.on,\n props = componentData.props,\n componentDataAttrs = componentData.attrs;\n update(\"on\", on);\n update(\"props\", props);\n Object.assign(attributes.attrs, componentDataAttrs);\n return attributes;\n}\n\nvar eventsListened = [\"Start\", \"Add\", \"Remove\", \"Update\", \"End\"];\nvar eventsToEmit = [\"Choose\", \"Unchoose\", \"Sort\", \"Filter\", \"Clone\"];\nvar readonlyProperties = [\"Move\"].concat(eventsListened, eventsToEmit).map(function (evt) {\n return \"on\" + evt;\n});\nvar draggingElement = null;\nvar props = {\n options: Object,\n list: {\n type: Array,\n required: false,\n default: null\n },\n value: {\n type: Array,\n required: false,\n default: null\n },\n noTransitionOnDrag: {\n type: Boolean,\n default: false\n },\n clone: {\n type: Function,\n default: function _default(original) {\n return original;\n }\n },\n element: {\n type: String,\n default: \"div\"\n },\n tag: {\n type: String,\n default: null\n },\n move: {\n type: Function,\n default: null\n },\n componentData: {\n type: Object,\n required: false,\n default: null\n }\n};\nvar draggableComponent = {\n name: \"draggable\",\n inheritAttrs: false,\n props: props,\n data: function data() {\n return {\n transitionMode: false,\n noneFunctionalComponentMode: false\n };\n },\n render: function render(h) {\n var slots = this.$slots.default;\n this.transitionMode = vuedraggable_isTransition(slots);\n\n var _computeChildrenAndOf = computeChildrenAndOffsets(slots, this.$slots, this.$scopedSlots),\n children = _computeChildrenAndOf.children,\n headerOffset = _computeChildrenAndOf.headerOffset,\n footerOffset = _computeChildrenAndOf.footerOffset;\n\n this.headerOffset = headerOffset;\n this.footerOffset = footerOffset;\n var attributes = getComponentAttributes(this.$attrs, this.componentData);\n return h(this.getTag(), attributes, children);\n },\n created: function created() {\n if (this.list !== null && this.value !== null) {\n helper[\"b\" /* console */].error(\"Value and list props are mutually exclusive! Please set one or another.\");\n }\n\n if (this.element !== \"div\") {\n helper[\"b\" /* console */].warn(\"Element props is deprecated please use tag props instead. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#element-props\");\n }\n\n if (this.options !== undefined) {\n helper[\"b\" /* console */].warn(\"Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props\");\n }\n },\n mounted: function mounted() {\n var _this3 = this;\n\n this.noneFunctionalComponentMode = this.getTag().toLowerCase() !== this.$el.nodeName.toLowerCase() && !this.getIsFunctional();\n\n if (this.noneFunctionalComponentMode && this.transitionMode) {\n throw new Error(\"Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: \".concat(this.getTag()));\n }\n\n var optionsAdded = {};\n eventsListened.forEach(function (elt) {\n optionsAdded[\"on\" + elt] = delegateAndEmit.call(_this3, elt);\n });\n eventsToEmit.forEach(function (elt) {\n optionsAdded[\"on\" + elt] = emit.bind(_this3, elt);\n });\n var attributes = Object.keys(this.$attrs).reduce(function (res, key) {\n res[Object(helper[\"a\" /* camelize */])(key)] = _this3.$attrs[key];\n return res;\n }, {});\n var options = Object.assign({}, this.options, attributes, optionsAdded, {\n onMove: function onMove(evt, originalEvent) {\n return _this3.onDragMove(evt, originalEvent);\n }\n });\n !(\"draggable\" in options) && (options.draggable = \">*\");\n this._sortable = new external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default.a(this.rootContainer, options);\n this.computeIndexes();\n },\n beforeDestroy: function beforeDestroy() {\n if (this._sortable !== undefined) this._sortable.destroy();\n },\n computed: {\n rootContainer: function rootContainer() {\n return this.transitionMode ? this.$el.children[0] : this.$el;\n },\n realList: function realList() {\n return this.list ? this.list : this.value;\n }\n },\n watch: {\n options: {\n handler: function handler(newOptionValue) {\n this.updateOptions(newOptionValue);\n },\n deep: true\n },\n $attrs: {\n handler: function handler(newOptionValue) {\n this.updateOptions(newOptionValue);\n },\n deep: true\n },\n realList: function realList() {\n this.computeIndexes();\n }\n },\n methods: {\n getIsFunctional: function getIsFunctional() {\n var fnOptions = this._vnode.fnOptions;\n return fnOptions && fnOptions.functional;\n },\n getTag: function getTag() {\n return this.tag || this.element;\n },\n updateOptions: function updateOptions(newOptionValue) {\n for (var property in newOptionValue) {\n var value = Object(helper[\"a\" /* camelize */])(property);\n\n if (readonlyProperties.indexOf(value) === -1) {\n this._sortable.option(value, newOptionValue[property]);\n }\n }\n },\n getChildrenNodes: function getChildrenNodes() {\n if (this.noneFunctionalComponentMode) {\n return this.$children[0].$slots.default;\n }\n\n var rawNodes = this.$slots.default;\n return this.transitionMode ? rawNodes[0].child.$slots.default : rawNodes;\n },\n computeIndexes: function computeIndexes() {\n var _this4 = this;\n\n this.$nextTick(function () {\n _this4.visibleIndexes = _computeIndexes(_this4.getChildrenNodes(), _this4.rootContainer.children, _this4.transitionMode, _this4.footerOffset);\n });\n },\n getUnderlyingVm: function getUnderlyingVm(htmlElt) {\n var index = computeVmIndex(this.getChildrenNodes() || [], htmlElt);\n\n if (index === -1) {\n //Edge case during move callback: related element might be\n //an element different from collection\n return null;\n }\n\n var element = this.realList[index];\n return {\n index: index,\n element: element\n };\n },\n getUnderlyingPotencialDraggableComponent: function getUnderlyingPotencialDraggableComponent(_ref) {\n var vue = _ref.__vue__;\n\n if (!vue || !vue.$options || !isTransitionName(vue.$options._componentTag)) {\n if (!(\"realList\" in vue) && vue.$children.length === 1 && \"realList\" in vue.$children[0]) return vue.$children[0];\n return vue;\n }\n\n return vue.$parent;\n },\n emitChanges: function emitChanges(evt) {\n var _this5 = this;\n\n this.$nextTick(function () {\n _this5.$emit(\"change\", evt);\n });\n },\n alterList: function alterList(onList) {\n if (this.list) {\n onList(this.list);\n return;\n }\n\n var newList = _toConsumableArray(this.value);\n\n onList(newList);\n this.$emit(\"input\", newList);\n },\n spliceList: function spliceList() {\n var _arguments = arguments;\n\n var spliceList = function spliceList(list) {\n return list.splice.apply(list, _toConsumableArray(_arguments));\n };\n\n this.alterList(spliceList);\n },\n updatePosition: function updatePosition(oldIndex, newIndex) {\n var updatePosition = function updatePosition(list) {\n return list.splice(newIndex, 0, list.splice(oldIndex, 1)[0]);\n };\n\n this.alterList(updatePosition);\n },\n getRelatedContextFromMoveEvent: function getRelatedContextFromMoveEvent(_ref2) {\n var to = _ref2.to,\n related = _ref2.related;\n var component = this.getUnderlyingPotencialDraggableComponent(to);\n\n if (!component) {\n return {\n component: component\n };\n }\n\n var list = component.realList;\n var context = {\n list: list,\n component: component\n };\n\n if (to !== related && list && component.getUnderlyingVm) {\n var destination = component.getUnderlyingVm(related);\n\n if (destination) {\n return Object.assign(destination, context);\n }\n }\n\n return context;\n },\n getVmIndex: function getVmIndex(domIndex) {\n var indexes = this.visibleIndexes;\n var numberIndexes = indexes.length;\n return domIndex > numberIndexes - 1 ? numberIndexes : indexes[domIndex];\n },\n getComponent: function getComponent() {\n return this.$slots.default[0].componentInstance;\n },\n resetTransitionData: function resetTransitionData(index) {\n if (!this.noTransitionOnDrag || !this.transitionMode) {\n return;\n }\n\n var nodes = this.getChildrenNodes();\n nodes[index].data = null;\n var transitionContainer = this.getComponent();\n transitionContainer.children = [];\n transitionContainer.kept = undefined;\n },\n onDragStart: function onDragStart(evt) {\n this.context = this.getUnderlyingVm(evt.item);\n evt.item._underlying_vm_ = this.clone(this.context.element);\n draggingElement = evt.item;\n },\n onDragAdd: function onDragAdd(evt) {\n var element = evt.item._underlying_vm_;\n\n if (element === undefined) {\n return;\n }\n\n Object(helper[\"d\" /* removeNode */])(evt.item);\n var newIndex = this.getVmIndex(evt.newIndex);\n this.spliceList(newIndex, 0, element);\n this.computeIndexes();\n var added = {\n element: element,\n newIndex: newIndex\n };\n this.emitChanges({\n added: added\n });\n },\n onDragRemove: function onDragRemove(evt) {\n Object(helper[\"c\" /* insertNodeAt */])(this.rootContainer, evt.item, evt.oldIndex);\n\n if (evt.pullMode === \"clone\") {\n Object(helper[\"d\" /* removeNode */])(evt.clone);\n return;\n }\n\n var oldIndex = this.context.index;\n this.spliceList(oldIndex, 1);\n var removed = {\n element: this.context.element,\n oldIndex: oldIndex\n };\n this.resetTransitionData(oldIndex);\n this.emitChanges({\n removed: removed\n });\n },\n onDragUpdate: function onDragUpdate(evt) {\n Object(helper[\"d\" /* removeNode */])(evt.item);\n Object(helper[\"c\" /* insertNodeAt */])(evt.from, evt.item, evt.oldIndex);\n var oldIndex = this.context.index;\n var newIndex = this.getVmIndex(evt.newIndex);\n this.updatePosition(oldIndex, newIndex);\n var moved = {\n element: this.context.element,\n oldIndex: oldIndex,\n newIndex: newIndex\n };\n this.emitChanges({\n moved: moved\n });\n },\n updateProperty: function updateProperty(evt, propertyName) {\n evt.hasOwnProperty(propertyName) && (evt[propertyName] += this.headerOffset);\n },\n computeFutureIndex: function computeFutureIndex(relatedContext, evt) {\n if (!relatedContext.element) {\n return 0;\n }\n\n var domChildren = _toConsumableArray(evt.to.children).filter(function (el) {\n return el.style[\"display\"] !== \"none\";\n });\n\n var currentDOMIndex = domChildren.indexOf(evt.related);\n var currentIndex = relatedContext.component.getVmIndex(currentDOMIndex);\n var draggedInList = domChildren.indexOf(draggingElement) !== -1;\n return draggedInList || !evt.willInsertAfter ? currentIndex : currentIndex + 1;\n },\n onDragMove: function onDragMove(evt, originalEvent) {\n var onMove = this.move;\n\n if (!onMove || !this.realList) {\n return true;\n }\n\n var relatedContext = this.getRelatedContextFromMoveEvent(evt);\n var draggedContext = this.context;\n var futureIndex = this.computeFutureIndex(relatedContext, evt);\n Object.assign(draggedContext, {\n futureIndex: futureIndex\n });\n var sendEvt = Object.assign({}, evt, {\n relatedContext: relatedContext,\n draggedContext: draggedContext\n });\n return onMove(sendEvt, originalEvent);\n },\n onDragEnd: function onDragEnd() {\n this.computeIndexes();\n draggingElement = null;\n }\n }\n};\n\nif (typeof window !== \"undefined\" && \"Vue\" in window) {\n window.Vue.component(\"draggable\", draggableComponent);\n}\n\n/* harmony default export */ var vuedraggable = (draggableComponent);\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js\n\n\n/* harmony default export */ var entry_lib = __webpack_exports__[\"default\"] = (vuedraggable);\n\n\n\n/***/ })\n\n/******/ })[\"default\"];\n//# sourceMappingURL=vuedraggable.common.js.map","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.github.io/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.github.io/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.github.io/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _cropperjs = require('cropperjs');\n\nvar _cropperjs2 = _interopRequireDefault(_cropperjs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar previewPropType = typeof window === 'undefined' ? [String, Array] : [String, Array, Element, NodeList];\n\nexports.default = {\n render: function render(h) {\n return h('div', { style: this.containerStyle }, [h('img', {\n ref: 'img',\n attrs: {\n src: this.src,\n alt: this.alt || 'image',\n style: 'max-width: 100%'\n },\n on: this.$listeners,\n style: this.imgStyle\n })]);\n },\n\n props: {\n containerStyle: Object,\n src: {\n type: String,\n default: ''\n },\n alt: String,\n imgStyle: Object,\n\n viewMode: Number,\n dragMode: String,\n initialAspectRatio: Number,\n aspectRatio: Number,\n data: Object,\n preview: previewPropType,\n responsive: {\n type: Boolean,\n default: true\n },\n restore: {\n type: Boolean,\n default: true\n },\n checkCrossOrigin: {\n type: Boolean,\n default: true\n },\n checkOrientation: {\n type: Boolean,\n default: true\n },\n modal: {\n type: Boolean,\n default: true\n },\n guides: {\n type: Boolean,\n default: true\n },\n center: {\n type: Boolean,\n default: true\n },\n highlight: {\n type: Boolean,\n default: true\n },\n background: {\n type: Boolean,\n default: true\n },\n autoCrop: {\n type: Boolean,\n default: true\n },\n autoCropArea: Number,\n movable: {\n type: Boolean,\n default: true\n },\n rotatable: {\n type: Boolean,\n default: true\n },\n scalable: {\n type: Boolean,\n default: true\n },\n zoomable: {\n type: Boolean,\n default: true\n },\n zoomOnTouch: {\n type: Boolean,\n default: true\n },\n zoomOnWheel: {\n type: Boolean,\n default: true\n },\n wheelZoomRatio: Number,\n cropBoxMovable: {\n type: Boolean,\n default: true\n },\n cropBoxResizable: {\n type: Boolean,\n default: true\n },\n toggleDragModeOnDblclick: {\n type: Boolean,\n default: true\n },\n\n minCanvasWidth: Number,\n minCanvasHeight: Number,\n minCropBoxWidth: Number,\n minCropBoxHeight: Number,\n minContainerWidth: Number,\n minContainerHeight: Number,\n\n ready: Function,\n cropstart: Function,\n cropmove: Function,\n cropend: Function,\n crop: Function,\n zoom: Function\n },\n mounted: function mounted() {\n var _$options$props = this.$options.props,\n containerStyle = _$options$props.containerStyle,\n src = _$options$props.src,\n alt = _$options$props.alt,\n imgStyle = _$options$props.imgStyle,\n data = _objectWithoutProperties(_$options$props, ['containerStyle', 'src', 'alt', 'imgStyle']);\n\n var props = {};\n\n for (var key in data) {\n if (this[key] !== undefined) {\n props[key] = this[key];\n }\n }\n\n this.cropper = new _cropperjs2.default(this.$refs.img, props);\n },\n\n methods: {\n reset: function reset() {\n return this.cropper.reset();\n },\n clear: function clear() {\n return this.cropper.clear();\n },\n initCrop: function initCrop() {\n return this.cropper.crop();\n },\n replace: function replace(url) {\n var onlyColorChanged = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n return this.cropper.replace(url, onlyColorChanged);\n },\n enable: function enable() {\n return this.cropper.enable();\n },\n disable: function disable() {\n return this.cropper.disable();\n },\n destroy: function destroy() {\n return this.cropper.destroy();\n },\n move: function move(offsetX, offsetY) {\n return this.cropper.move(offsetX, offsetY);\n },\n moveTo: function moveTo(x) {\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n\n return this.cropper.moveTo(x, y);\n },\n relativeZoom: function relativeZoom(ratio, _originalEvent) {\n return this.cropper.zoom(ratio, _originalEvent);\n },\n zoomTo: function zoomTo(ratio, _originalEvent) {\n return this.cropper.zoomTo(ratio, _originalEvent);\n },\n rotate: function rotate(degree) {\n return this.cropper.rotate(degree);\n },\n rotateTo: function rotateTo(degree) {\n return this.cropper.rotateTo(degree);\n },\n scaleX: function scaleX(_scaleX) {\n return this.cropper.scaleX(_scaleX);\n },\n scaleY: function scaleY(_scaleY) {\n return this.cropper.scaleY(_scaleY);\n },\n scale: function scale(scaleX) {\n var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;\n\n return this.cropper.scale(scaleX, scaleY);\n },\n getData: function getData() {\n var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n return this.cropper.getData(rounded);\n },\n setData: function setData(data) {\n return this.cropper.setData(data);\n },\n getContainerData: function getContainerData() {\n return this.cropper.getContainerData();\n },\n getImageData: function getImageData() {\n return this.cropper.getImageData();\n },\n getCanvasData: function getCanvasData() {\n return this.cropper.getCanvasData();\n },\n setCanvasData: function setCanvasData(data) {\n return this.cropper.setCanvasData(data);\n },\n getCropBoxData: function getCropBoxData() {\n return this.cropper.getCropBoxData();\n },\n setCropBoxData: function setCropBoxData(data) {\n return this.cropper.setCropBoxData(data);\n },\n getCroppedCanvas: function getCroppedCanvas() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return this.cropper.getCroppedCanvas(options);\n },\n setAspectRatio: function setAspectRatio(aspectRatio) {\n return this.cropper.setAspectRatio(aspectRatio);\n },\n setDragMode: function setDragMode(mode) {\n return this.cropper.setDragMode(mode);\n }\n }\n};","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","/**!\n * Sortable 1.10.2\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction _typeof(obj) {\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 _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\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) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n 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/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\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 !== 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/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\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/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\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 && 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/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\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/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\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/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\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/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\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\r\n * @return {Number} The index of the object in the array, or -1\r\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 = _objectSpread({}, 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 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.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](_objectSpread({\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](_objectSpread({\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 = _objectSpread({}, 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 pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\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(_objectSpread({\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/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && 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) {\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/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\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,\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 }\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.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, _objectSpread({\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 = !rootEl.contains(dragEl)) // 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 // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\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 el.appendChild(dragEl);\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 /**\n * Serializes the item into an array of string.\n * @returns {String[]}\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 /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\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 order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\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.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\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 /**\n * Destroy\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 (rootEl.contains(dragEl) && !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 _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/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\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/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\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 = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\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 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 || 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.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\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 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 originalEvt: 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 originalEvt: 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 originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\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 originalEvt: 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","/*!\n * Cropper.js v1.5.9\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2020-09-10T13:16:26.743Z\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Cropper = factory());\n}(this, (function () { 'use strict';\n\n function _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\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _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\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _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\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n }\n\n function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n }\n\n function _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\n function _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\n function _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\n var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n var WINDOW = IS_BROWSER ? window : {};\n var IS_TOUCH_DEVICE = IS_BROWSER && WINDOW.document.documentElement ? 'ontouchstart' in WINDOW.document.documentElement : false;\n var HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false;\n var NAMESPACE = 'cropper'; // Actions\n\n var ACTION_ALL = 'all';\n var ACTION_CROP = 'crop';\n var ACTION_MOVE = 'move';\n var ACTION_ZOOM = 'zoom';\n var ACTION_EAST = 'e';\n var ACTION_WEST = 'w';\n var ACTION_SOUTH = 's';\n var ACTION_NORTH = 'n';\n var ACTION_NORTH_EAST = 'ne';\n var ACTION_NORTH_WEST = 'nw';\n var ACTION_SOUTH_EAST = 'se';\n var ACTION_SOUTH_WEST = 'sw'; // Classes\n\n var CLASS_CROP = \"\".concat(NAMESPACE, \"-crop\");\n var CLASS_DISABLED = \"\".concat(NAMESPACE, \"-disabled\");\n var CLASS_HIDDEN = \"\".concat(NAMESPACE, \"-hidden\");\n var CLASS_HIDE = \"\".concat(NAMESPACE, \"-hide\");\n var CLASS_INVISIBLE = \"\".concat(NAMESPACE, \"-invisible\");\n var CLASS_MODAL = \"\".concat(NAMESPACE, \"-modal\");\n var CLASS_MOVE = \"\".concat(NAMESPACE, \"-move\"); // Data keys\n\n var DATA_ACTION = \"\".concat(NAMESPACE, \"Action\");\n var DATA_PREVIEW = \"\".concat(NAMESPACE, \"Preview\"); // Drag modes\n\n var DRAG_MODE_CROP = 'crop';\n var DRAG_MODE_MOVE = 'move';\n var DRAG_MODE_NONE = 'none'; // Events\n\n var EVENT_CROP = 'crop';\n var EVENT_CROP_END = 'cropend';\n var EVENT_CROP_MOVE = 'cropmove';\n var EVENT_CROP_START = 'cropstart';\n var EVENT_DBLCLICK = 'dblclick';\n var EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown';\n var EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove';\n var EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup';\n var EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START;\n var EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE;\n var EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END;\n var EVENT_READY = 'ready';\n var EVENT_RESIZE = 'resize';\n var EVENT_WHEEL = 'wheel';\n var EVENT_ZOOM = 'zoom'; // Mime types\n\n var MIME_TYPE_JPEG = 'image/jpeg'; // RegExps\n\n var REGEXP_ACTIONS = /^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/;\n var REGEXP_DATA_URL = /^data:/;\n var REGEXP_DATA_URL_JPEG = /^data:image\\/jpeg;base64,/;\n var REGEXP_TAG_NAME = /^img|canvas$/i; // Misc\n // Inspired by the default width and height of a canvas element.\n\n var MIN_CONTAINER_WIDTH = 200;\n var MIN_CONTAINER_HEIGHT = 100;\n\n var DEFAULTS = {\n // Define the view mode of the cropper\n viewMode: 0,\n // 0, 1, 2, 3\n // Define the dragging mode of the cropper\n dragMode: DRAG_MODE_CROP,\n // 'crop', 'move' or 'none'\n // Define the initial aspect ratio of the crop box\n initialAspectRatio: NaN,\n // Define the aspect ratio of the crop box\n aspectRatio: NaN,\n // An object with the previous cropping result data\n data: null,\n // A selector for adding extra containers to preview\n preview: '',\n // Re-render the cropper when resize the window\n responsive: true,\n // Restore the cropped area after resize the window\n restore: true,\n // Check if the current image is a cross-origin image\n checkCrossOrigin: true,\n // Check the current image's Exif Orientation information\n checkOrientation: true,\n // Show the black modal\n modal: true,\n // Show the dashed lines for guiding\n guides: true,\n // Show the center indicator for guiding\n center: true,\n // Show the white modal to highlight the crop box\n highlight: true,\n // Show the grid background\n background: true,\n // Enable to crop the image automatically when initialize\n autoCrop: true,\n // Define the percentage of automatic cropping area when initializes\n autoCropArea: 0.8,\n // Enable to move the image\n movable: true,\n // Enable to rotate the image\n rotatable: true,\n // Enable to scale the image\n scalable: true,\n // Enable to zoom the image\n zoomable: true,\n // Enable to zoom the image by dragging touch\n zoomOnTouch: true,\n // Enable to zoom the image by wheeling mouse\n zoomOnWheel: true,\n // Define zoom ratio when zoom the image by wheeling mouse\n wheelZoomRatio: 0.1,\n // Enable to move the crop box\n cropBoxMovable: true,\n // Enable to resize the crop box\n cropBoxResizable: true,\n // Toggle drag mode between \"crop\" and \"move\" when click twice on the cropper\n toggleDragModeOnDblclick: true,\n // Size limitation\n minCanvasWidth: 0,\n minCanvasHeight: 0,\n minCropBoxWidth: 0,\n minCropBoxHeight: 0,\n minContainerWidth: MIN_CONTAINER_WIDTH,\n minContainerHeight: MIN_CONTAINER_HEIGHT,\n // Shortcuts of events\n ready: null,\n cropstart: null,\n cropmove: null,\n cropend: null,\n crop: null,\n zoom: null\n };\n\n var TEMPLATE = '
' + '
' + '
' + '
' + '
' + '
' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
' + '
';\n\n /**\n * Check if the given value is not a number.\n */\n\n var isNaN = Number.isNaN || WINDOW.isNaN;\n /**\n * Check if the given value is a number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a number, else `false`.\n */\n\n function isNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n }\n /**\n * Check if the given value is a positive number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\n */\n\n var isPositiveNumber = function isPositiveNumber(value) {\n return value > 0 && value < Infinity;\n };\n /**\n * Check if the given value is undefined.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is undefined, else `false`.\n */\n\n function isUndefined(value) {\n return typeof value === 'undefined';\n }\n /**\n * Check if the given value is an object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is an object, else `false`.\n */\n\n function isObject(value) {\n return _typeof(value) === 'object' && value !== null;\n }\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n /**\n * Check if the given value is a plain object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.\n */\n\n function isPlainObject(value) {\n if (!isObject(value)) {\n return false;\n }\n\n try {\n var _constructor = value.constructor;\n var prototype = _constructor.prototype;\n return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');\n } catch (error) {\n return false;\n }\n }\n /**\n * Check if the given value is a function.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a function, else `false`.\n */\n\n function isFunction(value) {\n return typeof value === 'function';\n }\n var slice = Array.prototype.slice;\n /**\n * Convert array-like or iterable object to an array.\n * @param {*} value - The value to convert.\n * @returns {Array} Returns a new array.\n */\n\n function toArray(value) {\n return Array.from ? Array.from(value) : slice.call(value);\n }\n /**\n * Iterate the given data.\n * @param {*} data - The data to iterate.\n * @param {Function} callback - The process function for each element.\n * @returns {*} The original data.\n */\n\n function forEach(data, callback) {\n if (data && isFunction(callback)) {\n if (Array.isArray(data) || isNumber(data.length)\n /* array-like */\n ) {\n toArray(data).forEach(function (value, key) {\n callback.call(data, value, key, data);\n });\n } else if (isObject(data)) {\n Object.keys(data).forEach(function (key) {\n callback.call(data, data[key], key, data);\n });\n }\n }\n\n return data;\n }\n /**\n * Extend the given object.\n * @param {*} target - The target object to extend.\n * @param {*} args - The rest objects for merging to the target object.\n * @returns {Object} The extended object.\n */\n\n var assign = Object.assign || function assign(target) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (isObject(target) && args.length > 0) {\n args.forEach(function (arg) {\n if (isObject(arg)) {\n Object.keys(arg).forEach(function (key) {\n target[key] = arg[key];\n });\n }\n });\n }\n\n return target;\n };\n var REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n /**\n * Normalize decimal number.\n * Check out {@link https://0.30000000000000004.com/}\n * @param {number} value - The value to normalize.\n * @param {number} [times=100000000000] - The times for normalizing.\n * @returns {number} Returns the normalized number.\n */\n\n function normalizeDecimalNumber(value) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;\n return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;\n }\n var REGEXP_SUFFIX = /^width|height|left|top|marginLeft|marginTop$/;\n /**\n * Apply styles to the given element.\n * @param {Element} element - The target element.\n * @param {Object} styles - The styles for applying.\n */\n\n function setStyle(element, styles) {\n var style = element.style;\n forEach(styles, function (value, property) {\n if (REGEXP_SUFFIX.test(property) && isNumber(value)) {\n value = \"\".concat(value, \"px\");\n }\n\n style[property] = value;\n });\n }\n /**\n * Check if the given element has a special class.\n * @param {Element} element - The element to check.\n * @param {string} value - The class to search.\n * @returns {boolean} Returns `true` if the special class was found.\n */\n\n function hasClass(element, value) {\n return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;\n }\n /**\n * Add classes to the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be added.\n */\n\n function addClass(element, value) {\n if (!value) {\n return;\n }\n\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n addClass(elem, value);\n });\n return;\n }\n\n if (element.classList) {\n element.classList.add(value);\n return;\n }\n\n var className = element.className.trim();\n\n if (!className) {\n element.className = value;\n } else if (className.indexOf(value) < 0) {\n element.className = \"\".concat(className, \" \").concat(value);\n }\n }\n /**\n * Remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be removed.\n */\n\n function removeClass(element, value) {\n if (!value) {\n return;\n }\n\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n removeClass(elem, value);\n });\n return;\n }\n\n if (element.classList) {\n element.classList.remove(value);\n return;\n }\n\n if (element.className.indexOf(value) >= 0) {\n element.className = element.className.replace(value, '');\n }\n }\n /**\n * Add or remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be toggled.\n * @param {boolean} added - Add only.\n */\n\n function toggleClass(element, value, added) {\n if (!value) {\n return;\n }\n\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n toggleClass(elem, value, added);\n });\n return;\n } // IE10-11 doesn't support the second parameter of `classList.toggle`\n\n\n if (added) {\n addClass(element, value);\n } else {\n removeClass(element, value);\n }\n }\n var REGEXP_CAMEL_CASE = /([a-z\\d])([A-Z])/g;\n /**\n * Transform the given string from camelCase to kebab-case\n * @param {string} value - The value to transform.\n * @returns {string} The transformed value.\n */\n\n function toParamCase(value) {\n return value.replace(REGEXP_CAMEL_CASE, '$1-$2').toLowerCase();\n }\n /**\n * Get data from the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to get.\n * @returns {string} The data value.\n */\n\n function getData(element, name) {\n if (isObject(element[name])) {\n return element[name];\n }\n\n if (element.dataset) {\n return element.dataset[name];\n }\n\n return element.getAttribute(\"data-\".concat(toParamCase(name)));\n }\n /**\n * Set data to the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to set.\n * @param {string} data - The data value.\n */\n\n function setData(element, name, data) {\n if (isObject(data)) {\n element[name] = data;\n } else if (element.dataset) {\n element.dataset[name] = data;\n } else {\n element.setAttribute(\"data-\".concat(toParamCase(name)), data);\n }\n }\n /**\n * Remove data from the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to remove.\n */\n\n function removeData(element, name) {\n if (isObject(element[name])) {\n try {\n delete element[name];\n } catch (error) {\n element[name] = undefined;\n }\n } else if (element.dataset) {\n // #128 Safari not allows to delete dataset property\n try {\n delete element.dataset[name];\n } catch (error) {\n element.dataset[name] = undefined;\n }\n } else {\n element.removeAttribute(\"data-\".concat(toParamCase(name)));\n }\n }\n var REGEXP_SPACES = /\\s\\s*/;\n\n var onceSupported = function () {\n var supported = false;\n\n if (IS_BROWSER) {\n var once = false;\n\n var listener = function listener() {};\n\n var options = Object.defineProperty({}, 'once', {\n get: function get() {\n supported = true;\n return once;\n },\n\n /**\n * This setter can fix a `TypeError` in strict mode\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only}\n * @param {boolean} value - The value to set\n */\n set: function set(value) {\n once = value;\n }\n });\n WINDOW.addEventListener('test', listener, options);\n WINDOW.removeEventListener('test', listener, options);\n }\n\n return supported;\n }();\n /**\n * Remove event listener from the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\n\n\n function removeListener(element, type, listener) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var handler = listener;\n type.trim().split(REGEXP_SPACES).forEach(function (event) {\n if (!onceSupported) {\n var listeners = element.listeners;\n\n if (listeners && listeners[event] && listeners[event][listener]) {\n handler = listeners[event][listener];\n delete listeners[event][listener];\n\n if (Object.keys(listeners[event]).length === 0) {\n delete listeners[event];\n }\n\n if (Object.keys(listeners).length === 0) {\n delete element.listeners;\n }\n }\n }\n\n element.removeEventListener(event, handler, options);\n });\n }\n /**\n * Add event listener to the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\n\n function addListener(element, type, listener) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _handler = listener;\n type.trim().split(REGEXP_SPACES).forEach(function (event) {\n if (options.once && !onceSupported) {\n var _element$listeners = element.listeners,\n listeners = _element$listeners === void 0 ? {} : _element$listeners;\n\n _handler = function handler() {\n delete listeners[event][listener];\n element.removeEventListener(event, _handler, options);\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n listener.apply(element, args);\n };\n\n if (!listeners[event]) {\n listeners[event] = {};\n }\n\n if (listeners[event][listener]) {\n element.removeEventListener(event, listeners[event][listener], options);\n }\n\n listeners[event][listener] = _handler;\n element.listeners = listeners;\n }\n\n element.addEventListener(event, _handler, options);\n });\n }\n /**\n * Dispatch event on the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Object} data - The additional event data.\n * @returns {boolean} Indicate if the event is default prevented or not.\n */\n\n function dispatchEvent(element, type, data) {\n var event; // Event and CustomEvent on IE9-11 are global objects, not constructors\n\n if (isFunction(Event) && isFunction(CustomEvent)) {\n event = new CustomEvent(type, {\n detail: data,\n bubbles: true,\n cancelable: true\n });\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(type, true, true, data);\n }\n\n return element.dispatchEvent(event);\n }\n /**\n * Get the offset base on the document.\n * @param {Element} element - The target element.\n * @returns {Object} The offset data.\n */\n\n function getOffset(element) {\n var box = element.getBoundingClientRect();\n return {\n left: box.left + (window.pageXOffset - document.documentElement.clientLeft),\n top: box.top + (window.pageYOffset - document.documentElement.clientTop)\n };\n }\n var location = WINDOW.location;\n var REGEXP_ORIGINS = /^(\\w+:)\\/\\/([^:/?#]*):?(\\d*)/i;\n /**\n * Check if the given URL is a cross origin URL.\n * @param {string} url - The target URL.\n * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`.\n */\n\n function isCrossOriginURL(url) {\n var parts = url.match(REGEXP_ORIGINS);\n return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);\n }\n /**\n * Add timestamp to the given URL.\n * @param {string} url - The target URL.\n * @returns {string} The result URL.\n */\n\n function addTimestamp(url) {\n var timestamp = \"timestamp=\".concat(new Date().getTime());\n return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp;\n }\n /**\n * Get transforms base on the given object.\n * @param {Object} obj - The target object.\n * @returns {string} A string contains transform values.\n */\n\n function getTransforms(_ref) {\n var rotate = _ref.rotate,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY,\n translateX = _ref.translateX,\n translateY = _ref.translateY;\n var values = [];\n\n if (isNumber(translateX) && translateX !== 0) {\n values.push(\"translateX(\".concat(translateX, \"px)\"));\n }\n\n if (isNumber(translateY) && translateY !== 0) {\n values.push(\"translateY(\".concat(translateY, \"px)\"));\n } // Rotate should come first before scale to match orientation transform\n\n\n if (isNumber(rotate) && rotate !== 0) {\n values.push(\"rotate(\".concat(rotate, \"deg)\"));\n }\n\n if (isNumber(scaleX) && scaleX !== 1) {\n values.push(\"scaleX(\".concat(scaleX, \")\"));\n }\n\n if (isNumber(scaleY) && scaleY !== 1) {\n values.push(\"scaleY(\".concat(scaleY, \")\"));\n }\n\n var transform = values.length ? values.join(' ') : 'none';\n return {\n WebkitTransform: transform,\n msTransform: transform,\n transform: transform\n };\n }\n /**\n * Get the max ratio of a group of pointers.\n * @param {string} pointers - The target pointers.\n * @returns {number} The result ratio.\n */\n\n function getMaxZoomRatio(pointers) {\n var pointers2 = _objectSpread2({}, pointers);\n\n var maxRatio = 0;\n forEach(pointers, function (pointer, pointerId) {\n delete pointers2[pointerId];\n forEach(pointers2, function (pointer2) {\n var x1 = Math.abs(pointer.startX - pointer2.startX);\n var y1 = Math.abs(pointer.startY - pointer2.startY);\n var x2 = Math.abs(pointer.endX - pointer2.endX);\n var y2 = Math.abs(pointer.endY - pointer2.endY);\n var z1 = Math.sqrt(x1 * x1 + y1 * y1);\n var z2 = Math.sqrt(x2 * x2 + y2 * y2);\n var ratio = (z2 - z1) / z1;\n\n if (Math.abs(ratio) > Math.abs(maxRatio)) {\n maxRatio = ratio;\n }\n });\n });\n return maxRatio;\n }\n /**\n * Get a pointer from an event object.\n * @param {Object} event - The target event object.\n * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.\n * @returns {Object} The result pointer contains start and/or end point coordinates.\n */\n\n function getPointer(_ref2, endOnly) {\n var pageX = _ref2.pageX,\n pageY = _ref2.pageY;\n var end = {\n endX: pageX,\n endY: pageY\n };\n return endOnly ? end : _objectSpread2({\n startX: pageX,\n startY: pageY\n }, end);\n }\n /**\n * Get the center point coordinate of a group of pointers.\n * @param {Object} pointers - The target pointers.\n * @returns {Object} The center point coordinate.\n */\n\n function getPointersCenter(pointers) {\n var pageX = 0;\n var pageY = 0;\n var count = 0;\n forEach(pointers, function (_ref3) {\n var startX = _ref3.startX,\n startY = _ref3.startY;\n pageX += startX;\n pageY += startY;\n count += 1;\n });\n pageX /= count;\n pageY /= count;\n return {\n pageX: pageX,\n pageY: pageY\n };\n }\n /**\n * Get the max sizes in a rectangle under the given aspect ratio.\n * @param {Object} data - The original sizes.\n * @param {string} [type='contain'] - The adjust type.\n * @returns {Object} The result sizes.\n */\n\n function getAdjustedSizes(_ref4) // or 'cover'\n {\n var aspectRatio = _ref4.aspectRatio,\n height = _ref4.height,\n width = _ref4.width;\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'contain';\n var isValidWidth = isPositiveNumber(width);\n var isValidHeight = isPositiveNumber(height);\n\n if (isValidWidth && isValidHeight) {\n var adjustedWidth = height * aspectRatio;\n\n if (type === 'contain' && adjustedWidth > width || type === 'cover' && adjustedWidth < width) {\n height = width / aspectRatio;\n } else {\n width = height * aspectRatio;\n }\n } else if (isValidWidth) {\n height = width / aspectRatio;\n } else if (isValidHeight) {\n width = height * aspectRatio;\n }\n\n return {\n width: width,\n height: height\n };\n }\n /**\n * Get the new sizes of a rectangle after rotated.\n * @param {Object} data - The original sizes.\n * @returns {Object} The result sizes.\n */\n\n function getRotatedSizes(_ref5) {\n var width = _ref5.width,\n height = _ref5.height,\n degree = _ref5.degree;\n degree = Math.abs(degree) % 180;\n\n if (degree === 90) {\n return {\n width: height,\n height: width\n };\n }\n\n var arc = degree % 90 * Math.PI / 180;\n var sinArc = Math.sin(arc);\n var cosArc = Math.cos(arc);\n var newWidth = width * cosArc + height * sinArc;\n var newHeight = width * sinArc + height * cosArc;\n return degree > 90 ? {\n width: newHeight,\n height: newWidth\n } : {\n width: newWidth,\n height: newHeight\n };\n }\n /**\n * Get a canvas which drew the given image.\n * @param {HTMLImageElement} image - The image for drawing.\n * @param {Object} imageData - The image data.\n * @param {Object} canvasData - The canvas data.\n * @param {Object} options - The options.\n * @returns {HTMLCanvasElement} The result canvas.\n */\n\n function getSourceCanvas(image, _ref6, _ref7, _ref8) {\n var imageAspectRatio = _ref6.aspectRatio,\n imageNaturalWidth = _ref6.naturalWidth,\n imageNaturalHeight = _ref6.naturalHeight,\n _ref6$rotate = _ref6.rotate,\n rotate = _ref6$rotate === void 0 ? 0 : _ref6$rotate,\n _ref6$scaleX = _ref6.scaleX,\n scaleX = _ref6$scaleX === void 0 ? 1 : _ref6$scaleX,\n _ref6$scaleY = _ref6.scaleY,\n scaleY = _ref6$scaleY === void 0 ? 1 : _ref6$scaleY;\n var aspectRatio = _ref7.aspectRatio,\n naturalWidth = _ref7.naturalWidth,\n naturalHeight = _ref7.naturalHeight;\n var _ref8$fillColor = _ref8.fillColor,\n fillColor = _ref8$fillColor === void 0 ? 'transparent' : _ref8$fillColor,\n _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled,\n imageSmoothingEnabled = _ref8$imageSmoothingE === void 0 ? true : _ref8$imageSmoothingE,\n _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality,\n imageSmoothingQuality = _ref8$imageSmoothingQ === void 0 ? 'low' : _ref8$imageSmoothingQ,\n _ref8$maxWidth = _ref8.maxWidth,\n maxWidth = _ref8$maxWidth === void 0 ? Infinity : _ref8$maxWidth,\n _ref8$maxHeight = _ref8.maxHeight,\n maxHeight = _ref8$maxHeight === void 0 ? Infinity : _ref8$maxHeight,\n _ref8$minWidth = _ref8.minWidth,\n minWidth = _ref8$minWidth === void 0 ? 0 : _ref8$minWidth,\n _ref8$minHeight = _ref8.minHeight,\n minHeight = _ref8$minHeight === void 0 ? 0 : _ref8$minHeight;\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var maxSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: maxWidth,\n height: maxHeight\n });\n var minSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: minWidth,\n height: minHeight\n }, 'cover');\n var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth));\n var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight)); // Note: should always use image's natural sizes for drawing as\n // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90\n\n var destMaxSizes = getAdjustedSizes({\n aspectRatio: imageAspectRatio,\n width: maxWidth,\n height: maxHeight\n });\n var destMinSizes = getAdjustedSizes({\n aspectRatio: imageAspectRatio,\n width: minWidth,\n height: minHeight\n }, 'cover');\n var destWidth = Math.min(destMaxSizes.width, Math.max(destMinSizes.width, imageNaturalWidth));\n var destHeight = Math.min(destMaxSizes.height, Math.max(destMinSizes.height, imageNaturalHeight));\n var params = [-destWidth / 2, -destHeight / 2, destWidth, destHeight];\n canvas.width = normalizeDecimalNumber(width);\n canvas.height = normalizeDecimalNumber(height);\n context.fillStyle = fillColor;\n context.fillRect(0, 0, width, height);\n context.save();\n context.translate(width / 2, height / 2);\n context.rotate(rotate * Math.PI / 180);\n context.scale(scaleX, scaleY);\n context.imageSmoothingEnabled = imageSmoothingEnabled;\n context.imageSmoothingQuality = imageSmoothingQuality;\n context.drawImage.apply(context, [image].concat(_toConsumableArray(params.map(function (param) {\n return Math.floor(normalizeDecimalNumber(param));\n }))));\n context.restore();\n return canvas;\n }\n var fromCharCode = String.fromCharCode;\n /**\n * Get string from char code in data view.\n * @param {DataView} dataView - The data view for read.\n * @param {number} start - The start index.\n * @param {number} length - The read length.\n * @returns {string} The read result.\n */\n\n function getStringFromCharCode(dataView, start, length) {\n var str = '';\n length += start;\n\n for (var i = start; i < length; i += 1) {\n str += fromCharCode(dataView.getUint8(i));\n }\n\n return str;\n }\n var REGEXP_DATA_URL_HEAD = /^data:.*,/;\n /**\n * Transform Data URL to array buffer.\n * @param {string} dataURL - The Data URL to transform.\n * @returns {ArrayBuffer} The result array buffer.\n */\n\n function dataURLToArrayBuffer(dataURL) {\n var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');\n var binary = atob(base64);\n var arrayBuffer = new ArrayBuffer(binary.length);\n var uint8 = new Uint8Array(arrayBuffer);\n forEach(uint8, function (value, i) {\n uint8[i] = binary.charCodeAt(i);\n });\n return arrayBuffer;\n }\n /**\n * Transform array buffer to Data URL.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n * @param {string} mimeType - The mime type of the Data URL.\n * @returns {string} The result Data URL.\n */\n\n function arrayBufferToDataURL(arrayBuffer, mimeType) {\n var chunks = []; // Chunk Typed Array for better performance (#435)\n\n var chunkSize = 8192;\n var uint8 = new Uint8Array(arrayBuffer);\n\n while (uint8.length > 0) {\n // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n // eslint-disable-next-line prefer-spread\n chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n uint8 = uint8.subarray(chunkSize);\n }\n\n return \"data:\".concat(mimeType, \";base64,\").concat(btoa(chunks.join('')));\n }\n /**\n * Get orientation value from given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n * @returns {number} The read orientation value.\n */\n\n function resetAndGetOrientation(arrayBuffer) {\n var dataView = new DataView(arrayBuffer);\n var orientation; // Ignores range error when the image does not have correct Exif information\n\n try {\n var littleEndian;\n var app1Start;\n var ifdStart; // Only handle JPEG image (start by 0xFFD8)\n\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n var length = dataView.byteLength;\n var offset = 2;\n\n while (offset + 1 < length) {\n if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n app1Start = offset;\n break;\n }\n\n offset += 1;\n }\n }\n\n if (app1Start) {\n var exifIDCode = app1Start + 4;\n var tiffOffset = app1Start + 10;\n\n if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n var endianness = dataView.getUint16(tiffOffset);\n littleEndian = endianness === 0x4949;\n\n if (littleEndian || endianness === 0x4D4D\n /* bigEndian */\n ) {\n if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\n var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\n\n if (firstIFDOffset >= 0x00000008) {\n ifdStart = tiffOffset + firstIFDOffset;\n }\n }\n }\n }\n }\n\n if (ifdStart) {\n var _length = dataView.getUint16(ifdStart, littleEndian);\n\n var _offset;\n\n var i;\n\n for (i = 0; i < _length; i += 1) {\n _offset = ifdStart + i * 12 + 2;\n\n if (dataView.getUint16(_offset, littleEndian) === 0x0112\n /* Orientation */\n ) {\n // 8 is the offset of the current tag's value\n _offset += 8; // Get the original orientation value\n\n orientation = dataView.getUint16(_offset, littleEndian); // Override the orientation with its default value\n\n dataView.setUint16(_offset, 1, littleEndian);\n break;\n }\n }\n }\n } catch (error) {\n orientation = 1;\n }\n\n return orientation;\n }\n /**\n * Parse Exif Orientation value.\n * @param {number} orientation - The orientation to parse.\n * @returns {Object} The parsed result.\n */\n\n function parseOrientation(orientation) {\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n\n switch (orientation) {\n // Flip horizontal\n case 2:\n scaleX = -1;\n break;\n // Rotate left 180°\n\n case 3:\n rotate = -180;\n break;\n // Flip vertical\n\n case 4:\n scaleY = -1;\n break;\n // Flip vertical and rotate right 90°\n\n case 5:\n rotate = 90;\n scaleY = -1;\n break;\n // Rotate right 90°\n\n case 6:\n rotate = 90;\n break;\n // Flip horizontal and rotate right 90°\n\n case 7:\n rotate = 90;\n scaleX = -1;\n break;\n // Rotate left 90°\n\n case 8:\n rotate = -90;\n break;\n }\n\n return {\n rotate: rotate,\n scaleX: scaleX,\n scaleY: scaleY\n };\n }\n\n var render = {\n render: function render() {\n this.initContainer();\n this.initCanvas();\n this.initCropBox();\n this.renderCanvas();\n\n if (this.cropped) {\n this.renderCropBox();\n }\n },\n initContainer: function initContainer() {\n var element = this.element,\n options = this.options,\n container = this.container,\n cropper = this.cropper;\n var minWidth = Number(options.minContainerWidth);\n var minHeight = Number(options.minContainerHeight);\n addClass(cropper, CLASS_HIDDEN);\n removeClass(element, CLASS_HIDDEN);\n var containerData = {\n width: Math.max(container.offsetWidth, minWidth >= 0 ? minWidth : MIN_CONTAINER_WIDTH),\n height: Math.max(container.offsetHeight, minHeight >= 0 ? minHeight : MIN_CONTAINER_HEIGHT)\n };\n this.containerData = containerData;\n setStyle(cropper, {\n width: containerData.width,\n height: containerData.height\n });\n addClass(element, CLASS_HIDDEN);\n removeClass(cropper, CLASS_HIDDEN);\n },\n // Canvas (image wrapper)\n initCanvas: function initCanvas() {\n var containerData = this.containerData,\n imageData = this.imageData;\n var viewMode = this.options.viewMode;\n var rotated = Math.abs(imageData.rotate) % 180 === 90;\n var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth;\n var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight;\n var aspectRatio = naturalWidth / naturalHeight;\n var canvasWidth = containerData.width;\n var canvasHeight = containerData.height;\n\n if (containerData.height * aspectRatio > containerData.width) {\n if (viewMode === 3) {\n canvasWidth = containerData.height * aspectRatio;\n } else {\n canvasHeight = containerData.width / aspectRatio;\n }\n } else if (viewMode === 3) {\n canvasHeight = containerData.width / aspectRatio;\n } else {\n canvasWidth = containerData.height * aspectRatio;\n }\n\n var canvasData = {\n aspectRatio: aspectRatio,\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n width: canvasWidth,\n height: canvasHeight\n };\n this.canvasData = canvasData;\n this.limited = viewMode === 1 || viewMode === 2;\n this.limitCanvas(true, true);\n canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\n canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\n canvasData.left = (containerData.width - canvasData.width) / 2;\n canvasData.top = (containerData.height - canvasData.height) / 2;\n canvasData.oldLeft = canvasData.left;\n canvasData.oldTop = canvasData.top;\n this.initialCanvasData = assign({}, canvasData);\n },\n limitCanvas: function limitCanvas(sizeLimited, positionLimited) {\n var options = this.options,\n containerData = this.containerData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData;\n var viewMode = options.viewMode;\n var aspectRatio = canvasData.aspectRatio;\n var cropped = this.cropped && cropBoxData;\n\n if (sizeLimited) {\n var minCanvasWidth = Number(options.minCanvasWidth) || 0;\n var minCanvasHeight = Number(options.minCanvasHeight) || 0;\n\n if (viewMode > 1) {\n minCanvasWidth = Math.max(minCanvasWidth, containerData.width);\n minCanvasHeight = Math.max(minCanvasHeight, containerData.height);\n\n if (viewMode === 3) {\n if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n minCanvasWidth = minCanvasHeight * aspectRatio;\n } else {\n minCanvasHeight = minCanvasWidth / aspectRatio;\n }\n }\n } else if (viewMode > 0) {\n if (minCanvasWidth) {\n minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0);\n } else if (minCanvasHeight) {\n minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0);\n } else if (cropped) {\n minCanvasWidth = cropBoxData.width;\n minCanvasHeight = cropBoxData.height;\n\n if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n minCanvasWidth = minCanvasHeight * aspectRatio;\n } else {\n minCanvasHeight = minCanvasWidth / aspectRatio;\n }\n }\n }\n\n var _getAdjustedSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: minCanvasWidth,\n height: minCanvasHeight\n });\n\n minCanvasWidth = _getAdjustedSizes.width;\n minCanvasHeight = _getAdjustedSizes.height;\n canvasData.minWidth = minCanvasWidth;\n canvasData.minHeight = minCanvasHeight;\n canvasData.maxWidth = Infinity;\n canvasData.maxHeight = Infinity;\n }\n\n if (positionLimited) {\n if (viewMode > (cropped ? 0 : 1)) {\n var newCanvasLeft = containerData.width - canvasData.width;\n var newCanvasTop = containerData.height - canvasData.height;\n canvasData.minLeft = Math.min(0, newCanvasLeft);\n canvasData.minTop = Math.min(0, newCanvasTop);\n canvasData.maxLeft = Math.max(0, newCanvasLeft);\n canvasData.maxTop = Math.max(0, newCanvasTop);\n\n if (cropped && this.limited) {\n canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width));\n canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height));\n canvasData.maxLeft = cropBoxData.left;\n canvasData.maxTop = cropBoxData.top;\n\n if (viewMode === 2) {\n if (canvasData.width >= containerData.width) {\n canvasData.minLeft = Math.min(0, newCanvasLeft);\n canvasData.maxLeft = Math.max(0, newCanvasLeft);\n }\n\n if (canvasData.height >= containerData.height) {\n canvasData.minTop = Math.min(0, newCanvasTop);\n canvasData.maxTop = Math.max(0, newCanvasTop);\n }\n }\n }\n } else {\n canvasData.minLeft = -canvasData.width;\n canvasData.minTop = -canvasData.height;\n canvasData.maxLeft = containerData.width;\n canvasData.maxTop = containerData.height;\n }\n }\n },\n renderCanvas: function renderCanvas(changed, transformed) {\n var canvasData = this.canvasData,\n imageData = this.imageData;\n\n if (transformed) {\n var _getRotatedSizes = getRotatedSizes({\n width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1),\n height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1),\n degree: imageData.rotate || 0\n }),\n naturalWidth = _getRotatedSizes.width,\n naturalHeight = _getRotatedSizes.height;\n\n var width = canvasData.width * (naturalWidth / canvasData.naturalWidth);\n var height = canvasData.height * (naturalHeight / canvasData.naturalHeight);\n canvasData.left -= (width - canvasData.width) / 2;\n canvasData.top -= (height - canvasData.height) / 2;\n canvasData.width = width;\n canvasData.height = height;\n canvasData.aspectRatio = naturalWidth / naturalHeight;\n canvasData.naturalWidth = naturalWidth;\n canvasData.naturalHeight = naturalHeight;\n this.limitCanvas(true, false);\n }\n\n if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) {\n canvasData.left = canvasData.oldLeft;\n }\n\n if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) {\n canvasData.top = canvasData.oldTop;\n }\n\n canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\n canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\n this.limitCanvas(false, true);\n canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft);\n canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop);\n canvasData.oldLeft = canvasData.left;\n canvasData.oldTop = canvasData.top;\n setStyle(this.canvas, assign({\n width: canvasData.width,\n height: canvasData.height\n }, getTransforms({\n translateX: canvasData.left,\n translateY: canvasData.top\n })));\n this.renderImage(changed);\n\n if (this.cropped && this.limited) {\n this.limitCropBox(true, true);\n }\n },\n renderImage: function renderImage(changed) {\n var canvasData = this.canvasData,\n imageData = this.imageData;\n var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);\n var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);\n assign(imageData, {\n width: width,\n height: height,\n left: (canvasData.width - width) / 2,\n top: (canvasData.height - height) / 2\n });\n setStyle(this.image, assign({\n width: imageData.width,\n height: imageData.height\n }, getTransforms(assign({\n translateX: imageData.left,\n translateY: imageData.top\n }, imageData))));\n\n if (changed) {\n this.output();\n }\n },\n initCropBox: function initCropBox() {\n var options = this.options,\n canvasData = this.canvasData;\n var aspectRatio = options.aspectRatio || options.initialAspectRatio;\n var autoCropArea = Number(options.autoCropArea) || 0.8;\n var cropBoxData = {\n width: canvasData.width,\n height: canvasData.height\n };\n\n if (aspectRatio) {\n if (canvasData.height * aspectRatio > canvasData.width) {\n cropBoxData.height = cropBoxData.width / aspectRatio;\n } else {\n cropBoxData.width = cropBoxData.height * aspectRatio;\n }\n }\n\n this.cropBoxData = cropBoxData;\n this.limitCropBox(true, true); // Initialize auto crop area\n\n cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight); // The width/height of auto crop area must large than \"minWidth/Height\"\n\n cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea);\n cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea);\n cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2;\n cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2;\n cropBoxData.oldLeft = cropBoxData.left;\n cropBoxData.oldTop = cropBoxData.top;\n this.initialCropBoxData = assign({}, cropBoxData);\n },\n limitCropBox: function limitCropBox(sizeLimited, positionLimited) {\n var options = this.options,\n containerData = this.containerData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData,\n limited = this.limited;\n var aspectRatio = options.aspectRatio;\n\n if (sizeLimited) {\n var minCropBoxWidth = Number(options.minCropBoxWidth) || 0;\n var minCropBoxHeight = Number(options.minCropBoxHeight) || 0;\n var maxCropBoxWidth = limited ? Math.min(containerData.width, canvasData.width, canvasData.width + canvasData.left, containerData.width - canvasData.left) : containerData.width;\n var maxCropBoxHeight = limited ? Math.min(containerData.height, canvasData.height, canvasData.height + canvasData.top, containerData.height - canvasData.top) : containerData.height; // The min/maxCropBoxWidth/Height must be less than container's width/height\n\n minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width);\n minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height);\n\n if (aspectRatio) {\n if (minCropBoxWidth && minCropBoxHeight) {\n if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {\n minCropBoxHeight = minCropBoxWidth / aspectRatio;\n } else {\n minCropBoxWidth = minCropBoxHeight * aspectRatio;\n }\n } else if (minCropBoxWidth) {\n minCropBoxHeight = minCropBoxWidth / aspectRatio;\n } else if (minCropBoxHeight) {\n minCropBoxWidth = minCropBoxHeight * aspectRatio;\n }\n\n if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {\n maxCropBoxHeight = maxCropBoxWidth / aspectRatio;\n } else {\n maxCropBoxWidth = maxCropBoxHeight * aspectRatio;\n }\n } // The minWidth/Height must be less than maxWidth/Height\n\n\n cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth);\n cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight);\n cropBoxData.maxWidth = maxCropBoxWidth;\n cropBoxData.maxHeight = maxCropBoxHeight;\n }\n\n if (positionLimited) {\n if (limited) {\n cropBoxData.minLeft = Math.max(0, canvasData.left);\n cropBoxData.minTop = Math.max(0, canvasData.top);\n cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width;\n cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height;\n } else {\n cropBoxData.minLeft = 0;\n cropBoxData.minTop = 0;\n cropBoxData.maxLeft = containerData.width - cropBoxData.width;\n cropBoxData.maxTop = containerData.height - cropBoxData.height;\n }\n }\n },\n renderCropBox: function renderCropBox() {\n var options = this.options,\n containerData = this.containerData,\n cropBoxData = this.cropBoxData;\n\n if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) {\n cropBoxData.left = cropBoxData.oldLeft;\n }\n\n if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) {\n cropBoxData.top = cropBoxData.oldTop;\n }\n\n cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);\n this.limitCropBox(false, true);\n cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft);\n cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop);\n cropBoxData.oldLeft = cropBoxData.left;\n cropBoxData.oldTop = cropBoxData.top;\n\n if (options.movable && options.cropBoxMovable) {\n // Turn to move the canvas when the crop box is equal to the container\n setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL);\n }\n\n setStyle(this.cropBox, assign({\n width: cropBoxData.width,\n height: cropBoxData.height\n }, getTransforms({\n translateX: cropBoxData.left,\n translateY: cropBoxData.top\n })));\n\n if (this.cropped && this.limited) {\n this.limitCanvas(true, true);\n }\n\n if (!this.disabled) {\n this.output();\n }\n },\n output: function output() {\n this.preview();\n dispatchEvent(this.element, EVENT_CROP, this.getData());\n }\n };\n\n var preview = {\n initPreview: function initPreview() {\n var element = this.element,\n crossOrigin = this.crossOrigin;\n var preview = this.options.preview;\n var url = crossOrigin ? this.crossOriginUrl : this.url;\n var alt = element.alt || 'The image to preview';\n var image = document.createElement('img');\n\n if (crossOrigin) {\n image.crossOrigin = crossOrigin;\n }\n\n image.src = url;\n image.alt = alt;\n this.viewBox.appendChild(image);\n this.viewBoxImage = image;\n\n if (!preview) {\n return;\n }\n\n var previews = preview;\n\n if (typeof preview === 'string') {\n previews = element.ownerDocument.querySelectorAll(preview);\n } else if (preview.querySelector) {\n previews = [preview];\n }\n\n this.previews = previews;\n forEach(previews, function (el) {\n var img = document.createElement('img'); // Save the original size for recover\n\n setData(el, DATA_PREVIEW, {\n width: el.offsetWidth,\n height: el.offsetHeight,\n html: el.innerHTML\n });\n\n if (crossOrigin) {\n img.crossOrigin = crossOrigin;\n }\n\n img.src = url;\n img.alt = alt;\n /**\n * Override img element styles\n * Add `display:block` to avoid margin top issue\n * Add `height:auto` to override `height` attribute on IE8\n * (Occur only when margin-top <= -height)\n */\n\n img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;\"';\n el.innerHTML = '';\n el.appendChild(img);\n });\n },\n resetPreview: function resetPreview() {\n forEach(this.previews, function (element) {\n var data = getData(element, DATA_PREVIEW);\n setStyle(element, {\n width: data.width,\n height: data.height\n });\n element.innerHTML = data.html;\n removeData(element, DATA_PREVIEW);\n });\n },\n preview: function preview() {\n var imageData = this.imageData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData;\n var cropBoxWidth = cropBoxData.width,\n cropBoxHeight = cropBoxData.height;\n var width = imageData.width,\n height = imageData.height;\n var left = cropBoxData.left - canvasData.left - imageData.left;\n var top = cropBoxData.top - canvasData.top - imageData.top;\n\n if (!this.cropped || this.disabled) {\n return;\n }\n\n setStyle(this.viewBoxImage, assign({\n width: width,\n height: height\n }, getTransforms(assign({\n translateX: -left,\n translateY: -top\n }, imageData))));\n forEach(this.previews, function (element) {\n var data = getData(element, DATA_PREVIEW);\n var originalWidth = data.width;\n var originalHeight = data.height;\n var newWidth = originalWidth;\n var newHeight = originalHeight;\n var ratio = 1;\n\n if (cropBoxWidth) {\n ratio = originalWidth / cropBoxWidth;\n newHeight = cropBoxHeight * ratio;\n }\n\n if (cropBoxHeight && newHeight > originalHeight) {\n ratio = originalHeight / cropBoxHeight;\n newWidth = cropBoxWidth * ratio;\n newHeight = originalHeight;\n }\n\n setStyle(element, {\n width: newWidth,\n height: newHeight\n });\n setStyle(element.getElementsByTagName('img')[0], assign({\n width: width * ratio,\n height: height * ratio\n }, getTransforms(assign({\n translateX: -left * ratio,\n translateY: -top * ratio\n }, imageData))));\n });\n }\n };\n\n var events = {\n bind: function bind() {\n var element = this.element,\n options = this.options,\n cropper = this.cropper;\n\n if (isFunction(options.cropstart)) {\n addListener(element, EVENT_CROP_START, options.cropstart);\n }\n\n if (isFunction(options.cropmove)) {\n addListener(element, EVENT_CROP_MOVE, options.cropmove);\n }\n\n if (isFunction(options.cropend)) {\n addListener(element, EVENT_CROP_END, options.cropend);\n }\n\n if (isFunction(options.crop)) {\n addListener(element, EVENT_CROP, options.crop);\n }\n\n if (isFunction(options.zoom)) {\n addListener(element, EVENT_ZOOM, options.zoom);\n }\n\n addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = this.cropStart.bind(this));\n\n if (options.zoomable && options.zoomOnWheel) {\n addListener(cropper, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), {\n passive: false,\n capture: true\n });\n }\n\n if (options.toggleDragModeOnDblclick) {\n addListener(cropper, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this));\n }\n\n addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = this.cropMove.bind(this));\n addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = this.cropEnd.bind(this));\n\n if (options.responsive) {\n addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this));\n }\n },\n unbind: function unbind() {\n var element = this.element,\n options = this.options,\n cropper = this.cropper;\n\n if (isFunction(options.cropstart)) {\n removeListener(element, EVENT_CROP_START, options.cropstart);\n }\n\n if (isFunction(options.cropmove)) {\n removeListener(element, EVENT_CROP_MOVE, options.cropmove);\n }\n\n if (isFunction(options.cropend)) {\n removeListener(element, EVENT_CROP_END, options.cropend);\n }\n\n if (isFunction(options.crop)) {\n removeListener(element, EVENT_CROP, options.crop);\n }\n\n if (isFunction(options.zoom)) {\n removeListener(element, EVENT_ZOOM, options.zoom);\n }\n\n removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart);\n\n if (options.zoomable && options.zoomOnWheel) {\n removeListener(cropper, EVENT_WHEEL, this.onWheel, {\n passive: false,\n capture: true\n });\n }\n\n if (options.toggleDragModeOnDblclick) {\n removeListener(cropper, EVENT_DBLCLICK, this.onDblclick);\n }\n\n removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove);\n removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd);\n\n if (options.responsive) {\n removeListener(window, EVENT_RESIZE, this.onResize);\n }\n }\n };\n\n var handlers = {\n resize: function resize() {\n if (this.disabled) {\n return;\n }\n\n var options = this.options,\n container = this.container,\n containerData = this.containerData;\n var ratio = container.offsetWidth / containerData.width; // Resize when width changed or height changed\n\n if (ratio !== 1 || container.offsetHeight !== containerData.height) {\n var canvasData;\n var cropBoxData;\n\n if (options.restore) {\n canvasData = this.getCanvasData();\n cropBoxData = this.getCropBoxData();\n }\n\n this.render();\n\n if (options.restore) {\n this.setCanvasData(forEach(canvasData, function (n, i) {\n canvasData[i] = n * ratio;\n }));\n this.setCropBoxData(forEach(cropBoxData, function (n, i) {\n cropBoxData[i] = n * ratio;\n }));\n }\n }\n },\n dblclick: function dblclick() {\n if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) {\n return;\n }\n\n this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP);\n },\n wheel: function wheel(event) {\n var _this = this;\n\n var ratio = Number(this.options.wheelZoomRatio) || 0.1;\n var delta = 1;\n\n if (this.disabled) {\n return;\n }\n\n event.preventDefault(); // Limit wheel speed to prevent zoom too fast (#21)\n\n if (this.wheeling) {\n return;\n }\n\n this.wheeling = true;\n setTimeout(function () {\n _this.wheeling = false;\n }, 50);\n\n if (event.deltaY) {\n delta = event.deltaY > 0 ? 1 : -1;\n } else if (event.wheelDelta) {\n delta = -event.wheelDelta / 120;\n } else if (event.detail) {\n delta = event.detail > 0 ? 1 : -1;\n }\n\n this.zoom(-delta * ratio, event);\n },\n cropStart: function cropStart(event) {\n var buttons = event.buttons,\n button = event.button;\n\n if (this.disabled // Handle mouse event and pointer event and ignore touch event\n || (event.type === 'mousedown' || event.type === 'pointerdown' && event.pointerType === 'mouse') && ( // No primary button (Usually the left button)\n isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0 // Open context menu\n || event.ctrlKey)) {\n return;\n }\n\n var options = this.options,\n pointers = this.pointers;\n var action;\n\n if (event.changedTouches) {\n // Handle touch event\n forEach(event.changedTouches, function (touch) {\n pointers[touch.identifier] = getPointer(touch);\n });\n } else {\n // Handle mouse event and pointer event\n pointers[event.pointerId || 0] = getPointer(event);\n }\n\n if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {\n action = ACTION_ZOOM;\n } else {\n action = getData(event.target, DATA_ACTION);\n }\n\n if (!REGEXP_ACTIONS.test(action)) {\n return;\n }\n\n if (dispatchEvent(this.element, EVENT_CROP_START, {\n originalEvent: event,\n action: action\n }) === false) {\n return;\n } // This line is required for preventing page zooming in iOS browsers\n\n\n event.preventDefault();\n this.action = action;\n this.cropping = false;\n\n if (action === ACTION_CROP) {\n this.cropping = true;\n addClass(this.dragBox, CLASS_MODAL);\n }\n },\n cropMove: function cropMove(event) {\n var action = this.action;\n\n if (this.disabled || !action) {\n return;\n }\n\n var pointers = this.pointers;\n event.preventDefault();\n\n if (dispatchEvent(this.element, EVENT_CROP_MOVE, {\n originalEvent: event,\n action: action\n }) === false) {\n return;\n }\n\n if (event.changedTouches) {\n forEach(event.changedTouches, function (touch) {\n // The first parameter should not be undefined (#432)\n assign(pointers[touch.identifier] || {}, getPointer(touch, true));\n });\n } else {\n assign(pointers[event.pointerId || 0] || {}, getPointer(event, true));\n }\n\n this.change(event);\n },\n cropEnd: function cropEnd(event) {\n if (this.disabled) {\n return;\n }\n\n var action = this.action,\n pointers = this.pointers;\n\n if (event.changedTouches) {\n forEach(event.changedTouches, function (touch) {\n delete pointers[touch.identifier];\n });\n } else {\n delete pointers[event.pointerId || 0];\n }\n\n if (!action) {\n return;\n }\n\n event.preventDefault();\n\n if (!Object.keys(pointers).length) {\n this.action = '';\n }\n\n if (this.cropping) {\n this.cropping = false;\n toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal);\n }\n\n dispatchEvent(this.element, EVENT_CROP_END, {\n originalEvent: event,\n action: action\n });\n }\n };\n\n var change = {\n change: function change(event) {\n var options = this.options,\n canvasData = this.canvasData,\n containerData = this.containerData,\n cropBoxData = this.cropBoxData,\n pointers = this.pointers;\n var action = this.action;\n var aspectRatio = options.aspectRatio;\n var left = cropBoxData.left,\n top = cropBoxData.top,\n width = cropBoxData.width,\n height = cropBoxData.height;\n var right = left + width;\n var bottom = top + height;\n var minLeft = 0;\n var minTop = 0;\n var maxWidth = containerData.width;\n var maxHeight = containerData.height;\n var renderable = true;\n var offset; // Locking aspect ratio in \"free mode\" by holding shift key\n\n if (!aspectRatio && event.shiftKey) {\n aspectRatio = width && height ? width / height : 1;\n }\n\n if (this.limited) {\n minLeft = cropBoxData.minLeft;\n minTop = cropBoxData.minTop;\n maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width);\n maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height);\n }\n\n var pointer = pointers[Object.keys(pointers)[0]];\n var range = {\n x: pointer.endX - pointer.startX,\n y: pointer.endY - pointer.startY\n };\n\n var check = function check(side) {\n switch (side) {\n case ACTION_EAST:\n if (right + range.x > maxWidth) {\n range.x = maxWidth - right;\n }\n\n break;\n\n case ACTION_WEST:\n if (left + range.x < minLeft) {\n range.x = minLeft - left;\n }\n\n break;\n\n case ACTION_NORTH:\n if (top + range.y < minTop) {\n range.y = minTop - top;\n }\n\n break;\n\n case ACTION_SOUTH:\n if (bottom + range.y > maxHeight) {\n range.y = maxHeight - bottom;\n }\n\n break;\n }\n };\n\n switch (action) {\n // Move crop box\n case ACTION_ALL:\n left += range.x;\n top += range.y;\n break;\n // Resize crop box\n\n case ACTION_EAST:\n if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n renderable = false;\n break;\n }\n\n check(ACTION_EAST);\n width += range.x;\n\n if (width < 0) {\n action = ACTION_WEST;\n width = -width;\n left -= width;\n }\n\n if (aspectRatio) {\n height = width / aspectRatio;\n top += (cropBoxData.height - height) / 2;\n }\n\n break;\n\n case ACTION_NORTH:\n if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n renderable = false;\n break;\n }\n\n check(ACTION_NORTH);\n height -= range.y;\n top += range.y;\n\n if (height < 0) {\n action = ACTION_SOUTH;\n height = -height;\n top -= height;\n }\n\n if (aspectRatio) {\n width = height * aspectRatio;\n left += (cropBoxData.width - width) / 2;\n }\n\n break;\n\n case ACTION_WEST:\n if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n renderable = false;\n break;\n }\n\n check(ACTION_WEST);\n width -= range.x;\n left += range.x;\n\n if (width < 0) {\n action = ACTION_EAST;\n width = -width;\n left -= width;\n }\n\n if (aspectRatio) {\n height = width / aspectRatio;\n top += (cropBoxData.height - height) / 2;\n }\n\n break;\n\n case ACTION_SOUTH:\n if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n renderable = false;\n break;\n }\n\n check(ACTION_SOUTH);\n height += range.y;\n\n if (height < 0) {\n action = ACTION_NORTH;\n height = -height;\n top -= height;\n }\n\n if (aspectRatio) {\n width = height * aspectRatio;\n left += (cropBoxData.width - width) / 2;\n }\n\n break;\n\n case ACTION_NORTH_EAST:\n if (aspectRatio) {\n if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {\n renderable = false;\n break;\n }\n\n check(ACTION_NORTH);\n height -= range.y;\n top += range.y;\n width = height * aspectRatio;\n } else {\n check(ACTION_NORTH);\n check(ACTION_EAST);\n\n if (range.x >= 0) {\n if (right < maxWidth) {\n width += range.x;\n } else if (range.y <= 0 && top <= minTop) {\n renderable = false;\n }\n } else {\n width += range.x;\n }\n\n if (range.y <= 0) {\n if (top > minTop) {\n height -= range.y;\n top += range.y;\n }\n } else {\n height -= range.y;\n top += range.y;\n }\n }\n\n if (width < 0 && height < 0) {\n action = ACTION_SOUTH_WEST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_NORTH_WEST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_SOUTH_EAST;\n height = -height;\n top -= height;\n }\n\n break;\n\n case ACTION_NORTH_WEST:\n if (aspectRatio) {\n if (range.y <= 0 && (top <= minTop || left <= minLeft)) {\n renderable = false;\n break;\n }\n\n check(ACTION_NORTH);\n height -= range.y;\n top += range.y;\n width = height * aspectRatio;\n left += cropBoxData.width - width;\n } else {\n check(ACTION_NORTH);\n check(ACTION_WEST);\n\n if (range.x <= 0) {\n if (left > minLeft) {\n width -= range.x;\n left += range.x;\n } else if (range.y <= 0 && top <= minTop) {\n renderable = false;\n }\n } else {\n width -= range.x;\n left += range.x;\n }\n\n if (range.y <= 0) {\n if (top > minTop) {\n height -= range.y;\n top += range.y;\n }\n } else {\n height -= range.y;\n top += range.y;\n }\n }\n\n if (width < 0 && height < 0) {\n action = ACTION_SOUTH_EAST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_NORTH_EAST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_SOUTH_WEST;\n height = -height;\n top -= height;\n }\n\n break;\n\n case ACTION_SOUTH_WEST:\n if (aspectRatio) {\n if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {\n renderable = false;\n break;\n }\n\n check(ACTION_WEST);\n width -= range.x;\n left += range.x;\n height = width / aspectRatio;\n } else {\n check(ACTION_SOUTH);\n check(ACTION_WEST);\n\n if (range.x <= 0) {\n if (left > minLeft) {\n width -= range.x;\n left += range.x;\n } else if (range.y >= 0 && bottom >= maxHeight) {\n renderable = false;\n }\n } else {\n width -= range.x;\n left += range.x;\n }\n\n if (range.y >= 0) {\n if (bottom < maxHeight) {\n height += range.y;\n }\n } else {\n height += range.y;\n }\n }\n\n if (width < 0 && height < 0) {\n action = ACTION_NORTH_EAST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_SOUTH_EAST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_NORTH_WEST;\n height = -height;\n top -= height;\n }\n\n break;\n\n case ACTION_SOUTH_EAST:\n if (aspectRatio) {\n if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {\n renderable = false;\n break;\n }\n\n check(ACTION_EAST);\n width += range.x;\n height = width / aspectRatio;\n } else {\n check(ACTION_SOUTH);\n check(ACTION_EAST);\n\n if (range.x >= 0) {\n if (right < maxWidth) {\n width += range.x;\n } else if (range.y >= 0 && bottom >= maxHeight) {\n renderable = false;\n }\n } else {\n width += range.x;\n }\n\n if (range.y >= 0) {\n if (bottom < maxHeight) {\n height += range.y;\n }\n } else {\n height += range.y;\n }\n }\n\n if (width < 0 && height < 0) {\n action = ACTION_NORTH_WEST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_SOUTH_WEST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_NORTH_EAST;\n height = -height;\n top -= height;\n }\n\n break;\n // Move canvas\n\n case ACTION_MOVE:\n this.move(range.x, range.y);\n renderable = false;\n break;\n // Zoom canvas\n\n case ACTION_ZOOM:\n this.zoom(getMaxZoomRatio(pointers), event);\n renderable = false;\n break;\n // Create crop box\n\n case ACTION_CROP:\n if (!range.x || !range.y) {\n renderable = false;\n break;\n }\n\n offset = getOffset(this.cropper);\n left = pointer.startX - offset.left;\n top = pointer.startY - offset.top;\n width = cropBoxData.minWidth;\n height = cropBoxData.minHeight;\n\n if (range.x > 0) {\n action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;\n } else if (range.x < 0) {\n left -= width;\n action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;\n }\n\n if (range.y < 0) {\n top -= height;\n } // Show the crop box if is hidden\n\n\n if (!this.cropped) {\n removeClass(this.cropBox, CLASS_HIDDEN);\n this.cropped = true;\n\n if (this.limited) {\n this.limitCropBox(true, true);\n }\n }\n\n break;\n }\n\n if (renderable) {\n cropBoxData.width = width;\n cropBoxData.height = height;\n cropBoxData.left = left;\n cropBoxData.top = top;\n this.action = action;\n this.renderCropBox();\n } // Override\n\n\n forEach(pointers, function (p) {\n p.startX = p.endX;\n p.startY = p.endY;\n });\n }\n };\n\n var methods = {\n // Show the crop box manually\n crop: function crop() {\n if (this.ready && !this.cropped && !this.disabled) {\n this.cropped = true;\n this.limitCropBox(true, true);\n\n if (this.options.modal) {\n addClass(this.dragBox, CLASS_MODAL);\n }\n\n removeClass(this.cropBox, CLASS_HIDDEN);\n this.setCropBoxData(this.initialCropBoxData);\n }\n\n return this;\n },\n // Reset the image and crop box to their initial states\n reset: function reset() {\n if (this.ready && !this.disabled) {\n this.imageData = assign({}, this.initialImageData);\n this.canvasData = assign({}, this.initialCanvasData);\n this.cropBoxData = assign({}, this.initialCropBoxData);\n this.renderCanvas();\n\n if (this.cropped) {\n this.renderCropBox();\n }\n }\n\n return this;\n },\n // Clear the crop box\n clear: function clear() {\n if (this.cropped && !this.disabled) {\n assign(this.cropBoxData, {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n });\n this.cropped = false;\n this.renderCropBox();\n this.limitCanvas(true, true); // Render canvas after crop box rendered\n\n this.renderCanvas();\n removeClass(this.dragBox, CLASS_MODAL);\n addClass(this.cropBox, CLASS_HIDDEN);\n }\n\n return this;\n },\n\n /**\n * Replace the image's src and rebuild the cropper\n * @param {string} url - The new URL.\n * @param {boolean} [hasSameSize] - Indicate if the new image has the same size as the old one.\n * @returns {Cropper} this\n */\n replace: function replace(url) {\n var hasSameSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!this.disabled && url) {\n if (this.isImg) {\n this.element.src = url;\n }\n\n if (hasSameSize) {\n this.url = url;\n this.image.src = url;\n\n if (this.ready) {\n this.viewBoxImage.src = url;\n forEach(this.previews, function (element) {\n element.getElementsByTagName('img')[0].src = url;\n });\n }\n } else {\n if (this.isImg) {\n this.replaced = true;\n }\n\n this.options.data = null;\n this.uncreate();\n this.load(url);\n }\n }\n\n return this;\n },\n // Enable (unfreeze) the cropper\n enable: function enable() {\n if (this.ready && this.disabled) {\n this.disabled = false;\n removeClass(this.cropper, CLASS_DISABLED);\n }\n\n return this;\n },\n // Disable (freeze) the cropper\n disable: function disable() {\n if (this.ready && !this.disabled) {\n this.disabled = true;\n addClass(this.cropper, CLASS_DISABLED);\n }\n\n return this;\n },\n\n /**\n * Destroy the cropper and remove the instance from the image\n * @returns {Cropper} this\n */\n destroy: function destroy() {\n var element = this.element;\n\n if (!element[NAMESPACE]) {\n return this;\n }\n\n element[NAMESPACE] = undefined;\n\n if (this.isImg && this.replaced) {\n element.src = this.originalUrl;\n }\n\n this.uncreate();\n return this;\n },\n\n /**\n * Move the canvas with relative offsets\n * @param {number} offsetX - The relative offset distance on the x-axis.\n * @param {number} [offsetY=offsetX] - The relative offset distance on the y-axis.\n * @returns {Cropper} this\n */\n move: function move(offsetX) {\n var offsetY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : offsetX;\n var _this$canvasData = this.canvasData,\n left = _this$canvasData.left,\n top = _this$canvasData.top;\n return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY));\n },\n\n /**\n * Move the canvas to an absolute point\n * @param {number} x - The x-axis coordinate.\n * @param {number} [y=x] - The y-axis coordinate.\n * @returns {Cropper} this\n */\n moveTo: function moveTo(x) {\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n var canvasData = this.canvasData;\n var changed = false;\n x = Number(x);\n y = Number(y);\n\n if (this.ready && !this.disabled && this.options.movable) {\n if (isNumber(x)) {\n canvasData.left = x;\n changed = true;\n }\n\n if (isNumber(y)) {\n canvasData.top = y;\n changed = true;\n }\n\n if (changed) {\n this.renderCanvas(true);\n }\n }\n\n return this;\n },\n\n /**\n * Zoom the canvas with a relative ratio\n * @param {number} ratio - The target ratio.\n * @param {Event} _originalEvent - The original event if any.\n * @returns {Cropper} this\n */\n zoom: function zoom(ratio, _originalEvent) {\n var canvasData = this.canvasData;\n ratio = Number(ratio);\n\n if (ratio < 0) {\n ratio = 1 / (1 - ratio);\n } else {\n ratio = 1 + ratio;\n }\n\n return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent);\n },\n\n /**\n * Zoom the canvas to an absolute ratio\n * @param {number} ratio - The target ratio.\n * @param {Object} pivot - The zoom pivot point coordinate.\n * @param {Event} _originalEvent - The original event if any.\n * @returns {Cropper} this\n */\n zoomTo: function zoomTo(ratio, pivot, _originalEvent) {\n var options = this.options,\n canvasData = this.canvasData;\n var width = canvasData.width,\n height = canvasData.height,\n naturalWidth = canvasData.naturalWidth,\n naturalHeight = canvasData.naturalHeight;\n ratio = Number(ratio);\n\n if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) {\n var newWidth = naturalWidth * ratio;\n var newHeight = naturalHeight * ratio;\n\n if (dispatchEvent(this.element, EVENT_ZOOM, {\n ratio: ratio,\n oldRatio: width / naturalWidth,\n originalEvent: _originalEvent\n }) === false) {\n return this;\n }\n\n if (_originalEvent) {\n var pointers = this.pointers;\n var offset = getOffset(this.cropper);\n var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {\n pageX: _originalEvent.pageX,\n pageY: _originalEvent.pageY\n }; // Zoom from the triggering point of the event\n\n canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width);\n canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height);\n } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) {\n canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width);\n canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height);\n } else {\n // Zoom from the center of the canvas\n canvasData.left -= (newWidth - width) / 2;\n canvasData.top -= (newHeight - height) / 2;\n }\n\n canvasData.width = newWidth;\n canvasData.height = newHeight;\n this.renderCanvas(true);\n }\n\n return this;\n },\n\n /**\n * Rotate the canvas with a relative degree\n * @param {number} degree - The rotate degree.\n * @returns {Cropper} this\n */\n rotate: function rotate(degree) {\n return this.rotateTo((this.imageData.rotate || 0) + Number(degree));\n },\n\n /**\n * Rotate the canvas to an absolute degree\n * @param {number} degree - The rotate degree.\n * @returns {Cropper} this\n */\n rotateTo: function rotateTo(degree) {\n degree = Number(degree);\n\n if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) {\n this.imageData.rotate = degree % 360;\n this.renderCanvas(true, true);\n }\n\n return this;\n },\n\n /**\n * Scale the image on the x-axis.\n * @param {number} scaleX - The scale ratio on the x-axis.\n * @returns {Cropper} this\n */\n scaleX: function scaleX(_scaleX) {\n var scaleY = this.imageData.scaleY;\n return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1);\n },\n\n /**\n * Scale the image on the y-axis.\n * @param {number} scaleY - The scale ratio on the y-axis.\n * @returns {Cropper} this\n */\n scaleY: function scaleY(_scaleY) {\n var scaleX = this.imageData.scaleX;\n return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY);\n },\n\n /**\n * Scale the image\n * @param {number} scaleX - The scale ratio on the x-axis.\n * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.\n * @returns {Cropper} this\n */\n scale: function scale(scaleX) {\n var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;\n var imageData = this.imageData;\n var transformed = false;\n scaleX = Number(scaleX);\n scaleY = Number(scaleY);\n\n if (this.ready && !this.disabled && this.options.scalable) {\n if (isNumber(scaleX)) {\n imageData.scaleX = scaleX;\n transformed = true;\n }\n\n if (isNumber(scaleY)) {\n imageData.scaleY = scaleY;\n transformed = true;\n }\n\n if (transformed) {\n this.renderCanvas(true, true);\n }\n }\n\n return this;\n },\n\n /**\n * Get the cropped area position and size data (base on the original image)\n * @param {boolean} [rounded=false] - Indicate if round the data values or not.\n * @returns {Object} The result cropped data.\n */\n getData: function getData() {\n var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var options = this.options,\n imageData = this.imageData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData;\n var data;\n\n if (this.ready && this.cropped) {\n data = {\n x: cropBoxData.left - canvasData.left,\n y: cropBoxData.top - canvasData.top,\n width: cropBoxData.width,\n height: cropBoxData.height\n };\n var ratio = imageData.width / imageData.naturalWidth;\n forEach(data, function (n, i) {\n data[i] = n / ratio;\n });\n\n if (rounded) {\n // In case rounding off leads to extra 1px in right or bottom border\n // we should round the top-left corner and the dimension (#343).\n var bottom = Math.round(data.y + data.height);\n var right = Math.round(data.x + data.width);\n data.x = Math.round(data.x);\n data.y = Math.round(data.y);\n data.width = right - data.x;\n data.height = bottom - data.y;\n }\n } else {\n data = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n\n if (options.rotatable) {\n data.rotate = imageData.rotate || 0;\n }\n\n if (options.scalable) {\n data.scaleX = imageData.scaleX || 1;\n data.scaleY = imageData.scaleY || 1;\n }\n\n return data;\n },\n\n /**\n * Set the cropped area position and size with new data\n * @param {Object} data - The new data.\n * @returns {Cropper} this\n */\n setData: function setData(data) {\n var options = this.options,\n imageData = this.imageData,\n canvasData = this.canvasData;\n var cropBoxData = {};\n\n if (this.ready && !this.disabled && isPlainObject(data)) {\n var transformed = false;\n\n if (options.rotatable) {\n if (isNumber(data.rotate) && data.rotate !== imageData.rotate) {\n imageData.rotate = data.rotate;\n transformed = true;\n }\n }\n\n if (options.scalable) {\n if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) {\n imageData.scaleX = data.scaleX;\n transformed = true;\n }\n\n if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) {\n imageData.scaleY = data.scaleY;\n transformed = true;\n }\n }\n\n if (transformed) {\n this.renderCanvas(true, true);\n }\n\n var ratio = imageData.width / imageData.naturalWidth;\n\n if (isNumber(data.x)) {\n cropBoxData.left = data.x * ratio + canvasData.left;\n }\n\n if (isNumber(data.y)) {\n cropBoxData.top = data.y * ratio + canvasData.top;\n }\n\n if (isNumber(data.width)) {\n cropBoxData.width = data.width * ratio;\n }\n\n if (isNumber(data.height)) {\n cropBoxData.height = data.height * ratio;\n }\n\n this.setCropBoxData(cropBoxData);\n }\n\n return this;\n },\n\n /**\n * Get the container size data.\n * @returns {Object} The result container data.\n */\n getContainerData: function getContainerData() {\n return this.ready ? assign({}, this.containerData) : {};\n },\n\n /**\n * Get the image position and size data.\n * @returns {Object} The result image data.\n */\n getImageData: function getImageData() {\n return this.sized ? assign({}, this.imageData) : {};\n },\n\n /**\n * Get the canvas position and size data.\n * @returns {Object} The result canvas data.\n */\n getCanvasData: function getCanvasData() {\n var canvasData = this.canvasData;\n var data = {};\n\n if (this.ready) {\n forEach(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) {\n data[n] = canvasData[n];\n });\n }\n\n return data;\n },\n\n /**\n * Set the canvas position and size with new data.\n * @param {Object} data - The new canvas data.\n * @returns {Cropper} this\n */\n setCanvasData: function setCanvasData(data) {\n var canvasData = this.canvasData;\n var aspectRatio = canvasData.aspectRatio;\n\n if (this.ready && !this.disabled && isPlainObject(data)) {\n if (isNumber(data.left)) {\n canvasData.left = data.left;\n }\n\n if (isNumber(data.top)) {\n canvasData.top = data.top;\n }\n\n if (isNumber(data.width)) {\n canvasData.width = data.width;\n canvasData.height = data.width / aspectRatio;\n } else if (isNumber(data.height)) {\n canvasData.height = data.height;\n canvasData.width = data.height * aspectRatio;\n }\n\n this.renderCanvas(true);\n }\n\n return this;\n },\n\n /**\n * Get the crop box position and size data.\n * @returns {Object} The result crop box data.\n */\n getCropBoxData: function getCropBoxData() {\n var cropBoxData = this.cropBoxData;\n var data;\n\n if (this.ready && this.cropped) {\n data = {\n left: cropBoxData.left,\n top: cropBoxData.top,\n width: cropBoxData.width,\n height: cropBoxData.height\n };\n }\n\n return data || {};\n },\n\n /**\n * Set the crop box position and size with new data.\n * @param {Object} data - The new crop box data.\n * @returns {Cropper} this\n */\n setCropBoxData: function setCropBoxData(data) {\n var cropBoxData = this.cropBoxData;\n var aspectRatio = this.options.aspectRatio;\n var widthChanged;\n var heightChanged;\n\n if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) {\n if (isNumber(data.left)) {\n cropBoxData.left = data.left;\n }\n\n if (isNumber(data.top)) {\n cropBoxData.top = data.top;\n }\n\n if (isNumber(data.width) && data.width !== cropBoxData.width) {\n widthChanged = true;\n cropBoxData.width = data.width;\n }\n\n if (isNumber(data.height) && data.height !== cropBoxData.height) {\n heightChanged = true;\n cropBoxData.height = data.height;\n }\n\n if (aspectRatio) {\n if (widthChanged) {\n cropBoxData.height = cropBoxData.width / aspectRatio;\n } else if (heightChanged) {\n cropBoxData.width = cropBoxData.height * aspectRatio;\n }\n }\n\n this.renderCropBox();\n }\n\n return this;\n },\n\n /**\n * Get a canvas drawn the cropped image.\n * @param {Object} [options={}] - The config options.\n * @returns {HTMLCanvasElement} - The result canvas.\n */\n getCroppedCanvas: function getCroppedCanvas() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (!this.ready || !window.HTMLCanvasElement) {\n return null;\n }\n\n var canvasData = this.canvasData;\n var source = getSourceCanvas(this.image, this.imageData, canvasData, options); // Returns the source canvas if it is not cropped.\n\n if (!this.cropped) {\n return source;\n }\n\n var _this$getData = this.getData(),\n initialX = _this$getData.x,\n initialY = _this$getData.y,\n initialWidth = _this$getData.width,\n initialHeight = _this$getData.height;\n\n var ratio = source.width / Math.floor(canvasData.naturalWidth);\n\n if (ratio !== 1) {\n initialX *= ratio;\n initialY *= ratio;\n initialWidth *= ratio;\n initialHeight *= ratio;\n }\n\n var aspectRatio = initialWidth / initialHeight;\n var maxSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: options.maxWidth || Infinity,\n height: options.maxHeight || Infinity\n });\n var minSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: options.minWidth || 0,\n height: options.minHeight || 0\n }, 'cover');\n\n var _getAdjustedSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: options.width || (ratio !== 1 ? source.width : initialWidth),\n height: options.height || (ratio !== 1 ? source.height : initialHeight)\n }),\n width = _getAdjustedSizes.width,\n height = _getAdjustedSizes.height;\n\n width = Math.min(maxSizes.width, Math.max(minSizes.width, width));\n height = Math.min(maxSizes.height, Math.max(minSizes.height, height));\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n canvas.width = normalizeDecimalNumber(width);\n canvas.height = normalizeDecimalNumber(height);\n context.fillStyle = options.fillColor || 'transparent';\n context.fillRect(0, 0, width, height);\n var _options$imageSmoothi = options.imageSmoothingEnabled,\n imageSmoothingEnabled = _options$imageSmoothi === void 0 ? true : _options$imageSmoothi,\n imageSmoothingQuality = options.imageSmoothingQuality;\n context.imageSmoothingEnabled = imageSmoothingEnabled;\n\n if (imageSmoothingQuality) {\n context.imageSmoothingQuality = imageSmoothingQuality;\n } // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage\n\n\n var sourceWidth = source.width;\n var sourceHeight = source.height; // Source canvas parameters\n\n var srcX = initialX;\n var srcY = initialY;\n var srcWidth;\n var srcHeight; // Destination canvas parameters\n\n var dstX;\n var dstY;\n var dstWidth;\n var dstHeight;\n\n if (srcX <= -initialWidth || srcX > sourceWidth) {\n srcX = 0;\n srcWidth = 0;\n dstX = 0;\n dstWidth = 0;\n } else if (srcX <= 0) {\n dstX = -srcX;\n srcX = 0;\n srcWidth = Math.min(sourceWidth, initialWidth + srcX);\n dstWidth = srcWidth;\n } else if (srcX <= sourceWidth) {\n dstX = 0;\n srcWidth = Math.min(initialWidth, sourceWidth - srcX);\n dstWidth = srcWidth;\n }\n\n if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) {\n srcY = 0;\n srcHeight = 0;\n dstY = 0;\n dstHeight = 0;\n } else if (srcY <= 0) {\n dstY = -srcY;\n srcY = 0;\n srcHeight = Math.min(sourceHeight, initialHeight + srcY);\n dstHeight = srcHeight;\n } else if (srcY <= sourceHeight) {\n dstY = 0;\n srcHeight = Math.min(initialHeight, sourceHeight - srcY);\n dstHeight = srcHeight;\n }\n\n var params = [srcX, srcY, srcWidth, srcHeight]; // Avoid \"IndexSizeError\"\n\n if (dstWidth > 0 && dstHeight > 0) {\n var scale = width / initialWidth;\n params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale);\n } // All the numerical parameters should be integer for `drawImage`\n // https://github.com/fengyuanchen/cropper/issues/476\n\n\n context.drawImage.apply(context, [source].concat(_toConsumableArray(params.map(function (param) {\n return Math.floor(normalizeDecimalNumber(param));\n }))));\n return canvas;\n },\n\n /**\n * Change the aspect ratio of the crop box.\n * @param {number} aspectRatio - The new aspect ratio.\n * @returns {Cropper} this\n */\n setAspectRatio: function setAspectRatio(aspectRatio) {\n var options = this.options;\n\n if (!this.disabled && !isUndefined(aspectRatio)) {\n // 0 -> NaN\n options.aspectRatio = Math.max(0, aspectRatio) || NaN;\n\n if (this.ready) {\n this.initCropBox();\n\n if (this.cropped) {\n this.renderCropBox();\n }\n }\n }\n\n return this;\n },\n\n /**\n * Change the drag mode.\n * @param {string} mode - The new drag mode.\n * @returns {Cropper} this\n */\n setDragMode: function setDragMode(mode) {\n var options = this.options,\n dragBox = this.dragBox,\n face = this.face;\n\n if (this.ready && !this.disabled) {\n var croppable = mode === DRAG_MODE_CROP;\n var movable = options.movable && mode === DRAG_MODE_MOVE;\n mode = croppable || movable ? mode : DRAG_MODE_NONE;\n options.dragMode = mode;\n setData(dragBox, DATA_ACTION, mode);\n toggleClass(dragBox, CLASS_CROP, croppable);\n toggleClass(dragBox, CLASS_MOVE, movable);\n\n if (!options.cropBoxMovable) {\n // Sync drag mode to crop box when it is not movable\n setData(face, DATA_ACTION, mode);\n toggleClass(face, CLASS_CROP, croppable);\n toggleClass(face, CLASS_MOVE, movable);\n }\n }\n\n return this;\n }\n };\n\n var AnotherCropper = WINDOW.Cropper;\n\n var Cropper = /*#__PURE__*/function () {\n /**\n * Create a new Cropper.\n * @param {Element} element - The target element for cropping.\n * @param {Object} [options={}] - The configuration options.\n */\n function Cropper(element) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Cropper);\n\n if (!element || !REGEXP_TAG_NAME.test(element.tagName)) {\n throw new Error('The first argument is required and must be an or element.');\n }\n\n this.element = element;\n this.options = assign({}, DEFAULTS, isPlainObject(options) && options);\n this.cropped = false;\n this.disabled = false;\n this.pointers = {};\n this.ready = false;\n this.reloading = false;\n this.replaced = false;\n this.sized = false;\n this.sizing = false;\n this.init();\n }\n\n _createClass(Cropper, [{\n key: \"init\",\n value: function init() {\n var element = this.element;\n var tagName = element.tagName.toLowerCase();\n var url;\n\n if (element[NAMESPACE]) {\n return;\n }\n\n element[NAMESPACE] = this;\n\n if (tagName === 'img') {\n this.isImg = true; // e.g.: \"img/picture.jpg\"\n\n url = element.getAttribute('src') || '';\n this.originalUrl = url; // Stop when it's a blank image\n\n if (!url) {\n return;\n } // e.g.: \"https://example.com/img/picture.jpg\"\n\n\n url = element.src;\n } else if (tagName === 'canvas' && window.HTMLCanvasElement) {\n url = element.toDataURL();\n }\n\n this.load(url);\n }\n }, {\n key: \"load\",\n value: function load(url) {\n var _this = this;\n\n if (!url) {\n return;\n }\n\n this.url = url;\n this.imageData = {};\n var element = this.element,\n options = this.options;\n\n if (!options.rotatable && !options.scalable) {\n options.checkOrientation = false;\n } // Only IE10+ supports Typed Arrays\n\n\n if (!options.checkOrientation || !window.ArrayBuffer) {\n this.clone();\n return;\n } // Detect the mime type of the image directly if it is a Data URL\n\n\n if (REGEXP_DATA_URL.test(url)) {\n // Read ArrayBuffer from Data URL of JPEG images directly for better performance\n if (REGEXP_DATA_URL_JPEG.test(url)) {\n this.read(dataURLToArrayBuffer(url));\n } else {\n // Only a JPEG image may contains Exif Orientation information,\n // the rest types of Data URLs are not necessary to check orientation at all.\n this.clone();\n }\n\n return;\n } // 1. Detect the mime type of the image by a XMLHttpRequest.\n // 2. Load the image as ArrayBuffer for reading orientation if its a JPEG image.\n\n\n var xhr = new XMLHttpRequest();\n var clone = this.clone.bind(this);\n this.reloading = true;\n this.xhr = xhr; // 1. Cross origin requests are only supported for protocol schemes:\n // http, https, data, chrome, chrome-extension.\n // 2. Access to XMLHttpRequest from a Data URL will be blocked by CORS policy\n // in some browsers as IE11 and Safari.\n\n xhr.onabort = clone;\n xhr.onerror = clone;\n xhr.ontimeout = clone;\n\n xhr.onprogress = function () {\n // Abort the request directly if it not a JPEG image for better performance\n if (xhr.getResponseHeader('content-type') !== MIME_TYPE_JPEG) {\n xhr.abort();\n }\n };\n\n xhr.onload = function () {\n _this.read(xhr.response);\n };\n\n xhr.onloadend = function () {\n _this.reloading = false;\n _this.xhr = null;\n }; // Bust cache when there is a \"crossOrigin\" property to avoid browser cache error\n\n\n if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) {\n url = addTimestamp(url);\n }\n\n xhr.open('GET', url);\n xhr.responseType = 'arraybuffer';\n xhr.withCredentials = element.crossOrigin === 'use-credentials';\n xhr.send();\n }\n }, {\n key: \"read\",\n value: function read(arrayBuffer) {\n var options = this.options,\n imageData = this.imageData; // Reset the orientation value to its default value 1\n // as some iOS browsers will render image with its orientation\n\n var orientation = resetAndGetOrientation(arrayBuffer);\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n\n if (orientation > 1) {\n // Generate a new URL which has the default orientation value\n this.url = arrayBufferToDataURL(arrayBuffer, MIME_TYPE_JPEG);\n\n var _parseOrientation = parseOrientation(orientation);\n\n rotate = _parseOrientation.rotate;\n scaleX = _parseOrientation.scaleX;\n scaleY = _parseOrientation.scaleY;\n }\n\n if (options.rotatable) {\n imageData.rotate = rotate;\n }\n\n if (options.scalable) {\n imageData.scaleX = scaleX;\n imageData.scaleY = scaleY;\n }\n\n this.clone();\n }\n }, {\n key: \"clone\",\n value: function clone() {\n var element = this.element,\n url = this.url;\n var crossOrigin = element.crossOrigin;\n var crossOriginUrl = url;\n\n if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {\n if (!crossOrigin) {\n crossOrigin = 'anonymous';\n } // Bust cache when there is not a \"crossOrigin\" property (#519)\n\n\n crossOriginUrl = addTimestamp(url);\n }\n\n this.crossOrigin = crossOrigin;\n this.crossOriginUrl = crossOriginUrl;\n var image = document.createElement('img');\n\n if (crossOrigin) {\n image.crossOrigin = crossOrigin;\n }\n\n image.src = crossOriginUrl || url;\n image.alt = element.alt || 'The image to crop';\n this.image = image;\n image.onload = this.start.bind(this);\n image.onerror = this.stop.bind(this);\n addClass(image, CLASS_HIDE);\n element.parentNode.insertBefore(image, element.nextSibling);\n }\n }, {\n key: \"start\",\n value: function start() {\n var _this2 = this;\n\n var image = this.image;\n image.onload = null;\n image.onerror = null;\n this.sizing = true; // Match all browsers that use WebKit as the layout engine in iOS devices,\n // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n\n var isIOSWebKit = WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent);\n\n var done = function done(naturalWidth, naturalHeight) {\n assign(_this2.imageData, {\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n aspectRatio: naturalWidth / naturalHeight\n });\n _this2.initialImageData = assign({}, _this2.imageData);\n _this2.sizing = false;\n _this2.sized = true;\n\n _this2.build();\n }; // Most modern browsers (excepts iOS WebKit)\n\n\n if (image.naturalWidth && !isIOSWebKit) {\n done(image.naturalWidth, image.naturalHeight);\n return;\n }\n\n var sizingImage = document.createElement('img');\n var body = document.body || document.documentElement;\n this.sizingImage = sizingImage;\n\n sizingImage.onload = function () {\n done(sizingImage.width, sizingImage.height);\n\n if (!isIOSWebKit) {\n body.removeChild(sizingImage);\n }\n };\n\n sizingImage.src = image.src; // iOS WebKit will convert the image automatically\n // with its orientation once append it into DOM (#279)\n\n if (!isIOSWebKit) {\n sizingImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';\n body.appendChild(sizingImage);\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n var image = this.image;\n image.onload = null;\n image.onerror = null;\n image.parentNode.removeChild(image);\n this.image = null;\n }\n }, {\n key: \"build\",\n value: function build() {\n if (!this.sized || this.ready) {\n return;\n }\n\n var element = this.element,\n options = this.options,\n image = this.image; // Create cropper elements\n\n var container = element.parentNode;\n var template = document.createElement('div');\n template.innerHTML = TEMPLATE;\n var cropper = template.querySelector(\".\".concat(NAMESPACE, \"-container\"));\n var canvas = cropper.querySelector(\".\".concat(NAMESPACE, \"-canvas\"));\n var dragBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-drag-box\"));\n var cropBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-crop-box\"));\n var face = cropBox.querySelector(\".\".concat(NAMESPACE, \"-face\"));\n this.container = container;\n this.cropper = cropper;\n this.canvas = canvas;\n this.dragBox = dragBox;\n this.cropBox = cropBox;\n this.viewBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-view-box\"));\n this.face = face;\n canvas.appendChild(image); // Hide the original image\n\n addClass(element, CLASS_HIDDEN); // Inserts the cropper after to the current image\n\n container.insertBefore(cropper, element.nextSibling); // Show the image if is hidden\n\n if (!this.isImg) {\n removeClass(image, CLASS_HIDE);\n }\n\n this.initPreview();\n this.bind();\n options.initialAspectRatio = Math.max(0, options.initialAspectRatio) || NaN;\n options.aspectRatio = Math.max(0, options.aspectRatio) || NaN;\n options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0;\n addClass(cropBox, CLASS_HIDDEN);\n\n if (!options.guides) {\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-dashed\")), CLASS_HIDDEN);\n }\n\n if (!options.center) {\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-center\")), CLASS_HIDDEN);\n }\n\n if (options.background) {\n addClass(cropper, \"\".concat(NAMESPACE, \"-bg\"));\n }\n\n if (!options.highlight) {\n addClass(face, CLASS_INVISIBLE);\n }\n\n if (options.cropBoxMovable) {\n addClass(face, CLASS_MOVE);\n setData(face, DATA_ACTION, ACTION_ALL);\n }\n\n if (!options.cropBoxResizable) {\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-line\")), CLASS_HIDDEN);\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-point\")), CLASS_HIDDEN);\n }\n\n this.render();\n this.ready = true;\n this.setDragMode(options.dragMode);\n\n if (options.autoCrop) {\n this.crop();\n }\n\n this.setData(options.data);\n\n if (isFunction(options.ready)) {\n addListener(element, EVENT_READY, options.ready, {\n once: true\n });\n }\n\n dispatchEvent(element, EVENT_READY);\n }\n }, {\n key: \"unbuild\",\n value: function unbuild() {\n if (!this.ready) {\n return;\n }\n\n this.ready = false;\n this.unbind();\n this.resetPreview();\n this.cropper.parentNode.removeChild(this.cropper);\n removeClass(this.element, CLASS_HIDDEN);\n }\n }, {\n key: \"uncreate\",\n value: function uncreate() {\n if (this.ready) {\n this.unbuild();\n this.ready = false;\n this.cropped = false;\n } else if (this.sizing) {\n this.sizingImage.onload = null;\n this.sizing = false;\n this.sized = false;\n } else if (this.reloading) {\n this.xhr.onabort = null;\n this.xhr.abort();\n } else if (this.image) {\n this.stop();\n }\n }\n /**\n * Get the no conflict cropper class.\n * @returns {Cropper} The cropper class.\n */\n\n }], [{\n key: \"noConflict\",\n value: function noConflict() {\n window.Cropper = AnotherCropper;\n return Cropper;\n }\n /**\n * Change the default options.\n * @param {Object} options - The new default options.\n */\n\n }, {\n key: \"setDefaults\",\n value: function setDefaults(options) {\n assign(DEFAULTS, isPlainObject(options) && options);\n }\n }]);\n\n return Cropper;\n }();\n\n assign(Cropper.prototype, render, preview, events, handlers, change, methods);\n\n return Cropper;\n\n})));\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"bg-white\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"py-3\"},[_c('router-link',{staticClass:\"d-flex align-items-center text-decoration-none\",attrs:{\"to\":\"/\"}},[_c('i',{staticClass:\"fas fa-arrow-left text-dark pr-2\"}),_c('span',{staticClass:\"text-dark font-weight-bold\"},[_vm._v(\"Back to Home\")])])],1),(_vm.machine)?_c('div',[_c('div',{staticClass:\"d-flex justify-content-lg-start justify-content-end\"},[_c('h4',[_vm._v(_vm._s(_vm.machine.Title))])]),_c('div',{staticClass:\"d-flex flex-column flex-lg-row justify-content-lg-start justify-content-end pb-3\"},[_c('span',{staticClass:\"text-muted flex-sm-row\"},[_vm._v(\"Stock: \"+_vm._s(_vm.machine.StockNumber))]),_c('span',{staticClass:\"text-muted flex-sm-row pl-lg-3\"},[_vm._v(\" Photos: \"),_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.photoCount)}})]),_c('span',{staticClass:\"text-muted flex-sm-row pl-lg-3\"},[_vm._v(\"Last Updated: \"+_vm._s(_vm.dateModified(_vm.machine.DateModified))+\" \"+_vm._s(_vm.modifiedBy)+\" \")]),(_vm.unsavedPhotoCount)?_c('span',{staticClass:\"flex-sm-row pl-lg-3 font-weight-bold text-danger\"},[_vm._v(_vm._s(_vm.unsavedPhotoCount)+\" unsaved image(s).\")]):_vm._e()])]):_vm._e()])]),_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"d-flex justify-content-around align-items-center mt-3 py-3 box-shadow bg-white\",class:{ 'fixed-bottom mx-3': _vm.isMobile }},[_c('div',{staticClass:\"text-uppercase font-weight-bold\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-link btn-no-hover-effect d-inline-flex align-items-center text-decoration-none text-dark font-weight-bold text-uppercase add-file\",attrs:{\"multiple\":true,\"drop\":true,\"drop-directory\":true},on:{\"input-filter\":_vm.inputFilter},model:{value:(_vm.photos),callback:function ($$v) {_vm.photos=$$v},expression:\"photos\"}},[_c('i',{staticClass:\"fas fa-plus\"}),_vm._v(\"Add \")]),_c('button',{staticClass:\"btn btn-link btn-no-hover-effect d-none d-lg-inline-flex d-md-none text-decoration-none text-dark font-weight-bold text-uppercase\",attrs:{\"type\":\"button\",\"disabled\":_vm.enableBulkSelect()},on:{\"click\":function($event){_vm.bulkSelect = !_vm.bulkSelect}}},[_vm._v(\" Bulk Select \")]),_c('button',{staticClass:\"btn btn-link btn-no-hover-effect d-inline-flex text-decoration-none text-dark font-weight-bold text-uppercase\",attrs:{\"disabled\":!this.selected.length > 0,\"type\":\"button\"},on:{\"click\":function($event){return _vm.deleteMultipleImages()}}},[_vm._v(\" Bulk Delete \")])],1),_c('div',{staticClass:\"text-uppercase font-weight-bold\"},[_c('button',{staticClass:\"btn btn-primary border-0 mb-0 text-decoration-none font-weight-bold text-uppercase titan-red\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.uploadImages}},[_vm._v(\" Save \")])])]),(!_vm.machine)?_c('Search',{staticClass:\"mt-3\",on:{\"updateSelectedMachine\":function($event){return _vm.updateSelectedMachine($event)}}}):_vm._e(),_c('div',{staticClass:\"card-columns\"},[_c('draggable',{attrs:{\"list\":_vm.imagesForCards,\"delay\":100,\"animation\":150,\"move\":_vm.updateSortOrder,\"disabled\":_vm.draggableDisabled || (_vm.photos && _vm.photos.length)}},_vm._l((_vm.imagesForCards),function(file,index){return _c('div',{key:file.id,staticClass:\"machine-card\"},[_c('transition',{attrs:{\"duration\":{ enter: 500, leave: 800 }}},[_c('ImageCard',{attrs:{\"image\":file,\"machine\":_vm.machine,\"loading\":_vm.loading,\"index\":index,\"bulkSelect\":_vm.bulkSelect},on:{\"updateSelectedImage\":function($event){return _vm.addToSelectedImages($event)},\"deleteSelectedImage\":function($event){return _vm.deleteImage($event)},\"disableDraggableCards\":function($event){return _vm.disableDrag($event)}}})],1)],1)}),0)],1),(_vm.archiveActive)?_c('div',[(_vm.archivedImages && _vm.archivedImages.length)?_c('h5',[_c('hr'),_vm._v(\" Archived Images \")]):_vm._e(),_c('div',{staticClass:\"card-columns\"},_vm._l((_vm.archivedImages),function(file,index){return _c('div',{key:file.id,staticClass:\"machine-card\"},[_c('ImageCard',{attrs:{\"image\":file,\"machine\":_vm.machine,\"loading\":_vm.loading,\"index\":index,\"bulkSelect\":_vm.bulkSelect,\"isArchived\":true},on:{\"restoreArchivedImage\":function($event){return _vm.restoreImage($event)}}})],1)}),0),(_vm.displayNoPhotos)?_c('div',[_c('h3',{staticClass:\"text-center my-3\"},[_vm._v(\"No Photos\")])]):_vm._e()]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _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++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _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}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"card d-md-inline-flex flex-lg-row h-100 my-3 p-0 b-0 rounded-0 box-shadow\"},[_c('i',{staticClass:\"d-lg-none fas fa-ellipsis-v position-absolute p-3 text-muted handle p-2\"}),_c('div',{staticClass:\"card-header border-0 p-3 bg-white\"},[_c('div',{staticClass:\"text-center\"},[_c('div',[_c('img',{staticClass:\"card-image\",attrs:{\"src\":_vm.getImageSource(_vm.image)}}),(!_vm.isArchived)?_c('p',{staticClass:\"d-flex align-items-center justify-content-center bg-dark card-text text-white bg-dark p-1\"},[_vm._v(\" \"+_vm._s(_vm.fakeIndex)+\" \")]):_vm._e()])]),_c('div',{staticClass:\"d-sm-flex d-lg-none justify-content-center align-items-center text-center mt-3\"},[(_vm.isArchived)?_c('button',{staticClass:\"btn btn-link btn-no-hover-effect text-decoration-none font-weight-bold text-uppercase text-dark pl-0\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.restoreImage(_vm.image)}}},[_vm._v(\" Restore \")]):_vm._e(),(!_vm.isArchived)?_c('button',{staticClass:\"btn btn-link btn-no-hover-effect text-decoration-none font-weight-bold text-uppercase text-dark pl-0\",attrs:{\"type\":\"button\",\"data-toggle\":\"modal\",\"data-target\":\"#image-editor\",\"data-backdrop\":\"true\"},on:{\"click\":function($event){_vm.showModal = true}}},[_vm._v(\" Edit \")]):_vm._e(),(!_vm.isArchived)?_c('button',{staticClass:\"btn btn-link btn-no-hover-effect text-decoration-none font-weight-bold text-uppercase text-dark pl-0\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.deleteImage(_vm.image)}}},[_vm._v(\" Delete \")]):_vm._e()])]),_c('hr',{staticClass:\"d-sm-flex d-lg-none my-2 mx-0\"}),_c('div',{staticClass:\"card-body align-self-lg-center\"},[(_vm.isArchived)?_c('small',{staticClass:\"text-muted\"},[_vm._v(\"Archived \"+_vm._s(_vm.archiveLength))]):_vm._e(),_c('div',{staticClass:\"d-none d-md-none d-lg-flex align-items-center pb-3\"},[(!_vm.isArchived)?_c('button',{staticClass:\"btn btn-link btn-no-hover-effect text-decoration-none font-weight-bold text-uppercase text-dark pl-0\",attrs:{\"type\":\"button\",\"data-toggle\":\"modal\",\"data-target\":\"#image-editor\",\"data-backdrop\":\"true\"},on:{\"click\":function($event){_vm.showModal = true}}},[_vm._v(\" Edit \")]):_vm._e(),(!_vm.isArchived)?_c('button',{staticClass:\"btn btn-link btn-no-hover-effect text-decoration-none font-weight-bold text-uppercase text-dark pl-0\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.deleteImage(_vm.image)}}},[_vm._v(\" Delete \")]):_vm._e(),_c('input',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.bulkSelect),expression:\"bulkSelect\"}],staticClass:\"align-self-center\",attrs:{\"type\":\"checkbox\"},domProps:{\"value\":_vm.image.id},on:{\"click\":function($event){return _vm.selectImage(_vm.image)}}}),(_vm.isArchived)?_c('button',{staticClass:\"btn btn-link btn-no-hover-effect text-decoration-none font-weight-bold text-uppercase text-dark pl-0\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.restoreImage(_vm.image)}}},[_vm._v(\" Restore \")]):_vm._e(),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.loading)?_c('span',{key:\"1\"},[_c('i',{staticClass:\"fas fa-circle-notch fa-spin\"})]):_c('span',{key:\"2\",attrs:{\"data-toggle\":\"tooltip\",\"data-placement\":\"top\",\"title\":\"Uploaded!\"}},[_c('i',{staticClass:\"fas fa-check text-success\"})])]),(!_vm.isArchived)?_c('i',{staticClass:\"fas fa-ellipsis-v ml-auto text-muted handle p-2\",attrs:{\"data-toggle\":\"tooltip\",\"data-placement\":\"top\",\"title\":\"Sort Image\"}}):_vm._e()],1),_c('div',{staticClass:\"d-flex align-items-center justify-content-between\"},[_c('small',{staticClass:\"text-muted\"},[_vm._v(\"Stock: \"+_vm._s(_vm.stockNumber))]),_c('a',{staticClass:\"download text-dark text-decoration-none d-none d-lg-block p-1\",attrs:{\"target\":\"_blank\",\"href\":_vm.image.BlobImageUrl,\"data-toggle\":\"tooltip\",\"data-placement\":\"top\",\"title\":\"Download\"},on:{\"click\":function($event){$event.preventDefault();return _vm.downloadImage(_vm.image)}}},[_c('i',{staticClass:\"fas fa-download\"})])])])]),_c('PhotoEditor',{attrs:{\"openModal\":_vm.showModal,\"image\":_vm.image},on:{\"modal\":function($event){_vm.showModal = $event},\"updateImagePreview\":_vm.displayCroppedImage}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.openModal)?_c('div',[_c('div',{staticClass:\"modal\",attrs:{\"id\":\"image-editor\",\"tabindex\":\"-1\",\"role\":\"dialog\"}},[_c('div',{staticClass:\"modal-dialog modal-lg\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\"},[_vm._v(\"Stock #: \"+_vm._s(_vm.stockNumber))]),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"data-dismiss\":\"modal\",\"aria-label\":\"Close\"},on:{\"click\":_vm.onCloseModal}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"×\")])])]),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.setBoxData($event)}}},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-lg-8 col-md-12 form-group\"},[_c('div',{staticClass:\"edit-image\"},[_c('vue-cropper',{ref:\"cropper\",attrs:{\"src\":_vm.getImageSource(_vm.image),\"alt\":\"Source Image\",\"guides\":true,\"minCropBoxWidth\":340,\"minCropBoxHeight\":255,\"viewMode\":0,\"preview\":\".preview\"}})],1),_c('div',{staticClass:\"edit-image-tool d-flex align-items-center justify-content-center my-3\"},[_c('div',{staticClass:\"btn-group\",attrs:{\"role\":\"group\"}},[_c('a',{staticClass:\"font-weight-bold text-uppercase text-dark pr-3\",attrs:{\"type\":\"button\",\"title\":\"Rotate\"},on:{\"click\":function($event){$event.preventDefault();return _vm.rotate(90)}}},[_vm._v(\"Rotate/Flip \"),_c('i',{staticClass:\"fas fa-sync-alt\"})])]),_c('div',{staticClass:\"btn-group\",attrs:{\"role\":\"group\"}},[_c('a',{staticClass:\"font-weight-bold text-uppercase text-dark pr-3\",attrs:{\"type\":\"button\",\"title\":\"Crop\"},on:{\"click\":function($event){$event.preventDefault();return _vm.cropImage()}}},[_vm._v(\"Crop \"),_c('i',{staticClass:\"fas fa-crop\"})]),_c('a',{staticClass:\"font-weight-bold text-uppercase text-dark\",attrs:{\"type\":\"button\",\"title\":\"Reset\"},on:{\"click\":function($event){$event.preventDefault();return _vm.reset()}}},[_vm._v(\"Reset \"),_c('i',{staticClass:\"fas fa-undo\"})])])])]),_c('div',{staticClass:\"d-none d-lg-block d-md-none col-lg-4 col-md-12\"},[_c('section',{staticClass:\"preview-area\"},[_c('p',[_vm._v(\"Edited Image\")]),_c('div',{staticClass:\"cropped-image\"},[(_vm.cropImg)?_c('img',{attrs:{\"src\":_vm.cropImg,\"alt\":\"Edited Image\"}}):_c('div',{staticClass:\"crop-placeholder\"})])]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"name\"}},[_vm._v(\"Stock #:\")]),_c('input',{staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":_vm.stockNumber,\"disabled\":_vm.stockNumber}})])])]),_c('div',{staticClass:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\",\"data-dismiss\":\"modal\"},on:{\"click\":_vm.onCloseModal}},[_vm._v(\" Close \")]),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"data-dismiss\":\"modal\"},on:{\"click\":_vm.getData}},[_vm._v(\" Save \")])])])])])])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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!./PhotoEditor.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!./PhotoEditor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PhotoEditor.vue?vue&type=template&id=1091748c&\"\nimport script from \"./PhotoEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./PhotoEditor.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","`\r\n\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!./ImageCard.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!./ImageCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ImageCard.vue?vue&type=template&id=0c130098&\"\nimport script from \"./ImageCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\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!./PhotoUploader.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!./PhotoUploader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PhotoUploader.vue?vue&type=template&id=12a3ba70&\"\nimport script from \"./PhotoUploader.vue?vue&type=script&lang=js&\"\nexport * from \"./PhotoUploader.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}