{"version":3,"sources":["webpack:///./src/mixins/clientHelpers.js","webpack:///./src/mixins/toast.js","webpack:///./src/components/common/questionnaires/question/QuestionBase.vue","webpack:///src/components/common/questionnaires/question/QuestionBase.vue","webpack:///./src/components/common/questionnaires/question/QuestionBase.vue?4f45","webpack:///./src/components/common/questionnaires/question/QuestionBase.vue?6c62","webpack:///./src/components/common/other/inputs/InputStandardBasic.vue","webpack:///src/components/common/other/inputs/InputStandardBasic.vue","webpack:///./src/components/common/other/inputs/InputStandardBasic.vue?b7cc","webpack:///./src/components/common/other/inputs/InputStandardBasic.vue?122b","webpack:///./src/components/common/questionnaires/question/questions/introducer/IntroducerAddAccessUser.vue","webpack:///src/components/common/questionnaires/question/questions/introducer/IntroducerAddAccessUser.vue","webpack:///./src/components/common/questionnaires/question/questions/introducer/IntroducerAddAccessUser.vue?2ebb","webpack:///./src/components/common/questionnaires/question/questions/introducer/IntroducerAddAccessUser.vue?ac04","webpack:///./src/views/introducer/settings/index.vue","webpack:///./src/views/introducer/settings/AccessUsers.vue","webpack:///src/views/introducer/settings/AccessUsers.vue","webpack:///./src/views/introducer/settings/AccessUsers.vue?a0c6","webpack:///./src/views/introducer/settings/AccessUsers.vue?c130","webpack:///./src/views/introducer/settings/UserOverview.vue","webpack:///src/views/introducer/settings/UserOverview.vue","webpack:///./src/views/introducer/settings/UserOverview.vue?1984","webpack:///./src/views/introducer/settings/UserOverview.vue?dff8","webpack:///./src/views/introducer/settings/Users.vue","webpack:///./src/components/common/questionnaires/question/questions/introducer/IntroducerUsers.vue","webpack:///src/components/common/questionnaires/question/questions/introducer/IntroducerUsers.vue","webpack:///./src/components/common/questionnaires/question/questions/introducer/IntroducerUsers.vue?50ef","webpack:///./src/components/common/questionnaires/question/questions/introducer/IntroducerUsers.vue?fc94","webpack:///src/views/introducer/settings/Users.vue","webpack:///./src/views/introducer/settings/Users.vue?9675","webpack:///./src/views/introducer/settings/Users.vue?2db5","webpack:///src/views/introducer/settings/index.vue","webpack:///./src/views/introducer/settings/index.vue?c8c5","webpack:///./src/views/introducer/settings/index.vue?3047","webpack:///./node_modules/vue-cropperjs/dist/VueCropper.js","webpack:///./src/components/common/questionnaires/question/questions/introducer/IntroducerAccessRequests.vue","webpack:///src/components/common/questionnaires/question/questions/introducer/IntroducerAccessRequests.vue","webpack:///./src/components/common/questionnaires/question/questions/introducer/IntroducerAccessRequests.vue?a001","webpack:///./src/components/common/questionnaires/question/questions/introducer/IntroducerAccessRequests.vue?223a","webpack:///./src/views/introducer/settings/ChangePasswordForm.vue","webpack:///src/views/introducer/settings/ChangePasswordForm.vue","webpack:///./src/views/introducer/settings/ChangePasswordForm.vue?796a","webpack:///./src/views/introducer/settings/ChangePasswordForm.vue?cc29","webpack:///./src/assets/images/man-profile.svg","webpack:///./src/components/common/questionnaires/question/questions/objects/ObjectCard.vue","webpack:///src/components/common/questionnaires/question/questions/objects/ObjectCard.vue","webpack:///./src/components/common/questionnaires/question/questions/objects/ObjectCard.vue?5420","webpack:///./src/components/common/questionnaires/question/questions/objects/ObjectCard.vue?88d7","webpack:///./node_modules/cropperjs/dist/cropper.js","webpack:///./src/mixins/dateFormat.js"],"names":["clientHelpers","methods","clientNameFull","client","profileNameFirst","profileNameMiddle","profileNameLast","clientName","clientNameFirstLast","clientNameSurnameInitial","clientNameShort","clientFirstName","clientInitials","isSonOrDaughter","person","relationship","relationship_to_client","isPartnerChecker","allowedRelationships","includes","isPartner","this","isMarried","isPartnered","isChildOrDependant","dependant","isDependant","isMale","isFemale","sortClientPeople","people","p","Object","assign","sort","a","b","nameA","name_first","toLowerCase","nameB","clientNameList","args","clientsData","clients","clientDetails","initials","andOr","separator","firstName","nameEnding","nameShort","previousNames","aliasNames","nameSurnameInitial","string","i","length","find","id","profilePreviousName","profileAlias","clientAddress","address","error","addressShort","current_address","current_address_details","line_1","line_2","post_town","postcode","data","hasPartnerRelationships","policiesOthersNot","liabilitiesMortgage","liabilitiesLoans","liabilitiesCreditCards","liabilitiesOtherNot","assetsOtherNot","toast","pageLoadToastMessage","$store","getters","toastMessages","pop","state","toastError","message","title","variant","duration","position","$bvToast","autoHideDelay","appendToast","toaster","$bvModal","msgBoxOk","size","buttonSize","okVariant","headerClass","footerClass","centered","then","value","catch","console","log","render","_vm","_c","_self","directives","name","rawName","showQuestion","expression","staticClass","class","errors","valid","disabledValid","subSection","question","tip","showTip","on","$event","_m","_e","noRightPadding","subTitle","_t","_l","index","key","_v","_s","staticRenderFns","component","inputClass","label","attrs","prependText","placeholder","type","formatter","loading","prefix","model","callback","$$v","appendButton","appendText","$emit","Array","isArray","e","otherFunction","text","serverErrors","jsErrors","postErrors","email","addUser","grant","$set","user","is_introducer_admin","getAccessRequests","ref","form","contact_phone","contact_mobile","save","active","imgSrc","setImage","preventDefault","reset","apply","arguments","showFileChooser","saveImage","is_introducer_training","trainingCode","introducer_training_skills","option","formatDateAndTimeAmPm","last_login","users","usersSorted","is_active","disableUserConfirm","defineProperty","exports","_cropperjs","_cropperjs2","_interopRequireDefault","obj","__esModule","default","_objectWithoutProperties","keys","target","indexOf","prototype","hasOwnProperty","call","previewPropType","window","String","Element","NodeList","h","crossorigin","undefined","style","containerStyle","src","alt","$listeners","imgStyle","props","viewMode","Number","dragMode","initialAspectRatio","aspectRatio","preview","responsive","Boolean","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","Function","cropstart","cropmove","cropend","crop","zoom","mounted","_$options$props","$options","cropper","$refs","img","clear","initCrop","replace","url","onlyColorChanged","enable","disable","destroy","move","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","options","setAspectRatio","setDragMode","mode","accessRequests","access","formatDate","expiry_date","deleteAccessRequestConfirm","scopedSlots","_u","fn","content","modifiers","stopPropagation","proxy","old_password","new_password","repeat_password","changePassword","module","selected","selectMode","showTitle","show","toString","select","disabled","staticStyle","object","partner","badgeDisabled","family","showDelete","showSave","showConfirm","confirm","global","factory","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","_objectSpread2","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_typeof","Symbol","iterator","constructor","_classCallCheck","instance","Constructor","TypeError","_defineProperties","descriptor","configurable","writable","_createClass","protoProps","staticProps","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayLikeToArray","iter","from","o","minLen","n","slice","test","len","arr2","IS_BROWSER","document","WINDOW","IS_TOUCH_DEVICE","documentElement","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","concat","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","NaN","TEMPLATE","isNaN","isNumber","isPositiveNumber","Infinity","isUndefined","isObject","isPlainObject","_constructor","isFunction","toArray","_len","_key","arg","REGEXP_DECIMALS","normalizeDecimalNumber","times","Math","round","REGEXP_SUFFIX","setStyle","element","styles","property","hasClass","classList","contains","className","addClass","elem","add","trim","removeClass","remove","toggleClass","added","REGEXP_CAMEL_CASE","toParamCase","dataset","getAttribute","setAttribute","removeData","removeAttribute","REGEXP_SPACES","onceSupported","supported","once","listener","get","set","addEventListener","removeEventListener","removeListener","handler","split","event","listeners","addListener","_handler","_element$listeners","_len2","_key2","dispatchEvent","Event","CustomEvent","detail","bubbles","cancelable","createEvent","initCustomEvent","getOffset","box","getBoundingClientRect","left","pageXOffset","clientLeft","top","pageYOffset","clientTop","location","REGEXP_ORIGINS","isCrossOriginURL","parts","match","protocol","hostname","port","addTimestamp","timestamp","Date","getTime","getTransforms","_ref","translateX","translateY","values","transform","join","WebkitTransform","msTransform","getMaxZoomRatio","pointers","pointers2","maxRatio","pointer","pointerId","pointer2","x1","abs","startX","y1","startY","x2","endX","y2","endY","z1","sqrt","z2","getPointer","_ref2","endOnly","pageX","pageY","end","getPointersCenter","count","_ref3","getAdjustedSizes","_ref4","height","width","isValidWidth","isValidHeight","adjustedWidth","getRotatedSizes","_ref5","arc","PI","sinArc","sin","cosArc","cos","newWidth","newHeight","getSourceCanvas","image","_ref6","_ref7","_ref8","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","createElement","context","getContext","maxSizes","minSizes","min","max","destMaxSizes","destMinSizes","destWidth","destHeight","params","fillStyle","fillRect","translate","drawImage","map","param","floor","fromCharCode","getStringFromCharCode","dataView","start","str","getUint8","REGEXP_DATA_URL_HEAD","dataURLToArrayBuffer","dataURL","base64","binary","atob","arrayBuffer","ArrayBuffer","uint8","Uint8Array","charCodeAt","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","container","containerData","offsetWidth","offsetHeight","imageData","rotated","canvasWidth","canvasHeight","canvasData","limited","limitCanvas","oldLeft","oldTop","initialCanvasData","sizeLimited","positionLimited","cropBoxData","_getAdjustedSizes","newCanvasLeft","newCanvasTop","minLeft","minTop","maxLeft","maxTop","changed","transformed","_getRotatedSizes","renderImage","limitCropBox","output","initialCropBoxData","maxCropBoxWidth","maxCropBoxHeight","face","cropBox","initPreview","crossOrigin","crossOriginUrl","viewBox","appendChild","viewBoxImage","previews","ownerDocument","querySelectorAll","querySelector","el","html","innerHTML","cssText","resetPreview","cropBoxWidth","cropBoxHeight","originalWidth","originalHeight","getElementsByTagName","events","bind","onCropStart","cropStart","onWheel","wheel","passive","capture","onDblclick","dblclick","onCropMove","cropMove","onCropEnd","cropEnd","onResize","resize","unbind","handlers","ratioX","ratioY","dragBox","_this","delta","wheeling","setTimeout","deltaY","wheelDelta","buttons","button","pointerType","ctrlKey","action","changedTouches","touch","identifier","originalEvent","cropping","change","right","bottom","renderable","shiftKey","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","tagName","Error","reloading","sizing","init","toDataURL","read","clone","xhr","XMLHttpRequest","onabort","onerror","ontimeout","onprogress","getResponseHeader","abort","onload","response","onloadend","open","responseType","withCredentials","send","_parseOrientation","stop","parentNode","insertBefore","nextSibling","_this2","isIOSWebKit","navigator","userAgent","done","build","sizingImage","body","removeChild","template","getElementsByClassName","unbuild","moment","require","dateFormat","mixins","formatDateAndTime","format","formatDateShort","formatDateLong","formatDateDescription","formatTime","formatDayOnly","letterDate","letterDateTwo","formatDateAlternative","formatDob","date","strong","formatDateAndTimeLong","isChild","dob","birthDate","now","getFullYear","getMonth","getDate","isOverAge","age","isUnderAge","ageYears","diff","ageDays","timeUntil","to","isChildOf","child","fromNow","parseZone","timePast","startTime"],"mappings":"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","file":"js/chunk-3fcc626a.5bdebc53.js","sourcesContent":["export const clientHelpers = {\n methods: {\n clientNameFull(client) {\n if (client)\n return `${client.profileNameFirst} ${\n client.profileNameMiddle\n ? `${client.profileNameMiddle} `\n : ''\n }${client.profileNameLast}`;\n return 'NO NAME';\n },\n clientName(client) {\n if (client)\n return `${client.profileNameFirst} ${\n client.profileNameMiddle\n ? `${client.profileNameMiddle} `\n : ''\n }${client.profileNameLast}`;\n return 'NO NAME';\n },\n clientNameFirstLast(client) {\n if (client)\n return `${client.profileNameFirst} ${client.profileNameLast}`;\n return 'NO NAME';\n },\n clientNameSurnameInitial(client) {\n if (client)\n return `${client.profileNameLast} ${client.profileNameFirst[0]}`;\n return 'NO NAME';\n },\n clientNameShort(client) {\n if (client)\n return `${client.profileNameFirst[0]} ${client.profileNameLast}`;\n return 'NO NAME';\n },\n clientFirstName(client) {\n if (client) return `${client.profileNameFirst}`;\n return 'NO FIRST';\n },\n clientInitials(client) {\n if (client && client.profileNameFirst && client.profileNameLast)\n return `${client.profileNameFirst[0]}${client.profileNameLast[0]}`;\n return 'NO NAME';\n },\n isSonOrDaughter(person) {\n if (person && person.relationship) {\n return !!(\n person.relationship === 'son' ||\n person.relationship === 'daughter'\n );\n } else if (person && person.relationship_to_client) {\n return !!(\n person.relationship_to_client === 'son' ||\n person.relationship_to_client === 'daughter'\n );\n }\n return false;\n },\n isPartnerChecker(person, allowedRelationships) {\n if (person && person.relationship_to_client) {\n return !!allowedRelationships.includes(person.relationship_to_client);\n } else if (person && person.relationship) {\n return !!allowedRelationships.includes(person.relationship);\n }\n return false;\n },\n isPartner (person) {\n let allowedRelationships = [\n 'husband',\n 'wife',\n 'partner',\n 'civil partner',\n 'intended husband',\n 'intended wife'\n ];\n return this.isPartnerChecker(person, allowedRelationships)\n },\n isMarried (person) {\n let allowedRelationships = [\n 'husband',\n 'wife',\n 'civil partner'\n ];\n return this.isPartnerChecker(person, allowedRelationships)\n },\n isPartnered (person) {\n let allowedRelationships = [\n 'partner',\n 'intended husband',\n 'intended wife'\n ];\n return this.isPartnerChecker(person, allowedRelationships)\n },\n isChildOrDependant(person) {\n return this.isSonOrDaughter(person) || person.dependant;\n },\n isDependant(person) {\n return person.dependant\n },\n isMale(person) {\n if (person && person.relationship_to_client) {\n return !!(\n person.relationship_to_client.includes('husband') ||\n person.relationship_to_client.includes('brother') ||\n person.relationship_to_client.includes('nephew') ||\n person.relationship_to_client.includes('father') ||\n person.relationship_to_client.includes('son')\n );\n } else if (person && person.relationship) {\n return !!(\n person.relationship.includes('husband') ||\n person.relationship.includes('brother') ||\n person.relationship.includes('nephew') ||\n person.relationship.includes('father') ||\n person.relationship.includes('son')\n );\n }\n return false;\n },\n isFemale(person) {\n if (person && person.relationship_to_client) {\n return !!(\n person.relationship_to_client.includes('wife') ||\n person.relationship_to_client.includes('mother') ||\n person.relationship_to_client.includes('niece') ||\n person.relationship_to_client.includes('sister') ||\n person.relationship_to_client.includes('daughter')\n );\n } else if (person && person.relationship) {\n return !!(\n person.relationship.includes('wife') ||\n person.relationship.includes('mother') ||\n person.relationship.includes('niece') ||\n person.relationship.includes('sister') ||\n person.relationship.includes('daughter')\n );\n }\n return false;\n },\n sortClientPeople(people) {\n let p = Object.assign([], people);\n return p.sort((a, b) => {\n let nameA = a.name_first.toLowerCase();\n let nameB = b.name_first.toLowerCase();\n if (nameA < nameB) return -1;\n if (nameA > nameB) return 1;\n return 0;\n });\n },\n clientNameList(args) {\n // init\n let clientsData = 'clients' in args ? args.clients : [];\n let clientDetails =\n 'clientDetails' in args ? args.clientDetails : null;\n let initials = 'initials' in args ? args.initials : false;\n let andOr = 'andOr' in args ? args.andOr : ' and ';\n let separator = 'separator' in args ? args.separator : ', ';\n let firstName = 'firstName' in args ? args.firstName : false;\n let nameEnding = 'nameEnding' in args ? args.nameEnding : null\n\n let nameShort = 'nameShort' in args ? args.nameShort : false;\n let previousNames =\n 'previousNames' in args ? args.previousNames : false;\n let aliasNames = 'aliasNames' in args ? args.aliasNames : false;\n\n let nameSurnameInitial = 'nameSurnameInitial' in args ? args.nameSurnameInitial : false;\n let string = '';\n // start\n for (var i = 0; i < clientsData.length; i++) {\n let client = null;\n if (typeof clientsData[i] === 'number') {\n if (clientDetails) {\n client = clientDetails.find(\n (client) => client.id === clientsData[i]\n );\n } else return 'Unknown Client';\n } else if (typeof clientsData[i] === 'object') {\n client = clientsData[i];\n }\n // spaces, and, or\n if (i !== 0 && i !== clientsData.length - 1)\n string += separator;\n if (i !== 0 && i === clientsData.length - 1) string += andOr;\n if (initials) string += this.clientInitials(client);\n else if (firstName) {\n string += this.clientFirstName(client);\n }\n else if (nameShort) string += this.clientNameShort(client);\n else if (nameSurnameInitial) string += this.clientNameSurnameInitial(client);\n else string += this.clientName(client);\n\n if (nameEnding) {\n string += nameEnding\n }\n\n if (previousNames && client.profilePreviousName) {\n string += ` previously known as ${client.profilePreviousName}`;\n }\n if (aliasNames && client.profileAlias) {\n string += ` also known as ${client.profileAlias}`;\n }\n }\n return string;\n },\n clientAddress(args) {\n // init\n let address = 'address' in args ? args.address : null;\n let client = 'client' in args ? args.client : null;\n let separator = 'separator' in args ? args.separator : ', ';\n let error = 'error' in args ? args.error : 'NO ADDRESS';\n let addressShort =\n 'addressShort' in args ? args.addressShort : false;\n let string = '';\n // guards\n if (!address && !client) return error;\n if (client) {\n if (\n client.current_address &&\n typeof client.current_address === 'object'\n )\n address = client.current_address;\n else if (\n client.current_address_details &&\n typeof client.current_address_details === 'object'\n )\n address = client.current_address_details;\n else return error;\n }\n\n // start\n if (address.line_1) string += address.line_1 + separator;\n if (address.line_2 && !addressShort)\n string += address.line_2 + separator;\n if (address.post_town && !addressShort)\n string += address.post_town + separator;\n if (address.postcode) string += address.postcode;\n return string;\n }\n },\n data () {\n return {\n hasPartnerRelationships: [\n 'Separated',\n 'Civil Partner',\n 'Married',\n 'Engaged',\n 'Partnered'\n ],\n policiesOthersNot: ['Life Cover', 'Life & Critical Illness', 'Critical Illness', 'Income Protection', 'Whole of Life'],\n liabilitiesMortgage: ['Mortgage (BTL)', 'Mortgage'],\n liabilitiesLoans: ['Loan'],\n liabilitiesCreditCards: ['Credit Card'],\n liabilitiesOtherNot: ['Mortgage (BTL)', 'Mortgage', 'Loan', 'Credit Card'],\n assetsOtherNot: ['Residential Home', 'Savings', 'Pensions', 'Shares', 'Vehicles', 'Household Contents']\n }\n }\n};\n","export const toast = {\n methods: {\n pageLoadToastMessage () {\n // page has loaded display queued toast messages\n if (this.$store.getters.toastMessages.length) {\n while (this.$store.getters.toastMessages.length) {\n let toast = this.$store.getters.toastMessages.pop()\n if (toast.state === 'error') {\n this.toastError(toast.message)\n } else {\n this.toast(toast.message)\n }\n }\n }\n },\n toast(\n message,\n title = 'Success',\n variant = 'primary',\n duration = 5000,\n position = 'b-toaster-top-right'\n ) {\n if (variant === 'danger') {\n duration = 10000;\n position = 'b-toaster-top-center';\n }\n // position was 'b-toaster-top-center'\n\n this.$bvToast.toast(message, {\n title: title,\n autoHideDelay: duration,\n appendToast: true,\n variant: variant,\n toaster: position\n });\n },\n toastError(\n message, title='Error'\n ) {\n this.toast(message, title, \"danger\");\n },\n async message(message, title = 'Complete', variant = 'success') {\n return this.$bvModal\n .msgBoxOk(message, {\n title: title,\n size: 'sm',\n buttonSize: 'sm',\n okVariant: variant,\n headerClass: 'p-2 border-bottom-0',\n footerClass: 'p-2 border-top-0',\n centered: true\n })\n .then((value) => {\n return value;\n })\n .catch((error) => {\n // An error occurred\n console.log(error);\n });\n }\n }\n};\n\nexport default toast;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showQuestion),expression:\"showQuestion\"}],staticClass:\"question\",class:{ 'invalid': _vm.errors.length, 'valid': !_vm.errors.length && this.valid && !_vm.disabledValid, 'sub-section' : _vm.subSection}},[(_vm.question.tip)?_c('div',{staticClass:\"tip-wrapper\",class:{ 'tip_open': _vm.showTip }},[_c('a',{staticClass:\"tip-outer\",on:{\"click\":function($event){_vm.showTip = !_vm.showTip}}},[_vm._m(0)]),_c('div',{staticClass:\"tip-text\"},[_c('a',{staticClass:\"tip-text-close-container\"},[_c('div',{staticClass:\"tip-text-close\",on:{\"click\":function($event){_vm.showTip = !_vm.showTip}}})]),_c('p',{directives:[{name:\"dompurify-html\",rawName:\"v-dompurify-html\",value:(_vm.question.tip),expression:\"question.tip\"}]})])]):_vm._e(),(_vm.question.title)?_c('div',{directives:[{name:\"dompurify-html\",rawName:\"v-dompurify-html\",value:(_vm.question.title),expression:\"question.title\"}],staticClass:\"question-text\",class:{'pr-0' : _vm.noRightPadding}}):_vm._e(),(_vm.question.subTitle)?_c('p',{directives:[{name:\"dompurify-html\",rawName:\"v-dompurify-html\",value:(_vm.question.subTitle),expression:\"question.subTitle\"}],staticClass:\"question-sub-text\"}):_vm._e(),_vm._t(\"default\"),(_vm.errors.length)?_vm._l((_vm.errors),function(error,index){return _c('div',{key:index,staticClass:\"question-alert\"},[_vm._v(_vm._s(error))])}):_vm._e()],2)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"tip-inner\"},[_c('span',{staticClass:\"tip-icon\"})])\n}]\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionBase.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionBase.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./QuestionBase.vue?vue&type=template&id=25bf5c68\"\nimport script from \"./QuestionBase.vue?vue&type=script&lang=js\"\nexport * from \"./QuestionBase.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"d-flex align-items-end flex-wrap\"},[_c('div',{staticClass:\"field-wrapper\",class:_vm.args.inputClass},[(_vm.args.label)?_c('label',{staticClass:\"sub-label\"},[_vm._v(_vm._s(_vm.args.label))]):_vm._e(),_c('b-input-group',{attrs:{\"size\":_vm.args.size || 'lg'}},[_c('b-input-group-prepend',[_vm._t(\"prepend\",function(){return [(_vm.args.prependText)?_c('b-input-group-text',[_vm._v(\" \"+_vm._s(_vm.args.prependText)+\" \")]):_vm._e()]})],2),_c('b-input',{staticClass:\"form-control standard-input\",attrs:{\"placeholder\":_vm.args.placeholder,\"type\":_vm.args.type || 'text',\"state\":_vm.state,\"debounce\":\"500\",\"formatter\":_vm.args.formatter,\"lazy-formatter\":!!_vm.args.formatter,\"disabled\":_vm.loading,\"prefix\":_vm.args.prefix},model:{value:(_vm.data),callback:function ($$v) {_vm.data=$$v},expression:\"data\"}}),(_vm.args.appendButton && _vm.args.appendText)?_c('b-input-group-append',[_c('b-button',{attrs:{\"disabled\":_vm.loading,\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.$emit('buttonClicked')}}},[(_vm.loading)?_c('b-spinner',{attrs:{\"small\":\"\"}}):_vm._e(),_vm._v(\" \"+_vm._s(_vm.args.appendText)+\" \")],1)],1):(_vm.args.appendText)?_c('b-input-group-append',[_c('b-input-group-text',[_vm._v(\" \"+_vm._s(_vm.args.appendText)+\" \")])],1):_vm._e()],1),(Array.isArray(_vm.errors) && _vm.errors.length)?_c('b-form-invalid-feedback',{attrs:{\"state\":_vm.state}},_vm._l((_vm.errors),function(e,index){return _c('p',{key:'error'+index},[_vm._v(_vm._s(e))])}),0):_vm._e()],1),(_vm.args.otherFunction)?_c('div',{staticClass:\"add-or flex-shrink-0\"},[_c('label',{staticClass:\"fancy-checkbox-container\"},[_vm._v(_vm._s(_vm.args.otherFunction.text || 'Other Function')+\" \"),_c('input',{attrs:{\"type\":\"checkbox\"},on:{\"click\":function($event){return _vm.$emit('otherFunction')}}}),_c('span',{staticClass:\"checkmark\"})])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputStandardBasic.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputStandardBasic.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./InputStandardBasic.vue?vue&type=template&id=19b5aa00\"\nimport script from \"./InputStandardBasic.vue?vue&type=script&lang=js\"\nexport * from \"./InputStandardBasic.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('QuestionBase',{attrs:{\"question\":_vm.question,\"errors\":[..._vm.serverErrors, ..._vm.jsErrors, ..._vm.postErrors.email],\"valid\":false}},[_c('InputStandardBasic',{attrs:{\"args\":_vm.args,\"errors\":[..._vm.postErrors.email],\"loading\":_vm.loading},on:{\"buttonClicked\":_vm.addUser},model:{value:(_vm.grant.email),callback:function ($$v) {_vm.$set(_vm.grant, \"email\", $$v)},expression:\"grant.email\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IntroducerAddAccessUser.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IntroducerAddAccessUser.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./IntroducerAddAccessUser.vue?vue&type=template&id=0dbbf2e6\"\nimport script from \"./IntroducerAddAccessUser.vue?vue&type=script&lang=js\"\nexport * from \"./IntroducerAddAccessUser.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"border-bottom-gray-200 pb-80 mt-20\"},[_c('div',{staticClass:\"container\"},[_vm._m(0),_c('div',[(_vm.user)?_c('b-tabs',{attrs:{\"content-class\":\"mt-3\"}},[_c('b-tab',{attrs:{\"title\":\"Overview\",\"active\":\"\"}},[_c('UserOverview')],1),_c('b-tab',{attrs:{\"title\":\"Password\"}},[_c('ChangePasswordForm')],1),(_vm.user && _vm.user.is_introducer_admin)?_c('b-tab',{attrs:{\"title\":\"Grant User Access\"}},[_c('AccessUsers')],1):_vm._e(),(_vm.user && _vm.user.is_introducer_admin)?_c('b-tab',{attrs:{\"title\":\"Users\"}},[_c('Users')],1):_vm._e()],1):_vm._e()],1)])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"section-title\"},[_c('h4',{staticClass:\"p-3 mb-2\"},[_c('span',[_vm._v(\"Settings\")])])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"main-content questionnaire\"},[_c('div',{staticClass:\"fieldset\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('IntroducerAddAccessUser',{on:{\"refresh\":_vm.getAccessRequests}}),_c('IntroducerAccessRequests',{ref:\"accessRequests\"})],1)],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccessUsers.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccessUsers.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AccessUsers.vue?vue&type=template&id=3d977d9c\"\nimport script from \"./AccessUsers.vue?vue&type=script&lang=js\"\nexport * from \"./AccessUsers.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('h5',[_vm._v(\"Personal Details\")]),_c('div',{staticClass:\"main-content questionnaire mb-24\"},[_c('div',{staticClass:\"fieldset\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"10\"}},[_c('b-form-group',{staticClass:\"mb-0\",attrs:{\"label\":\"Your Name\",\"label-for\":\"name\"}},[_c('b-input-group',{staticClass:\"mb-20\"},[_c('b-form-input',{attrs:{\"id\":\"name\",\"placeholder\":\"Your name\",\"size\":\"lg\",\"type\":\"text\",\"state\":_vm.errors.name.length ? false : null},model:{value:(_vm.form.name),callback:function ($$v) {_vm.$set(_vm.form, \"name\", $$v)},expression:\"form.name\"}})],1),_c('b-form-invalid-feedback',{attrs:{\"id\":\"name-feedback\",\"state\":_vm.errors.name.length ? false : null}},_vm._l((_vm.errors.name),function(error,index){return _c('p',{key:index+'errorName'},[_vm._v(\" \"+_vm._s(error))])}),0)],1)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"10\"}},[_c('b-form-group',{staticClass:\"mb-0\",attrs:{\"label\":\"Login Email\",\"label-for\":\"email\"}},[_c('b-input-group',{staticClass:\"mb-20\"},[_c('b-form-input',{attrs:{\"id\":\"email\",\"placeholder\":\"Your email address\",\"size\":\"lg\",\"type\":\"text\",\"state\":_vm.errors.email.length ? false : null},model:{value:(_vm.form.email),callback:function ($$v) {_vm.$set(_vm.form, \"email\", $$v)},expression:\"form.email\"}})],1),_c('b-form-invalid-feedback',{attrs:{\"id\":\"email-feedback\",\"state\":_vm.errors.email.length ? false : null}},_vm._l((_vm.errors.email),function(error,index){return _c('p',{key:index+'errorEmail'},[_vm._v(\" \"+_vm._s(error))])}),0)],1)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"10\"}},[_c('b-form-group',{staticClass:\"mb-0\",attrs:{\"label\":\"Phone Number\",\"label-for\":\"contact_phone\"}},[_c('b-input-group',{staticClass:\"mb-20\"},[_c('b-form-input',{attrs:{\"id\":\"contact_phone\",\"placeholder\":\"Phone number\",\"size\":\"lg\",\"type\":\"text\",\"state\":_vm.errors.contact_phone.length ? false : null},model:{value:(_vm.form.contact_phone),callback:function ($$v) {_vm.$set(_vm.form, \"contact_phone\", $$v)},expression:\"form.contact_phone\"}})],1),_c('b-form-invalid-feedback',{attrs:{\"id\":\"contact_mobile-feedback\",\"state\":_vm.errors.contact_phone.length ? false : null}},_vm._l((_vm.errors.contact_phone),function(error,index){return _c('p',{key:index+'errorContactPhone'},[_vm._v(\" \"+_vm._s(error))])}),0)],1)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"10\"}},[_c('b-form-group',{staticClass:\"mb-0\",attrs:{\"label\":\"Mobile Number\",\"label-for\":\"contact_mobile\"}},[_c('b-input-group',{staticClass:\"mb-20\"},[_c('b-form-input',{attrs:{\"id\":\"contact_mobile\",\"placeholder\":\"Mobile phone number\",\"size\":\"lg\",\"type\":\"text\",\"state\":_vm.errors.contact_mobile.length ? false : null},model:{value:(_vm.form.contact_mobile),callback:function ($$v) {_vm.$set(_vm.form, \"contact_mobile\", $$v)},expression:\"form.contact_mobile\"}})],1),_c('b-form-invalid-feedback',{attrs:{\"id\":\"contact_mobile-feedback\",\"state\":_vm.errors.contact_mobile.length ? false : null}},_vm._l((_vm.errors.contact_mobile),function(error,index){return _c('p',{key:index+'errorContact_mobile'},[_vm._v(\" \"+_vm._s(error))])}),0)],1)],1)],1)],1),_c('b-button',{on:{\"click\":_vm.save}},[_vm._v(\"Update\")])],1),_c('h5',[_vm._v(\"Avatar\")]),_c('div',{staticClass:\"main-content questionnaire mb-24\"},[_c('div',{staticClass:\"fieldset\"},[_c('b-row',{staticClass:\"mb-30\"},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"user-image-wrapper\"},[(!_vm.active)?_c('img',{attrs:{\"src\":_vm.imgSrc,\"alt\":\"\"}}):_vm._e(),(_vm.active)?_c('div',{staticClass:\"img-cropper\"},[_c('vue-cropper',{ref:\"cropper\",attrs:{\"aspect-ratio\":1 / 1,\"maxCanvasHeight\":1000,\"maxCanvasWidth\":1000,\"src\":_vm.imgSrc,\"preview\":\".preview\"}})],1):_vm._e(),_c('input',{ref:\"input\",staticClass:\"d-none\",attrs:{\"accept\":\"image/*\",\"name\":\"image\",\"type\":\"file\"},on:{\"change\":_vm.setImage}}),_c('b-btn-group',{staticClass:\"d-flex flex-grow-1 pt-2\"},[(_vm.active)?_c('b-button',{staticClass:\"w-100\",attrs:{\"variant\":\"outline-primary ripple\"},on:{\"click\":function($event){$event.preventDefault();return _vm.reset.apply(null, arguments)}}},[_vm._v(\" Cancel \")]):_vm._e(),(!_vm.active)?_c('b-button',{staticClass:\"w-100\",attrs:{\"variant\":\"primary ripple\"},on:{\"click\":function($event){$event.preventDefault();return _vm.showFileChooser.apply(null, arguments)}}},[_vm._v(_vm._s(_vm.imgSrc ? 'Change' : 'Choose Image')+\" \")]):_vm._e(),(_vm.active)?_c('b-button',{staticClass:\"w-100\",attrs:{\"variant\":\"primary ripple\"},on:{\"click\":function($event){$event.preventDefault();return _vm.showFileChooser.apply(null, arguments)}}},[_vm._v(\"Change \")]):_vm._e(),(_vm.active)?_c('b-button',{staticClass:\"w-100\",attrs:{\"variant\":\"primary ripple\"},on:{\"click\":function($event){$event.preventDefault();return _vm.saveImage.apply(null, arguments)}}},[_vm._v(\" Upload \")]):_vm._e()],1)],1)])],1)],1)])]),_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('h5',{staticClass:\"mb-20\"},[_vm._v(\"Training\")]),(_vm.user.is_introducer_training.length)?_c('ul',_vm._l((_vm.user.is_introducer_training),function(trainingCode,index){return _c('li',{key:index},[_vm._v(\" \"+_vm._s(_vm.user.introducer_training_skills.find(option => option[0] === trainingCode)[1])+\" \")])}),0):_c('p',[_vm._v(\"You have no training skills\")]),_c('h5',{staticClass:\"mb-20\"},[_vm._v(\"Miscellaneous\")]),_c('ul',[_c('li',[_vm._v(\"Last logged in: \"+_vm._s(_vm.formatDateAndTimeAmPm(_vm.user.last_login)))]),_c('li',[_vm._v(\"User Privileges: \"+_vm._s(_vm.user.is_introducer_admin ? 'Admin' : 'Basic'))])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserOverview.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserOverview.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UserOverview.vue?vue&type=template&id=bb6b8dc0\"\nimport script from \"./UserOverview.vue?vue&type=script&lang=js\"\nexport * from \"./UserOverview.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"main-content questionnaire\"},[_c('div',{staticClass:\"fieldset\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('IntroducerUsers')],1)],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.users.length)?_c('div',{staticClass:\"question-box mt-3\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[_c('QuestionBase',{attrs:{\"question\":_vm.question,\"errors\":[],\"valid\":false}},[_c('div',{staticClass:\"accordion sub-items\"},_vm._l((_vm.usersSorted),function(user,index){return _c('ObjectCard',{key:index,attrs:{\"type\":\"user\",\"loading\":_vm.loading,\"title\":user.email,\"show-save\":false,\"disableClick\":true,\"disabled\":!user.is_active},on:{\"delete\":function($event){return _vm.disableUserConfirm(user)}},model:{value:(_vm.users[index]),callback:function ($$v) {_vm.$set(_vm.users, index, $$v)},expression:\"users[index]\"}})}),1)])],1)],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IntroducerUsers.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IntroducerUsers.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./IntroducerUsers.vue?vue&type=template&id=e467a856\"\nimport script from \"./IntroducerUsers.vue?vue&type=script&lang=js\"\nexport * from \"./IntroducerUsers.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Users.vue?vue&type=template&id=6d8e7c9e\"\nimport script from \"./Users.vue?vue&type=script&lang=js\"\nexport * from \"./Users.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=49242ea4\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'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 var crossorigin = this.crossorigin || undefined;\n\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 crossorigin: crossorigin\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 crossorigin: {\n type: String\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};","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.accessRequests.length)?_c('div',{staticClass:\"question-box with-arrow mt-32\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[_c('QuestionBase',{attrs:{\"question\":_vm.question,\"errors\":[],\"valid\":false}},[_c('div',{staticClass:\"accordion sub-items\"},_vm._l((_vm.accessRequests),function(access,index){return _c('ObjectCard',{key:index,attrs:{\"type\":\"accessRequest\",\"loading\":_vm.loading,\"title\":`

${access.email}

Expiry Date: ${_vm.formatDate(access.expiry_date)}`,\"show-save\":false,\"show-delete\":false,\"disableClick\":true},on:{\"delete\":function($event){return _vm.deleteAccessRequestConfirm(access)}},scopedSlots:_vm._u([{key:\"customButton\",fn:function(){return [_c('div',{directives:[{name:\"b-popover\",rawName:\"v-b-popover.hover.top\",value:({title: `Revoke`, content: `Revoke access request for ${access.email}`}),expression:\"{title: `Revoke`, content: `Revoke access request for ${access.email}`}\",modifiers:{\"hover\":true,\"top\":true}}],on:{\"click\":function($event){$event.stopPropagation();return _vm.deleteAccessRequestConfirm(access)}}},[_c('i',{staticClass:\"i-Remove link text-danger font-weight-bold\"})])]},proxy:true}],null,true),model:{value:(_vm.accessRequests[index]),callback:function ($$v) {_vm.$set(_vm.accessRequests, index, $$v)},expression:\"accessRequests[index]\"}})}),1)])],1)],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IntroducerAccessRequests.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IntroducerAccessRequests.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./IntroducerAccessRequests.vue?vue&type=template&id=2e3fb39c\"\nimport script from \"./IntroducerAccessRequests.vue?vue&type=script&lang=js\"\nexport * from \"./IntroducerAccessRequests.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"main-content questionnaire\"},[_c('div',{staticClass:\"fieldset\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('b-form-group',{staticClass:\"mb-0\",attrs:{\"label\":\"Current Password\",\"label-for\":\"password-old\"}},[_c('b-input-group',{staticClass:\"mb-20\",scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('b-input-group-text',{staticClass:\"bg-primary\"},[_c('i',{staticClass:\"text-20 text-white i-Password-Field\"})])]},proxy:true}])},[_c('b-form-input',{attrs:{\"id\":\"password-old\",\"placeholder\":\"Old Password\",\"size\":\"lg\",\"type\":\"password\",\"state\":_vm.errors.old_password.length ? false : null},model:{value:(_vm.form.old_password),callback:function ($$v) {_vm.$set(_vm.form, \"old_password\", $$v)},expression:\"form.old_password\"}})],1),_c('b-form-invalid-feedback',{attrs:{\"id\":\"password-old-feedback\",\"state\":_vm.errors.old_password.length ? false : null}},_vm._l((_vm.errors.old_password),function(error,index){return _c('p',{key:index+'errorOld'},[_vm._v(\" \"+_vm._s(error))])}),0)],1)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('b-form-group',{staticClass:\"mb-0\",attrs:{\"label\":\"New Password\",\"label-for\":\"password-new\"}},[_c('b-input-group',{staticClass:\"mb-20\"},[_c('b-form-input',{attrs:{\"id\":\"password-new\",\"placeholder\":\"New Password\",\"size\":\"lg\",\"type\":\"password\",\"state\":_vm.errors.new_password.length ? false : null},model:{value:(_vm.form.new_password),callback:function ($$v) {_vm.$set(_vm.form, \"new_password\", $$v)},expression:\"form.new_password\"}})],1),_c('b-form-invalid-feedback',{attrs:{\"id\":\"password-new-feedback\",\"state\":_vm.errors.new_password.length ? false : null}},_vm._l((_vm.errors.new_password),function(error,index){return _c('p',{key:index+'errorNew'},[_vm._v(\" \"+_vm._s(error))])}),0)],1)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('b-form-group',{staticClass:\"mb-0\",attrs:{\"label\":\"Repeat New Password\",\"label-for\":\"password-repeat\"}},[_c('b-input-group',{staticClass:\"mb-20\"},[_c('b-form-input',{attrs:{\"id\":\"password-repeat\",\"placeholder\":\"Repeat New Password\",\"size\":\"lg\",\"type\":\"password\",\"state\":_vm.errors.repeat_password.length ? false : null},model:{value:(_vm.form.repeat_password),callback:function ($$v) {_vm.$set(_vm.form, \"repeat_password\", $$v)},expression:\"form.repeat_password\"}})],1),_c('b-form-invalid-feedback',{attrs:{\"id\":\"password-repeat-feedback\",\"state\":_vm.errors.repeat_password.length ? false : null}},_vm._l((_vm.errors.repeat_password),function(error,index){return _c('p',{key:index+'errorRepeat'},[_vm._v(\" \"+_vm._s(error))])}),0)],1)],1)],1),_c('b-button',{on:{\"click\":_vm.changePassword}},[_vm._v(\"Change Password\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChangePasswordForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChangePasswordForm.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ChangePasswordForm.vue?vue&type=template&id=1b24bc7e\"\nimport script from \"./ChangePasswordForm.vue?vue&type=script&lang=js\"\nexport * from \"./ChangePasswordForm.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","module.exports = __webpack_public_path__ + \"img/man-profile.aad1d666.svg\";","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-card',{class:{'selected': _vm.selected, 'select-mode': _vm.selectMode},attrs:{\"no-body\":\"\"}},[_c('b-card-header',{staticClass:\"header-elements-inline\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('div',{staticClass:\"mb-0 collapsed d-flex justify-content-between align-items-center\",class:{'card-title': _vm.showTitle},attrs:{\"aria-expanded\":_vm.show.toString()},on:{\"click\":_vm.select}},[_c('span',{directives:[{name:\"dompurify-html\",rawName:\"v-dompurify-html\",value:(_vm.title),expression:\"title\"}]}),_vm._t(\"customTag\",function(){return [(_vm.disabled)?_c('div',{staticClass:\"badge badge-danger\",staticStyle:{\"position\":\"absolute\",\"bottom\":\"-9px\",\"right\":\"5%\"}},[_vm._v(\" Disabled \")]):(_vm.selected)?_c('div',{staticClass:\"badge badge-success\",staticStyle:{\"position\":\"absolute\",\"bottom\":\"-9px\",\"right\":\"5%\"}},[_vm._v(\" Selected \")]):(_vm.object && !_vm.object.partner && _vm.object.clients && _vm.object.clients.length && !_vm.badgeDisabled)?_c('div',{staticClass:\"badge badge-primary\",staticStyle:{\"position\":\"absolute\",\"bottom\":\"-9px\",\"right\":\"5%\"}},[_vm._v(\" \"+_vm._s(_vm.clientNameList({ clients: _vm.object.clients, clientDetails: _vm.$store.getters.family.clients, firstName: true }))+\" \")]):_vm._e()]}),((_vm.showDelete && ((!_vm.selectMode) || (_vm.selectMode && _vm.show))) || (_vm.showDelete && _vm.selected))?_c('div',{staticClass:\"remove-item\",on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('delete')}}}):_vm._e(),_vm._t(\"customButton\"),(_vm.showSave)?_c('div',{staticClass:\"save-item\",on:{\"click\":function($event){$event.stopPropagation();_vm.show ? _vm.$emit('save') : _vm.show = !_vm.show}}}):_vm._e()],2)]),_c('b-collapse',{attrs:{\"accordion\":_vm.object && _vm.object.id ? 'object-accordion-' + _vm.type : null,\"role\":\"tabpanel\"},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('b-card-body',[_vm._t(\"default\"),(_vm.showConfirm)?_c('div',{staticClass:\"save-button\",on:{\"click\":_vm.confirm}},[_vm._v(\" Confirm \")]):_vm._e()],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ObjectCard.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ObjectCard.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ObjectCard.vue?vue&type=template&id=6f76503c\"\nimport script from \"./ObjectCard.vue?vue&type=script&lang=js\"\nexport * from \"./ObjectCard.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/*!\n * Cropper.js v1.5.12\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2021-06-12T08:00:17.411Z\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 ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\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 _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 _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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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 ratioX = container.offsetWidth / containerData.width;\n var ratioY = container.offsetHeight / containerData.height;\n var ratio = Math.abs(ratioX - 1) > Math.abs(ratioY - 1) ? ratioX : ratioY; // Resize when width changed or height changed\n\n if (ratio !== 1) {\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 } // The third parameter is required for avoiding side-effect (#682)\n\n\n xhr.open('GET', url, true);\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 moment = require('moment');\n\nimport { clientHelpers } from '@/mixins/clientHelpers';\n\nexport const dateFormat = {\n mixins: [clientHelpers],\n methods: {\n formatDateAndTime(value) {\n if (value) {\n return moment(String(value)).format('DD/MM/YYYY HH:mm');\n }\n return 'NO DATE';\n },\n formatDateAndTimeAmPm(value) {\n if (value) {\n return moment(String(value)).format('DD/MM/YYYY HH:mm a');\n }\n return 'NO DATE';\n },\n formatDate(value) {\n if (value) {\n return moment(String(value)).format('DD/MM/YYYY');\n }\n return 'NO DATE';\n },\n formatDateShort(value) {\n if (value) {\n return moment(String(value)).format('DD/MM/YY');\n }\n return 'NO DATE';\n },\n formatDateLong(value) {\n if (value) {\n return moment(String(value)).format('HH:mm ddd Do MMM ');\n }\n return 'NO DATE';\n },\n formatDateDescription(value) {\n if (value) {\n return moment(String(value)).format('Do MMMM');\n }\n return 'NO DATE';\n },\n formatTime(value) {\n if (value) {\n return moment(String(value)).format('HH:mm');\n }\n return 'NO TIME';\n },\n formatDayOnly(value) {\n if (value) {\n return moment(String(value)).format('D');\n }\n return 'NO DATE';\n },\n letterDate(value) {\n if (value) {\n return moment(value).format('dddd, Do MMMM YYYY');\n }\n return 'NO DATE';\n },\n letterDateTwo(value) {\n if (value) {\n return moment(value).format('Do MMMM YYYY');\n }\n return 'NO DATE';\n },\n formatDateAlternative(value) {\n if (value) {\n return moment(String(value)).format('YYYY-MM-DD');\n }\n return 'NO DATE';\n },\n formatDob(args) {\n // init\n let date = 'date' in args ? args.date : false;\n let strong = 'strong' in args ? args.strong : false;\n let error =\n 'error' in args\n ? args.error\n : 'CONFIRM DOB';\n // start\n if (date) {\n let string = moment(String(date)).format('Do MMMM YYYY');\n if (strong)\n return `${string}`;\n return string;\n }\n return error;\n },\n formatDateAndTimeLong(args) {\n // init\n let date = 'date' in args ? args.date : false;\n let error = 'error' in args ? args.error : 'NO DATE';\n //start\n if (date) {\n return moment(String(date)).format('Do MMMM YYYY HH:mm');\n }\n return error;\n },\n getTime() {\n return moment().format('h:mm');\n },\n isChild(dob) {\n if (!dob) return false;\n let birthDate = new Date(dob);\n let now = new Date();\n return (\n now <=\n new Date(\n birthDate.getFullYear() + 18,\n birthDate.getMonth(),\n birthDate.getDate()\n )\n );\n },\n isOverAge(dob, age) {\n if (!dob) return false;\n let birthDate = new Date(dob);\n let now = new Date();\n return (\n now >=\n new Date(\n birthDate.getFullYear() + age,\n birthDate.getMonth(),\n birthDate.getDate()\n )\n );\n },\n isUnderAge(dob, age) {\n if (!dob) return false;\n let birthDate = new Date(dob);\n let now = new Date();\n return (\n now <=\n new Date(\n birthDate.getFullYear() + age,\n birthDate.getMonth(),\n birthDate.getDate()\n )\n );\n },\n ageYears(dob) {\n if (!dob) return 'No DOB';\n return moment().diff(dob, 'years');\n },\n ageDays(dob) {\n if (dob) return moment().diff(dob, 'days');\n return '?';\n },\n timeUntil(date) {\n return new moment().to(moment(date, 'days'));\n },\n isChildOf(child) {\n return !!(this.isChild(child.dob) && this.isSonOrDaughter(child));\n },\n fromNow(date) {\n return moment(date).parseZone().fromNow(true);\n },\n timePast(startTime) {\n let x = new Date(startTime);\n return moment(x).fromNow();\n // let now = new Date();\n // console.log(x);\n\n // let timeDiff = Math.abs(now - x);\n\n // var a = moment(x);\n // var b = moment(now);\n // console.log('a-b',a.diff(b)) // 86400000\n // console.log('timeDiff',timeDiff);\n // console.log(a.fromNow());\n \n // timeDiff /= 1000;\n\n // let seconds = Math.round(timeDiff);\n // timeDiff = Math.floor(timeDiff / 60);\n\n // let minutes = Math.round(timeDiff % 60);\n // timeDiff = Math.floor(timeDiff / 60);\n\n // let hours = Math.round(timeDiff % 24);\n // timeDiff = Math.floor(timeDiff / 24);\n\n // let days = Math.round(timeDiff % 365);\n // timeDiff = Math.floor(timeDiff / 365);\n\n // let years = timeDiff;\n\n // if (years > 0) {\n // return years + (years > 1 ? ' Years ' : ' Year ') + 'ago';\n // } else if (days > 2) {\n // return days + (days > 1 ? ' Days ' : ' Day ') + 'ago';\n // } else if (hours > 1) {\n // return hours + (hours > 1 ? ' Hours ' : ' Hour ') + 'ago';\n // } else if (minutes > 1) {\n // return minutes + (minutes > 1 ? ' Minutes ' : ' Min ') + 'ago';\n // } else if (seconds > 0) {\n // return seconds + (seconds > 1 ? ' Seconds ago' : ' second ago');\n // }\n // return 'Just Now';\n }\n }\n};\n"],"sourceRoot":""}