{"version":3,"sources":["webpack:///./src/services/modules/area.ts","webpack:///./src/composition/areas.ts","webpack:///./src/services/modules/property.ts","webpack:///./src/composition/currency.ts","webpack:///./src/services/modules/exchangeRate.ts","webpack:///./src/services/modules/agent.ts","webpack:///./src/composition/agents.ts","webpack:///./node_modules/sortablejs/modular/sortable.esm.js","webpack:///./src/composition/exchangeRate.ts","webpack:///./node_modules/vuedraggable/dist/vuedraggable.umd.js","webpack:///./src/composition/service.ts","webpack:///./src/services/modules/group.ts","webpack:///./src/composition/groups.ts","webpack:///./src/components/PropertyCreateUpdateForm.vue?7be3","webpack:///./src/components/PropertyCreateUpdateForm.vue?76c8","webpack:///./src/components/PropertyCreateUpdateSectionDetail.vue?5229","webpack:///./src/components/PropertyCreateUpdateSectionDetail.vue","webpack:///./src/components/PropertyCreateUpdateSectionDetail.vue?73ba","webpack:///./src/components/PropertyCreateUpdateSectionDetail.vue?7710","webpack:///./src/components/PropertyCreateUpdateSectionText.vue?e056","webpack:///./src/components/PropertyCreateUpdateSectionText.vue","webpack:///./src/components/PropertyCreateUpdateSectionText.vue?7aa2","webpack:///./src/components/PropertyCreateUpdateSectionText.vue?499f","webpack:///./src/services/modules/category.ts","webpack:///./src/composition/categories.ts","webpack:///./src/services/modules/tag.ts","webpack:///./src/composition/tags.ts","webpack:///./src/utils/file.ts","webpack:///./node_modules/date-fns/esm/startOfDay/index.js","webpack:///./node_modules/date-fns/esm/isSameDay/index.js","webpack:///./node_modules/date-fns/esm/addMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/addHours/index.js","webpack:///./node_modules/date-fns/esm/subHours/index.js","webpack:///./src/services/modules/currency.ts","webpack:///./src/components/PropertyCreateUpdateForm.vue","webpack:///./src/components/PropertyCreateUpdateForm.vue?05d7","webpack:///./src/components/PropertyCreateUpdateForm.vue?252b","webpack:///./src/services/modules/type.ts","webpack:///./src/composition/types.ts","webpack:///./src/components/PropertyCreateUpdateForm.vue?cad7"],"names":["controller","createAreaService","client","params","get","action","areaService","base","useAreas","model","request","languageId","value","guid","createPropertyService","data","config","post","propertyService","PropertyCategoryId","exchangeKey","pesosExchangeRateAmount","amount","isDisplayMxCurrency","Boolean","locale","convertFromUsdToMxn","Math","ceil","convertFromMxnToUsd","getUsdPrice","useCurrency","currency","computedLocale","Object","values","find","language","currencyCode","code","shouldConvertToMexicanPeso","Number","parseFloat","currencySuffix","toLocaleString","minimumFractionDigits","maximumFractionDigits","createExchangeRateService","exchangeRateService","PESOS_EXCHANGE_KEY","createAgentService","agentService","useAgents","_typeof","obj","Symbol","iterator","constructor","prototype","_defineProperty","key","defineProperty","enumerable","configurable","writable","_extends","assign","target","i","arguments","length","source","hasOwnProperty","call","apply","this","_objectSpread","ownKeys","keys","getOwnPropertySymbols","concat","filter","sym","getOwnPropertyDescriptor","forEach","_objectWithoutPropertiesLoose","excluded","sourceKeys","indexOf","_objectWithoutProperties","sourceSymbolKeys","propertyIsEnumerable","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","Array","isArray","arr2","iter","toString","from","TypeError","version","userAgent","pattern","window","navigator","match","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","on","el","event","fn","addEventListener","off","removeEventListener","matches","selector","substring","msMatchesSelector","webkitMatchesSelector","_","getParentOrHost","host","document","nodeType","parentNode","closest","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","name","state","classList","className","replace","css","prop","val","style","defaultView","getComputedStyle","currentStyle","matrix","selfOnly","appliedTransforms","transform","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","tagName","list","getElementsByTagName","n","getWindowScrollingElement","scrollingElement","documentElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","getBoundingClientRect","elRect","top","left","bottom","right","height","width","innerHeight","innerWidth","containerRect","parseInt","elMatrix","scaleX","a","scaleY","d","isScrolledPast","elSide","parentSide","parent","getParentAutoScrollElement","elSideVal","parentSideVal","visible","getChild","childNum","options","currentChild","children","display","Sortable","ghost","dragged","draggable","lastChild","last","lastElementChild","previousElementSibling","index","nodeName","toUpperCase","clone","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollLeft","scrollTop","indexOfObject","includeSelf","elem","gotSelf","clientWidth","scrollWidth","clientHeight","scrollHeight","elemCSS","overflowX","overflowY","body","extend","dst","src","isRectEqual","rect1","rect2","round","throttle","callback","ms","args","_this","setTimeout","cancelThrottle","clearTimeout","scrollBy","x","y","Polymer","$","jQuery","Zepto","dom","cloneNode","setRect","rect","unsetRect","expando","Date","getTime","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","animation","slice","child","push","fromRect","thisAnimationDuration","childMatrix","f","e","addAnimationState","removeAnimationState","splice","animateAll","animating","animationTime","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","animate","max","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","repaint","easing","animated","offsetWidth","sqrt","pow","plugins","defaults","initializeByDefault","PluginManager","mount","plugin","option","pluginEvent","eventName","sortable","evt","eventCanceled","cancel","eventNameGlobal","pluginName","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","dispatchEvent","_ref","rootEl","targetEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","charAt","substr","CustomEvent","createEvent","initEvent","bubbles","cancelable","to","item","pullMode","lastPutMode","undefined","allEventProperties","bind","dragEl","parentEl","ghostEl","nextEl","lastDownEl","cloneHidden","dragStarted","moved","activeSortable","active","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","createElement","supportCssPointerEvents","cssText","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","split","touchingSideChild2","clear","_dragElInRowColumn","dragRect","targetRect","vertical","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_detectNearestEmptySortable","ret","some","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","_prepareGroup","toFn","pull","sameGroup","group","otherGroup","join","originalGroup","checkPull","checkPut","put","revertClone","preventDefault","stopPropagation","stopImmediatePropagation","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","sort","disabled","store","handle","test","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","setData","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","_globalDragOver","dropEffect","_onMove","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_ghostIsLast","spacer","_getSwapDirection","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_generateId","str","href","sum","charCodeAt","_saveInputCheckedState","root","inputs","idx","checked","_nextTick","_cancelNextTick","id","contains","_getDirection","type","touch","pointerType","originalTarget","shadowRoot","path","composedPath","button","isContentEditable","criteria","trim","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","floor","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","err","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","inserted","ghostMatrix","relativeScrollOffset","dx","dy","b","c","cssMatrix","appendChild","_hideClone","cloneId","insertBefore","_loopId","setInterval","effectAllowed","_dragStartId","revert","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","changed","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","side1","scrolledPastTop","scrollBefore","dragIndex","nextElementSibling","after","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","removeChild","save","handleEvent","toArray","order","getAttribute","items","set","destroy","querySelectorAll","removeAttribute","utils","is","nextTick","cancelNextTick","detectDirection","element","_len","_key","create","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","AutoScrollPlugin","AutoScroll","scroll","scrollSensitivity","scrollSpeed","bubbleScroll","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","_ref2","dragOverBubble","drop","clearPointerElemChangedInterval","clearAutoScrolls","nulling","autoScroll","ogElemScroller","newElem","pid","lastSwapEl","isFallback","scrollCustomFn","sens","speed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","toSortable","changedTouches","onSpill","Revert","Remove","SwapPlugin","Swap","swapClass","dragStart","dragOverValid","swap","prevSwapEl","_ref3","swapNodes","swapItem","n1","n2","i1","i2","p1","p2","isEqualNode","startIndex","_ref4","parentSortable","lastMultiDragSelect","multiDragSortable","dragEl$1","clonesFromRect","clonesHidden","multiDragElements","multiDragClones","initialFolding","folding","MultiDragPlugin","MultiDrag","_deselectMultiDrag","_checkKeyDown","_checkKeyUp","selectedClass","multiDragKey","multiDragElement","multiDragKeyDown","isMultiDrag","delayStartGlobal","delayEnded","setupClone","sortableIndex","insertMultiDragClones","showClone","hideClone","_ref5","dragStartGlobal","_ref6","multiDrag","_ref7","_this2","removeMultiDragElements","dragOver","_ref8","_ref9","insertMultiDragElements","_ref10","dragRectAbsolute","clonesHiddenBefore","dragOverAnimationCapture","_ref11","dragMatrix","dragOverAnimationComplete","_ref12","originalEvt","shiftKey","lastIndex","currentIndex","multiDragIndex","update","nullingGlobal","destroyGlobal","shift","select","deselect","_this3","oldIndicies","newIndicies","clones","toLowerCase","clonesInserted","elementsInserted","useExchangeRate","factory","module","exports","self","__WEBPACK_EXTERNAL_MODULE_a352__","modules","installedModules","__webpack_require__","moduleId","l","m","getter","o","r","toStringTag","t","mode","__esModule","ns","object","property","p","s","LIBRARY","$export","redefine","hide","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","Base","NAME","Constructor","next","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","proto","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","P","F","toInteger","defined","TO_STRING","that","pos","String","at","S","unicode","anObject","result","global","ignoreCase","multiline","sticky","$keys","enumBugKeys","O","dP","getKeys","defineProperties","Properties","fails","wks","regexpExec","SPECIES","REPLACE_SUPPORTS_NAMED_GROUPS","re","exec","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","KEY","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","regexp","arg2","forceStringMethod","done","strfn","rxfn","RegExp","string","arg","isObject","it","cof","ARG","tryGet","T","B","callee","has","SRC","$toString","TPL","inspectSource","safe","isFunction","Function","dPs","IE_PROTO","Empty","PROTOTYPE","createDict","iframeDocument","iframe","lt","gt","contentWindow","open","write","close","uid","USE_SYMBOL","$exports","context","INCLUDES","includes","searchString","createDesc","toObject","ObjectProto","descriptor","isNaN","bitmap","MATCH","regexpFlags","nativeExec","nativeReplace","patchedExec","LAST_INDEX","UPDATES_LAST_INDEX_WRONG","re1","re2","NPCG_INCLUDED","PATCH","reCopy","core","SHARED","copyright","own","out","exp","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","expProto","U","W","R","classof","builtinExec","shared","$includes","IObject","valueOf","gOPS","pIE","$assign","A","K","k","aLen","getSymbols","isEnum","j","__g","min","def","tag","stat","__e","IE8_DOM_DEFINE","toPrimitive","Attributes","aFunction","UNSCOPABLES","ArrayProto","toLength","advanceStringIndex","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","maybeToString","REPLACE","$replace","maybeCallNative","searchValue","replaceValue","res","rx","functionalReplace","fullUnicode","results","matchStr","accumulatedResult","nextSourcePosition","matched","position","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","symbols","ch","isRegExp","$iterators","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","forced","toIObject","toAbsoluteIndex","IS_INCLUDES","$this","fromIndex","__webpack_exports__","insertNodeAt","camelize","console","removeNode","getConsole","cached","cache","hit","regex","node","parentElement","fatherNode","refNode","g","px","random","addToUnscopables","step","iterated","_t","_i","_k","Arguments","arrayIndexOf","names","STARTS_WITH","$startsWith","startsWith","search","currentScript","scripts","Error","stack","readyState","setPublicPath_i","_arrayWithHoles","_iterableToArrayLimit","_arr","_n","_d","_e","_s","_arrayLikeToArray","len","_unsupportedIterableToArray","minLen","_nonIterableRest","_slicedToArray","external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_","external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default","helper","buildAttribute","propName","computeVmIndex","vnodes","map","elt","elm","_computeIndexes","slots","isTransition","footerOffset","elmFromNodes","footerIndex","rawIndexes","ind","emit","evtName","evtData","$nextTick","$emit","delegateAndEmit","realList","isTransitionName","vuedraggable_isTransition","_slots","componentOptions","getSlot","slot","scopedSlot","computeChildrenAndOffsets","headerOffset","header","footer","getComponentAttributes","$attrs","componentData","attributes","attrs","reduce","props","componentDataAttrs","eventsListened","eventsToEmit","readonlyProperties","draggingElement","required","default","noTransitionOnDrag","original","move","draggableComponent","inheritAttrs","transitionMode","noneFunctionalComponentMode","render","h","$slots","_computeChildrenAndOf","$scopedSlots","getTag","created","error","warn","mounted","$el","getIsFunctional","optionsAdded","onDragMove","_sortable","rootContainer","computeIndexes","beforeDestroy","computed","watch","handler","newOptionValue","updateOptions","deep","fnOptions","_vnode","functional","getChildrenNodes","$children","rawNodes","_this4","visibleIndexes","getUnderlyingVm","htmlElt","getUnderlyingPotencialDraggableComponent","vue","__vue__","$options","_componentTag","$parent","emitChanges","_this5","alterList","onList","newList","spliceList","_arguments","updatePosition","getRelatedContextFromMoveEvent","component","destination","getVmIndex","domIndex","indexes","numberIndexes","getComponent","componentInstance","resetTransitionData","nodes","transitionContainer","kept","onDragStart","_underlying_vm_","onDragAdd","added","onDragRemove","removed","onDragUpdate","updateProperty","propertyName","computeFutureIndex","relatedContext","domChildren","currentDOMIndex","draggedInList","draggedContext","futureIndex","sendEvt","onDragEnd","Vue","vuedraggable","useService","getKey","fetcher","isLoading","async","getFn","response","retry","immediate","createGroupService","groupService","useGroups","_vm","_h","$createElement","_c","_self","scopedSlots","_u","ref","handleSubmit","reset","class","isLoadingProperty","$event","submit","staticClass","fetchProperty","mlsPropertyIdLabel","min_value","errors","mlsPropertyIdDescription","$$v","$set","expression","categoryIdLabel","categories","isLoadingCategories","category","typeIdLabel","types","isLoadingTypes","tagIdLabel","tags","isLoadingTags","_l","onPropertyTextTableTypeUpdate","priceLabel","priceAsCurrency","price2Label","price2AsCurrency","optionalLabel","currencyIdLabel","currencies","isLoadingCurrencies","cleaningFeeLabel","cleaningFeeAsCurrency","bedroomLabel","isLandType","bathroomLabel","agentIdLabel","agents","isLoadingAgents","image","firstName","_v","lastName","positionViewModel","title","agent","addressNameLabel","addressLineOneLabel","addressLineTwoLabel","areaIdLabel","areas","isLoadingAreas","area","countryNameLabel","readonlyLabel","countryName","stateNameLabel","stateName","cityNameLabel","cityName","addressPostalCodeLabel","addressLatitudeLabel","between","addressLongitudeLabel","clearAllDates","highlight","contentClass","dates","rentedDateRanges","onRentedDateRangesUpdate","detailValueTableTypeLabel","isLoadingGroups","details","selectedGroup","groupId","description","detail","detailId","onDetailTableTypeUpdate","virtualTourLabel","virtualTourDescription","isRecommendationLabel","isFeatureListingLabel","isDeletedLabel","isDeleted","proxy","fileTableTypeCount","isDragAreaActive","nativeOn","dropImages","fileAccept","files","rejectedFilesCount","clearRejectedFiles","file","errorKey","removeRejectedFile","getDisplaySize","size","removeAllImages","fileTableType","updateImagesDisplayOrder","displayOrder","extension","removeImage","isSubmitting","staticRenderFns","valueLabel","valueId","components","ValidationProvider","emits","newValue","i18n","titleLabel","titleId","descriptionLabel","descriptionDescription","descriptionId","categoryService","useCategories","createTagService","tagService","useTags","toBase64","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","onerror","getNameWithoutExtension","fileName","getExtension","pop","bytes","si","dp","thresh","units","u","toFixed","startOfDay","dirtyDate","requiredArgs","date","toDate","setHours","isSameDay","dirtyDateLeft","dirtyDateRight","dateLeftStartOfDay","dateRightStartOfDay","addMilliseconds","dirtyAmount","timestamp","MILLISECONDS_IN_HOUR","addHours","subHours","createCurrencyService","currencyService","PropertyCreateUpdateSectionDetail","PropertyCreateUpdateSectionText","Draggable","ValidationObserver","propertyKey","appLanguages","fetchPropertyError","form","propertyId","areaId","agentId","typeId","categoryId","tagId","currencyId","addressId","addressName","addressLineOne","addressLineTwo","addressPostalCode","addressLatitude","addressLongitude","mlsPropertyId","price","price2","cleaningFee","bathroom","bedroom","isRecommendation","isFeatureListing","virtualTour","detailValueTableType","propertyTextTableType","calendarTableType","fileListToDelete","newVal","ForSale","fetchCurrencies","then","defaultCurrency","start","startingDate","end","endingDate","range","findIndex","rejectedFiles","addImages","isRental","Rentals","formattedPrice","formattedPrice2","formattedCleaningFee","flag","modelList","detailList","currentDetails","selectedGroups","selectedDetail","propertyDetailTitle","currentGroup","dispatch","variant","message","isUpdate","isInUpdateMode","insert","router","query","searchBy","maxImageAllowedSize","imageAllowedTypes","acceptedFiles","dataUrl","ev","handleDeletedImages","imageIndex","nextFiles","responses","all","pageNumber","rowsPerPage","areaViewModel","agentViewModel","typeViewModel","categoryViewModel","tagViewModel","currencyViewModel","addressViewModel","lineOne","lineTwo","postalCode","latitude","longitude","calendarList","parseISO","propertyImageList","propertyGroupList","createTypeService","typeService","useTypes","Component","__i18n","_Ctor"],"mappings":"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","file":"js/PropertyCreate.vue~PropertyUpdate.vue.f10f307e.js","sourcesContent":["import { AxiosInstance } from 'axios'\nimport { api } from '../client'\nimport { serviceUrl } from '../utils'\n\nconst controller = serviceUrl('area')\n\nfunction createAreaService(client: AxiosInstance) {\n return {\n get(params: AreaModel) {\n return client.get(controller.action('get'), {\n params,\n })\n },\n }\n}\n\nexport const areaService = createAreaService(api.base)\n\nexport interface AreaModel {\n languageId?: string\n}\n\nexport interface AreaViewModel {\n areaId: string\n areaKey: number\n name: string\n}\n\nexport interface AreaGetViewModel {\n areaId: string\n areaKey: number\n areaName: string\n areaDescription: string\n cityId: string\n cityKey: number\n cityName: string\n stateId: string\n stateKey: number\n stateName: string\n countryId: string\n countryKey: number\n countryName: string\n}\n","import { AreaModel, areaService } from '@/services/modules/area'\nimport { currentLanguage } from '@/utils/language'\nimport { computed, ComputedRef, isRef } from '@vue/composition-api'\nimport { useService } from './service'\n\nexport function useAreas(model?: ComputedRef | AreaModel) {\n const request = computed(() => ({\n languageId: currentLanguage.value.guid,\n ...(isRef(model) ? model.value : model),\n }))\n return useService(request, () => areaService.get(request.value))\n}\n","import { Color } from '@/design/system/helpers'\nimport { AxiosInstance, AxiosRequestConfig } from 'axios'\nimport { api } from '../client'\nimport {\n GuidIdTableType,\n IdReturnViewModel,\n IntIdTableType,\n PaginationList,\n PaginationSelectModel,\n serviceUrl,\n} from '../utils'\nimport { AgentViewModel } from './agent'\nimport { AreaViewModel } from './area'\nimport { CategoryViewModel } from './category'\nimport { TagViewModel } from './tag'\nimport { TypeViewModel } from './type'\nimport { CurrencyViewModel } from './currency'\n\nconst controller = serviceUrl('property')\n\nfunction createPropertyService(client: AxiosInstance) {\n return {\n get(data: PropertyModel, config?: AxiosRequestConfig) {\n return client.post(\n controller.action('get'),\n data,\n config\n )\n },\n\n insert(data: PropertyInsertModel) {\n return client.post(controller.action('insert'), data)\n },\n\n update(data: PropertyUpdateModel) {\n return client.post(controller.action('update'), data)\n },\n }\n}\n\nexport const propertyService = createPropertyService(api.base)\n\nexport type PropertyGetViewModel = PaginationList\n\nexport interface PropertyModel extends PaginationSelectModel {\n languageId?: string\n isRecommendation?: boolean\n isFeatureListing?: boolean\n isDeleted?: boolean\n bottomLatitude?: string\n topLatitude?: string\n leftLongitude?: string\n rightLongitude?: string\n propertyKey?: number\n categoryId?: string\n agentKey?: number\n bathroom?: number\n bedroom?: number\n minPrice?: number\n minPrice2?: number\n maxPrice?: number\n maxPrice2?: number\n orderBy?: string\n excludePropertyKey?: number\n propertyTypeList?: GuidIdTableType[]\n propertyAreaList?: GuidIdTableType[]\n propertyKeyList?: IntIdTableType[]\n AvailableRentalStartingDate?: Date\n AvailableRentalEndingDate?: Date\n}\n\nexport interface PropertyViewModel {\n propertyId: string\n propertyKey: number\n mlsPropertyId: string\n price: number\n price2: number\n cleaningFee: number\n bathroom: number\n bedroom: number\n isRecommendation: boolean\n isFeatureListing: boolean\n isDeleted: boolean\n virtualTour: string\n displayOrder: number\n title: string\n description: string\n addressViewModel: AddressViewModel\n areaViewModel: AreaViewModel\n cityViewModel: CityViewModel\n stateViewModel: StateViewModel\n countryViewModel: CountryViewModel\n agentViewModel: AgentViewModel\n typeViewModel: TypeViewModel\n categoryViewModel: CategoryViewModel\n tagViewModel: TagViewModel | null\n currencyViewModel: CurrencyViewModel\n propertyImageList: PropertyImageViewModel[]\n propertyGroupList: PropertyGroupViewModel[]\n calendarList: CalendarViewModel[]\n}\n\nexport interface AddressViewModel {\n addressId: string\n addressKey: number\n name: string\n lineOne: string\n lineTwo: string\n postalCode: string\n latitude: string\n longitude: string\n}\n\nexport interface CityViewModel {\n cityId: string\n cityKey: number\n name: string\n}\n\nexport interface StateViewModel {\n stateId: string\n stateKey: number\n name: string\n}\n\nexport interface CountryViewModel {\n countryId: string\n countryKey: number\n name: string\n}\n\nexport interface ToneViewModel {\n toneId: string\n toneKey: number\n name: Color\n}\n\nexport interface PropertyImageViewModel {\n imageId: string\n imageKey: number\n propertyId: string\n name: string\n description: string | null\n path: string\n displayOrder: number\n}\n\nexport interface PropertyGroupViewModel {\n groupId: string\n groupKey: number\n name: string\n title: string\n description: string\n detailList: PropertyDetailViewModel[]\n}\n\nexport interface PropertyDetailViewModel {\n detailId: string\n detailKey: number\n name: string\n description: string\n propertyDetailTitle: string\n propertyDetailDescription: string\n value: string\n groupId: string\n propertyId: string\n}\n\nexport enum PropertyCategoryId {\n ForSale = '74e39077-4d67-eb11-9ffe-00155e010303',\n Rentals = '75e39077-4d67-eb11-9ffe-00155e010303',\n}\n\nexport interface PropertyInsertModel {\n areaId?: string\n agentId?: string\n typeId?: string\n categoryId?: string\n tagId?: string\n currencyId?: string\n addressName: string\n addressLineOne: string\n addressLineTwo: string\n addressPostalCode: string\n addressLatitude: string\n addressLongitude: string\n mlsPropertyId: string\n price?: number\n price2?: number\n cleaningFee?: number\n bathroom?: number\n bedroom?: number\n isRecommendation?: boolean\n isFeatureListing?: boolean\n isDeleted?: boolean\n virtualTour: string\n displayOrder?: number\n detailValueTableType: DetailValueTableType[]\n propertyTextTableType: PropertyTextTableType[]\n calendarTableType: CalendarTableType[]\n fileTableType: FileTableType[]\n}\n\nexport interface PropertyUpdateModel {\n propertyId: string\n areaId?: string\n agentId?: string\n typeId?: string\n categoryId?: string\n tagId?: string\n currencyId?: string\n addressId?: string\n addressName: string\n addressLineOne: string\n addressLineTwo: string\n addressPostalCode: string\n addressLatitude: string\n addressLongitude: string\n mlsPropertyId: string\n price?: number\n price2?: number\n cleaningFee?: number\n bathroom?: number\n bedroom?: number\n isRecommendation?: boolean\n isFeatureListing?: boolean\n isDeleted?: boolean\n virtualTour: string\n displayOrder?: number\n detailValueTableType: DetailValueTableType[]\n propertyTextTableType: PropertyTextTableType[]\n calendarTableType: CalendarTableType[]\n fileTableType: FileTableType[]\n fileListToDelete: FileTableType[]\n}\n\nexport interface DetailValueTableType {\n detailId: string\n languageId: string\n value: string\n}\n\nexport interface PropertyTextTableType {\n propertyId: string\n languageId: string\n title: string\n description: string\n}\n\nexport interface FileTableType {\n dataUrl: string\n name: string\n description: string\n extension: string\n path: string\n displayOrder: number\n}\n\nexport interface CalendarTableType {\n startingDate: Date\n endingDate: Date\n}\n\nexport interface CalendarViewModel {\n propertyId: string\n startingDate: string\n endingDate: string\n}\n","import { PESOS_EXCHANGE_KEY } from '@/services/modules/exchangeRate'\nimport i18n from '@/setup/i18n'\nimport { esMx, languages } from '@/utils/language'\nimport { computed } from '@vue/composition-api'\nimport { useExchangeRate } from './exchangeRate'\nimport { CurrencyViewModel } from '@/services/modules/currency'\n\nconst { data } = useExchangeRate({ exchangeKey: PESOS_EXCHANGE_KEY })\n\nexport const pesosExchangeRateAmount = computed(() => data.value[0]?.amount)\n\nexport const isDisplayMxCurrency = computed(() =>\n Boolean(i18n.locale === esMx.locale && pesosExchangeRateAmount.value)\n)\n\nexport function convertFromUsdToMxn(value: number) {\n return Math.ceil(value * pesosExchangeRateAmount.value)\n}\n\nexport function convertFromMxnToUsd(value: number) {\n return Math.ceil(value / pesosExchangeRateAmount.value)\n}\n\nexport function getLocalizedPrice(value: number | undefined) {\n return isDisplayMxCurrency.value && value ? convertFromUsdToMxn(value) : value\n}\n\nexport function getUsdPrice(value: number | undefined) {\n return isDisplayMxCurrency.value && value ? convertFromMxnToUsd(value) : value\n}\n\nexport interface UseCurrencyOptions {\n value: number | string\n locale?: string\n currency?: CurrencyViewModel\n}\n\nexport function useCurrency({\n value,\n locale = i18n.locale,\n currency,\n}: UseCurrencyOptions) {\n return computed(() => {\n const computedLocale = currency\n ? Object.values(languages).find(\n (language) => language.currencyCode === currency?.code\n )?.locale ?? locale\n : locale\n const shouldConvertToMexicanPeso =\n !currency &&\n Boolean(locale === esMx.locale && pesosExchangeRateAmount.value)\n let amount = typeof value === 'string' ? Number.parseFloat(value) : value\n const currencySuffix = shouldConvertToMexicanPeso\n ? 'MXN'\n : currency?.code || 'USD'\n\n if (shouldConvertToMexicanPeso) {\n amount = convertFromUsdToMxn(amount)\n }\n\n return `$${amount.toLocaleString(computedLocale, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n })} ${currencySuffix}`\n })\n}\n","import { AxiosInstance } from 'axios'\nimport { api } from '../client'\nimport { Audit, serviceUrl } from '../utils'\n\nconst controller = serviceUrl('exchange')\n\nfunction createExchangeRateService(client: AxiosInstance) {\n return {\n get(params: ExchangeModel) {\n return client.get(controller.action('get'), {\n params,\n })\n },\n\n update(model: ExchangeUpdateModel) {\n return client.post(controller.action('update'), model)\n },\n }\n}\n\nexport const exchangeRateService = createExchangeRateService(api.base)\n\nexport interface ExchangeModel {\n exchangeKey?: number\n}\n\nexport interface ExchangeUpdateModel {\n exchangeId: string\n amount: number\n}\n\nexport interface ExchangeViewModel extends Audit {\n exchangeId: string\n exchangeKey: number\n name: string\n abbreviation: string\n amount: number\n isDeleted: boolean\n}\n\nexport const PESOS_EXCHANGE_KEY = 1\n","import { AxiosInstance } from 'axios'\nimport { api } from '../client'\nimport { serviceUrl } from '../utils'\n\nconst controller = serviceUrl('agent')\n\nfunction createAgentService(client: AxiosInstance) {\n return {\n get(params: AgentModel) {\n return client.get(controller.action('get'), {\n params,\n })\n },\n }\n}\n\nexport const agentService = createAgentService(api.base)\n\nexport interface AgentModel {\n languageId?: string\n agentKey?: number\n positionId?: string\n}\n\nexport interface AgentViewModel {\n agentId: string\n agentKey: number\n firstName: string\n lastName: string\n image: string\n phone: string | null\n cellPhone: string\n email: string\n positionViewModel: PositionViewModel\n}\n\nexport interface PositionViewModel {\n positionId: string\n positionKey: number\n name: string\n title: string\n description: string\n}\n","import { AgentModel, agentService } from '@/services/modules/agent'\nimport { currentLanguage } from '@/utils/language'\nimport { computed } from '@vue/composition-api'\nimport { useService } from './service'\n\nexport function useAgents(model?: AgentModel) {\n const request = computed(() => ({\n languageId: currentLanguage.value.guid,\n ...model,\n }))\n\n return useService(request, () => agentService.get(request.value))\n}\n","/**!\n * Sortable 1.10.2\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","import {\n ExchangeModel,\n exchangeRateService,\n} from '@/services/modules/exchangeRate'\nimport { computed } from '@vue/composition-api'\nimport { useService } from './service'\n\nexport function useExchangeRate(model?: ExchangeModel) {\n const request = computed(() => ({\n ...model,\n }))\n\n return useService(request, () => exchangeRateService.get(request.value))\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"sortablejs\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"sortablejs\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vuedraggable\"] = factory(require(\"sortablejs\"));\n\telse\n\t\troot[\"vuedraggable\"] = factory(root[\"Sortable\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE_a352__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"01f9\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(\"2d00\");\nvar $export = __webpack_require__(\"5ca1\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar $iterCreate = __webpack_require__(\"41a0\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar getPrototypeOf = __webpack_require__(\"38fd\");\nvar ITERATOR = __webpack_require__(\"2b4c\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n/***/ }),\n\n/***/ \"02f4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar defined = __webpack_require__(\"be13\");\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n/***/ }),\n\n/***/ \"0390\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar at = __webpack_require__(\"02f4\")(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ \"0bfb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = __webpack_require__(\"cb7c\");\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"0d58\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(\"ce10\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"1495\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar getKeys = __webpack_require__(\"0d58\");\n\nmodule.exports = __webpack_require__(\"9e1e\") ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"214f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n__webpack_require__(\"b0c5\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar fails = __webpack_require__(\"79e5\");\nvar defined = __webpack_require__(\"be13\");\nvar wks = __webpack_require__(\"2b4c\");\nvar regexpExec = __webpack_require__(\"520a\");\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n\n\n/***/ }),\n\n/***/ \"230e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar document = __webpack_require__(\"7726\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"23c6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(\"2d95\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n\n/***/ \"2621\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"2aba\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar has = __webpack_require__(\"69a8\");\nvar SRC = __webpack_require__(\"ca5a\")('src');\nvar $toString = __webpack_require__(\"fa5b\");\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(\"8378\").inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"2aeb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(\"cb7c\");\nvar dPs = __webpack_require__(\"1495\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(\"230e\")('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(\"fab2\").appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"2b4c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"5537\")('wks');\nvar uid = __webpack_require__(\"ca5a\");\nvar Symbol = __webpack_require__(\"7726\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ \"2d00\":\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"2d95\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"2fdb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n\nvar $export = __webpack_require__(\"5ca1\");\nvar context = __webpack_require__(\"d2c8\");\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ \"32e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar createDesc = __webpack_require__(\"4630\");\nmodule.exports = __webpack_require__(\"9e1e\") ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"38fd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(\"69a8\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n\n/***/ \"41a0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(\"2aeb\");\nvar descriptor = __webpack_require__(\"4630\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(\"32e9\")(IteratorPrototype, __webpack_require__(\"2b4c\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n\n/***/ \"456d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(\"4bf8\");\nvar $keys = __webpack_require__(\"0d58\");\n\n__webpack_require__(\"5eda\")('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n/***/ }),\n\n/***/ \"4588\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"4630\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ \"4bf8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"5147\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n\n\n/***/ }),\n\n/***/ \"520a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar regexpFlags = __webpack_require__(\"0bfb\");\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ \"52a7\":\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"5537\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(\"8378\");\nvar global = __webpack_require__(\"7726\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(\"2d00\") ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"5ca1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar core = __webpack_require__(\"8378\");\nvar hide = __webpack_require__(\"32e9\");\nvar redefine = __webpack_require__(\"2aba\");\nvar ctx = __webpack_require__(\"9b43\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ \"5eda\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(\"5ca1\");\nvar core = __webpack_require__(\"8378\");\nvar fails = __webpack_require__(\"79e5\");\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n\n/***/ \"5f1b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classof = __webpack_require__(\"23c6\");\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n\n\n/***/ }),\n\n/***/ \"613b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"5537\")('keys');\nvar uid = __webpack_require__(\"ca5a\");\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"626a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(\"2d95\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"6762\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// https://github.com/tc39/Array.prototype.includes\nvar $export = __webpack_require__(\"5ca1\");\nvar $includes = __webpack_require__(\"c366\")(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n__webpack_require__(\"9c6c\")('includes');\n\n\n/***/ }),\n\n/***/ \"6821\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(\"626a\");\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"69a8\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"6a99\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(\"d3f4\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"7333\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(\"0d58\");\nvar gOPS = __webpack_require__(\"2621\");\nvar pIE = __webpack_require__(\"52a7\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IObject = __webpack_require__(\"626a\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(\"79e5\")(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n\n\n/***/ }),\n\n/***/ \"7726\":\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"77f1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"79e5\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ \"7f20\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(\"86cc\").f;\nvar has = __webpack_require__(\"69a8\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n\n/***/ \"8378\":\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"84f2\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"86cc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(\"9e1e\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"9b43\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(\"d8e8\");\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ \"9c6c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(\"2b4c\")('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(\"32e9\")(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ \"9def\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(\"4588\");\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"9e1e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(\"79e5\")(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"a352\":\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_a352__;\n\n/***/ }),\n\n/***/ \"a481\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar toLength = __webpack_require__(\"9def\");\nvar toInteger = __webpack_require__(\"4588\");\nvar advanceStringIndex = __webpack_require__(\"0390\");\nvar regExpExec = __webpack_require__(\"5f1b\");\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\n__webpack_require__(\"214f\")('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n\n\n/***/ }),\n\n/***/ \"aae3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(\"d3f4\");\nvar cof = __webpack_require__(\"2d95\");\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ \"ac6a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $iterators = __webpack_require__(\"cadf\");\nvar getKeys = __webpack_require__(\"0d58\");\nvar redefine = __webpack_require__(\"2aba\");\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar wks = __webpack_require__(\"2b4c\");\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n\n\n/***/ }),\n\n/***/ \"b0c5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar regexpExec = __webpack_require__(\"520a\");\n__webpack_require__(\"5ca1\")({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n\n\n/***/ }),\n\n/***/ \"be13\":\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"c366\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(\"6821\");\nvar toLength = __webpack_require__(\"9def\");\nvar toAbsoluteIndex = __webpack_require__(\"77f1\");\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n\n/***/ \"c649\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return insertNodeAt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return camelize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return console; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return removeNode; });\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"a481\");\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction getConsole() {\n if (typeof window !== \"undefined\") {\n return window.console;\n }\n\n return global.console;\n}\n\nvar console = getConsole();\n\nfunction cached(fn) {\n var cache = Object.create(null);\n return function cachedFn(str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\n\nvar regex = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(regex, function (_, c) {\n return c ? c.toUpperCase() : \"\";\n });\n});\n\nfunction removeNode(node) {\n if (node.parentElement !== null) {\n node.parentElement.removeChild(node);\n }\n}\n\nfunction insertNodeAt(fatherNode, node, position) {\n var refNode = position === 0 ? fatherNode.children[0] : fatherNode.children[position - 1].nextSibling;\n fatherNode.insertBefore(node, refNode);\n}\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"c69a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(\"9e1e\") && !__webpack_require__(\"79e5\")(function () {\n return Object.defineProperty(__webpack_require__(\"230e\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"c8ba\":\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n\n/***/ \"ca5a\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"cadf\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(\"9c6c\");\nvar step = __webpack_require__(\"d53b\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar toIObject = __webpack_require__(\"6821\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(\"01f9\")(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ \"cb7c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"ce10\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"69a8\");\nvar toIObject = __webpack_require__(\"6821\");\nvar arrayIndexOf = __webpack_require__(\"c366\")(false);\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"d2c8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = __webpack_require__(\"aae3\");\nvar defined = __webpack_require__(\"be13\");\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n\n\n/***/ }),\n\n/***/ \"d3f4\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"d53b\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n\n/***/ }),\n\n/***/ \"d8e8\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"e11e\":\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ \"f559\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n\nvar $export = __webpack_require__(\"5ca1\");\nvar toLength = __webpack_require__(\"9def\");\nvar context = __webpack_require__(\"d2c8\");\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n\n\n/***/ }),\n\n/***/ \"f6fd\":\n/***/ (function(module, exports) {\n\n// document.currentScript polyfill by Adam Miller\n\n// MIT license\n\n(function(document){\n var currentScript = \"currentScript\",\n scripts = document.getElementsByTagName('script'); // Live NodeList collection\n\n // If browser needs currentScript polyfill, add get currentScript() to the document object\n if (!(currentScript in document)) {\n Object.defineProperty(document, currentScript, {\n get: function(){\n\n // IE 6-10 supports script readyState\n // IE 10+ support stack trace\n try { throw new Error(); }\n catch (err) {\n\n // Find the second match for the \"at\" string to get file src url from stack.\n // Specifically works with the format of stack traces in IE.\n var i, res = ((/.*at [^\\(]*\\((.*):.+:.+\\)$/ig).exec(err.stack) || [false])[1];\n\n // For all scripts on the page, if src matches or if ready state is interactive, return the script tag\n for(i in scripts){\n if(scripts[i].src == res || scripts[i].readyState == \"interactive\"){\n return scripts[i];\n }\n }\n\n // If no match, return null\n return null;\n }\n }\n });\n }\n})(document);\n\n\n/***/ }),\n\n/***/ \"f751\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(\"5ca1\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(\"7333\") });\n\n\n/***/ }),\n\n/***/ \"fa5b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"5537\")('native-function-to-string', Function.toString);\n\n\n/***/ }),\n\n/***/ \"fab2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(\"7726\").document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"fb15\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n if (true) {\n __webpack_require__(\"f6fd\")\n }\n\n var setPublicPath_i\n if ((setPublicPath_i = window.document.currentScript) && (setPublicPath_i = setPublicPath_i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n __webpack_require__.p = setPublicPath_i[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\n/* harmony default export */ var setPublicPath = (null);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.assign.js\nvar es6_object_assign = __webpack_require__(\"f751\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.starts-with.js\nvar es6_string_starts_with = __webpack_require__(\"f559\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom.iterable.js\nvar web_dom_iterable = __webpack_require__(\"ac6a\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.iterator.js\nvar es6_array_iterator = __webpack_require__(\"cadf\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.keys.js\nvar es6_object_keys = __webpack_require__(\"456d\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js\n\n\n\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.array.includes.js\nvar es7_array_includes = __webpack_require__(\"6762\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.includes.js\nvar es6_string_includes = __webpack_require__(\"2fdb\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\n\n\n\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n// EXTERNAL MODULE: external {\"commonjs\":\"sortablejs\",\"commonjs2\":\"sortablejs\",\"amd\":\"sortablejs\",\"root\":\"Sortable\"}\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_ = __webpack_require__(\"a352\");\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_);\n\n// EXTERNAL MODULE: ./src/util/helper.js\nvar helper = __webpack_require__(\"c649\");\n\n// CONCATENATED MODULE: ./src/vuedraggable.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction buildAttribute(object, propName, value) {\n if (value === undefined) {\n return object;\n }\n\n object = object || {};\n object[propName] = value;\n return object;\n}\n\nfunction computeVmIndex(vnodes, element) {\n return vnodes.map(function (elt) {\n return elt.elm;\n }).indexOf(element);\n}\n\nfunction _computeIndexes(slots, children, isTransition, footerOffset) {\n if (!slots) {\n return [];\n }\n\n var elmFromNodes = slots.map(function (elt) {\n return elt.elm;\n });\n var footerIndex = children.length - footerOffset;\n\n var rawIndexes = _toConsumableArray(children).map(function (elt, idx) {\n return idx >= footerIndex ? elmFromNodes.length : elmFromNodes.indexOf(elt);\n });\n\n return isTransition ? rawIndexes.filter(function (ind) {\n return ind !== -1;\n }) : rawIndexes;\n}\n\nfunction emit(evtName, evtData) {\n var _this = this;\n\n this.$nextTick(function () {\n return _this.$emit(evtName.toLowerCase(), evtData);\n });\n}\n\nfunction delegateAndEmit(evtName) {\n var _this2 = this;\n\n return function (evtData) {\n if (_this2.realList !== null) {\n _this2[\"onDrag\" + evtName](evtData);\n }\n\n emit.call(_this2, evtName, evtData);\n };\n}\n\nfunction isTransitionName(name) {\n return [\"transition-group\", \"TransitionGroup\"].includes(name);\n}\n\nfunction vuedraggable_isTransition(slots) {\n if (!slots || slots.length !== 1) {\n return false;\n }\n\n var _slots = _slicedToArray(slots, 1),\n componentOptions = _slots[0].componentOptions;\n\n if (!componentOptions) {\n return false;\n }\n\n return isTransitionName(componentOptions.tag);\n}\n\nfunction getSlot(slot, scopedSlot, key) {\n return slot[key] || (scopedSlot[key] ? scopedSlot[key]() : undefined);\n}\n\nfunction computeChildrenAndOffsets(children, slot, scopedSlot) {\n var headerOffset = 0;\n var footerOffset = 0;\n var header = getSlot(slot, scopedSlot, \"header\");\n\n if (header) {\n headerOffset = header.length;\n children = children ? [].concat(_toConsumableArray(header), _toConsumableArray(children)) : _toConsumableArray(header);\n }\n\n var footer = getSlot(slot, scopedSlot, \"footer\");\n\n if (footer) {\n footerOffset = footer.length;\n children = children ? [].concat(_toConsumableArray(children), _toConsumableArray(footer)) : _toConsumableArray(footer);\n }\n\n return {\n children: children,\n headerOffset: headerOffset,\n footerOffset: footerOffset\n };\n}\n\nfunction getComponentAttributes($attrs, componentData) {\n var attributes = null;\n\n var update = function update(name, value) {\n attributes = buildAttribute(attributes, name, value);\n };\n\n var attrs = Object.keys($attrs).filter(function (key) {\n return key === \"id\" || key.startsWith(\"data-\");\n }).reduce(function (res, key) {\n res[key] = $attrs[key];\n return res;\n }, {});\n update(\"attrs\", attrs);\n\n if (!componentData) {\n return attributes;\n }\n\n var on = componentData.on,\n props = componentData.props,\n componentDataAttrs = componentData.attrs;\n update(\"on\", on);\n update(\"props\", props);\n Object.assign(attributes.attrs, componentDataAttrs);\n return attributes;\n}\n\nvar eventsListened = [\"Start\", \"Add\", \"Remove\", \"Update\", \"End\"];\nvar eventsToEmit = [\"Choose\", \"Unchoose\", \"Sort\", \"Filter\", \"Clone\"];\nvar readonlyProperties = [\"Move\"].concat(eventsListened, eventsToEmit).map(function (evt) {\n return \"on\" + evt;\n});\nvar draggingElement = null;\nvar props = {\n options: Object,\n list: {\n type: Array,\n required: false,\n default: null\n },\n value: {\n type: Array,\n required: false,\n default: null\n },\n noTransitionOnDrag: {\n type: Boolean,\n default: false\n },\n clone: {\n type: Function,\n default: function _default(original) {\n return original;\n }\n },\n element: {\n type: String,\n default: \"div\"\n },\n tag: {\n type: String,\n default: null\n },\n move: {\n type: Function,\n default: null\n },\n componentData: {\n type: Object,\n required: false,\n default: null\n }\n};\nvar draggableComponent = {\n name: \"draggable\",\n inheritAttrs: false,\n props: props,\n data: function data() {\n return {\n transitionMode: false,\n noneFunctionalComponentMode: false\n };\n },\n render: function render(h) {\n var slots = this.$slots.default;\n this.transitionMode = vuedraggable_isTransition(slots);\n\n var _computeChildrenAndOf = computeChildrenAndOffsets(slots, this.$slots, this.$scopedSlots),\n children = _computeChildrenAndOf.children,\n headerOffset = _computeChildrenAndOf.headerOffset,\n footerOffset = _computeChildrenAndOf.footerOffset;\n\n this.headerOffset = headerOffset;\n this.footerOffset = footerOffset;\n var attributes = getComponentAttributes(this.$attrs, this.componentData);\n return h(this.getTag(), attributes, children);\n },\n created: function created() {\n if (this.list !== null && this.value !== null) {\n helper[\"b\" /* console */].error(\"Value and list props are mutually exclusive! Please set one or another.\");\n }\n\n if (this.element !== \"div\") {\n helper[\"b\" /* console */].warn(\"Element props is deprecated please use tag props instead. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#element-props\");\n }\n\n if (this.options !== undefined) {\n helper[\"b\" /* console */].warn(\"Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props\");\n }\n },\n mounted: function mounted() {\n var _this3 = this;\n\n this.noneFunctionalComponentMode = this.getTag().toLowerCase() !== this.$el.nodeName.toLowerCase() && !this.getIsFunctional();\n\n if (this.noneFunctionalComponentMode && this.transitionMode) {\n throw new Error(\"Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: \".concat(this.getTag()));\n }\n\n var optionsAdded = {};\n eventsListened.forEach(function (elt) {\n optionsAdded[\"on\" + elt] = delegateAndEmit.call(_this3, elt);\n });\n eventsToEmit.forEach(function (elt) {\n optionsAdded[\"on\" + elt] = emit.bind(_this3, elt);\n });\n var attributes = Object.keys(this.$attrs).reduce(function (res, key) {\n res[Object(helper[\"a\" /* camelize */])(key)] = _this3.$attrs[key];\n return res;\n }, {});\n var options = Object.assign({}, this.options, attributes, optionsAdded, {\n onMove: function onMove(evt, originalEvent) {\n return _this3.onDragMove(evt, originalEvent);\n }\n });\n !(\"draggable\" in options) && (options.draggable = \">*\");\n this._sortable = new external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default.a(this.rootContainer, options);\n this.computeIndexes();\n },\n beforeDestroy: function beforeDestroy() {\n if (this._sortable !== undefined) this._sortable.destroy();\n },\n computed: {\n rootContainer: function rootContainer() {\n return this.transitionMode ? this.$el.children[0] : this.$el;\n },\n realList: function realList() {\n return this.list ? this.list : this.value;\n }\n },\n watch: {\n options: {\n handler: function handler(newOptionValue) {\n this.updateOptions(newOptionValue);\n },\n deep: true\n },\n $attrs: {\n handler: function handler(newOptionValue) {\n this.updateOptions(newOptionValue);\n },\n deep: true\n },\n realList: function realList() {\n this.computeIndexes();\n }\n },\n methods: {\n getIsFunctional: function getIsFunctional() {\n var fnOptions = this._vnode.fnOptions;\n return fnOptions && fnOptions.functional;\n },\n getTag: function getTag() {\n return this.tag || this.element;\n },\n updateOptions: function updateOptions(newOptionValue) {\n for (var property in newOptionValue) {\n var value = Object(helper[\"a\" /* camelize */])(property);\n\n if (readonlyProperties.indexOf(value) === -1) {\n this._sortable.option(value, newOptionValue[property]);\n }\n }\n },\n getChildrenNodes: function getChildrenNodes() {\n if (this.noneFunctionalComponentMode) {\n return this.$children[0].$slots.default;\n }\n\n var rawNodes = this.$slots.default;\n return this.transitionMode ? rawNodes[0].child.$slots.default : rawNodes;\n },\n computeIndexes: function computeIndexes() {\n var _this4 = this;\n\n this.$nextTick(function () {\n _this4.visibleIndexes = _computeIndexes(_this4.getChildrenNodes(), _this4.rootContainer.children, _this4.transitionMode, _this4.footerOffset);\n });\n },\n getUnderlyingVm: function getUnderlyingVm(htmlElt) {\n var index = computeVmIndex(this.getChildrenNodes() || [], htmlElt);\n\n if (index === -1) {\n //Edge case during move callback: related element might be\n //an element different from collection\n return null;\n }\n\n var element = this.realList[index];\n return {\n index: index,\n element: element\n };\n },\n getUnderlyingPotencialDraggableComponent: function getUnderlyingPotencialDraggableComponent(_ref) {\n var vue = _ref.__vue__;\n\n if (!vue || !vue.$options || !isTransitionName(vue.$options._componentTag)) {\n if (!(\"realList\" in vue) && vue.$children.length === 1 && \"realList\" in vue.$children[0]) return vue.$children[0];\n return vue;\n }\n\n return vue.$parent;\n },\n emitChanges: function emitChanges(evt) {\n var _this5 = this;\n\n this.$nextTick(function () {\n _this5.$emit(\"change\", evt);\n });\n },\n alterList: function alterList(onList) {\n if (this.list) {\n onList(this.list);\n return;\n }\n\n var newList = _toConsumableArray(this.value);\n\n onList(newList);\n this.$emit(\"input\", newList);\n },\n spliceList: function spliceList() {\n var _arguments = arguments;\n\n var spliceList = function spliceList(list) {\n return list.splice.apply(list, _toConsumableArray(_arguments));\n };\n\n this.alterList(spliceList);\n },\n updatePosition: function updatePosition(oldIndex, newIndex) {\n var updatePosition = function updatePosition(list) {\n return list.splice(newIndex, 0, list.splice(oldIndex, 1)[0]);\n };\n\n this.alterList(updatePosition);\n },\n getRelatedContextFromMoveEvent: function getRelatedContextFromMoveEvent(_ref2) {\n var to = _ref2.to,\n related = _ref2.related;\n var component = this.getUnderlyingPotencialDraggableComponent(to);\n\n if (!component) {\n return {\n component: component\n };\n }\n\n var list = component.realList;\n var context = {\n list: list,\n component: component\n };\n\n if (to !== related && list && component.getUnderlyingVm) {\n var destination = component.getUnderlyingVm(related);\n\n if (destination) {\n return Object.assign(destination, context);\n }\n }\n\n return context;\n },\n getVmIndex: function getVmIndex(domIndex) {\n var indexes = this.visibleIndexes;\n var numberIndexes = indexes.length;\n return domIndex > numberIndexes - 1 ? numberIndexes : indexes[domIndex];\n },\n getComponent: function getComponent() {\n return this.$slots.default[0].componentInstance;\n },\n resetTransitionData: function resetTransitionData(index) {\n if (!this.noTransitionOnDrag || !this.transitionMode) {\n return;\n }\n\n var nodes = this.getChildrenNodes();\n nodes[index].data = null;\n var transitionContainer = this.getComponent();\n transitionContainer.children = [];\n transitionContainer.kept = undefined;\n },\n onDragStart: function onDragStart(evt) {\n this.context = this.getUnderlyingVm(evt.item);\n evt.item._underlying_vm_ = this.clone(this.context.element);\n draggingElement = evt.item;\n },\n onDragAdd: function onDragAdd(evt) {\n var element = evt.item._underlying_vm_;\n\n if (element === undefined) {\n return;\n }\n\n Object(helper[\"d\" /* removeNode */])(evt.item);\n var newIndex = this.getVmIndex(evt.newIndex);\n this.spliceList(newIndex, 0, element);\n this.computeIndexes();\n var added = {\n element: element,\n newIndex: newIndex\n };\n this.emitChanges({\n added: added\n });\n },\n onDragRemove: function onDragRemove(evt) {\n Object(helper[\"c\" /* insertNodeAt */])(this.rootContainer, evt.item, evt.oldIndex);\n\n if (evt.pullMode === \"clone\") {\n Object(helper[\"d\" /* removeNode */])(evt.clone);\n return;\n }\n\n var oldIndex = this.context.index;\n this.spliceList(oldIndex, 1);\n var removed = {\n element: this.context.element,\n oldIndex: oldIndex\n };\n this.resetTransitionData(oldIndex);\n this.emitChanges({\n removed: removed\n });\n },\n onDragUpdate: function onDragUpdate(evt) {\n Object(helper[\"d\" /* removeNode */])(evt.item);\n Object(helper[\"c\" /* insertNodeAt */])(evt.from, evt.item, evt.oldIndex);\n var oldIndex = this.context.index;\n var newIndex = this.getVmIndex(evt.newIndex);\n this.updatePosition(oldIndex, newIndex);\n var moved = {\n element: this.context.element,\n oldIndex: oldIndex,\n newIndex: newIndex\n };\n this.emitChanges({\n moved: moved\n });\n },\n updateProperty: function updateProperty(evt, propertyName) {\n evt.hasOwnProperty(propertyName) && (evt[propertyName] += this.headerOffset);\n },\n computeFutureIndex: function computeFutureIndex(relatedContext, evt) {\n if (!relatedContext.element) {\n return 0;\n }\n\n var domChildren = _toConsumableArray(evt.to.children).filter(function (el) {\n return el.style[\"display\"] !== \"none\";\n });\n\n var currentDOMIndex = domChildren.indexOf(evt.related);\n var currentIndex = relatedContext.component.getVmIndex(currentDOMIndex);\n var draggedInList = domChildren.indexOf(draggingElement) !== -1;\n return draggedInList || !evt.willInsertAfter ? currentIndex : currentIndex + 1;\n },\n onDragMove: function onDragMove(evt, originalEvent) {\n var onMove = this.move;\n\n if (!onMove || !this.realList) {\n return true;\n }\n\n var relatedContext = this.getRelatedContextFromMoveEvent(evt);\n var draggedContext = this.context;\n var futureIndex = this.computeFutureIndex(relatedContext, evt);\n Object.assign(draggedContext, {\n futureIndex: futureIndex\n });\n var sendEvt = Object.assign({}, evt, {\n relatedContext: relatedContext,\n draggedContext: draggedContext\n });\n return onMove(sendEvt, originalEvent);\n },\n onDragEnd: function onDragEnd() {\n this.computeIndexes();\n draggingElement = null;\n }\n }\n};\n\nif (typeof window !== \"undefined\" && \"Vue\" in window) {\n window.Vue.component(\"draggable\", draggableComponent);\n}\n\n/* harmony default export */ var vuedraggable = (draggableComponent);\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js\n\n\n/* harmony default export */ var entry_lib = __webpack_exports__[\"default\"] = (vuedraggable);\n\n\n\n/***/ })\n\n/******/ })[\"default\"];\n});\n//# sourceMappingURL=vuedraggable.umd.js.map","import { Ref, ref, watch, WatchSource } from '@vue/composition-api'\nimport { AxiosResponse } from 'axios'\n\nexport function useService(\n getKey: WatchSource,\n fetcher: (...args: any) => Promise>\n) {\n const data = ref([]) as Ref\n const isLoading = ref(false)\n const error = ref(null)\n\n watch(getKey, getFn, {\n deep: true,\n immediate: true,\n })\n\n async function getFn() {\n try {\n isLoading.value = true\n const response = await fetcher()\n data.value = Array.isArray(response.data)\n ? response.data\n : [response.data]\n } catch (e) {\n error.value = e\n } finally {\n isLoading.value = false\n }\n }\n\n async function retry() {\n await getFn()\n }\n\n return {\n data,\n isLoading,\n error,\n retry,\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { api } from '../client'\nimport { serviceUrl } from '../utils'\nimport { PropertyGroupViewModel } from './property'\n\nconst controller = serviceUrl('group')\n\nfunction createGroupService(client: AxiosInstance) {\n return {\n get(params: GroupModel) {\n return client.get(controller.action('get'), {\n params,\n })\n },\n }\n}\n\nexport const groupService = createGroupService(api.base)\n\nexport interface GroupModel {\n languageId?: string\n isCompareListing?: boolean\n}\n","import { GroupModel, groupService } from '@/services/modules/group'\nimport { currentLanguage } from '@/utils/language'\nimport { computed, ComputedRef, isRef } from '@vue/composition-api'\nimport { useService } from './service'\n\nexport function useGroups(model?: ComputedRef | GroupModel) {\n const request = computed(() => ({\n languageId: currentLanguage.value.guid,\n ...(isRef(model) ? model.value : model),\n }))\n return useService(request, () => groupService.get(request.value))\n}\n","import mod from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyCreateUpdateForm.vue?vue&type=custom&index=0&blockType=i18n&lang=json\"; export default mod; export * from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyCreateUpdateForm.vue?vue&type=custom&index=0&blockType=i18n&lang=json\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ValidationObserver',{attrs:{\"slim\":true},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar handleSubmit = ref.handleSubmit;\nvar reset = ref.reset;\nreturn [_c('form',{ref:\"form\",class:[\n 'grid gap-6 sm:rounded-md sm:overflow-hidden px-4 py-5 sm:p-6 bg-white',\n _vm.isLoadingProperty ? 'animate-pulse h-64' : 'shadow ' ],attrs:{\"novalidate\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return handleSubmit(_vm.submit)},\"reset\":function($event){$event.preventDefault();return reset.apply(null, arguments)}}},[(_vm.fetchPropertyError)?_c('BaseBox',[_c('BaseBox',{staticClass:\"grid gap-8\"},[_c('BaseBox',{staticClass:\"grid gap-4\"},[_c('BaseAlert',{attrs:{\"tone\":\"caution\"}},[_c('BaseText',[_c('i18n',{attrs:{\"tag\":false,\"path\":\"fetchPropertyError.copy\"}})],1)],1)],1),_c('BaseBox',{staticClass:\"\\n flex flex-col\\n space-y-4\\n lg:flex-row lg:space-y-0 lg:space-x-4\\n \"},[_c('BaseLink',{attrs:{\"name\":\"PropertyList\",\"variant\":\"soft\",\"tone\":\"tertiary\"}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"fetchPropertyError.cta.list\"}})],1),_c('BaseButton',{attrs:{\"variant\":\"solid\",\"tone\":\"tertiary\"},on:{\"click\":_vm.fetchProperty}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"fetchPropertyError.cta.tryAgain\"}})],1)],1)],1)],1):(!_vm.isLoadingProperty)?[_c('BaseBox',[_c('BaseHeading',{staticClass:\"text-lg font-medium leading-6 text-gray-900\",attrs:{\"level\":2}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"section.basic.title\"}})],1),_c('BaseText',{staticClass:\"mt-1 text-sm text-gray-600\",attrs:{\"tag\":\"p\"}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"section.basic.copy\"}})],1)],1),_c('BaseBox',{staticClass:\"grid gap-6 md:grid-cols-2\"},[_c('ValidationProvider',{attrs:{\"name\":_vm.mlsPropertyIdLabel,\"rules\":{ required: true, min_value: 0 },\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.mlsPropertyIdLabel,\"description\":_vm.mlsPropertyIdDescription,\"description-id\":\"mlsPropertyId-description\",\"html-for\":\"mlsPropertyId\"}}),_c('BaseInputText',{attrs:{\"id\":\"mlsPropertyId\",\"type\":\"number\",\"min\":\"0\"},model:{value:(_vm.model.mlsPropertyId),callback:function ($$v) {_vm.$set(_vm.model, \"mlsPropertyId\", $$v)},expression:\"model.mlsPropertyId\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"mlsPropertyId-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)})],1),_c('BaseBox',{staticClass:\"grid gap-6 md:grid-cols-3\"},[_c('ValidationProvider',{attrs:{\"name\":_vm.categoryIdLabel,\"rules\":\"required\",\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.categoryIdLabel,\"html-for\":\"categoryId\"}}),_c('BaseSelect',{attrs:{\"id\":\"categoryId\",\"options\":_vm.categories,\"loading\":_vm.isLoadingCategories,\"show-labels\":false,\"track-by\":\"categoryId\",\"label\":\"title\"},model:{value:(_vm.category),callback:function ($$v) {_vm.category=$$v},expression:\"category\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"categoryId-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)}),_c('ValidationProvider',{attrs:{\"name\":_vm.typeIdLabel,\"rules\":\"required\",\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.typeIdLabel,\"html-for\":\"typeId\"}}),_c('BaseSelect',{attrs:{\"id\":\"typeId\",\"options\":_vm.types,\"loading\":_vm.isLoadingTypes,\"show-labels\":false,\"track-by\":\"typeId\",\"label\":\"title\"},model:{value:(_vm.type),callback:function ($$v) {_vm.type=$$v},expression:\"type\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"typeId-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)}),_c('ValidationProvider',{attrs:{\"name\":_vm.tagIdLabel,\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.tagIdLabel,\"html-for\":\"tagId\"}}),_c('BaseSelect',{attrs:{\"id\":\"tagId\",\"options\":_vm.tags,\"loading\":_vm.isLoadingTags,\"show-labels\":false,\"track-by\":\"tagId\",\"label\":\"title\"},model:{value:(_vm.tag),callback:function ($$v) {_vm.tag=$$v},expression:\"tag\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"tagId-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)})],1),_c('BaseBox',{staticClass:\"grid gap-6 md:grid-cols-2\"},_vm._l((_vm.model.propertyTextTableType),function(item){return _c('PropertyCreateUpdateSectionText',{key:item.languageId,attrs:{\"item\":item},on:{\"update\":_vm.onPropertyTextTableTypeUpdate}})}),1),_c('BaseBox',{staticClass:\"grid gap-6 md:grid-cols-3\"},[_c('ValidationProvider',{attrs:{\"name\":_vm.priceLabel,\"rules\":{ required: true, min_value: 0 },\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.priceLabel,\"tertiary-label\":_vm.priceAsCurrency,\"html-for\":\"price\"}}),_c('BaseInputText',{attrs:{\"id\":\"price\",\"type\":\"number\",\"min\":\"0\"},model:{value:(_vm.model.price),callback:function ($$v) {_vm.$set(_vm.model, \"price\", $$v)},expression:\"model.price\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"price-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)}),(_vm.isRental)?_c('ValidationProvider',{attrs:{\"name\":_vm.price2Label,\"rules\":{ required: true, min_value: 0 },\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.price2Label,\"tertiary-label\":_vm.price2AsCurrency,\"secondary-label\":_vm.optionalLabel,\"html-for\":\"price2\"}}),_c('BaseInputText',{attrs:{\"id\":\"price2\",\"type\":\"number\",\"min\":\"0\"},model:{value:(_vm.model.price2),callback:function ($$v) {_vm.$set(_vm.model, \"price2\", $$v)},expression:\"model.price2\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"price2-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)}):_vm._e(),_c('ValidationProvider',{attrs:{\"name\":_vm.currencyIdLabel,\"rules\":\"required\",\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.currencyIdLabel,\"html-for\":\"currencyId\"}}),_c('BaseSelect',{attrs:{\"id\":\"currencyId\",\"options\":_vm.currencies,\"loading\":_vm.isLoadingCurrencies,\"show-labels\":false,\"allow-empty\":false,\"track-by\":\"currencyId\",\"label\":\"code\"},model:{value:(_vm.currency),callback:function ($$v) {_vm.currency=$$v},expression:\"currency\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"currencyId-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)})],1),_c('BaseBox',{staticClass:\"grid gap-6 md:grid-cols-3\"},[(_vm.isRental)?_c('ValidationProvider',{attrs:{\"name\":_vm.cleaningFeeLabel,\"rules\":{ required: true, min_value: 0 },\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.cleaningFeeLabel,\"tertiary-label\":_vm.cleaningFeeAsCurrency,\"secondary-label\":_vm.optionalLabel,\"html-for\":\"cleaningFee\"}}),_c('BaseInputText',{attrs:{\"id\":\"cleaningFee\",\"type\":\"number\",\"min\":\"0\"},model:{value:(_vm.model.cleaningFee),callback:function ($$v) {_vm.$set(_vm.model, \"cleaningFee\", $$v)},expression:\"model.cleaningFee\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"cleaningFee-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)}):_vm._e()],1),_c('BaseBox',{staticClass:\"grid gap-6 md:grid-cols-6\"},[_c('ValidationProvider',{attrs:{\"name\":_vm.bedroomLabel,\"rules\":{ required: true, min_value: 0 },\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.bedroomLabel,\"html-for\":\"bedroom\"}}),_c('BaseInputText',{attrs:{\"id\":\"bedroom\",\"type\":\"number\",\"min\":\"0\",\"disabled\":_vm.isLandType},model:{value:(_vm.model.bedroom),callback:function ($$v) {_vm.$set(_vm.model, \"bedroom\", $$v)},expression:\"model.bedroom\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"bedroom-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)}),_c('ValidationProvider',{attrs:{\"name\":_vm.bathroomLabel,\"rules\":{ required: true, min_value: 0 },\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.bathroomLabel,\"html-for\":\"bathroom\"}}),_c('BaseInputText',{attrs:{\"id\":\"bathroom\",\"type\":\"number\",\"min\":\"0\",\"disabled\":_vm.isLandType},model:{value:(_vm.model.bathroom),callback:function ($$v) {_vm.$set(_vm.model, \"bathroom\", $$v)},expression:\"model.bathroom\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"bathroom-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)})],1),_c('BaseBox',{staticClass:\"grid gap-6 md:grid-cols-2\"},[_c('ValidationProvider',{attrs:{\"name\":_vm.agentIdLabel,\"rules\":\"required\",\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.agentIdLabel,\"html-for\":\"agentId\"}}),_c('BaseSelect',{attrs:{\"id\":\"agentId\",\"options\":_vm.agents,\"loading\":_vm.isLoadingAgents,\"show-labels\":false,\"track-by\":\"agentId\",\"label\":\"firstName\"},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(props){return [_c('BaseBox',{staticClass:\"flex space-x-4 items-center\"},[_c('BaseBox',{staticClass:\"rounded-full bg-gray-200 overflow-hidden\"},[_c('BaseBox',{staticClass:\"relative w-10 h-10\"},[_c('BaseImage',{staticClass:\"absolute w-full h-full object-cover\",attrs:{\"src\":props.option.image,\"alt\":props.option.firstName,\"loading\":\"lazy\",\"decoding\":\"async\"}})],1)],1),_c('BaseText',[_vm._v(\" \"+_vm._s(props.option.firstName)+\" \"+_vm._s(props.option.lastName)+\" - \"),_c('BaseSecondary',[_vm._v(\" \"+_vm._s(props.option.positionViewModel.title)+\" \")])],1)],1)]}},{key:\"option\",fn:function(props){return [_c('BaseBox',{staticClass:\"flex space-x-2 items-center\"},[_c('BaseBox',{staticClass:\"rounded-full bg-gray-200 overflow-hidden\"},[_c('BaseBox',{staticClass:\"relative w-20 h-20\"},[_c('BaseImage',{staticClass:\"absolute w-full h-full object-cover\",attrs:{\"src\":props.option.image,\"alt\":props.option.firstName,\"loading\":\"lazy\",\"decoding\":\"async\"}})],1)],1),_c('BaseBox',{staticClass:\"grid gap-1\"},[_c('BaseText',[_vm._v(\" \"+_vm._s(props.option.firstName)+\" \"+_vm._s(props.option.lastName)+\" \")]),_c('BaseText',{staticClass:\"text-sm opacity-60\"},[_vm._v(\" \"+_vm._s(props.option.positionViewModel.title)+\" \")])],1)],1)]}}],null,true),model:{value:(_vm.agent),callback:function ($$v) {_vm.agent=$$v},expression:\"agent\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"agentId-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)})],1),_c('BaseBox',{staticClass:\"hidden sm:block\",attrs:{\"aria-hidden\":\"true\"}},[_c('BaseBox',{staticClass:\"border-t border-gray-300\"})],1),_c('BaseBox',[_c('BaseHeading',{staticClass:\"text-lg font-medium leading-6 text-gray-900\",attrs:{\"level\":2}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"section.address.title\"}})],1),_c('BaseText',{staticClass:\"mt-1 text-sm text-gray-600\",attrs:{\"tag\":\"p\"}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"section.address.copy\"}})],1)],1),_c('BaseBox',{staticClass:\"grid gap-6 md:grid-cols-2\"},[_c('ValidationProvider',{attrs:{\"name\":_vm.addressNameLabel,\"rules\":\"required\",\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.addressNameLabel,\"html-for\":\"addressName\"}}),_c('BaseInputText',{attrs:{\"id\":\"addressName\",\"type\":\"text\"},model:{value:(_vm.model.addressName),callback:function ($$v) {_vm.$set(_vm.model, \"addressName\", $$v)},expression:\"model.addressName\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"addressName-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)})],1),_c('BaseBox',{staticClass:\"grid gap-6 md:grid-cols-2\"},[_c('ValidationProvider',{attrs:{\"name\":_vm.addressLineOneLabel,\"rules\":\"required\",\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.addressLineOneLabel,\"html-for\":\"addressLineOne\"}}),_c('BaseInputText',{attrs:{\"id\":\"addressLineOne\",\"type\":\"text\"},model:{value:(_vm.model.addressLineOne),callback:function ($$v) {_vm.$set(_vm.model, \"addressLineOne\", $$v)},expression:\"model.addressLineOne\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"addressLineOne-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)}),_c('ValidationProvider',{attrs:{\"name\":_vm.addressLineTwoLabel,\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.addressLineTwoLabel,\"secondary-label\":_vm.optionalLabel,\"html-for\":\"addressLineTwo\"}}),_c('BaseInputText',{attrs:{\"id\":\"addressLineTwo\",\"type\":\"text\"},model:{value:(_vm.model.addressLineTwo),callback:function ($$v) {_vm.$set(_vm.model, \"addressLineTwo\", $$v)},expression:\"model.addressLineTwo\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"addressLineTwo-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)})],1),_c('BaseBox',{staticClass:\"grid gap-6 md:grid-cols-2\"},[_c('ValidationProvider',{attrs:{\"name\":_vm.areaIdLabel,\"rules\":\"required\",\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.areaIdLabel,\"html-for\":\"areaId\"}}),_c('BaseSelect',{attrs:{\"id\":\"areaId\",\"options\":_vm.areas,\"loading\":_vm.isLoadingAreas,\"show-labels\":false,\"track-by\":\"areaId\",\"label\":\"areaName\"},model:{value:(_vm.area),callback:function ($$v) {_vm.area=$$v},expression:\"area\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"areaId-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)})],1),_c('BaseBox',{staticClass:\"grid gap-6 md:grid-cols-3\"},[_c('ValidationProvider',{attrs:{\"name\":_vm.countryNameLabel,\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.countryNameLabel,\"secondary-label\":_vm.readonlyLabel,\"html-for\":\"countryName\"}}),_c('BaseInputText',{attrs:{\"id\":\"countryName\",\"value\":_vm.area ? _vm.area.countryName : undefined,\"readonly\":\"\",\"type\":\"text\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"countryName-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)}),_c('ValidationProvider',{attrs:{\"name\":_vm.stateNameLabel,\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.stateNameLabel,\"secondary-label\":_vm.readonlyLabel,\"html-for\":\"stateName\"}}),_c('BaseInputText',{attrs:{\"id\":\"stateName\",\"value\":_vm.area ? _vm.area.stateName : undefined,\"readonly\":\"\",\"type\":\"text\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"stateName-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)}),_c('ValidationProvider',{attrs:{\"name\":_vm.cityNameLabel,\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.cityNameLabel,\"secondary-label\":_vm.readonlyLabel,\"html-for\":\"cityName\"}}),_c('BaseInputText',{attrs:{\"id\":\"cityName\",\"value\":_vm.area ? _vm.area.cityName : undefined,\"readonly\":\"\",\"type\":\"text\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"cityName-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)})],1),_c('BaseBox',{staticClass:\"grid gap-6 md:grid-cols-3\"},[_c('ValidationProvider',{attrs:{\"name\":_vm.addressPostalCodeLabel,\"rules\":\"required\",\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.addressPostalCodeLabel,\"html-for\":\"addressPostalCode\"}}),_c('BaseInputText',{attrs:{\"id\":\"addressPostalCode\",\"type\":\"text\"},model:{value:(_vm.model.addressPostalCode),callback:function ($$v) {_vm.$set(_vm.model, \"addressPostalCode\", $$v)},expression:\"model.addressPostalCode\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"addressPostalCode-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)})],1),_c('BaseBox',{staticClass:\"grid gap-6 md:grid-cols-3\"},[_c('ValidationProvider',{attrs:{\"name\":_vm.addressLatitudeLabel,\"rules\":{ required: true, between: { min: -90, max: 90 } },\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.addressLatitudeLabel,\"html-for\":\"addressLatitude\"}}),_c('BaseInputText',{attrs:{\"id\":\"addressLatitude\",\"type\":\"number\",\"min\":\"-90\",\"max\":\"90\"},model:{value:(_vm.model.addressLatitude),callback:function ($$v) {_vm.$set(_vm.model, \"addressLatitude\", $$v)},expression:\"model.addressLatitude\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"addressLatitude-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)}),_c('ValidationProvider',{attrs:{\"name\":_vm.addressLongitudeLabel,\"rules\":{ required: true, between: { min: -180, max: 180 } },\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.addressLongitudeLabel,\"html-for\":\"addressLongitude\"}}),_c('BaseInputText',{attrs:{\"id\":\"addressLongitude\",\"type\":\"number\",\"min\":\"-180\",\"max\":\"180\"},model:{value:(_vm.model.addressLongitude),callback:function ($$v) {_vm.$set(_vm.model, \"addressLongitude\", $$v)},expression:\"model.addressLongitude\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"addressLongitude-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)})],1),(_vm.isRental)?[_c('BaseBox',{staticClass:\"hidden sm:block\",attrs:{\"aria-hidden\":\"true\"}},[_c('BaseBox',{staticClass:\"border-t border-gray-300\"})],1),_c('BaseBox',{staticClass:\"\\n flex flex-col\\n space-y-2\\n lg:flex-row lg:space-y-0 lg:space-x-2\\n \"},[_c('BaseBox',{staticClass:\"lg:flex-1 lg:self-end\"},[_c('BaseHeading',{staticClass:\"text-lg font-medium leading-6 text-gray-900\",attrs:{\"level\":2}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"section.availability.title\"}})],1),_c('BaseText',{staticClass:\"mt-1 text-sm text-gray-600\",attrs:{\"tag\":\"p\"}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"section.availability.copy\"}})],1)],1),_c('BaseBox',[_c('BaseButton',{attrs:{\"variant\":\"soft\",\"tone\":\"neutral\"},on:{\"click\":_vm.clearAllDates}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"clearAllDates\"}})],1)],1)],1),_c('BaseBox',[_c('BaseDatePicker',{attrs:{\"value\":null,\"attributes\":[\n {\n highlight: {\n class: 'bg-tertiary',\n contentClass: 'text-tertiary-inverse',\n },\n dates: _vm.rentedDateRanges,\n } ],\"select-attribute\":{\n highlight: {\n class: '',\n contentClass: '',\n },\n },\"is-range\":\"\"},on:{\"input\":_vm.onRentedDateRangesUpdate}})],1)]:_vm._e(),_c('BaseBox',{staticClass:\"hidden sm:block\",attrs:{\"aria-hidden\":\"true\"}},[_c('BaseBox',{staticClass:\"border-t border-gray-300\"})],1),_c('BaseBox',[_c('BaseHeading',{staticClass:\"text-lg font-medium leading-6 text-gray-900\",attrs:{\"level\":2}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"section.details.title\"}})],1),_c('BaseText',{staticClass:\"mt-1 text-sm text-gray-600\",attrs:{\"tag\":\"p\"}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"section.details.copy\"}})],1)],1),_c('BaseBox',[_c('ValidationProvider',{attrs:{\"name\":_vm.detailValueTableTypeLabel,\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.detailValueTableTypeLabel,\"html-for\":\"detailValueTableType\"}}),_c('BaseSelect',{attrs:{\"id\":\"detailValueTableType\",\"options\":_vm.groups,\"loading\":_vm.isLoadingGroups,\"show-labels\":false,\"multiple\":true,\"group-select\":true,\"track-by\":\"detailId\",\"label\":\"propertyDetailTitle\",\"group-values\":\"detailList\",\"group-label\":\"title\"},model:{value:(_vm.details),callback:function ($$v) {_vm.details=$$v},expression:\"details\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"detailValueTableType-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)})],1),_vm._l((_vm.selectedGroups),function(selectedGroup){return _c('BaseBox',{key:selectedGroup.groupId,staticClass:\"grid gap-6 md:px-4\"},[_c('BaseBox',{staticClass:\"hidden sm:block\",attrs:{\"aria-hidden\":\"true\"}},[_c('BaseBox',{staticClass:\"border-t border-gray-300\"})],1),_c('BaseBox',{staticClass:\"grid gap-6\"},[_c('BaseBox',[_c('BaseHeading',{staticClass:\"text-lg font-medium leading-6 text-gray-900\",attrs:{\"level\":2}},[_vm._v(\" \"+_vm._s(selectedGroup.title)+\" \")]),_c('BaseText',{staticClass:\"mt-1 text-sm text-gray-600\",attrs:{\"tag\":\"p\"}},[_vm._v(\" \"+_vm._s(selectedGroup.description)+\" \")])],1),_vm._l((selectedGroup.details),function(detail){return _c('BaseBox',{key:detail.detailId},[_c('BaseBox',{staticClass:\"grid gap-6 md:grid-cols-2\"},_vm._l((detail.detailValueTableType),function(item){return _c('PropertyCreateUpdateSectionDetail',{key:item.languageId,attrs:{\"title\":detail.title,\"item\":item},on:{\"update\":_vm.onDetailTableTypeUpdate}})}),1)],1)})],2)],1)}),_c('BaseBox',{staticClass:\"hidden sm:block\",attrs:{\"aria-hidden\":\"true\"}},[_c('BaseBox',{staticClass:\"border-t border-gray-300\"})],1),_c('BaseBox',[_c('ValidationProvider',{attrs:{\"name\":_vm.virtualTourLabel,\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.virtualTourLabel,\"secondary-label\":_vm.optionalLabel,\"description\":_vm.virtualTourDescription,\"description-id\":\"virtualTour-description\",\"html-for\":\"virtualTour\"}}),_c('BaseInputText',{attrs:{\"id\":\"virtualTour\",\"type\":\"text\"},model:{value:(_vm.model.virtualTour),callback:function ($$v) {_vm.$set(_vm.model, \"virtualTour\", $$v)},expression:\"model.virtualTour\"}}),_c('BaseFieldMessage',{attrs:{\"id\":\"virtualTour-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)})],1),_c('BaseBox',{staticClass:\"hidden sm:block\",attrs:{\"aria-hidden\":\"true\"}},[_c('BaseBox',{staticClass:\"border-t border-gray-300\"})],1),_c('BaseBox',[_c('BaseHeading',{staticClass:\"text-lg font-medium leading-6 text-gray-900\",attrs:{\"level\":2}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"section.boost.title\"}})],1),_c('BaseText',{staticClass:\"mt-1 text-sm text-gray-600\",attrs:{\"tag\":\"p\"}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"section.boost.copy\"}})],1)],1),_c('BaseBox',{staticClass:\"grid gap-6 md:grid-cols-3\"},[_c('ValidationProvider',{attrs:{\"name\":_vm.isRecommendationLabel,\"rules\":\"required\",\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseBox',{staticClass:\"flex space-x-2 items-center\"},[_c('BaseInputCheckbox',{attrs:{\"id\":\"isRecommendation\"},model:{value:(_vm.model.isRecommendation),callback:function ($$v) {_vm.$set(_vm.model, \"isRecommendation\", $$v)},expression:\"model.isRecommendation\"}}),_c('BaseFieldLabel',{attrs:{\"label\":_vm.isRecommendationLabel,\"html-for\":\"isRecommendation\"}})],1),_c('BaseFieldMessage',{attrs:{\"id\":\"isRecommendation-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)}),_c('ValidationProvider',{attrs:{\"name\":_vm.isFeatureListingLabel,\"rules\":\"required\",\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseBox',{staticClass:\"flex space-x-2 items-center\"},[_c('BaseInputCheckbox',{attrs:{\"id\":\"isFeatureListing\"},model:{value:(_vm.model.isFeatureListing),callback:function ($$v) {_vm.$set(_vm.model, \"isFeatureListing\", $$v)},expression:\"model.isFeatureListing\"}}),_c('BaseFieldLabel',{attrs:{\"label\":_vm.isFeatureListingLabel,\"html-for\":\"isFeatureListing\"}})],1),_c('BaseFieldMessage',{attrs:{\"id\":\"isFeatureListing-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)})],1),_c('BaseBox',{staticClass:\"hidden sm:block\",attrs:{\"aria-hidden\":\"true\"}},[_c('BaseBox',{staticClass:\"border-t border-gray-300\"})],1),_c('BaseBox',[_c('BaseHeading',{staticClass:\"text-lg font-medium leading-6 text-gray-900\",attrs:{\"level\":2}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"section.status.title\"}})],1),_c('BaseText',{staticClass:\"mt-1 text-sm text-gray-600\",attrs:{\"tag\":\"p\"}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"section.status.copy\"}})],1)],1),_c('BaseBox',{staticClass:\"grid gap-6 md:grid-cols-3\"},[_c('ValidationProvider',{attrs:{\"name\":_vm.isDeletedLabel,\"rules\":\"required\",\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('BaseBox',{staticClass:\"flex space-x-2 items-center\"},[_c('BaseInputCheckbox',{attrs:{\"id\":\"isDeleted\",\"model-value\":!_vm.model.isDeleted},on:{\"update\":function($event){_vm.model.isDeleted = !$event}}}),_c('BaseFieldLabel',{attrs:{\"label\":_vm.isDeletedLabel,\"html-for\":\"isDeleted\"},scopedSlots:_vm._u([{key:\"secondary-label\",fn:function(){return [_c('BaseIcon',{attrs:{\"name\":_vm.model.isDeleted ? 'times-circle' : 'check-circle',\"tone\":_vm.model.isDeleted ? 'neutral' : 'positive'}})]},proxy:true}],null,true)})],1),_c('BaseFieldMessage',{attrs:{\"id\":\"isDeleted-message\",\"message\":errors[0],\"tone\":\"critical\"}})]}}],null,true)})],1),_c('BaseBox',{staticClass:\"hidden sm:block\",attrs:{\"aria-hidden\":\"true\"}},[_c('BaseBox',{staticClass:\"border-t border-gray-300\"})],1),_c('BaseBox',{staticClass:\"grid gap-4\"},[_c('BaseBox',[_c('BaseHeading',{staticClass:\"text-lg font-medium leading-6 text-gray-900\",attrs:{\"level\":2}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"section.images.title\"}})],1),_c('BaseText',{staticClass:\"mt-1 text-sm text-gray-600\",attrs:{\"tag\":\"p\"}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"section.images.copy\"}})],1)],1),(_vm.fileTableTypeCount === 0)?_c('BaseAlert',{attrs:{\"tone\":\"caution\"}},[_c('BaseText',[_c('i18n',{attrs:{\"tag\":false,\"path\":\"imagesRequiredError\"}})],1)],1):_vm._e()],1),_c('BaseBox',{staticClass:\"grid gap-6\"},[_c('BaseBox',{class:[\n 'flex justify-center px-6 pt-5 pb-6 border-2 border-dashed rounded-md',\n _vm.isDragAreaActive ? 'border-tertiary-300' : 'border-gray-300' ],nativeOn:{\"dragover\":function($event){$event.preventDefault();_vm.isDragAreaActive = true},\"dragleave\":function($event){$event.preventDefault();_vm.isDragAreaActive = false},\"drop\":function($event){$event.preventDefault();return _vm.dropImages.apply(null, arguments)}}},[_c('BaseBox',{staticClass:\"space-y-1 text-center\"},[_c('svg',{staticClass:\"mx-auto h-12 w-12 text-gray-400\",attrs:{\"stroke\":\"currentColor\",\"fill\":\"none\",\"viewBox\":\"0 0 48 48\",\"aria-hidden\":\"true\"}},[_c('path',{attrs:{\"d\":\"M28 8H12a4 4 0 00-4 4v20m32-12v8m0 0v8a4 4 0 01-4 4H12a4 4 0 01-4-4v-4m32-4l-3.172-3.172a4 4 0 00-5.656 0L28 28M8 32l9.172-9.172a4 4 0 015.656 0L28 28m0 0l4 4m4-24h8m-4-4v8m-12 4h.02\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}})]),_c('BaseBox',{staticClass:\"flex text-sm text-gray-600\"},[_c('BaseBox',{staticClass:\"\\n relative\\n cursor-pointer\\n bg-white\\n rounded-md\\n font-medium\\n text-tertiary-600\\n hover:text-tertiary-500\\n focus-within:outline-none\\n focus-within:ring-2\\n focus-within:ring-offset-2\\n focus-within:ring-tertiary-500\\n \",attrs:{\"tag\":\"label\",\"for\":\"file-upload\"}},[_c('BaseText',[_c('i18n',{attrs:{\"tag\":false,\"path\":\"imagesCta\"}})],1),_c('BaseInputFile',{staticClass:\"sr-only\",attrs:{\"id\":\"file-upload\",\"accept\":_vm.fileAccept,\"name\":\"file-upload\",\"multiple\":\"\",\"clear-on-select\":\"\"},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}})],1),_c('BaseText',{staticClass:\"pl-1\",attrs:{\"tag\":\"p\"}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"imagesCtaTwo\"}})],1)],1),_c('BaseText',{staticClass:\"text-xs text-gray-500\",attrs:{\"tag\":\"p\"}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"imagesAccept\"}})],1)],1)],1),(_vm.rejectedFilesCount > 0)?_c('BaseBox',{staticClass:\"grid gap-2\"},[_c('BaseBox',{staticClass:\"\\n flex flex-col\\n space-y-2\\n lg:flex-row lg:space-y-0 lg:space-x-2\\n \"},[_c('BaseBox',{staticClass:\"lg:flex-1 lg:self-end\"},[_c('BaseText',[_c('i18n',{attrs:{\"tag\":false,\"path\":\"rejectedFiles\"},scopedSlots:_vm._u([{key:\"count\",fn:function(){return [_vm._v(\" (\"+_vm._s(_vm.rejectedFilesCount)+\") \")]},proxy:true}],null,true)})],1)],1),_c('BaseBox',[_c('BaseButton',{attrs:{\"variant\":\"soft\",\"tone\":\"neutral\"},on:{\"click\":_vm.clearRejectedFiles}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"clearRejectedFiles\"}})],1)],1)],1),_c('BaseBox',{staticClass:\"rounded-lg border border-gray-300 p-4\"},[_c('BaseBox',{staticClass:\"\\n max-h-96\\n overflow-y-auto\\n grid\\n gap-6\\n lg:grid-cols-2\\n items-start\\n \"},_vm._l((_vm.rejectedFiles),function(ref,index){\n var file = ref.file;\n var errorKey = ref.errorKey;\nreturn _c('BaseAlert',{key:((file.name) + \"-\" + index),attrs:{\"tone\":\"caution\",\"dismissable\":\"\"},on:{\"close\":function($event){return _vm.removeRejectedFile(index)}}},[_c('BaseBox',{staticClass:\"grid gap-1\"},[_c('BaseBox',{staticClass:\"flex space-x-2 items-center\"},[_c('BaseText',[_vm._v(\" \"+_vm._s(file.name)+\" \")]),_c('BaseText',{staticClass:\"text-xs text-gray-500\"},[_vm._v(\" (\"+_vm._s(_vm.getDisplaySize(file.size, true))+\") \")])],1),_c('BaseText',[_c('i18n',{attrs:{\"tag\":false,\"path\":errorKey}})],1)],1)],1)}),1)],1)],1):_vm._e(),(_vm.fileTableTypeCount > 0)?_c('BaseBox',{staticClass:\"grid gap-2\"},[_c('BaseBox',{staticClass:\"\\n flex flex-col\\n space-y-2\\n lg:flex-row lg:space-y-0 lg:space-x-2\\n \"},[_c('BaseBox',{staticClass:\"lg:flex-1 lg:self-end\"},[_c('BaseText',[_c('i18n',{attrs:{\"tag\":false,\"path\":\"acceptedImages\"},scopedSlots:_vm._u([{key:\"count\",fn:function(){return [_vm._v(\" (\"+_vm._s(_vm.fileTableTypeCount)+\") \")]},proxy:true}],null,true)})],1)],1),_c('BaseBox',[_c('BaseButton',{attrs:{\"variant\":\"soft\",\"tone\":\"neutral\"},on:{\"click\":_vm.removeAllImages}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"removeAllImages\"}})],1)],1)],1),_c('BaseBox',{staticClass:\"rounded-lg border border-gray-300 p-4\"},[_c('Draggable',{staticClass:\"\\n max-h-96\\n overflow-y-auto\\n grid\\n gap-6\\n grid-cols-2\\n lg:grid-cols-4\\n xl:grid-cols-5\\n items-start\\n \",attrs:{\"list\":_vm.model.fileTableType,\"ghost-class\":\"opacity-50\",\"handle\":\".handle\"},on:{\"end\":_vm.updateImagesDisplayOrder}},_vm._l((_vm.model.fileTableType),function(file,index){return _c('BaseBox',{key:((file.name) + \"-\" + index),staticClass:\"flex space-x-2 rounded-lg border border-gray-200 p-2\"},[_c('BaseBox',{staticClass:\"flex flex-col space-y-2\"},[_c('BaseBadge',{attrs:{\"tone\":\"neutral\",\"variant\":\"soft\"}},[_vm._v(\" #\"+_vm._s(file.displayOrder)+\" \")]),_c('BaseBox',{staticClass:\"\\n handle\\n cursor-move\\n flex-1\\n grid\\n items-center\\n p-4\\n bg-white\\n border border-gray-200\\n rounded-lg\\n \"},[_c('BaseIcon',{attrs:{\"name\":\"grip-vertical\"}})],1)],1),_c('BaseBox',{staticClass:\"flex-1 grid gap-2\"},[_c('BaseBox',{staticClass:\"\\n relative\\n bg-gray-200\\n aspect-w-16 aspect-h-9\\n rounded-lg\\n overflow-hidden\\n \"},[_c('BaseImage',{staticClass:\"absolute w-full h-full object-cover\",attrs:{\"src\":file.path\n ? ((file.path) + \"/\" + (file.name))\n : (\"data:image/\" + (file.extension === 'jpg'\n ? 'jpeg'\n : file.extension) + \";base64,\" + (file.dataUrl)),\"size\":file.path ? 'sm' : undefined,\"alt\":\"\",\"loading\":\"lazy\",\"decoding\":\"async\"}})],1),_c('BaseButton',{attrs:{\"variant\":\"soft\",\"tone\":\"neutral\"},on:{\"click\":function($event){return _vm.removeImage(index)}}},[_c('i18n',{attrs:{\"tag\":false,\"path\":\"remove\"}})],1)],1)],1)}),1)],1)],1):_vm._e()],1),_c('BaseBox',{staticClass:\"hidden sm:block\",attrs:{\"aria-hidden\":\"true\"}},[_c('BaseBox',{staticClass:\"border-t border-gray-300\"})],1),_c('BaseBox',{staticClass:\"text-right\"},[_c('BaseButton',{attrs:{\"loading\":_vm.isSubmitting,\"tone\":\"tertiary\",\"type\":\"submit\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('i18n',{attrs:{\"tag\":false,\"path\":_vm.mode === 'update' ? 'submitUpdate' : 'submitCreate'}})]},proxy:true},{key:\"loading-text\",fn:function(){return [_c('i18n',{attrs:{\"tag\":false,\"path\":_vm.mode === 'update'\n ? 'submitUpdateButtonLoading'\n : 'submitCreateButtonLoading'}})]},proxy:true}],null,true)})],1)]:_vm._e()],2)]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseBox',{staticClass:\"grid gap-6\"},[_c('ValidationProvider',{attrs:{\"name\":_vm.valueLabel,\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.valueLabel,\"html-for\":_vm.valueId},scopedSlots:_vm._u([{key:\"secondary-label\",fn:function(){return [_c('BaseIcon',{attrs:{\"name\":!_vm.model.value ? 'check-circle' : 'align-justify',\"tone\":!_vm.model.value ? 'positive' : 'neutral'}})]},proxy:true}],null,true)}),_c('BaseInputText',{attrs:{\"id\":_vm.valueId,\"type\":\"text\"},model:{value:(_vm.model.value),callback:function ($$v) {_vm.$set(_vm.model, \"value\", $$v)},expression:\"model.value\"}}),_c('BaseFieldMessage',{attrs:{\"id\":(_vm.valueId + \"-message\"),\"message\":errors[0],\"tone\":\"critical\"}})]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { DetailValueTableType } from '@/services/modules/property'\nimport i18n from '@/setup/i18n'\nimport { languages } from '@/utils/language'\nimport { ValidationProvider } from 'vee-validate'\nimport {\n computed,\n defineComponent,\n PropType,\n reactive,\n watch,\n} from '@vue/composition-api'\n\nexport default defineComponent({\n name: 'PropertyCreateUpdateSectionDetail',\n\n components: {\n ValidationProvider,\n },\n\n props: {\n title: {\n type: String,\n required: true,\n },\n\n item: {\n type: Object as PropType,\n required: true,\n },\n },\n\n emits: {\n update: null,\n },\n\n setup(props, context) {\n const model = reactive({ ...props.item })\n\n watch(\n () => model,\n (newValue) => {\n context.emit('update', newValue)\n },\n {\n deep: true,\n }\n )\n\n const locale = computed(\n () =>\n Object.values(languages).find(\n (language) => language.guid === props.item.languageId\n )?.locale\n )\n\n const valueLabel = computed(\n () =>\n i18n.t('detailValueTableType.value', {\n title: props.title,\n locale: locale.value,\n }) as string\n )\n const valueId = computed(() => `value-${props.item.languageId}`)\n\n return {\n model,\n valueLabel,\n valueId,\n }\n },\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyCreateUpdateSectionDetail.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyCreateUpdateSectionDetail.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PropertyCreateUpdateSectionDetail.vue?vue&type=template&id=6f0be8db&\"\nimport script from \"./PropertyCreateUpdateSectionDetail.vue?vue&type=script&lang=ts&\"\nexport * from \"./PropertyCreateUpdateSectionDetail.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('BaseBox',{staticClass:\"grid gap-6\"},[_c('ValidationProvider',{attrs:{\"name\":_vm.titleLabel,\"rules\":\"required\",\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.titleLabel,\"html-for\":_vm.titleId}}),_c('BaseInputText',{attrs:{\"id\":_vm.titleId,\"type\":\"text\"},model:{value:(_vm.model.title),callback:function ($$v) {_vm.$set(_vm.model, \"title\", $$v)},expression:\"model.title\"}}),_c('BaseFieldMessage',{attrs:{\"id\":(_vm.titleId + \"-message\"),\"message\":errors[0],\"tone\":\"critical\"}})]}}])}),_c('ValidationProvider',{attrs:{\"name\":_vm.descriptionLabel,\"rules\":\"required|min_trimmed:140\",\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('BaseFieldLabel',{attrs:{\"label\":_vm.descriptionLabel,\"description\":_vm.descriptionDescription,\"description-id\":(_vm.descriptionId + \"-description\"),\"html-for\":_vm.descriptionId}}),_c('BaseTextarea',{attrs:{\"id\":_vm.descriptionId},model:{value:(_vm.model.description),callback:function ($$v) {_vm.$set(_vm.model, \"description\", $$v)},expression:\"model.description\"}}),_c('BaseFieldMessage',{attrs:{\"id\":(_vm.descriptionId + \"-message\"),\"message\":errors[0],\"tone\":\"critical\"}})]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { PropertyTextTableType } from '@/services/modules/property'\nimport i18n from '@/setup/i18n'\nimport { languages } from '@/utils/language'\nimport { ValidationProvider } from 'vee-validate'\nimport {\n computed,\n defineComponent,\n PropType,\n reactive,\n watch,\n} from '@vue/composition-api'\n\nexport default defineComponent({\n name: 'PropertyCreateUpdateSectionText',\n\n components: {\n ValidationProvider,\n },\n\n props: {\n item: {\n type: Object as PropType,\n required: true,\n },\n },\n\n emits: {\n update: null,\n },\n\n setup(props, context) {\n const model = reactive({ ...props.item })\n\n watch(\n () => model,\n (newValue) => {\n context.emit('update', newValue)\n },\n {\n deep: true,\n }\n )\n\n const locale = computed(\n () =>\n Object.values(languages).find(\n (language) => language.guid === props.item.languageId\n )?.locale\n )\n\n const titleLabel = computed(\n () =>\n i18n.t('propertyTextTableType.title', {\n locale: locale.value,\n }) as string\n )\n const titleId = computed(() => `title-${props.item.languageId}`)\n\n const descriptionLabel = computed(\n () =>\n i18n.t('propertyTextTableType.description', {\n locale: locale.value,\n }) as string\n )\n const descriptionId = computed(() => `description-${props.item.languageId}`)\n const descriptionDescription = computed(\n () => i18n.t('propertyTextTableType.descriptionDescription') as string\n )\n\n return {\n model,\n titleLabel,\n titleId,\n descriptionLabel,\n descriptionId,\n descriptionDescription,\n }\n },\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyCreateUpdateSectionText.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyCreateUpdateSectionText.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PropertyCreateUpdateSectionText.vue?vue&type=template&id=11a43194&\"\nimport script from \"./PropertyCreateUpdateSectionText.vue?vue&type=script&lang=ts&\"\nexport * from \"./PropertyCreateUpdateSectionText.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { AxiosInstance } from 'axios'\nimport { api } from '../client'\nimport { serviceUrl } from '../utils'\nimport { ToneViewModel } from './property'\n\nconst controller = serviceUrl('category')\n\nfunction createAgentService(client: AxiosInstance) {\n return {\n get(params: CategoryModel) {\n return client.get(controller.action('get'), {\n params,\n })\n },\n }\n}\n\nexport const categoryService = createAgentService(api.base)\n\nexport interface CategoryModel {\n languageId?: string\n}\n\nexport interface CategoryViewModel {\n categoryId: string\n categoryKey: number\n name: string\n title: string\n description: string\n displayOrder: number\n toneViewModel: ToneViewModel\n}\n","import { CategoryModel, categoryService } from '@/services/modules/category'\nimport { currentLanguage } from '@/utils/language'\nimport { computed } from '@vue/composition-api'\nimport { useService } from './service'\n\nexport function useCategories(model?: CategoryModel) {\n const request = computed(() => ({\n languageId: currentLanguage.value.guid,\n ...model,\n }))\n\n return useService(request, () => categoryService.get(request.value))\n}\n","import { AxiosInstance } from 'axios'\nimport { api } from '../client'\nimport { serviceUrl } from '../utils'\nimport { ToneViewModel } from './property'\n\nconst controller = serviceUrl('tag')\n\nfunction createTagService(client: AxiosInstance) {\n return {\n get(params: TagModel) {\n return client.get(controller.action('get'), {\n params,\n })\n },\n }\n}\n\nexport const tagService = createTagService(api.base)\n\nexport interface TagModel {\n languageId?: string\n searchBy?: string\n isDeleted?: boolean\n}\n\nexport interface TagViewModel {\n tagId: string\n tagKey: number\n name: string\n title: string\n description: string\n toneViewModel: ToneViewModel\n}\n","import { TagModel, tagService } from '@/services/modules/tag'\nimport { currentLanguage } from '@/utils/language'\nimport { computed, ComputedRef, isRef } from '@vue/composition-api'\nimport { useService } from './service'\n\nexport function useTags(model?: ComputedRef | TagModel) {\n const request = computed(() => ({\n languageId: currentLanguage.value.guid,\n ...(isRef(model) ? model.value : model),\n }))\n return useService(request, () => tagService.get(request.value))\n}\n","export function toBase64(file: File): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.readAsDataURL(file)\n reader.onload = () => {\n if (typeof reader.result !== 'string') {\n reject(new Error('Invalid result'))\n return\n }\n resolve(reader.result)\n }\n reader.onerror = (error) => reject(error)\n })\n}\n\nexport function getNameWithoutExtension(fileName: string): string {\n return fileName.replace(/\\.[^/.]+$/, '')\n}\n\nexport function getExtension(fileName: string): string | undefined {\n return fileName.split('.').pop()\n}\n\n/**\n * Format bytes as human-readable text.\n *\n * @param bytes Number of bytes.\n * @param si True to use metric (SI) units, aka powers of 1000. False to use\n * binary (IEC), aka powers of 1024.\n * @param dp Number of decimal places to display.\n *\n * @return Formatted string.\n */\nexport function getDisplaySize(bytes: number, si = false, dp = 1) {\n const thresh = si ? 1000 : 1024\n\n if (Math.abs(bytes) < thresh) {\n return bytes + ' B'\n }\n\n const units = si\n ? ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n : ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']\n let u = -1\n const r = 10 ** dp\n\n do {\n bytes /= thresh\n ++u\n } while (\n Math.round(Math.abs(bytes) * r) / r >= thresh &&\n u < units.length - 1\n )\n\n return bytes.toFixed(dp) + ' ' + units[u]\n}\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n */\n\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\n\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addHours from \"../addHours/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * const result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\n\nexport default function subHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addHours(dirtyDate, -amount);\n}","import { AxiosInstance } from 'axios'\nimport { api } from '../client'\nimport { serviceUrl } from '../utils'\n\nconst controller = serviceUrl('currency')\n\nfunction createCurrencyService(client: AxiosInstance) {\n return {\n get(params?: CurrencyModel) {\n return client.get(controller.action('get'), {\n params,\n })\n },\n }\n}\n\nexport const currencyService = createCurrencyService(api.base)\n\nexport interface CurrencyModel {\n currencyKey?: number\n}\n\nexport interface CurrencyViewModel {\n currencyId: string\n currencyKey: number\n name: string\n code: string\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport PropertyCreateUpdateSectionDetail from '@/components/PropertyCreateUpdateSectionDetail.vue'\nimport PropertyCreateUpdateSectionText from '@/components/PropertyCreateUpdateSectionText.vue'\nimport {\n DetailValueTableType,\n PropertyCategoryId,\n PropertyDetailViewModel,\n PropertyInsertModel,\n PropertyUpdateModel,\n propertyService,\n PropertyTextTableType,\n FileTableType,\n} from '@/services/modules/property'\nimport { CategoryViewModel } from '@/services/modules/category'\nimport { TagViewModel } from '@/services/modules/tag'\nimport { TypeViewModel } from '@/services/modules/type'\nimport { AgentViewModel } from '@/services/modules/agent'\nimport { AreaGetViewModel } from '@/services/modules/area'\nimport { useCurrency } from '@/composition/currency'\nimport { useCategories } from '@/composition/categories'\nimport { useTags } from '@/composition/tags'\nimport { useTypes } from '@/composition/types'\nimport { useAgents } from '@/composition/agents'\nimport { useAreas } from '@/composition/areas'\nimport { useGroups } from '@/composition/groups'\nimport { languages } from '@/utils/language'\nimport {\n getDisplaySize,\n getExtension,\n getNameWithoutExtension,\n toBase64,\n} from '@/utils/file'\nimport communique from '@/notification'\nimport {\n VCalendarDateRange,\n VCalendarDateRangeInputEvent,\n} from '@/setup/v-calendar'\nimport i18n from '@/setup/i18n'\nimport router from '@/router'\nimport { isSameDay, parseISO, subHours } from 'date-fns'\nimport Draggable from 'vuedraggable'\nimport { ValidationObserver, ValidationProvider } from 'vee-validate'\nimport {\n computed,\n defineComponent,\n onBeforeMount,\n reactive,\n ref,\n watch,\n} from '@vue/composition-api'\nimport { CurrencyViewModel, currencyService } from '@/services/modules/currency'\n\ninterface SelectDetail {\n detailId: string\n title: string\n detailValueTableType: DetailValueTableType[]\n}\n\ninterface SelectedGroup {\n groupId: string\n title: string\n description: string\n details: SelectDetail[]\n}\n\ninterface RejectedFile {\n file: File\n errorKey: 'fileSizeError' | 'fileTypeError'\n}\n\nexport default defineComponent({\n name: 'PropertyCreateUpdateForm',\n\n components: {\n PropertyCreateUpdateSectionDetail,\n PropertyCreateUpdateSectionText,\n Draggable,\n ValidationObserver,\n ValidationProvider,\n },\n\n props: {\n propertyKey: {\n type: Number,\n default: 0,\n },\n },\n\n setup(props) {\n const appLanguages = Object.values(languages)\n\n const mode = ref(props.propertyKey ? 'update' : 'create')\n\n const isLoadingProperty = ref(false)\n\n const fetchPropertyError = ref(null)\n\n const form = ref(null)\n\n const isSubmitting = ref(false)\n\n const isDragAreaActive = ref(false)\n\n const isLandType = ref(false)\n\n const model: PropertyInsertModel | PropertyUpdateModel =\n mode.value === 'update'\n ? reactive({\n propertyId: '',\n areaId: '',\n agentId: '',\n typeId: '',\n categoryId: '',\n tagId: '',\n currencyId: '',\n addressId: '',\n addressName: '',\n addressLineOne: '',\n addressLineTwo: '',\n addressPostalCode: '',\n addressLatitude: '',\n addressLongitude: '',\n mlsPropertyId: '',\n price: 0,\n price2: 0,\n cleaningFee: 0,\n bathroom: 0,\n bedroom: 0,\n isRecommendation: false,\n isFeatureListing: false,\n virtualTour: '',\n displayOrder: 0,\n detailValueTableType: [],\n propertyTextTableType: [],\n calendarTableType: [],\n fileTableType: [],\n fileListToDelete: [],\n })\n : reactive({\n areaId: '',\n agentId: '',\n typeId: '',\n categoryId: '',\n tagId: '',\n currencyId: '',\n addressName: '',\n addressLineOne: '',\n addressLineTwo: '',\n addressPostalCode: '',\n addressLatitude: '',\n addressLongitude: '',\n mlsPropertyId: '',\n price: 0,\n price2: 0,\n cleaningFee: 0,\n bathroom: 0,\n bedroom: 0,\n isRecommendation: false,\n isFeatureListing: false,\n isDeleted: false,\n virtualTour: '',\n displayOrder: 0,\n detailValueTableType: [],\n propertyTextTableType: appLanguages.map(\n (language) => ({\n propertyId: '00000000-0000-0000-0000-000000000000',\n languageId: language.guid,\n title: '',\n description: '',\n })\n ),\n calendarTableType: [],\n fileTableType: [],\n })\n\n watch(\n () => model.categoryId,\n (newVal) => {\n if (newVal === PropertyCategoryId.ForSale) {\n if (model.price2) {\n model.price2 = 0\n }\n if (model.cleaningFee) {\n model.cleaningFee = 0\n }\n if (model.calendarTableType.length > 0) {\n clearAllDates()\n }\n }\n }\n )\n\n onBeforeMount(() => {\n if (mode.value === 'update') {\n fetchProperty()\n }\n })\n\n const isLoadingCurrencies = ref(false)\n const currencies = ref([])\n\n async function fetchCurrencies() {\n try {\n isLoadingCurrencies.value = true\n const { data } = await currencyService.get()\n currencies.value = data\n } catch (error) {\n currencies.value = []\n } finally {\n isLoadingCurrencies.value = false\n }\n }\n\n fetchCurrencies().then(() => {\n if (props.propertyKey) return\n const defaultCurrency = currencies.value.find(\n (currency) => currency.code === 'USD'\n )\n\n if (!defaultCurrency) return\n\n model.currencyId = defaultCurrency.currencyId\n })\n\n const currency = computed({\n get: () => {\n return currencies.value.find(\n (currency) => currency.currencyId === model.currencyId\n )\n },\n set: (newValue) => {\n model.currencyId = newValue?.currencyId\n },\n })\n\n const rentedDateRanges = computed(() =>\n model.calendarTableType.map((item) => ({\n start: item.startingDate,\n end: item.endingDate,\n }))\n )\n\n function onRentedDateRangesUpdate(range: VCalendarDateRangeInputEvent) {\n const idx = model.calendarTableType.findIndex(\n (item) =>\n isSameDay(item.startingDate, range.start) &&\n isSameDay(item.endingDate, range.end)\n )\n if (idx !== -1) {\n model.calendarTableType.splice(idx, 1)\n } else {\n model.calendarTableType.push({\n startingDate: subHours(range.start, 7),\n endingDate: subHours(range.end, 7),\n })\n }\n }\n\n function clearAllDates() {\n model.calendarTableType = []\n }\n\n const files = ref([])\n const rejectedFiles = ref([])\n\n watch(\n () => files.value,\n (newValue) => {\n addImages(newValue)\n }\n )\n\n const isRental = computed(\n () => model.categoryId === PropertyCategoryId.Rentals\n )\n\n const areaIdLabel = computed(() => i18n.t('areaId') as string)\n const countryNameLabel = computed(() => i18n.t('country') as string)\n const stateNameLabel = computed(() => i18n.t('state') as string)\n const cityNameLabel = computed(() => i18n.t('city') as string)\n const agentIdLabel = computed(() => i18n.t('agentId') as string)\n const typeIdLabel = computed(() => i18n.t('typeId') as string)\n const categoryIdLabel = computed(() => i18n.t('categoryId') as string)\n const tagIdLabel = computed(() => i18n.t('tagId') as string)\n const currencyIdLabel = computed(() => i18n.t('currencyId') as string)\n const addressNameLabel = computed(() => i18n.t('addressName') as string)\n const addressLineOneLabel = computed(\n () => i18n.t('addressLineOne') as string\n )\n const addressLineTwoLabel = computed(\n () => i18n.t('addressLineTwo') as string\n )\n const addressPostalCodeLabel = computed(\n () => i18n.t('addressPostalCode') as string\n )\n const addressLatitudeLabel = computed(\n () => i18n.t('addressLatitude') as string\n )\n const addressLongitudeLabel = computed(\n () => i18n.t('addressLongitude') as string\n )\n const mlsPropertyIdLabel = computed(() => i18n.t('mlsPropertyId') as string)\n const mlsPropertyIdDescription = computed(\n () => i18n.t('mlsPropertyIdDescription') as string\n )\n const priceLabel = computed(() => i18n.t('price') as string)\n const priceAsCurrency = computed(() => {\n if (!model.price) return\n const formattedPrice = useCurrency({\n value: model.price || 0,\n currency: currency.value,\n }).value\n return isRental.value\n ? `${formattedPrice} ${i18n.t('perNight')}`\n : formattedPrice\n })\n const price2Label = computed(() => i18n.t('price2') as string)\n const price2AsCurrency = computed(() => {\n if (!model.price2) return\n const formattedPrice2 = useCurrency({\n value: model.price2 || 0,\n currency: currency.value,\n }).value\n return isRental.value\n ? `${formattedPrice2} ${i18n.t('perMonth')}`\n : formattedPrice2\n })\n const cleaningFeeLabel = computed(() => i18n.t('cleaningFee') as string)\n const cleaningFeeAsCurrency = computed(() => {\n if (!model.cleaningFee) return\n const formattedCleaningFee = useCurrency({\n value: model.cleaningFee || 0,\n currency: currency.value,\n }).value\n return formattedCleaningFee\n })\n const bathroomLabel = computed(() => i18n.t('bathroom') as string)\n const bedroomLabel = computed(() => i18n.t('bedroom') as string)\n const isRecommendationLabel = computed(\n () => i18n.t('isRecommendation') as string\n )\n const isFeatureListingLabel = computed(\n () => i18n.t('isFeatureListing') as string\n )\n const isDeletedLabel = computed(() => i18n.t('active') as string)\n const virtualTourLabel = computed(() => i18n.t('virtualTour') as string)\n const virtualTourDescription = computed(\n () => i18n.t('virtualTourDescription') as string\n )\n const detailValueTableTypeLabel = computed(\n () => i18n.t('detailValueTableType.title') as string\n )\n const optionalLabel = computed(() =>\n i18n.t('optional').toString().toLowerCase()\n )\n const readonlyLabel = computed(() =>\n i18n.t('readonly').toString().toLowerCase()\n )\n\n const fileTableTypeCount = computed(() => model.fileTableType.length)\n const rejectedFilesCount = computed(() => rejectedFiles.value.length)\n\n const { data: categories, isLoading: isLoadingCategories } = useCategories()\n\n const category = computed({\n get: () => {\n return categories.value.find((x) => x.categoryId === model.categoryId)\n },\n set: (newValue) => {\n model.categoryId = newValue?.categoryId\n },\n })\n\n const { data: tags, isLoading: isLoadingTags } = useTags()\n\n const tag = computed({\n get: () => {\n return tags.value.find((x) => x.tagId === model.tagId)\n },\n set: (newValue) => {\n model.tagId = newValue?.tagId\n },\n })\n\n const { data: types, isLoading: isLoadingTypes } = useTypes()\n\n const type = computed({\n get: () => {\n return types.value.find((x) => x.typeId === model.typeId)\n },\n set: (newValue) => {\n model.typeId = newValue?.typeId\n },\n })\n\n watch(\n () => type.value,\n (newValue) => {\n if (!newValue) return\n let flag = false\n if (newValue.name === 'Land') {\n flag = true\n model.bathroom = 0\n model.bedroom = 0\n }\n isLandType.value = flag\n }\n )\n\n const { data: agents, isLoading: isLoadingAgents } = useAgents()\n\n const agent = computed({\n get: () => {\n return agents.value.find((x) => x.agentId === model.agentId)\n },\n set: (newValue) => {\n model.agentId = newValue?.agentId\n },\n })\n\n const { data: areas, isLoading: isLoadingAreas } = useAreas()\n\n const area = computed({\n get: () => {\n return areas.value.find((x) => x.areaId === model.areaId)\n },\n set: (newValue) => {\n model.areaId = newValue?.areaId\n },\n })\n\n const { data: groups, isLoading: isLoadingGroups } = useGroups()\n\n const details = computed({\n get: () => {\n const modelList: DetailValueTableType[] = [\n ...model.detailValueTableType,\n ]\n const list: PropertyDetailViewModel[] = []\n for (const group of groups.value) {\n for (const detail of group.detailList) {\n const idx = modelList.findIndex(\n (x) => x.detailId === detail.detailId\n )\n if (idx !== -1) {\n list.push(detail)\n modelList.splice(idx, 1)\n }\n }\n }\n return list\n },\n set: (newValue) => {\n let result: DetailValueTableType[] = []\n if (newValue) {\n for (const detail of newValue) {\n const currentDetails = model.detailValueTableType.filter(\n (x) => x.detailId === detail.detailId\n )\n result = [\n ...result,\n ...(currentDetails.length === 0\n ? appLanguages.map((x) => ({\n detailId: detail.detailId,\n languageId: x.guid,\n value: '',\n }))\n : currentDetails),\n ]\n }\n }\n model.detailValueTableType = result\n },\n })\n\n const selectedGroups = computed(() => {\n let list: SelectedGroup[] = []\n\n if (details.value) {\n for (const detail of details.value) {\n const selectedDetail: SelectDetail = {\n detailId: detail.detailId,\n title: detail.propertyDetailTitle,\n detailValueTableType: model.detailValueTableType.filter(\n (d) => d.detailId === detail.detailId\n ),\n }\n const group = list.find((x) => x.groupId === detail.groupId)\n if (group) {\n group.details.push(selectedDetail)\n } else {\n const currentGroup = groups.value.find(\n (g) => g.groupId === detail.groupId\n )\n list.push({\n groupId: detail.groupId,\n title: currentGroup?.title || '',\n description: currentGroup?.description || '',\n details: [selectedDetail],\n })\n }\n }\n }\n\n return list\n })\n\n function onPropertyTextTableTypeUpdate(newValue: PropertyTextTableType) {\n const idx = model.propertyTextTableType.findIndex(\n (item) => item.languageId === newValue.languageId\n )\n if (idx === -1) return\n model.propertyTextTableType.splice(idx, 1, newValue)\n }\n\n function onDetailTableTypeUpdate(newValue: DetailValueTableType) {\n const idx = model.detailValueTableType.findIndex(\n (item) =>\n item.detailId === newValue.detailId &&\n item.languageId === newValue.languageId\n )\n if (idx === -1) return\n model.detailValueTableType.splice(idx, 1, newValue)\n }\n\n async function submit() {\n if (fileTableTypeCount.value === 0) {\n communique.dispatch({\n variant: 'error',\n message: i18n.t('imagesRequiredError') as string,\n })\n return\n }\n\n const isUpdate = mode.value === 'update'\n\n try {\n isSubmitting.value = true\n\n if (isInUpdateMode(model)) {\n await propertyService.update(model)\n } else {\n await propertyService.insert(model)\n }\n\n router.push({\n name: 'PropertyList',\n query: {\n searchBy: model.propertyTextTableType[0].title,\n },\n })\n\n communique.dispatch({\n variant: 'success',\n message: i18n.t(\n isUpdate ? 'propertyUpdateSuccess' : 'propertyInsertSuccess',\n {\n title: model.propertyTextTableType[0].title,\n }\n ) as string,\n })\n } catch (error) {\n communique.dispatch({\n variant: 'error',\n message: i18n.t(\n isUpdate ? 'propertyUpdateError' : 'propertyInsertError',\n {\n title: model.propertyTextTableType[0].title,\n }\n ) as string,\n })\n } finally {\n isSubmitting.value = false\n }\n }\n\n // 1 MB\n const maxImageAllowedSize = 1 * 1024 * 1024\n const imageAllowedTypes = ['image/png', 'image/jpeg']\n const fileAccept = imageAllowedTypes.join(',')\n\n function addImages(files: File[]) {\n const acceptedFiles: File[] = []\n\n for (const file of files) {\n if (!imageAllowedTypes.includes(file.type)) {\n rejectedFiles.value.push({\n file,\n errorKey: 'fileTypeError',\n })\n } else if (file.size > maxImageAllowedSize) {\n rejectedFiles.value.push({\n file,\n errorKey: 'fileSizeError',\n })\n } else {\n acceptedFiles.push(file)\n }\n }\n\n for (let index = 0; index < acceptedFiles.length; index++) {\n const file = acceptedFiles[index]\n toBase64(file).then((dataUrl) =>\n model.fileTableType.push({\n dataUrl: dataUrl.split(',')[1],\n name: getNameWithoutExtension(file.name),\n description: '',\n extension: getExtension(file.name) || '',\n path: '',\n displayOrder: model.fileTableType.length + 1,\n })\n )\n }\n }\n\n function isInUpdateMode(\n model: PropertyInsertModel | PropertyUpdateModel\n ): model is PropertyUpdateModel {\n return mode.value === 'update' && 'propertyId' in model\n }\n\n function dropImages(ev: DragEvent) {\n isDragAreaActive.value = false\n if (!ev.dataTransfer || ev.dataTransfer.files.length === 0) return\n addImages(Array.from(ev.dataTransfer.files))\n }\n\n function removeAllImages() {\n for (const image of model.fileTableType) {\n handleDeletedImages(image)\n }\n model.fileTableType = []\n clearRejectedFiles()\n }\n\n function clearRejectedFiles() {\n rejectedFiles.value = []\n }\n\n function removeRejectedFile(index: number) {\n rejectedFiles.value.splice(index, 1)\n }\n\n function removeImage(imageIndex: number) {\n handleDeletedImages(model.fileTableType[imageIndex])\n const nextFiles = model.fileTableType.filter(\n (f, index) => index > imageIndex\n )\n for (let index = 0; index < nextFiles.length; index++) {\n const file = nextFiles[index]\n file.displayOrder = imageIndex + index + 1\n }\n model.fileTableType.splice(imageIndex, 1)\n }\n\n function handleDeletedImages(image: FileTableType) {\n if (isInUpdateMode(model) && image.path) {\n model.fileListToDelete.push(image)\n }\n }\n\n function updateImagesDisplayOrder() {\n for (let index = 0; index < model.fileTableType.length; index++) {\n const file = model.fileTableType[index]\n file.displayOrder = index + 1\n }\n }\n\n async function fetchProperty() {\n try {\n if (!isInUpdateMode(model)) {\n throw new Error('The component is not in update mode.')\n }\n\n fetchPropertyError.value = null\n isLoadingProperty.value = true\n\n const responses = await Promise.all(\n appLanguages.map((language) =>\n propertyService.get({\n pageNumber: 1,\n rowsPerPage: 1,\n languageId: language.guid,\n propertyKey: props.propertyKey,\n })\n )\n )\n\n for (let index = 0; index < responses.length; index++) {\n const {\n data: { items },\n } = responses[index]\n const language = appLanguages[index]\n if (items.length === 0) {\n throw new Error(`Property not found for ${language.locale} locale.`)\n }\n\n const [property] = items\n\n if (index === 0) {\n model.propertyId = property.propertyId\n model.areaId = property.areaViewModel.areaId\n model.agentId = property.agentViewModel.agentId\n model.typeId = property.typeViewModel.typeId\n model.categoryId = property.categoryViewModel.categoryId\n model.tagId = property.tagViewModel?.tagId || ''\n model.currencyId = property.currencyViewModel.currencyId\n model.addressId = property.addressViewModel.addressId\n model.addressName = property.addressViewModel.name\n model.addressLineOne = property.addressViewModel.lineOne\n model.addressLineTwo = property.addressViewModel.lineTwo\n model.addressPostalCode = property.addressViewModel.postalCode\n model.addressLatitude = property.addressViewModel.latitude\n model.addressLongitude = property.addressViewModel.longitude\n model.mlsPropertyId = property.mlsPropertyId\n model.price = property.price\n model.price2 = property.price2\n model.cleaningFee = property.cleaningFee\n model.bathroom = property.bathroom\n model.bedroom = property.bedroom\n model.isRecommendation = property.isRecommendation\n model.isFeatureListing = property.isFeatureListing\n model.isDeleted = property.isDeleted\n model.virtualTour = property.virtualTour\n model.displayOrder = property.displayOrder\n model.calendarTableType = property.calendarList.map((item) => ({\n startingDate: subHours(parseISO(item.startingDate), 7),\n endingDate: subHours(parseISO(item.endingDate), 7),\n }))\n model.fileTableType = property.propertyImageList.map((image) => ({\n dataUrl: '',\n name: image.name,\n description: image.description || '',\n extension: getExtension(image.name) || '',\n path: image.path,\n displayOrder: image.displayOrder,\n }))\n model.fileListToDelete = []\n }\n\n for (const group of property.propertyGroupList) {\n for (const detail of group.detailList) {\n model.detailValueTableType.push({\n detailId: detail.detailId,\n languageId: language.guid,\n value: detail.value,\n })\n }\n }\n model.propertyTextTableType.push({\n propertyId: property.propertyId,\n languageId: language.guid,\n title: property.title,\n description: property.description,\n })\n }\n } catch (error) {\n fetchPropertyError.value = error\n } finally {\n isLoadingProperty.value = false\n }\n }\n\n return {\n mode,\n form,\n isDragAreaActive,\n model,\n rentedDateRanges,\n onRentedDateRangesUpdate,\n clearAllDates,\n isLoadingProperty,\n isSubmitting,\n submit,\n dropImages,\n fetchProperty,\n fetchPropertyError,\n fileAccept,\n removeImage,\n removeAllImages,\n clearRejectedFiles,\n removeRejectedFile,\n files,\n rejectedFiles,\n updateImagesDisplayOrder,\n areaIdLabel,\n countryNameLabel,\n stateNameLabel,\n cityNameLabel,\n agentIdLabel,\n typeIdLabel,\n categoryIdLabel,\n tagIdLabel,\n currencyIdLabel,\n addressNameLabel,\n addressLineOneLabel,\n addressLineTwoLabel,\n addressPostalCodeLabel,\n addressLatitudeLabel,\n addressLongitudeLabel,\n mlsPropertyIdLabel,\n mlsPropertyIdDescription,\n priceLabel,\n priceAsCurrency,\n price2Label,\n price2AsCurrency,\n cleaningFeeLabel,\n cleaningFeeAsCurrency,\n bathroomLabel,\n bedroomLabel,\n isRecommendationLabel,\n isFeatureListingLabel,\n isDeletedLabel,\n virtualTourLabel,\n virtualTourDescription,\n detailValueTableTypeLabel,\n optionalLabel,\n readonlyLabel,\n isRental,\n fileTableTypeCount,\n rejectedFilesCount,\n onPropertyTextTableTypeUpdate,\n onDetailTableTypeUpdate,\n categories,\n isLoadingCategories,\n category,\n tags,\n isLoadingTags,\n tag,\n types,\n isLoadingTypes,\n type,\n agents,\n isLoadingAgents,\n agent,\n areas,\n isLoadingAreas,\n area,\n currencies,\n isLoadingCurrencies,\n currency,\n groups,\n isLoadingGroups,\n details,\n selectedGroups,\n getDisplaySize,\n isLandType,\n }\n },\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyCreateUpdateForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyCreateUpdateForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PropertyCreateUpdateForm.vue?vue&type=template&id=733a0baf&\"\nimport script from \"./PropertyCreateUpdateForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./PropertyCreateUpdateForm.vue?vue&type=script&lang=ts&\"\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\n/* custom blocks */\nimport block0 from \"./PropertyCreateUpdateForm.vue?vue&type=custom&index=0&blockType=i18n&lang=json\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","import { AxiosInstance } from 'axios'\nimport { api } from '../client'\nimport { serviceUrl } from '../utils'\n\nconst controller = serviceUrl('type')\n\nfunction createTypeService(client: AxiosInstance) {\n return {\n get(params: TypeModel) {\n return client.get(controller.action('get'), {\n params,\n })\n },\n }\n}\n\nexport const typeService = createTypeService(api.base)\n\nexport interface TypeModel {\n languageId?: string\n}\n\nexport interface TypeViewModel {\n typeId: string\n typeKey: number\n name: string\n title: string\n description: string\n}\n","import { TypeModel, typeService } from '@/services/modules/type'\nimport { currentLanguage } from '@/utils/language'\nimport { computed, ComputedRef, isRef } from '@vue/composition-api'\nimport { useService } from './service'\n\nexport function useTypes(model?: ComputedRef | TypeModel) {\n const request = computed(() => ({\n languageId: currentLanguage.value.guid,\n ...(isRef(model) ? model.value : model),\n }))\n return useService(request, () => typeService.get(request.value))\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en-US\":{\"section\":{\"basic\":{\"title\":\"Property\",\"copy\":\"Provide basic information about the property.\"},\"boost\":{\"title\":\"Boost\",\"copy\":\"Reach more people by boosting this property.\"},\"status\":{\"title\":\"Status\",\"copy\":\"Inactive properties are not displayed out of the admin environment.\"},\"address\":{\"title\":\"Address\",\"copy\":\"Specify the address where the property is located as well as its geolocation.\"},\"availability\":{\"title\":\"Availability\",\"copy\":\"Add the dates that this property is unavailable.\"},\"details\":{\"title\":\"Details\",\"copy\":\"Specify what this property offers. Details with an empty value are also displayed and a check mark is shown when compared.\"},\"images\":{\"title\":\"Images\",\"copy\":\"Include the images that will be displayed for this property. Images must be PNG or JPG, up to 1MB each.\"}},\"clearAllDates\":\"Clear all dates\",\"imagesCta\":\"Select multiple images\",\"imagesCtaTwo\":\"or drag and drop\",\"imagesAccept\":\"PNG, JPG up to 1MB\",\"removeAllImages\":\"Remove all images\",\"clearRejectedFiles\":\"Clear rejected files\",\"acceptedImages\":\"Accepted images {count}\",\"rejectedFiles\":\"Rejected files {count}\",\"fileSizeError\":\"The file size exceeds the limit allowed.\",\"fileTypeError\":\"The file type is not allowed.\",\"submitCreate\":\"Create property\",\"submitCreateButtonLoading\":\"Creating property\",\"submitUpdate\":\"Save changes\",\"submitUpdateButtonLoading\":\"Saving changes\",\"fetchPropertyError\":{\"copy\":\"There was an error trying to load the property. Try loading the property again or go back to the property list.\",\"cta\":{\"list\":\"Go to property list\",\"tryAgain\":\"Try again\"}}},\"es-MX\":{\"section\":{\"basic\":{\"title\":\"Propiedad\",\"copy\":\"Proporciona información básica sobre la propiedad.\"},\"boost\":{\"title\":\"Impulsar\",\"copy\":\"Llega a más personas impulsando esta propiedad.\"},\"status\":{\"title\":\"Estatus\",\"copy\":\"Las propiedades inactivas no se muestran fuera del entorno de administración.\"},\"address\":{\"title\":\"Dirección\",\"copy\":\"Especifica la dirección donde se encuentra la propiedad así como su geolocalización.\"},\"availability\":{\"title\":\"Disponibilidad\",\"copy\":\"Agregue las fechas en las que esta propiedad no está disponible.\"},\"details\":{\"title\":\"Details\",\"copy\":\"Especifica qué ofrece esta propiedad. Los detalles sin valor también se muestran y se muestra una marca de verificación cuando se comparen.\"},\"images\":{\"title\":\"Imágenes\",\"copy\":\"Incluye las imágenes que se mostrarán para esta propiedad. Las imágenes deben ser PNG o JPG, de hasta 1MB cada una.\"}},\"clearAllDates\":\"Limpiar todas las fechas\",\"imagesCta\":\"Selecciona múltiples imágenes\",\"imagesCtaTwo\":\"o arrastra y suelta\",\"imagesAccept\":\"PNG, JPG de hasta 1MB\",\"removeAllImages\":\"Remover todas las imágenes\",\"clearRejectedFiles\":\"Borrar archivos rechazados\",\"acceptedImages\":\"Imágenes aceptadas {count}\",\"rejectedFiles\":\"Archivos rechazados {count}\",\"fileSizeError\":\"El tamaño del archivo supera el límite permitido.\",\"fileTypeError\":\"El tipo de archivo no está permitido.\",\"submit\":\"Crear propiedad\",\"submitButtonLoading\":\"Creando propiedad\",\"submitUpdate\":\"Guardar cambios\",\"submitUpdateButtonLoading\":\"Guardando cambios\",\"fetchPropertyError\":{\"copy\":\"Se produjo un error al intentar cargar la propiedad. Intenta cargar la propiedad nuevamente o vuelve a la lista de propiedades.\",\"cta\":{\"list\":\"Ir a lista de propiedades\",\"rentals\":\"Intentar de nuevo\"}}}}')\n delete Component.options._Ctor\n}\n"],"sourceRoot":""}