diff options
Diffstat (limited to 'js/files-modal.js.map')
-rw-r--r-- | js/files-modal.js.map | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/js/files-modal.js.map b/js/files-modal.js.map index 5cee00d10..c29d4fd37 100644 --- a/js/files-modal.js.map +++ b/js/files-modal.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///NextcloudVue.[name]/webpack/universalModuleDefinition","webpack:///NextcloudVue.[name]/webpack/bootstrap","webpack:///NextcloudVue.[name]/node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///NextcloudVue.[name]/node_modules/css-loader/dist/runtime/api.js","webpack:///NextcloudVue.[name]/src/fonts/iconfont-vue-e1f55ce.ttf","webpack:///NextcloudVue.[name]/src/fonts/iconfont-vue-e1f55ce.svg","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue?0019","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.function.name\"","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue?5a6b","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue?308c","webpack:///NextcloudVue.[name]/src/directives/Tooltip/index.js","webpack:///webpack:/NextcloudVue.[name]/external \"v-click-outside\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.index-of\"","webpack:///NextcloudVue.[name]/src/mixins/actionGlobal.js","webpack:///NextcloudVue.[name]/src/utils/GenRandomId.js","webpack:///NextcloudVue.[name]/src/utils/Timer.js","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue?6422","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue?d840","webpack:///NextcloudVue.[name]/src/components/Modal/index.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.iterator\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.string.iterator\"","webpack:///NextcloudVue.[name]/node_modules/vue-style-loader/lib/listToStyles.js","webpack:///NextcloudVue.[name]/node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/web.dom-collections.iterator\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.regexp.exec\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.map\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.regexp.to-string\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/web.url\"","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue?4784","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue?c674","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.concat\"","webpack:///NextcloudVue.[name]/src/utils/GetParent.js","webpack:///NextcloudVue.[name]/src/mixins/actionText.js","webpack:///webpack:/NextcloudVue.[name]/external \"@nextcloud/l10n/dist/gettext\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.string.trim\"","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue?4802","webpack:///webpack:/NextcloudVue.[name]/external \"v-tooltip\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.string.replace\"","webpack:///NextcloudVue.[name]/src/utils/ValidateSlot.js","webpack:///NextcloudVue.[name]/src/mixins/l10n.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.number.constructor\"","webpack:///NextcloudVue.[name]/src/components/Actions/index.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.object.to-string\"","webpack:///NextcloudVue.[name]/src/directives/Tooltip/index.scss?30d2","webpack:///NextcloudVue.[name]/src/directives/Tooltip/index.scss","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue?7bd0","webpack:///NextcloudVue.[name]/src/utils/IsOutOfViewport.js","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue?608f","webpack:///NextcloudVue.[name]/src/utils/ScopeComponent.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.filter\"","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue?d3c7","webpack:///webpack:/NextcloudVue.[name]/external \"vue\"","webpack:///NextcloudVue.[name]/src/l10n.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.object.assign\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.splice\"","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue?a15b","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue?4ae1","webpack:///NextcloudVue.[name]/node_modules/css-loader/dist/runtime/getUrl.js","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue?6bb6","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue?fe29","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue","webpack:///NextcloudVue.[name]/src/fonts/iconfont-vue-e1f55ce.eot","webpack:///webpack:/NextcloudVue.[name]/external \"hammerjs\"","webpack:///NextcloudVue.[name]/src/components/ActionButton/index.js","webpack:///NextcloudVue.[name]/src/fonts/iconfont-vue-e1f55ce.woff","webpack:///./node_modules/hammerjs/hammer.js","webpack:///./src/components/PublicFilesEditor.vue?e78f","webpack:///./src/components/PublicFilesEditor.vue?431a","webpack:///src/components/PublicFilesEditor.vue","webpack:///./src/components/PublicFilesEditor.vue"],"names":["DESCRIPTORS","require","global","isForced","redefine","has","classof","inheritIfRequired","toPrimitive","fails","create","getOwnPropertyNames","f","getOwnPropertyDescriptor","defineProperty","trim","NativeNumber","NumberPrototype","prototype","BROKEN_CLASSOF","toNumber","argument","first","third","radix","maxCode","digits","length","index","code","it","charCodeAt","NaN","slice","parseInt","key","NumberWrapper","value","arguments","dummy","this","valueOf","call","keys","split","j","constructor","factory","window","installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","m","c","d","name","getter","o","Object","enumerable","get","r","Symbol","toStringTag","t","mode","__esModule","ns","bind","n","object","property","hasOwnProperty","p","s","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","useSourceMap","list","toString","map","item","content","sourceMap","base64","data","cssMapping","btoa","sourceMapping","unescape","encodeURIComponent","JSON","stringify","sourceURLs","sources","source","sourceRoot","join","mediaQuery","dedupe","alreadyImportedModules","id","_i","push","__webpack_exports__","locals","default","___CSS_LOADER_API_IMPORT___","VTooltip","defaultTemplate","SCOPE_VERSION","defaultHtml","before","$slots","text","Vue","util","warn","$destroy","$el","remove","beforeUpdate","getText","computed","isLongText","methods","GenRandomId","Math","random","replace","substr","timer","callback","delay","started","running","remaining","start","Date","setTimeout","pause","clearTimeout","clear","getTimeLeft","getStateRunning","Modal_Modalvue_type_script_lang_js_","components","Actions","ActionButton","directives","tooltip","mixins","props","title","type","hasPrevious","hasNext","outTransition","enableSlideshow","clearViewDelay","slideshowDelay","slideshowPaused","enableSwipe","spreadNavigation","size","validator","canClose","dark","mc","showModal","clearView","clearViewTimeout","playing","slideshowTimeout","modalTransitionName","playPauseTitle","watch","paused","beforeMount","beforeDestroy","mounted","_this","document","unmounted","previous","next","close","_this2","handleKeydown","handleSwipe","handleMouseMove","_this3","togglePlayPause","resetSlideshow","handleSlideshow","_this4","clearSlideshowTimeout","_vm","_h","$createElement","_c","_self","attrs","ref","staticClass","class","modal-mask--dark","on","click","mousemove","touchmove","rawName","expression","invisible","_v","_s","_e","modifiers","auto","play-pause--paused","height","width","stroke","stroke-width","fill","cx","cy","_t","icon","$event","target","currentTarget","ScopeComponent","Modal","listToStyles","parentId","styles","newStyles","part","css","media","parts","hasDocument","DEBUG","Error","stylesInDom","head","getElementsByTagName","singletonElement","singletonCounter","isProduction","noop","isOldIE","navigator","test","userAgent","toLowerCase","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","refs","addStyle","createStyleElement","styleElement","createElement","appendChild","obj","update","querySelector","parentNode","removeChild","styleIndex","applyToSingletonTag","applyToTag","newObj","textStore","replaceText","replacement","filter","Boolean","styleSheet","cssText","cssNode","createTextNode","childNodes","insertBefore","setAttribute","ssrId","firstChild","___CSS_LOADER_GET_URL_IMPORT___","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","GetParent","$parent","actionGlobal","String","closeAfterClick","ariaLabel","isIconUrl","URL","error","onClick","event","$emit","closeMenu","ValidateSlot","slots","allowed","vm","node","isHtmlElement","componentOptions","tag","indexOf","isVueComponent","isForbiddenComponent","splice","isOutOfViewport","elem","bounding","getBoundingClientRect","contentHeight","documentElement","clientHeight","contentWidth","clientWidth","out","assign","top","left","bottom","right","any","all","offsetY","offsetX","allowedChildren","Actions_Actionsvue_type_script_lang_js_","ClickOutside","open","forceMenu","menuAlign","defaultIcon","actions","opened","focusIndex","randomId","offsetYArrow","rotateArrow","children","hasMultipleActions","isValidSingleAction","firstActionVNode","firstAction","firstActionBinding","is","href","aria-label","to","exact","firstActionEvent","firstActionEventBinding","firstActionClass","dynClass","toggleMenu","onOpen","isOut","onMouseFocusAction","removeCurrentActive","currentActiveElement","focusAction","focusElement","liMenuParent","focusPreviousAction","focusNextAction","focusFirstAction","focusLastAction","execFirstAction","initActions","_b","rel","_d","aria-hidden","hidden","action-item--open","keydown","_k","keyCode","ctrlKey","shiftKey","altKey","metaKey","preventDefault","aria-haspopup","aria-controls","aria-expanded","style","marginRight","marginTop","tabindex","transform","Component","Array","isArray","gtBuilder","getGettextBuilder","detectLocale","TRANSLATIONS","addTranslation","locale","json","gt","build","ngettext","gettext","url","hash","needQuotes","ActionButton_ActionButtonvue_type_script_lang_js_","disabled","isFocusable","action--disabled","focusable","backgroundImage","domProps","textContent","define","exportName","undefined","VENDOR_PREFIXES","TEST_ELEMENT","round","abs","now","setTimeoutContext","fn","timeout","bindFn","invokeArrayArg","arg","each","iterator","forEach","deprecate","method","message","deprecationMessage","e","stack","log","console","apply","TypeError","output","nextKey","extend","dest","src","merge","inherit","child","base","properties","childP","baseP","_super","boolOrFn","val","args","ifUndefined","val1","val2","addEventListeners","types","handler","splitStr","addEventListener","removeEventListeners","removeEventListener","hasParent","inStr","str","find","inArray","findByKey","toArray","uniqueArray","sort","results","values","a","b","prefixed","prefix","prop","camelProp","toUpperCase","_uniqueId","getWindowForElement","element","doc","ownerDocument","defaultView","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","PROPS_XY","PROPS_CLIENT_XY","Input","manager","self","inputTarget","domHandler","ev","enable","init","inputHandler","eventType","input","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","center","getCenter","timeStamp","deltaTime","angle","getAngle","distance","getDistance","offset","offsetDelta","prevDelta","prevInput","x","deltaX","y","deltaY","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","scale","end","rotation","getRotation","maxPointers","velocity","velocityX","velocityY","direction","last","lastInterval","v","computeIntervalInputData","srcEvent","computeInputData","emit","recognize","clientX","clientY","p1","p2","sqrt","atan2","PI","evEl","evTarget","evWin","destroy","MOUSE_INPUT_MAP","mousedown","mouseup","MouseInput","pressed","button","which","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","2","3","4","5","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","store","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchend","touchcancel","SingleTouchInput","normalizeSingleTouches","touches","changed","changedTouches","TOUCH_INPUT_MAP","TouchInput","targetIds","getTouches","allTouches","identifier","targetTouches","changedTargetTouches","touch","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","dx","dy","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","getTouchActionProps","TouchAction","set","compute","touchAction","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","DIRECTION_LEFT","DIRECTION_UP","preventSrc","Recognizer","defaults","state","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","count","Hammer","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","reset","process","attrTest","optionPointers","isRecognized","isValid","threshold","DIRECTION_HORIZONTAL","directionTest","hasMoved","inOut","time","validPointers","validMovement","validTime","taps","interval","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","inputClass","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","handlers","oldCssProps","toggleCssProps","stop","force","stopped","curRecognizer","events","off","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","triggerDomEvent","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_VERTICAL","DIRECTION_ALL","Tap","Pan","Swipe","Pinch","Rotate","Press","component","fileName","fileId","relativePath","active","shareToken","mimeType"],"mappings":"oGACA,IAAIA,EAAcC,EAAQ,GACtBC,EAASD,EAAQ,GACjBE,EAAWF,EAAQ,IACnBG,EAAWH,EAAQ,IACnBI,EAAMJ,EAAQ,GACdK,EAAUL,EAAQ,IAClBM,EAAoBN,EAAQ,KAC5BO,EAAcP,EAAQ,IACtBQ,EAAQR,EAAQ,GAChBS,EAAST,EAAQ,IACjBU,EAAsBV,EAAQ,KAA8CW,EAC5EC,EAA2BZ,EAAQ,IAAmDW,EACtFE,EAAiBb,EAAQ,GAAuCW,EAChEG,EAAOd,EAAQ,KAA4Bc,KAG3CC,EAAed,EAAM,OACrBe,EAAkBD,EAAaE,UAG/BC,EALS,UAKQb,EAAQI,EAAOO,IAIhCG,EAAW,SAAUC,GACvB,IACIC,EAAOC,EAAOC,EAAOC,EAASC,EAAQC,EAAQC,EAAOC,EADrDC,EAAKtB,EAAYa,GAAU,GAE/B,GAAiB,iBAANS,GAAkBA,EAAGH,OAAS,EAGvC,GAAc,MADdL,GADAQ,EAAKf,EAAKe,IACCC,WAAW,KACQ,KAAVT,GAElB,GAAc,MADdC,EAAQO,EAAGC,WAAW,KACQ,MAAVR,EAAe,OAAOS,SACrC,GAAc,KAAVV,EAAc,CACvB,OAAQQ,EAAGC,WAAW,IACpB,KAAK,GAAI,KAAK,GAAIP,EAAQ,EAAGC,EAAU,GAAI,MAC3C,KAAK,GAAI,KAAK,IAAKD,EAAQ,EAAGC,EAAU,GAAI,MAC5C,QAAS,OAAQK,EAInB,IADAH,GADAD,EAASI,EAAGG,MAAM,IACFN,OACXC,EAAQ,EAAGA,EAAQD,EAAQC,IAI9B,IAHAC,EAAOH,EAAOK,WAAWH,IAGd,IAAMC,EAAOJ,EAAS,OAAOO,IACxC,OAAOE,SAASR,EAAQF,GAE5B,OAAQM,GAKZ,GAAI3B,EAtCS,UAsCSa,EAAa,UAAYA,EAAa,QAAUA,EAAa,SAAU,CAS3F,IARA,IAcqBmB,EAdjBC,EAAgB,SAAgBC,GAClC,IAAIP,EAAKQ,UAAUX,OAAS,EAAI,EAAIU,EAChCE,EAAQC,KACZ,OAAOD,aAAiBH,IAElBjB,EAAiBV,GAAM,WAAcQ,EAAgBwB,QAAQC,KAAKH,MA5C/D,UA4C4EjC,EAAQiC,IACvFhC,EAAkB,IAAIS,EAAaI,EAASU,IAAMS,EAAOH,GAAiBhB,EAASU,IAElFa,EAAO3C,EAAcW,EAAoBK,GAAgB,6KAMhE4B,MAAM,KAAMC,EAAI,EAAQF,EAAKhB,OAASkB,EAAGA,IACrCxC,EAAIW,EAAcmB,EAAMQ,EAAKE,MAAQxC,EAAI+B,EAAeD,IAC1DrB,EAAesB,EAAeD,EAAKtB,EAAyBG,EAAcmB,IAG9EC,EAAclB,UAAYD,EAC1BA,EAAgB6B,YAAcV,EAC9BhC,EAASF,EA5DE,SA4DckC,K,2CC5EsBW,E,qOAS9CC,OAT8CD,EAStC,WACX,O,YCTE,IAAIE,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,KACAH,QAAS,IAUV,OANAI,EAAQL,GAAUT,KAAKW,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,KAGAF,EAAOD,QA0Df,OArDAF,EAAoBO,EAAID,EAGxBN,EAAoBQ,EAAIT,EAGxBC,EAAoBS,EAAI,SAASP,EAASQ,EAAMC,GAC3CX,EAAoBY,EAAEV,EAASQ,IAClCG,OAAOjD,eAAesC,EAASQ,EAAM,CAAEI,cAAkBC,IAAKJ,KAKhEX,EAAoBgB,EAAI,SAASd,GACX,oBAAXe,QAA0BA,OAAOC,aAC1CL,OAAOjD,eAAesC,EAASe,OAAOC,YAAa,CAAE/B,MAAO,WAE7D0B,OAAOjD,eAAesC,EAAS,aAAc,CAAEf,YAQhDa,EAAoBmB,EAAI,SAAShC,EAAOiC,GAEvC,GADU,EAAPA,IAAUjC,EAAQa,EAAoBb,IAC/B,EAAPiC,EAAU,OAAOjC,EACpB,GAAW,EAAPiC,GAA8B,YAAVjC,IAAsBA,GAASA,EAAMkC,WAAY,OAAOlC,EAChF,IAAImC,EAAKT,OAAOrD,OAAO,MAGvB,GAFAwC,EAAoBgB,EAAEM,GACtBT,OAAOjD,eAAe0D,EAAI,UAAW,CAAER,cAAkB3B,MAAOA,IACtD,EAAPiC,GAA4B,iBAATjC,EAAmB,IAAI,IAAIF,KAAOE,EAAOa,EAAoBS,EAAEa,EAAIrC,EAAK,SAASA,GAAO,OAAOE,EAAMF,IAAQsC,KAAK,KAAMtC,IAC9I,OAAOqC,GAIRtB,EAAoBwB,EAAI,SAASrB,GAChC,IAAIQ,EAASR,GAAUA,EAAOkB,WAC7B,WAAwB,OAAOlB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBS,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRX,EAAoBY,EAAI,SAASa,EAAQC,GAAY,OAAOb,OAAO7C,UAAU2D,eAAenC,KAAKiC,EAAQC,IAGzG1B,EAAoB4B,EAAI,SAIjB5B,EAAoBA,EAAoB6B,EAAI,K,iCC5EtC,SAASC,EACtBC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGA,IAqBIC,EArBAC,EAAmC,mBAAlBT,EACjBA,EAAcS,QACdT,EAiDJ,GA9CIC,IACFQ,EAAQR,OAASA,EACjBQ,EAAQP,gBAAkBA,EAC1BO,EAAQC,cAINP,IACFM,EAAQE,eAINN,IACFI,EAAQG,SAAW,UAAYP,GAI7BC,GACFE,EAAO,SAAUK,IAEfA,EACEA,GACCtD,KAAKuD,QAAUvD,KAAKuD,OAAOC,YAC3BxD,KAAKyD,QAAUzD,KAAKyD,OAAOF,QAAUvD,KAAKyD,OAAOF,OAAOC,aAEZ,oBAAxBE,sBACrBJ,EAAUI,qBAGRb,GACFA,EAAa3C,KAAKF,KAAMsD,GAGtBA,GAAWA,EAAQK,uBACrBL,EAAQK,sBAAsBC,IAAIb,IAKtCG,EAAQW,aAAeZ,GACdJ,IACTI,EAAOD,EACH,WAAcH,EAAa3C,KAAKF,KAAMA,KAAK8D,MAAMC,SAASC,aAC1DnB,GAGFI,EACF,GAAIC,EAAQE,WAAY,CAGtBF,EAAQe,cAAgBhB,EAExB,IAAIiB,EAAiBhB,EAAQR,OAC7BQ,EAAQR,OAAS,SAAmCyB,EAAGb,GAErD,OADAL,EAAK/C,KAAKoD,GACHY,EAAeC,EAAGb,QAEtB,CAEL,IAAIc,EAAWlB,EAAQmB,aACvBnB,EAAQmB,aAAeD,EACnB,GAAGE,OAAOF,EAAUnB,GACpB,CAACA,GAIT,MAAO,CACLrC,QAAS6B,EACTS,QAASA,GA1FbxC,mC,+BCQAG,EAAOD,QAAU,SAAU2D,GACzB,IAAIC,EAAO,GAuDX,OArDAA,EAAKC,SAAW,WACd,OAAOzE,KAAK0E,KAAI,SAAUC,GACxB,IAAIC,EAsDV,SAAgCD,EAAMJ,GACpC,IAoBiBM,EAEbC,EACAC,EAvBAH,EAAUD,EAAK,IAAM,GAErBK,EAAaL,EAAK,GAEtB,IAAKK,EACH,OAAOJ,EAGT,GAAIL,GAAgC,mBAATU,KAAqB,CAC9C,IAAIC,GAWWL,EAXeG,EAa5BF,EAASG,KAAKE,SAASC,mBAAmBC,KAAKC,UAAUT,MACzDE,EAAO,+DAA+DT,OAAOQ,GAC1E,OAAOR,OAAOS,EAAM,QAdrBQ,EAAaP,EAAWQ,QAAQd,KAAI,SAAUe,GAChD,MAAO,iBAAiBnB,OAAOU,EAAWU,YAAc,IAAIpB,OAAOmB,EAAQ,UAE7E,MAAO,CAACb,GAASN,OAAOiB,GAAYjB,OAAO,CAACY,IAAgBS,KAAK,MAGnE,MAAO,CAACf,GAASe,KAAK,MAjBxB,CAtD2ChB,EAAMJ,GAE3C,OAAII,EAAK,GACA,UAAUL,OAAOK,EAAK,GAAI,MAAML,OAAOM,EAAS,KAGlDA,KACNe,KAAK,KAKVnB,EAAK1D,EAAI,SAAUE,EAAS4E,EAAYC,GACf,iBAAZ7E,IAETA,EAAU,CAAC,CAAC,KAAMA,EAAS,MAG7B,IAAI8E,EAAyB,GAE7B,GAAID,EACF,IAAK,IAAI/E,EAAI,EAAGA,EAAId,KAAKb,OAAQ2B,IAAK,CAEpC,IAAIiF,EAAK/F,KAAKc,GAAG,GAEP,MAANiF,IACFD,EAAuBC,OAK7B,IAAK,IAAIC,EAAK,EAAGA,EAAKhF,EAAQ7B,OAAQ6G,IAAM,CAC1C,IAAIrB,EAAO,GAAGL,OAAOtD,EAAQgF,IAEzBH,GAAUC,EAAuBnB,EAAK,MAKtCiB,IACGjB,EAAK,GAGRA,EAAK,GAAK,GAAGL,OAAOsB,EAAY,SAAStB,OAAOK,EAAK,IAFrDA,EAAK,GAAKiB,GAMdpB,EAAKyB,KAAKtB,MAIPH,I,gCChET9D,OAAewF,2tH,gCCAfxF,OAAewF,whM,oBCGf,IAAItB,EAAUlE,EAAQ,KACA,iBAAZkE,IAAsBA,EAAU,CAAC,CAAC/D,EAAOC,EAAI8D,EAAS,MAC7DA,EAAQuB,SAAQtF,EAAOD,QAAUgE,EAAQuB,WAElCzF,EAAQ,GAAkE0F,SACnE,WAAYxB,KAAe,K,iBCR5C/D,EAAOD,QAAUnD,EAAQ,M,iCCAzB,mBAA6b,G,qBCE7bmD,EADkCF,EAAQ,EAARA,EACxB2F,IAEFJ,KAAK,CAACpF,EAAOC,EAAI,ioCAAkoC,KAE3pCD,EAAOD,QAAUA,G,gCCNjBF;;;;;;;;;;;;;;;;;;;;;;;AA4BA4F,WAASpD,QAAQqD,gBAAjBD,yDAAqFE,UAArFF,6EACAA,WAASpD,QAAQuD,eAEFH,YAAf,U,iBC/BAzF,EAAOD,QAAUnD,EAAQ,M,qCCAzBoD,EAAOD,QAAUnD,EAAQ,M;;;;;;;;;;;;;;;;;;;;;SCwBVyI,KACdQ,OADcR,WAIRlG,KAAK2G,OAAOP,SAAgC,KAArBpG,KAAK4G,KAAKrI,SACrCsI,IAAIC,KAAKC,KAATF,UAAiB7G,KAAK+D,SAAS3C,KAA/ByF,2DAA8F7G,MAC9FA,KAAKgH,WACLhH,KAAKiH,IAAIC,WAIXC,aAXcjB,WAYblG,KAAK4G,KAAO5G,KAAKoH,WAGlBrC,KAfcmB,WAgBb,MAAO,CAGNU,KAAM5G,KAAKoH,YAIbC,SAAU,CACTC,WADS,WAER,OAAOtH,KAAK4G,MAAQ5G,KAAK4G,KAAKrI,OAAOY,OAAS,KAIhDoI,QAAS,CACRH,QADQ,WAEP,OAAOpH,KAAK2G,OAAOP,QAAUpG,KAAK2G,OAAOP,QAAQ,GAAGQ,KAAKrI,OAAS,O,uDCzBtDiJ,IAPK,SAACrI,GACpB,OAAOsI,KAAKC,SACVjD,SAAS,IACTkD,QAAQ,WAAY,IACpBC,OAAO,EAAGzI,GAAU,K;;;;;;;;;;;;;;;;;;;;;SCLR,SAAS0I,EAAMC,EAAUC,GACvC,IAAIhC,EACAiC,EAEAC,EADAC,EAAYH,EAGhB/H,KAAKmI,MAAQ,WACZF,KACAD,EAAU,IAAII,KACdrC,EAAKsC,WAAWP,EAAUI,IAG3BlI,KAAKsI,MAAQ,WACZL,KACAM,aAAaxC,GACbmC,GAAa,IAAIE,KAASJ,GAG3BhI,KAAKwI,MAAQ,WACZP,KACAM,aAAaxC,GACbmC,EAAY,GAGblI,KAAKyI,YAAc,WAMlB,OALIR,IACHjI,KAAKsI,QACLtI,KAAKmI,SAGCD,GAGRlI,KAAK0I,gBAAkB,WACtB,OAAOT,GAGRjI,KAAKmI,QC8HN,ICzL2LQ,EDyL3L,CACAvH,aAEAwH,YACAC,kBACAC,wBAGAC,YACAC,mBAGAC,aAEAC,OAIAC,OACAC,YACAhD,YAKAiD,aACAD,aACAhD,YAKAkD,SACAF,aACAhD,YAKAmD,eACAH,aACAhD,YAKAoD,iBACAJ,aACAhD,YAEAqD,gBACAL,YACAhD,aAKAsD,gBACAN,YACAhD,aAKAuD,iBACAP,aACAhD,YAKAwD,aACAR,aACAhD,YAEAyD,kBACAT,aACAhD,YAEA0D,MACAV,YACAhD,iBACA2D,sBACA,kDAMAC,UACAZ,aACAhD,YAGA6D,MACAb,aACAhD,aAIArB,KApGA,WAqGA,OACAmF,QACAC,aACAC,aACAC,sBACAC,WACAC,wBAIAlD,UACAmD,oBADAnD,WAEA,sDAEAoD,eAJApD,WAKA,oFAIAqD,OAKAf,4BACA3J,wBACA2K,EACA3K,8BAEAA,iCAMA4K,YAxIA,WAyIApK,uDAEAqK,cA3IA,WA4IArK,0DAEAsK,QA9IA,WA8IAA,WACA9K,kBAGAA,uBAEAA,iCACAA,+CACA+K,oBAIAC,8DAEAC,UA5JA,WA6JAjL,oCACAA,mBAGAuH,SAEA2D,SAFA3D,SAEA2D,GAEAlL,mBAIA+E,GACA/E,sBAEAA,2BAGAmL,KAdA5D,SAcA4D,GAEAnL,eAIA+E,GACA/E,sBAEAA,uBAGAoL,MA1BA7D,SA0BA6D,cAEApL,gBACAA,kBAGAqI,uBAIAgD,qBACA,OAKAC,cA1CA/D,SA0CA+D,GACA,kBACA,QACAtL,iBACA,MACA,QACA,QACAA,aACA,MACA,QACAA,gBAIAuL,YAxDAhE,SAwDAgE,GACAvL,mBACA,qBAEAA,aACA,uBAEAA,mBAIAwL,gBAnEAjE,WAmEAiE,WACAxL,wBACAA,kBACAuI,oCACAvI,6CACAyL,iBACAzL,uBAOA0L,gBAhFAnE,WAiFAvH,2BACAA,aACAA,uBAEAA,8BAOA2L,eA5FApE,WA6FAvH,2BACAA,6BACAA,2BACAA,2BAOA4L,gBAvGArE,WAuGAqE,WACA5L,gBACAA,aACAA,wCACA6L,SACAA,sBACA7L,sBAEAA,gBACAA,+BAOA8L,sBAvHAvE,WAwHAvH,uBACAA,iC,mDEnda,WAAa,IAAI+L,EAAI/L,KAASgM,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,aAAa,CAACE,MAAM,CAAChL,KAAO,SAAS,CAAC8K,EAAG,MAAM,CAACG,IAAI,OAAOC,YAAY,aAAaC,MAAM,CAAEC,mBAAoBT,EAAI9B,MAAOwC,GAAG,CAACC,MAAQX,EAAIP,gBAAgBmB,UAAYZ,EAAIP,gBAAgBoB,UAAYb,EAAIP,kBAAkB,CAACU,EAAG,aAAa,CAACE,MAAM,CAAChL,KAAO,oBAAoB,CAAC8K,EAAG,MAAM,CAACnD,WAAW,CAAC,CAAC3H,KAAK,OAAOyL,QAAQ,SAAShN,OAAQkM,EAAI3B,UAAW0C,WAAW,eAAeR,YAAY,eAAeC,MAAM,CACtfQ,UAAWhB,EAAI3B,YACb,CAAuB,KAArB2B,EAAI5C,MAAM5K,OAAe2N,EAAG,MAAM,CAACI,YAAY,eAAe,CAACP,EAAIiB,GAAG,eAAejB,EAAIkB,GAAGlB,EAAI5C,OAAO,gBAAgB4C,EAAImB,KAAKnB,EAAIiB,GAAG,KAAKd,EAAG,MAAM,CAACI,YAAY,cAAc,CAAEP,EAAIzC,SAAWyC,EAAIvC,gBAAiB0C,EAAG,SAAS,CAACnD,WAAW,CAAC,CAAC3H,KAAK,UAAUyL,QAAQ,iBAAiBhN,MAAOkM,EAAkB,eAAEe,WAAW,iBAAiBK,UAAU,CAACC,WAAed,YAAY,aAAaC,MAAM,CAAEc,qBAAsBtB,EAAIpC,iBAAkB8C,GAAG,CAACC,MAAQX,EAAIL,kBAAkB,CAACQ,EAAG,MAAM,CAACK,MAAM,CAACR,EAAIzB,QAAU,aAAe,cAAc,CAAC4B,EAAG,OAAO,CAACI,YAAY,mBAAmB,CAACP,EAAIiB,GAAG,qBAAqBjB,EAAIkB,GAAGlB,EAAItB,gBAAgB,wBAAwBsB,EAAIiB,GAAG,KAAMjB,EAAW,QAAEG,EAAG,MAAM,CAACI,YAAY,gBAAgBF,MAAM,CAACkB,OAAS,KAAKC,MAAQ,OAAO,CAACrB,EAAG,SAAS,CAACI,YAAY,wBAAwBF,MAAM,CAACoB,OAAS,QAAQC,eAAe,IAAIC,KAAO,cAAchM,EAAI,KAAKiM,GAAK,KAAKC,GAAK,UAAU7B,EAAImB,OAAOnB,EAAImB,KAAKnB,EAAIiB,GAAG,KAAKd,EAAG,UAAU,CAACI,YAAY,kBAAkB,CAACP,EAAI8B,GAAG,YAAY,GAAG9B,EAAIiB,GAAG,KAAMjB,EAAY,SAAEG,EAAG,UAAU,CAACI,YAAY,gBAAgB,CAACJ,EAAG,eAAe,CAACE,MAAM,CAAC0B,KAAO,cAAcrB,GAAG,CAACC,MAAQX,EAAIX,QAAQ,CAACW,EAAIiB,GAAG,mBAAmBjB,EAAIkB,GAAGlB,EAAIlK,EAAE,UAAU,qBAAqB,GAAGkK,EAAImB,MAAM,OAAOnB,EAAIiB,GAAG,KAAKd,EAAG,aAAa,CAACE,MAAM,CAAChL,KAAO2K,EAAIvB,sBAAsB,CAAC0B,EAAG,MAAM,CAACnD,WAAW,CAAC,CAAC3H,KAAK,OAAOyL,QAAQ,SAAShN,MAAOkM,EAAa,UAAEe,WAAW,cAAcR,YAAY,gBAAgBC,MAAM,CACj6C,kBAAoBR,EAAIjC,KACzBiC,EAAIlC,iBAAmB,mCAAqC,IAC3D4C,GAAG,CAACC,MAAQ,SAASqB,GAAQ,OAAGA,EAAOC,SAAWD,EAAOE,cAAuB,KAAclC,EAAIX,MAAM2C,MAAW,CAAC7B,EAAG,aAAa,CAACE,MAAM,CAAChL,KAAO,oBAAoB,CAAC8K,EAAG,IAAI,CAACnD,WAAW,CAAC,CAAC3H,KAAK,OAAOyL,QAAQ,SAAShN,MAAOkM,EAAI1C,cAAgB0C,EAAI3B,UAAW0C,WAAW,8BAA8BR,YAAY,OAAOC,MAAM,CACrUQ,UAAWhB,EAAI3B,YAAc2B,EAAI1C,aAChCoD,GAAG,CAACC,MAAQX,EAAIb,WAAW,CAACgB,EAAG,MAAM,CAACI,YAAY,sBAAsB,CAACJ,EAAG,OAAO,CAACI,YAAY,mBAAmB,CAACP,EAAIiB,GAAG,qBAAqBjB,EAAIkB,GAAGlB,EAAIlK,EAAE,aAAa,4BAA4BkK,EAAIiB,GAAG,KAAKd,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACP,EAAI8B,GAAG,YAAY,GAAG9B,EAAIiB,GAAG,KAAKd,EAAG,aAAa,CAACE,MAAM,CAAChL,KAAO,oBAAoB,CAAC8K,EAAG,IAAI,CAACnD,WAAW,CAAC,CAAC3H,KAAK,OAAOyL,QAAQ,SAAShN,MAAOkM,EAAIzC,UAAYyC,EAAI3B,UAAW0C,WAAW,0BAA0BR,YAAY,OAAOC,MAAM,CACzeQ,UAAWhB,EAAI3B,YAAc2B,EAAIzC,SAChCmD,GAAG,CAACC,MAAQX,EAAIZ,OAAO,CAACe,EAAG,MAAM,CAACI,YAAY,kBAAkB,CAACJ,EAAG,OAAO,CAACI,YAAY,mBAAmB,CAACP,EAAIiB,GAAG,qBAAqBjB,EAAIkB,GAAGlB,EAAIlK,EAAE,SAAS,6BAA6B,MAAM,OACnL,M;;;;;;;;;;;;;;;;;;;;;SCctBqM,YAAeC,GAEAA,a,iBC1BftN,EAAOD,QAAUnD,EAAQ,K,iBCAzBoD,EAAOD,QAAUnD,EAAQ,K,+BCIV,SAAS2Q,EAAcC,EAAU7J,GAG9C,IAFA,IAAI8J,EAAS,GACTC,EAAY,GACPzN,EAAI,EAAGA,EAAI0D,EAAKrF,OAAQ2B,IAAK,CACpC,IAAI6D,EAAOH,EAAK1D,GACZiF,EAAKpB,EAAK,GAIV6J,EAAO,CACTzI,GAAIsI,EAAW,IAAMvN,EACrB2N,IALQ9J,EAAK,GAMb+J,MALU/J,EAAK,GAMfE,UALcF,EAAK,IAOhB4J,EAAUxI,GAGbwI,EAAUxI,GAAI4I,MAAM1I,KAAKuI,GAFzBF,EAAOrI,KAAKsI,EAAUxI,GAAM,CAAEA,GAAIA,EAAI4I,MAAO,CAACH,KAKlD,OAAOF,E,+CCjBT,IAAIM,EAAkC,oBAAb5D,SAEzB,GAAqB,oBAAV6D,OAAyBA,QAC7BD,EACH,MAAM,IAAIE,MACV,2JAkBJ,IAAIC,EAAc,GAQdC,EAAOJ,IAAgB5D,SAASgE,MAAQhE,SAASiE,qBAAqB,QAAQ,IAC9EC,EAAmB,KACnBC,EAAmB,EACnBC,KACAC,EAAO,aACPnM,EAAU,KAKVoM,EAA+B,oBAAdC,WAA6B,eAAeC,KAAKD,UAAUE,UAAUC,eAE3E,SAASC,EAAiBtB,EAAU7J,EAAMoL,EAAeC,GACtET,EAAeQ,EAEf1M,EAAU2M,GAAY,GAEtB,IAAIvB,EAASF,EAAaC,EAAU7J,GAGpC,OAFAsL,EAAexB,GAER,SAAiByB,GAEtB,IADA,IAAIC,EAAY,GACPlP,EAAI,EAAGA,EAAIwN,EAAOnP,OAAQ2B,IAAK,CACtC,IAAI6D,EAAO2J,EAAOxN,IACdmP,EAAWlB,EAAYpK,EAAKoB,KACvBmK,OACTF,EAAU/J,KAAKgK,GAQjB,IANIF,EAEFD,EADAxB,EAASF,EAAaC,EAAU0B,IAGhCzB,EAAS,GAEFxN,EAAI,EAAGA,EAAIkP,EAAU7Q,OAAQ2B,IAAK,CACzC,IAAImP,EACJ,GAAsB,KADlBA,EAAWD,EAAUlP,IACZoP,KAAY,CACvB,IAAK,IAAI7P,EAAI,EAAGA,EAAI4P,EAAStB,MAAMxP,OAAQkB,IACzC4P,EAAStB,MAAMtO,YAEV0O,EAAYkB,EAASlK,OAMpC,SAAS+J,EAAgBxB,GACvB,IAAK,IAAIxN,EAAI,EAAGA,EAAIwN,EAAOnP,OAAQ2B,IAAK,CACtC,IAAI6D,EAAO2J,EAAOxN,GACdmP,EAAWlB,EAAYpK,EAAKoB,IAChC,GAAIkK,EAAU,CACZA,EAASC,OACT,IAAK,IAAI7P,EAAI,EAAGA,EAAI4P,EAAStB,MAAMxP,OAAQkB,IACzC4P,EAAStB,MAAMtO,GAAGsE,EAAKgK,MAAMtO,IAE/B,KAAOA,EAAIsE,EAAKgK,MAAMxP,OAAQkB,IAC5B4P,EAAStB,MAAM1I,KAAKkK,EAASxL,EAAKgK,MAAMtO,KAEtC4P,EAAStB,MAAMxP,OAASwF,EAAKgK,MAAMxP,SACrC8Q,EAAStB,MAAMxP,OAASwF,EAAKgK,MAAMxP,YAEhC,CACL,IAAIwP,EAAQ,GACZ,IAAStO,EAAI,EAAGA,EAAIsE,EAAKgK,MAAMxP,OAAQkB,IACrCsO,EAAM1I,KAAKkK,EAASxL,EAAKgK,MAAMtO,KAEjC0O,EAAYpK,EAAKoB,IAAM,CAAEA,GAAIpB,EAAKoB,GAAImK,KAAM,EAAGvB,MAAOA,KAK5D,SAASyB,IACP,IAAIC,EAAerF,SAASsF,cAAc,SAG1C,OAFAD,EAAajH,KAAO,WACpB4F,EAAKuB,YAAYF,GACVA,EAGT,SAASF,EAAUK,GACjB,IAAIC,EAAQvJ,EACRmJ,EAAerF,SAAS0F,cAAc,2BAA8BF,EAAIzK,GAAK,MAEjF,GAAIsK,EAAc,CAChB,GAAIjB,EAGF,OAAOC,EAOPgB,EAAaM,WAAWC,YAAYP,GAIxC,GAAIf,EAAS,CAEX,IAAIuB,EAAa1B,IACjBkB,EAAenB,IAAqBA,EAAmBkB,KACvDK,EAASK,EAAoB7O,KAAK,KAAMoO,EAAcQ,MACtD3J,EAAS4J,EAAoB7O,KAAK,KAAMoO,EAAcQ,WAGtDR,EAAeD,IACfK,EAASM,EAAW9O,KAAK,KAAMoO,GAC/BnJ,EAAS,WACPmJ,EAAaM,WAAWC,YAAYP,IAMxC,OAFAI,EAAOD,GAEA,SAAsBQ,GAC3B,GAAIA,EAAQ,CACV,GAAIA,EAAOvC,MAAQ+B,EAAI/B,KACnBuC,EAAOtC,QAAU8B,EAAI9B,OACrBsC,EAAOnM,YAAc2L,EAAI3L,UAC3B,OAEF4L,EAAOD,EAAMQ,QAEb9J,KAKN,IACM+J,EADFC,GACED,EAAY,GAET,SAAU7R,EAAO+R,GAEtB,OADAF,EAAU7R,GAAS+R,EACZF,EAAUG,OAAOC,SAAS1L,KAAK,QAI1C,SAASmL,EAAqBT,EAAcjR,EAAO8H,EAAQsJ,GACzD,IAAI/B,EAAMvH,EAAS,GAAKsJ,EAAI/B,IAE5B,GAAI4B,EAAaiB,WACfjB,EAAaiB,WAAWC,QAAUL,EAAY9R,EAAOqP,OAChD,CACL,IAAI+C,EAAUxG,SAASyG,eAAehD,GAClCiD,EAAarB,EAAaqB,WAC1BA,EAAWtS,IAAQiR,EAAaO,YAAYc,EAAWtS,IACvDsS,EAAWvS,OACbkR,EAAasB,aAAaH,EAASE,EAAWtS,IAE9CiR,EAAaE,YAAYiB,IAK/B,SAAST,EAAYV,EAAcG,GACjC,IAAI/B,EAAM+B,EAAI/B,IACVC,EAAQ8B,EAAI9B,MACZ7J,EAAY2L,EAAI3L,UAiBpB,GAfI6J,GACF2B,EAAauB,aAAa,QAASlD,GAEjCxL,EAAQ2O,OACVxB,EAAauB,aA7JF,kBA6JyBpB,EAAIzK,IAGtClB,IAGF4J,GAAO,mBAAqB5J,EAAUW,QAAQ,GAAK,MAEnDiJ,GAAO,uDAAyDxJ,KAAKE,SAASC,mBAAmBC,KAAKC,UAAUT,MAAgB,OAG9HwL,EAAaiB,WACfjB,EAAaiB,WAAWC,QAAU9C,MAC7B,CACL,KAAO4B,EAAayB,YAClBzB,EAAaO,YAAYP,EAAayB,YAExCzB,EAAaE,YAAYvF,SAASyG,eAAehD,O,iBC3NrD5N,EAAOD,QAAUnD,EAAQ,M,iBCAzBoD,EAAOD,QAAUnD,EAAQ,K,iBCAzBoD,EAAOD,QAAUnD,EAAQ,M,iBCAzBoD,EAAOD,QAAUnD,EAAQ,K,iBCAzBoD,EAAOD,QAAUnD,EAAQ,M,iCCAzB,oBAAsb,G,oBCCtb,IAAI4I,EAA8B3F,EAAQ,GACtCqR,EAAkCrR,EAAQ,GAC1CsR,EAAgCtR,EAAQ,GACxCuR,EAAgCvR,EAAQ,GACxCwR,EAAgCxR,EAAQ,IACxCyR,EAAgCzR,EAAQ,IAC5CE,EAAUyF,MACV,IAAI+L,EAAqCL,EAAgCC,GACrEK,EAAqCN,EAAgCE,GACrEK,EAAqCP,EAAgCG,GACrEK,EAAqCR,EAAgCI,GAEzEvR,EAAQqF,KAAK,CAACpF,EAAOC,EAAI,yDAA6DsR,EAAqC,aAAeA,EAAqC,qCAAyCC,EAAqC,wBAA4BC,EAAqC,4BAAgCC,EAAqC,+hQAAkmQ,KAEr+Q1R,EAAOD,QAAUA,G,iBCfjBC,EAAOD,QAAUnD,EAAQ,K,yECwCV+U,G,MAVG,SAASlP,EAASlC,GAEnC,IADA,IAAIqC,EAASH,EAAQmP,QACdhP,GAAQ,CACd,GAAIA,EAAOM,SAAS3C,OAASA,EAC5B,OAAOqC,EAERA,EAASA,EAAOgP,WCXHvM,KACd+C,OAAQ,CAACyJ,KACTxJ,MAAO,CAIN4E,KAAM,CACL1E,KAAMuJ,OACNvM,QAAS,IAKV+C,MAAO,CACNC,KAAMuJ,OACNvM,QAAS,IAKVwM,gBAAiB,CAChBxJ,KAAMiI,QACNjL,YAKDyM,UAAW,CACVzJ,KAAMuJ,OACNvM,QAAS,KAIXiB,SAAU,CACTyL,UADS,WAER,IACC,OAAO,IAAIC,IAAI/S,KAAK8N,MACnB,MAAOkF,GACR,YAKHzL,QAAS,CACR0L,QADQ,SACAC,GAOP,GAFAlT,KAAKmT,MAAM,QAASD,GAEhBlT,KAAK4S,gBAAiB,CACzB,IAAMnP,EAAS+O,EAAUxS,KAAM,WAC3ByD,GAAUA,EAAO2P,WACpB3P,EAAO2P,iB,iBC/EZvS,EAAOD,QAAUnD,EAAQ,M,iBCAzBoD,EAAOD,QAAUnD,EAAQ,M,mBCGzB,IAAImH,EAAUlE,EAAQ,IACA,iBAAZkE,IAAsBA,EAAU,CAAC,CAAC/D,EAAOC,EAAI8D,EAAS,MAC7DA,EAAQuB,SAAQtF,EAAOD,QAAUgE,EAAQuB,WAElCzF,EAAQ,GAAkE0F,SACnE,WAAYxB,KAAe,K,gBCR5C/D,EAAOD,QAAUnD,EAAQ,M,iBCAzBoD,EAAOD,QAAUnD,EAAQ,M,4ECwDV4V,IA1BM,SAACC,EAAOC,EAASC,GACrC,YAAIF,EAIJ,IAAK,IAAIlU,EAAQkU,EAAMnU,OAAS,EAAGC,GAAS,EAAGA,IAAS,CACvD,IAAMqU,EAAOH,EAAMlU,GAEbsU,GAAiBD,EAAKE,kBAAoBF,EAAKG,MAAsC,IAA/BL,EAAQM,QAAQJ,EAAKG,KAC3EE,IAAmBL,EAAKE,kBAAyD,iBAA9BF,EAAKE,iBAAiBC,IACzEG,EAAuBD,IAAkE,IAAhDP,EAAQM,QAAQJ,EAAKE,iBAAiBC,MAGjFF,IAAkBI,GAAkBC,MAGnCL,GAAiBK,IACpBlN,IAAIC,KAAKC,KAATF,UAAiB6M,EAAgBD,EAAKG,IAAMH,EAAKE,iBAAiBC,IAAlE/M,sCAAmG2M,EAAGzP,SAAS3C,KAA/GyF,cAAiI2M,GAIlIF,EAAMU,OAAO5U,EAAO,O,gCCnDvB,WAEe8G,KACdqB,QAAS,CACRrF,MACAL,S,iBCLFhB,EAAOD,QAAUnD,EAAQ,M,mDCAzBiD;;;;;;;;;;;;;;;;;;;;;SAuBemI,YAAf,G,gBCvBAhI,EAAOD,QAAUnD,EAAQ,K,mBCGzB,IAAImH,EAAUlE,EAAQ,IACA,iBAAZkE,IAAsBA,EAAU,CAAC,CAAC/D,EAAOC,EAAI8D,EAAS,MAC7DA,EAAQuB,SAAQtF,EAAOD,QAAUgE,EAAQuB,WAElCzF,EAAQ,GAAkE0F,SACnE,WAAYxB,KAAe,K,oBCN5ChE,EADkCF,EAAQ,EAARA,EACxB2F,IAEFJ,KAAK,CAACpF,EAAOC,EAAI,igEAAkgE,KAE3hED,EAAOD,QAAUA,G,kDCNjB,I,wBCmCeqT,G,MA7BS,SAASC,GAEhC,IAAMC,EAAWD,EAAKE,wBAChBC,EAAgBrJ,SAASsJ,gBAAgBC,aACzCC,EAAexJ,SAASsJ,gBAAgBG,YAGxCC,EAAMnT,OAAOoT,OAAO,IAmB1B,OAlBAD,EAAIE,IAAMT,EAASS,IAAM,EACzBF,EAAIG,KAAOV,EAASU,KAAO,EAC3BH,EAAII,OAASX,EAASW,OAAST,EAC/BK,EAAIK,MAAQZ,EAASY,MAAQP,EAC7BE,EAAIM,IAAMN,EAAIE,KAAOF,EAAIG,MAAQH,EAAII,QAAUJ,EAAIK,MACnDL,EAAIO,IAAMP,EAAIE,KAAOF,EAAIG,MAAQH,EAAII,QAAUJ,EAAIK,MAEnDL,EAAIQ,QAAUR,EAAIE,IACfT,EAASS,IACTF,EAAII,OACHX,EAASW,OAAST,EAClB,EACJK,EAAIS,QAAUT,EAAIG,KACfV,EAASU,KACTH,EAAIK,MACHZ,EAASY,MAAQP,EACjB,EAEGE,I,eC2FRU,GACA,eACA,iBACA,cACA,aACA,cACA,eACA,kBACA,aACA,sBCpI6LC,EDiJ7L,CACAjU,eAEA2H,YACAuM,yBACAtM,mBAGAE,OAIAqM,MACAnM,aACAhD,YAMAoP,WACApM,aACAhD,YAOAqP,WACArM,YACAhD,iBACA2D,sBACA,gDAQA2L,aACAtM,YACAhD,iDAKAyM,WACAzJ,YACAhD,iCAIArB,KAtDA,WAuDA,OACA4Q,WACAC,iBACAC,aACAC,+BACAX,UACAD,UACAa,eACAC,eAIAC,0BAIA5O,UAKA6O,mBALA7O,WAMA,8BAOA8O,oBAbA9O,WAcA,gCACA,gCAMA+O,iBArBA/O,WAsBA,wBAQAgP,YA9BAhP,WA+BA,wBACArH,iBACA,IAOAsW,mBAxCAjP,WAyCA,kEACA,iDACA,oBACA,OACAkP,OACAC,2BACAxI,+BACAyI,yCAGA,sBACA,OACAF,iBACAG,uBACAC,6BACAF,yCAGA,sBACA,OACAF,YACAE,yCAKA,aAIAG,iBAvEAvP,WAwEA,8BACArH,wCACAA,kDACAA,wDAEA6W,wBA7EAxP,WA8EA,2CAEAyP,iBAhFAzP,WAiFA,oEACA0P,0DACA,mCAIArM,OACA6K,KADA7K,SACA6K,cACAvV,cACAA,aACAA,2BACA+K,gBAKAH,YAxKA,WA0KA5K,mBAGAuB,yCAEA4F,aA/KA,WAuLAnH,mBACAuB,yCAGAgG,SAEAyP,WAFAzP,SAEAyP,cACAhX,yBAEAA,aACAA,2BACAqL,WACAA,wBAMArL,uBAEAA,eACAA,eACAA,oBACAA,qBAOAA,uCAEAoT,UA5BA7L,SA4BA6L,GAMApT,cAKAA,6BAKAA,uBAKAA,eACAA,eACAA,eACAA,oBACAA,qBAQAiX,OA7DA1P,WAkEA,GAJAvH,eACAA,eACAA,oBACAA,oBACA,2BACA,0BACAkX,mBACAlX,yBACAyH,wBACAA,yBAEAyP,WACAlX,2DACAA,8DACAA,uBAUAmX,mBAtFA5P,SAsFA4P,GACA,sCAIA,6BACA,MACA,sBAlSA,cAmSA,MACA,uCApSA,cAqSAtB,oCACAA,OACA7V,kBACAA,wBAKAoX,oBAxGA7P,WAyGA,iDACA8P,GACAA,8BAGAC,YA9GA/P,WAgHA,uCArTA,cAqTA,iBACA,MACA,sBACAgQ,UACAC,IACAxX,2BACAwX,6BAIAC,oBA1HAlQ,WA2HAvH,8CACAA,oBAEA0X,gBA9HAnQ,WA+HAvH,4EApUA,cAoUAA,UACAA,oBAEA2X,iBAlIApQ,WAmIAvH,kBACAA,oBAEA4X,gBAtIArQ,WAuIAvH,0CA5UA,cA4UAA,SACAA,oBAKA6X,gBA7IAtQ,SA6IAsQ,GACA7X,uBACAA,0BAGA8X,YAlJAvQ,WAoJAvH,iG,iDFhea,WAAa,IAAI+L,EAAI/L,KAASgM,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAQD,EAAIoK,sBAAwBpK,EAAIyJ,UAAWtJ,EAAG,UAAUH,EAAIgM,GAAG,CAAChP,WAAW,CAAC,CAAC3H,KAAK,UAAUyL,QAAQ,iBAAiBhN,MAAOkM,EAAIsK,YAAgB,KAAEvJ,WAAW,mBAAmBK,UAAU,CAACC,WAAed,YAAY,kCAAkCC,MAAM,CAACR,EAAIsK,YAAYvI,KAAM/B,EAAI+K,kBAAkB1K,MAAM,CAAC4L,IAAM,uBAAuBvL,GAAGV,EAAIkM,GAAG,GAAG,CAAClM,EAAI8K,wBAAwB9K,EAAI8L,mBAAmB,UAAU9L,EAAIuK,uBAA0B,CAACpK,EAAG,OAAO,CAACE,MAAM,CAAC8L,iBAAmBC,OAAS,KAAK,CAACpM,EAAI8B,GAAG,YAAY,KAAK3B,EAAG,MAAM,CAACnD,WAAW,CAAC,CAAC3H,KAAK,OAAOyL,QAAQ,SAAShN,MAAOkM,EAAImK,oBAAsBnK,EAAIyJ,UAAW1I,WAAW,mCAAmC,CAAC1L,KAAK,gBAAgByL,QAAQ,kBAAkBhN,MAAOkM,EAAa,UAAEe,WAAW,cAAcR,YAAY,cAAcC,MAAM,CAAC6L,oBAAqBrM,EAAI6J,QAAQnJ,GAAG,CAAC4L,QAAU,CAAC,SAAStK,GAAQ,OAAIA,EAAO3E,KAAKyK,QAAQ,QAAQ9H,EAAIuM,GAAGvK,EAAOwK,QAAQ,KAAK,GAAGxK,EAAOpO,IAAI,CAAC,KAAK,aAA+BoO,EAAOyK,SAASzK,EAAO0K,UAAU1K,EAAO2K,QAAQ3K,EAAO4K,QAAjE,MAAyF5K,EAAO6K,iBAAwB7M,EAAI0L,oBAAoB1J,KAAS,SAASA,GAAQ,OAAIA,EAAO3E,KAAKyK,QAAQ,QAAQ9H,EAAIuM,GAAGvK,EAAOwK,QAAQ,OAAO,GAAGxK,EAAOpO,IAAI,CAAC,OAAO,eAAiCoO,EAAOyK,SAASzK,EAAO0K,UAAU1K,EAAO2K,QAAQ3K,EAAO4K,QAAjE,MAAyF5K,EAAO6K,iBAAwB7M,EAAI2L,gBAAgB3J,KAAS,SAASA,GAAQ,OAAIA,EAAO3E,KAAKyK,QAAQ,QAAQ9H,EAAIuM,GAAGvK,EAAOwK,QAAQ,MAAM,EAAExK,EAAOpO,IAAI,OAAgB,KAAWoO,EAAO0K,UAAyB1K,EAAO6K,iBAAwB7M,EAAI0L,oBAAoB1J,IAA9D,MAAuE,SAASA,GAAQ,OAAIA,EAAO3E,KAAKyK,QAAQ,QAAQ9H,EAAIuM,GAAGvK,EAAOwK,QAAQ,iBAAoBxK,EAAOpO,aAAkCoO,EAAOyK,SAASzK,EAAO0K,UAAU1K,EAAO2K,QAAQ3K,EAAO4K,QAAjE,MAAyF5K,EAAO6K,iBAAwB7M,EAAI4L,iBAAiB5J,KAAS,SAASA,GAAQ,OAAIA,EAAO3E,KAAKyK,QAAQ,QAAQ9H,EAAIuM,GAAGvK,EAAOwK,QAAQ,mBAAsBxK,EAAOpO,aAAkCoO,EAAOyK,SAASzK,EAAO0K,UAAU1K,EAAO2K,QAAQ3K,EAAO4K,QAAjE,MAAyF5K,EAAO6K,iBAAwB7M,EAAI6L,gBAAgB7J,KAAS,SAASA,GAAQ,OAAIA,EAAO3E,KAAKyK,QAAQ,QAAQ9H,EAAIuM,GAAGvK,EAAOwK,QAAQ,MAAM,GAAGxK,EAAOpO,IAAI,CAAC,MAAM,YAA8BoO,EAAOyK,SAASzK,EAAO0K,UAAU1K,EAAO2K,QAAQ3K,EAAO4K,QAAjE,MAAyF5K,EAAO6K,iBAAwB7M,EAAIqH,UAAUrF,QAAY,CAAC7B,EAAG,IAAI,CAACI,YAAY,+BAA+BC,MAAMR,EAAI2J,YAAYtJ,MAAM,CAACoK,KAAO,IAAIC,aAAa1K,EAAI8G,UAAUgG,gBAAgB,OAAOC,gBAAgB/M,EAAI+J,SAASiD,gBAAgBhN,EAAI6J,QAAQnJ,GAAG,CAACC,MAAQ,SAASqB,GAAgC,OAAxBA,EAAO6K,iBAAwB7M,EAAIiL,WAAWjJ,IAASsK,QAAU,SAAStK,GAAQ,OAAIA,EAAO3E,KAAKyK,QAAQ,QAAQ9H,EAAIuM,GAAGvK,EAAOwK,QAAQ,QAAQ,GAAGxK,EAAOpO,IAAI,CAAC,IAAI,cAAgCoO,EAAOyK,SAASzK,EAAO0K,UAAU1K,EAAO2K,QAAQ3K,EAAO4K,QAAjE,MAAyF5K,EAAO6K,iBAAwB7M,EAAIiL,WAAWjJ,QAAYhC,EAAIiB,GAAG,KAAKd,EAAG,MAAM,CAACnD,WAAW,CAAC,CAAC3H,KAAK,OAAOyL,QAAQ,SAAShN,MAAOkM,EAAU,OAAEe,WAAW,WAAWT,IAAI,OAAOC,YAAY,oBAAoBC,MAAM,CAAE,QAAUR,EAAI0J,UAAY,CAAEF,KAAQxJ,EAAI6J,SAAUoD,MAAM,CAAEC,YAAclN,EAAIoJ,QAAU,KAAO+D,UAAYnN,EAAImJ,QAAU,MAAQ9I,MAAM,CAAC+M,SAAW,MAAM1M,GAAG,CAACE,UAAYZ,EAAIoL,qBAAqB,CAACjL,EAAG,MAAM,CAACI,YAAY,0BAA0B0M,MAAM,CAAGI,UAAY,cAAgBrN,EAAIoJ,QAAU,kBAAoBpJ,EAAIgK,aAAe,QAAUhK,EAAIiK,YAAc,kBAAoB,OAAUjK,EAAIiB,GAAG,KAAKd,EAAG,KAAK,CAACE,MAAM,CAACrG,GAAKgG,EAAI+J,SAASqD,SAAW,OAAO,CAAEpN,EAAU,OAAE,CAACA,EAAI8B,GAAG,YAAY9B,EAAImB,MAAM,SAC3mH,M;;;;;;;;;;;;;;;;;;;;;SImCPgB,IAdQ,SAACmL,GAElBA,EAAUvO,QAEHwO,MAAMC,QAAQF,EAAUvO,WACnCuO,EAAUvO,QAAU,CAACuO,EAAUvO,UAF/BuO,EAAUvO,QAAU,GAMrBuO,EAAUvO,QAAQ7E,MAAK,WACtBjG,KAAKiH,IAAI2K,aAAT5R,iBAAgCwG,WAAiB,S,iBChCnD3F,EAAOD,QAAUnD,EAAQ,M,mBCGzB,IAAImH,EAAUlE,EAAQ,KACA,iBAAZkE,IAAsBA,EAAU,CAAC,CAAC/D,EAAOC,EAAI8D,EAAS,MAC7DA,EAAQuB,SAAQtF,EAAOD,QAAUgE,EAAQuB,WAElCzF,EAAQ,GAAkE0F,SACnE,WAAYxB,KAAe,K,gBCR5C/D,EAAOD,QAAUnD,EAAQ,K,wICEnB+b,EAAYC,8BAChBC,eACFC,so8CAAajV,KAAI,YAAI,OAAI8U,EAAUI,eAAe7U,EAAK8U,OAAQ9U,EAAK+U,SACpE,IAAMC,EAAKP,EAAUQ,QAEf9X,EAAI6X,EAAGE,SAAShY,KAAK8X,GACrBlY,EAAIkY,EAAGG,QAAQjY,KAAK8X,I,iBCR1BlZ,EAAOD,QAAUnD,EAAQ,K,iBCAzBoD,EAAOD,QAAUnD,EAAQ,M,gCCAzB,mBAAwb,G,mBCCxb,IAAI4I,EAA8B3F,EAAQ,GACtCqR,EAAkCrR,EAAQ,GAC1CsR,EAAgCtR,EAAQ,GACxCuR,EAAgCvR,EAAQ,GACxCwR,EAAgCxR,EAAQ,IACxCyR,EAAgCzR,EAAQ,IAC5CE,EAAUyF,MACV,IAAI+L,EAAqCL,EAAgCC,GACrEK,EAAqCN,EAAgCE,GACrEK,EAAqCP,EAAgCG,GACrEK,EAAqCR,EAAgCI,GAEzEvR,EAAQqF,KAAK,CAACpF,EAAOC,EAAI,yDAA6DsR,EAAqC,aAAeA,EAAqC,qCAAyCC,EAAqC,wBAA4BC,EAAqC,4BAAgCC,EAAqC,69HAAwhI,KAE35I1R,EAAOD,QAAUA,G,+BCbjBC,EAAOD,QAAU,SAAUuZ,EAAKjX,GAS9B,OARKA,IAEHA,EAAU,IAMO,iBAFnBiX,EAAMA,GAAOA,EAAIpY,WAAaoY,EAAI/T,QAAU+T,GAGnCA,GAIL,eAAe3K,KAAK2K,KAEtBA,EAAMA,EAAI1a,MAAM,GAAI,IAGlByD,EAAQkX,OAEVD,GAAOjX,EAAQkX,MAKb,cAAc5K,KAAK2K,IAAQjX,EAAQmX,WAC9B,IAAK/V,OAAO6V,EAAIxS,QAAQ,KAAM,OAAOA,QAAQ,MAAO,OAAQ,KAG9DwS,K,gCChCT,ICAkMG,ECyFlM,CACAlZ,oBAEA6H,Q,MAAAA,GAEAC,OAIAqR,UACAnR,aACAhD,aAGAiB,UAKAmT,uBACA,wB,kDF7Ga,WAAa,IAAIzO,EAAI/L,KAASgM,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACK,MAAM,CAAEkO,mBAAoB1O,EAAIwO,WAAY,CAACrO,EAAG,SAAS,CAACI,YAAY,gBAAgBC,MAAM,CAAEmO,UAAW3O,EAAIyO,aAAcpO,MAAM,CAACqK,aAAa1K,EAAI8G,WAAWpG,GAAG,CAACC,MAAQX,EAAIkH,UAAU,CAAC/G,EAAG,OAAO,CAACI,YAAY,sBAAsBC,MAAM,CAACR,EAAI+G,UAAY,2BAA6B/G,EAAI+B,MAAMkL,MAAM,CAAG2B,gBAAiB5O,EAAI+G,UAAa,OAAS/G,EAAI+B,KAAO,IAAO,QAAU/B,EAAIiB,GAAG,KAAMjB,EAAS,MAAEG,EAAG,IAAI,CAACA,EAAG,SAAS,CAACI,YAAY,wBAAwB,CAACP,EAAIiB,GAAG,aAAajB,EAAIkB,GAAGlB,EAAI5C,OAAO,cAAc4C,EAAIiB,GAAG,KAAKd,EAAG,MAAMH,EAAIiB,GAAG,KAAKd,EAAG,OAAO,CAACI,YAAY,0BAA0BsO,SAAS,CAACC,YAAc9O,EAAIkB,GAAGlB,EAAInF,WAAYmF,EAAc,WAAEG,EAAG,IAAI,CAACI,YAAY,0BAA0BsO,SAAS,CAACC,YAAc9O,EAAIkB,GAAGlB,EAAInF,SAASsF,EAAG,OAAO,CAACI,YAAY,uBAAuB,CAACP,EAAIiB,GAAGjB,EAAIkB,GAAGlB,EAAInF,SAASmF,EAAIiB,GAAG,KAA+BjB,EAAImB,MAAM,OACl7B,M,mGGDtBxM,OAAewF,4/H,iBCAfrF,EAAOD,QAAUnD,EAAQ,M,gCCAzBiD;;;;;;;;;;;;;;;;;;;;;SAuBeoI,YAAf,G,+BCvBApI,OAAewF,+zHlECQ,YAAZtF,IAA0C,YAAXC,GACxCA,EAAOD,QAAUL,KAEjBua,EAA2B,QAA3BA,iE;;;;;qCmECF,SAAUta,EAAQwK,EAAU+P,EAAYC,GACtC,aAEF,IA+FIrG,EA/FAsG,EAAkB,CAAC,GAAI,SAAU,MAAO,KAAM,KAAM,KACpDC,EAAelQ,EAASsF,cAAc,OAItC6K,EAAQ1T,KAAK0T,MACbC,EAAM3T,KAAK2T,IACXC,EAAMjT,KAAKiT,IASf,SAASC,EAAkBC,EAAIC,EAASlY,GACpC,OAAO+E,WAAWoT,EAAOF,EAAIjY,GAAUkY,GAY3C,SAASE,EAAeC,EAAKJ,EAAIjY,GAC7B,QAAIgW,MAAMC,QAAQoC,KACdC,EAAKD,EAAKrY,EAAQiY,GAAKjY,IAChB,GAWf,SAASsY,EAAKpL,EAAKqL,EAAUvY,GACzB,IAAIxC,EAEJ,GAAK0P,EAIL,GAAIA,EAAIsL,QACJtL,EAAIsL,QAAQD,EAAUvY,QACnB,QAvDX,IAuDekN,EAAIrR,OAEX,IADA2B,EAAI,EACGA,EAAI0P,EAAIrR,QACX0c,EAAS3b,KAAKoD,EAASkN,EAAI1P,GAAIA,EAAG0P,GAClC1P,SAGJ,IAAKA,KAAK0P,EACNA,EAAInO,eAAevB,IAAM+a,EAAS3b,KAAKoD,EAASkN,EAAI1P,GAAIA,EAAG0P,GAYvE,SAASuL,EAAUC,EAAQ5a,EAAM6a,GAC7B,IAAIC,EAAqB,sBAAwB9a,EAAO,KAAO6a,EAAU,SACzE,OAAO,WACH,IAAIE,EAAI,IAAIrN,MAAM,mBACdsN,EAAQD,GAAKA,EAAEC,MAAQD,EAAEC,MAAMzU,QAAQ,kBAAmB,IACzDA,QAAQ,cAAe,IACvBA,QAAQ,6BAA8B,kBAAoB,sBAE3D0U,EAAM7b,EAAO8b,UAAY9b,EAAO8b,QAAQvV,MAAQvG,EAAO8b,QAAQD,KAInE,OAHIA,GACAA,EAAInc,KAAKM,EAAO8b,QAASJ,EAAoBE,GAE1CJ,EAAOO,MAAMvc,KAAMF,YAa9B6U,EADyB,mBAAlBpT,OAAOoT,OACL,SAAgB3G,GACrB,GAAIA,QACA,MAAM,IAAIwO,UAAU,8CAIxB,IADA,IAAIC,EAASlb,OAAOyM,GACX5O,EAAQ,EAAGA,EAAQU,UAAUX,OAAQC,IAAS,CACnD,IAAIqG,EAAS3F,UAAUV,GACvB,GAAIqG,QACA,IAAK,IAAIiX,KAAWjX,EACZA,EAAOpD,eAAeqa,KACtBD,EAAOC,GAAWjX,EAAOiX,IAKzC,OAAOD,GAGFlb,OAAOoT,OAWpB,IAAIgI,EAASZ,GAAU,SAAgBa,EAAMC,EAAKC,GAG9C,IAFA,IAAI3c,EAAOoB,OAAOpB,KAAK0c,GACnB/b,EAAI,EACDA,EAAIX,EAAKhB,UACP2d,GAAUA,QAtIvB,IAsIgCF,EAAKzc,EAAKW,OAC9B8b,EAAKzc,EAAKW,IAAM+b,EAAI1c,EAAKW,KAE7BA,IAEJ,OAAO8b,IACR,SAAU,iBASTE,EAAQf,GAAU,SAAea,EAAMC,GACvC,OAAOF,EAAOC,EAAMC,GAAK,KAC1B,QAAS,iBAQZ,SAASE,EAAQC,EAAOC,EAAMC,GAC1B,IACIC,EADAC,EAAQH,EAAKve,WAGjBye,EAASH,EAAMte,UAAY6C,OAAOrD,OAAOkf,IAClC9c,YAAc0c,EACrBG,EAAOE,OAASD,EAEZF,GACAvI,EAAOwI,EAAQD,GAUvB,SAASzB,EAAOF,EAAIjY,GAChB,OAAO,WACH,OAAOiY,EAAGgB,MAAMjZ,EAASxD,YAWjC,SAASwd,EAASC,EAAKC,GACnB,MA1LgB,YA0LZ,EAAOD,GACAA,EAAIhB,MAAMiB,GAAOA,EAAK,SAjMrC,EAiMkEA,GAEvDD,EASX,SAASE,EAAYC,EAAMC,GACvB,YA7MJ,IA6MYD,EAAsBC,EAAOD,EASzC,SAASE,EAAkB5P,EAAQ6P,EAAOC,GACtClC,EAAKmC,EAASF,IAAQ,SAASzU,GAC3B4E,EAAOgQ,iBAAiB5U,EAAM0U,GAAS,MAU/C,SAASG,EAAqBjQ,EAAQ6P,EAAOC,GACzClC,EAAKmC,EAASF,IAAQ,SAASzU,GAC3B4E,EAAOkQ,oBAAoB9U,EAAM0U,GAAS,MAWlD,SAASK,EAAU1K,EAAMhQ,GACrB,KAAOgQ,GAAM,CACT,GAAIA,GAAQhQ,EACR,OAAO,EAEXgQ,EAAOA,EAAK9C,WAEhB,OAAO,EASX,SAASyN,EAAMC,EAAKC,GAChB,OAAOD,EAAIxK,QAAQyK,IAAS,EAQhC,SAASP,EAASM,GACd,OAAOA,EAAI9f,OAAO6B,MAAM,QAU5B,SAASme,EAAQ1B,EAAKyB,EAAME,GACxB,GAAI3B,EAAIhJ,UAAY2K,EAChB,OAAO3B,EAAIhJ,QAAQyK,GAGnB,IADA,IAAIxd,EAAI,EACDA,EAAI+b,EAAI1d,QAAQ,CACnB,GAAKqf,GAAa3B,EAAI/b,GAAG0d,IAAcF,IAAWE,GAAa3B,EAAI/b,KAAOwd,EACtE,OAAOxd,EAEXA,IAEJ,OAAQ,EAShB,SAAS2d,EAAQjO,GACb,OAAO8I,MAAM5a,UAAUe,MAAMS,KAAKsQ,EAAK,GAU3C,SAASkO,EAAY7B,EAAKld,EAAKgf,GAK3B,IAJA,IAAIC,EAAU,GACVC,EAAS,GACT/d,EAAI,EAEDA,EAAI+b,EAAI1d,QAAQ,CACnB,IAAIoe,EAAM5d,EAAMkd,EAAI/b,GAAGnB,GAAOkd,EAAI/b,GAC9Byd,EAAQM,EAAQtB,GAAO,GACvBqB,EAAQ3Y,KAAK4W,EAAI/b,IAErB+d,EAAO/d,GAAKyc,EACZzc,IAaJ,OAVI6d,IAIIC,EAHCjf,EAGSif,EAAQD,MAAK,SAAyBG,EAAGC,GAC/C,OAAOD,EAAEnf,GAAOof,EAAEpf,MAHZif,EAAQD,QAQnBC,EASX,SAASI,EAASxO,EAAKpO,GAKnB,IAJA,IAAI6c,EAAQC,EACRC,EAAY/c,EAAS,GAAGgd,cAAgBhd,EAAS3C,MAAM,GAEvDqB,EAAI,EACDA,EAAIma,EAAgB9b,QAAQ,CAI/B,IAFA+f,GADAD,EAAShE,EAAgBna,IACPme,EAASE,EAAY/c,KAE3BoO,EACR,OAAO0O,EAEXpe,KASR,IAAIue,EAAY,EAUhB,SAASC,EAAoBC,GACzB,IAAIC,EAAMD,EAAQE,eAAiBF,EACnC,OAAQC,EAAIE,aAAeF,EAAIG,cAAgBnf,EAGnD,IAEIof,EAAiB,iBAAkBpf,EACnCqf,OA1XJ,IA0X6Bb,EAASxe,EAAQ,gBAC1Csf,EAAqBF,GAJN,wCAIoCpQ,KAAKD,UAAUE,WAwBlEsQ,EAAW,CAAC,IAAK,KACjBC,EAAkB,CAAC,UAAW,WASlC,SAASC,EAAMC,EAASpY,GACpB,IAAIqY,EAAOngB,KACXA,KAAKkgB,QAAUA,EACflgB,KAAK8H,SAAWA,EAChB9H,KAAKuf,QAAUW,EAAQX,QACvBvf,KAAKgO,OAASkS,EAAQhd,QAAQkd,YAI9BpgB,KAAKqgB,WAAa,SAASC,GACnBhD,EAAS4C,EAAQhd,QAAQqd,OAAQ,CAACL,KAClCC,EAAKrC,QAAQwC,IAIrBtgB,KAAKwgB,OA4DT,SAASC,EAAaP,EAASQ,EAAWC,GACtC,IAAIC,EAAcD,EAAME,SAAS1hB,OAC7B2hB,EAAqBH,EAAMI,gBAAgB5hB,OAC3C6hB,EAvGU,EAuGCN,GAA4BE,EAAcE,GAAuB,EAC5EG,EAAuB,GAAZP,GAA2CE,EAAcE,GAAuB,EAE/FH,EAAMK,UAAYA,EAClBL,EAAMM,UAAYA,EAEdD,IACAd,EAAQgB,QAAU,IAKtBP,EAAMD,UAAYA,EAiBtB,SAA0BR,EAASS,GAC/B,IAAIO,EAAUhB,EAAQgB,QAClBL,EAAWF,EAAME,SACjBM,EAAiBN,EAAS1hB,OAGzB+hB,EAAQE,aACTF,EAAQE,WAAaC,EAAqBV,IAI1CQ,EAAiB,IAAMD,EAAQI,cAC/BJ,EAAQI,cAAgBD,EAAqBV,GACnB,IAAnBQ,IACPD,EAAQI,eAAgB,GAG5B,IAAIF,EAAaF,EAAQE,WACrBE,EAAgBJ,EAAQI,cACxBC,EAAeD,EAAgBA,EAAcE,OAASJ,EAAWI,OAEjEA,EAASb,EAAMa,OAASC,EAAUZ,GACtCF,EAAMe,UAAYrG,IAClBsF,EAAMgB,UAAYhB,EAAMe,UAAYN,EAAWM,UAE/Cf,EAAMiB,MAAQC,EAASN,EAAcC,GACrCb,EAAMmB,SAAWC,EAAYR,EAAcC,GA0B/C,SAAwBN,EAASP,GAC7B,IAAIa,EAASb,EAAMa,OACfQ,EAASd,EAAQe,aAAe,GAChCC,EAAYhB,EAAQgB,WAAa,GACjCC,EAAYjB,EAAQiB,WAAa,GA5LvB,IA8LVxB,EAAMD,WA5LE,IA4L2ByB,EAAUzB,YAC7CwB,EAAYhB,EAAQgB,UAAY,CAC5BE,EAAGD,EAAUE,QAAU,EACvBC,EAAGH,EAAUI,QAAU,GAG3BP,EAASd,EAAQe,YAAc,CAC3BG,EAAGZ,EAAOY,EACVE,EAAGd,EAAOc,IAIlB3B,EAAM0B,OAASH,EAAUE,GAAKZ,EAAOY,EAAIJ,EAAOI,GAChDzB,EAAM4B,OAASL,EAAUI,GAAKd,EAAOc,EAAIN,EAAOM,GA3ChDE,CAAetB,EAASP,GACxBA,EAAM8B,gBAAkBC,EAAa/B,EAAM0B,OAAQ1B,EAAM4B,QAEzD,IAAII,EAAkBC,EAAYjC,EAAMgB,UAAWhB,EAAM0B,OAAQ1B,EAAM4B,QACvE5B,EAAMkC,iBAAmBF,EAAgBP,EACzCzB,EAAMmC,iBAAmBH,EAAgBL,EACzC3B,EAAMgC,gBAAmBvH,EAAIuH,EAAgBP,GAAKhH,EAAIuH,EAAgBL,GAAMK,EAAgBP,EAAIO,EAAgBL,EAEhH3B,EAAMoC,MAAQzB,GAkNAnZ,EAlNyBmZ,EAAcT,SAkNhCmC,EAlN0CnC,EAmNxDkB,EAAYiB,EAAI,GAAIA,EAAI,GAAIhD,GAAmB+B,EAAY5Z,EAAM,GAAIA,EAAM,GAAI6X,IAnNX,EAC3EW,EAAMsC,SAAW3B,EAsMrB,SAAqBnZ,EAAO6a,GACxB,OAAOnB,EAASmB,EAAI,GAAIA,EAAI,GAAIhD,GAAmB6B,EAAS1Z,EAAM,GAAIA,EAAM,GAAI6X,GAvM/CkD,CAAY5B,EAAcT,SAAUA,GAAY,EAEjFF,EAAMwC,YAAejC,EAAQiB,UAAsCxB,EAAME,SAAS1hB,OAC9E+hB,EAAQiB,UAAUgB,YAAexC,EAAME,SAAS1hB,OAAS+hB,EAAQiB,UAAUgB,YADtCxC,EAAME,SAAS1hB,OAwC5D,SAAkC+hB,EAASP,GACvC,IAEIyC,EAAUC,EAAWC,EAAWC,EAFhCC,EAAOtC,EAAQuC,cAAgB9C,EAC/BgB,EAAYhB,EAAMe,UAAY8B,EAAK9B,UAGvC,GArNe,GAqNXf,EAAMD,YAA8BiB,EA1NrB,SAlYvB,IA4lB4E6B,EAAKJ,UAAyB,CAClG,IAAIf,EAAS1B,EAAM0B,OAASmB,EAAKnB,OAC7BE,EAAS5B,EAAM4B,OAASiB,EAAKjB,OAE7BmB,EAAId,EAAYjB,EAAWU,EAAQE,GACvCc,EAAYK,EAAEtB,EACdkB,EAAYI,EAAEpB,EACdc,EAAYhI,EAAIsI,EAAEtB,GAAKhH,EAAIsI,EAAEpB,GAAMoB,EAAEtB,EAAIsB,EAAEpB,EAC3CiB,EAAYb,EAAaL,EAAQE,GAEjCrB,EAAQuC,aAAe9C,OAGvByC,EAAWI,EAAKJ,SAChBC,EAAYG,EAAKH,UACjBC,EAAYE,EAAKF,UACjBC,EAAYC,EAAKD,UAGrB5C,EAAMyC,SAAWA,EACjBzC,EAAM0C,UAAYA,EAClB1C,EAAM2C,UAAYA,EAClB3C,EAAM4C,UAAYA,EAhElBI,CAAyBzC,EAASP,GA4MtC,IAAkBxY,EAAO6a,EAzMrB,IAAIhV,EAASkS,EAAQX,QACjBpB,EAAUwC,EAAMiD,SAAS5V,OAAQA,KACjCA,EAAS2S,EAAMiD,SAAS5V,QAE5B2S,EAAM3S,OAASA,EA/Df6V,CAAiB3D,EAASS,GAG1BT,EAAQ4D,KAAK,eAAgBnD,GAE7BT,EAAQ6D,UAAUpD,GAClBT,EAAQgB,QAAQiB,UAAYxB,EA0HhC,SAASU,EAAqBV,GAK1B,IAFA,IAAIE,EAAW,GACX/f,EAAI,EACDA,EAAI6f,EAAME,SAAS1hB,QACtB0hB,EAAS/f,GAAK,CACVkjB,QAAS7I,EAAMwF,EAAME,SAAS/f,GAAGkjB,SACjCC,QAAS9I,EAAMwF,EAAME,SAAS/f,GAAGmjB,UAErCnjB,IAGJ,MAAO,CACH4gB,UAAWrG,IACXwF,SAAUA,EACVW,OAAQC,EAAUZ,GAClBwB,OAAQ1B,EAAM0B,OACdE,OAAQ5B,EAAM4B,QAStB,SAASd,EAAUZ,GACf,IAAIM,EAAiBN,EAAS1hB,OAG9B,GAAuB,IAAnBgiB,EACA,MAAO,CACHiB,EAAGjH,EAAM0F,EAAS,GAAGmD,SACrB1B,EAAGnH,EAAM0F,EAAS,GAAGoD,UAK7B,IADA,IAAI7B,EAAI,EAAGE,EAAI,EAAGxhB,EAAI,EACfA,EAAIqgB,GACPiB,GAAKvB,EAAS/f,GAAGkjB,QACjB1B,GAAKzB,EAAS/f,GAAGmjB,QACjBnjB,IAGJ,MAAO,CACHshB,EAAGjH,EAAMiH,EAAIjB,GACbmB,EAAGnH,EAAMmH,EAAInB,IAWrB,SAASyB,EAAYjB,EAAWS,EAAGE,GAC/B,MAAO,CACHF,EAAGA,EAAIT,GAAa,EACpBW,EAAGA,EAAIX,GAAa,GAU5B,SAASe,EAAaN,EAAGE,GACrB,OAAIF,IAAME,EAzTO,EA6TblH,EAAIgH,IAAMhH,EAAIkH,GACPF,EAAI,EA7TE,EACC,EA8TXE,EAAI,EA7TI,EACE,GAsUrB,SAASP,EAAYmC,EAAIC,EAAIjb,GACpBA,IACDA,EAAQ6W,GAEZ,IAAIqC,EAAI+B,EAAGjb,EAAM,IAAMgb,EAAGhb,EAAM,IAC5BoZ,EAAI6B,EAAGjb,EAAM,IAAMgb,EAAGhb,EAAM,IAEhC,OAAOzB,KAAK2c,KAAMhC,EAAIA,EAAME,EAAIA,GAUpC,SAAST,EAASqC,EAAIC,EAAIjb,GACjBA,IACDA,EAAQ6W,GAEZ,IAAIqC,EAAI+B,EAAGjb,EAAM,IAAMgb,EAAGhb,EAAM,IAC5BoZ,EAAI6B,EAAGjb,EAAM,IAAMgb,EAAGhb,EAAM,IAChC,OAA0B,IAAnBzB,KAAK4c,MAAM/B,EAAGF,GAAW3a,KAAK6c,GA1TzCrE,EAAMvhB,UAAY,CAKdof,QAAS,aAKT0C,KAAM,WACFxgB,KAAKukB,MAAQ3G,EAAkB5d,KAAKuf,QAASvf,KAAKukB,KAAMvkB,KAAKqgB,YAC7DrgB,KAAKwkB,UAAY5G,EAAkB5d,KAAKgO,OAAQhO,KAAKwkB,SAAUxkB,KAAKqgB,YACpErgB,KAAKykB,OAAS7G,EAAkB0B,EAAoBtf,KAAKuf,SAAUvf,KAAKykB,MAAOzkB,KAAKqgB,aAMxFqE,QAAS,WACL1kB,KAAKukB,MAAQtG,EAAqBje,KAAKuf,QAASvf,KAAKukB,KAAMvkB,KAAKqgB,YAChErgB,KAAKwkB,UAAYvG,EAAqBje,KAAKgO,OAAQhO,KAAKwkB,SAAUxkB,KAAKqgB,YACvErgB,KAAKykB,OAASxG,EAAqBqB,EAAoBtf,KAAKuf,SAAUvf,KAAKykB,MAAOzkB,KAAKqgB,cA4T/F,IAAIsE,EAAkB,CAClBC,UA/Xc,EAgYdjY,UA/Xa,EAgYbkY,QA/XY,GA0YhB,SAASC,IACL9kB,KAAKukB,KATkB,YAUvBvkB,KAAKykB,MATiB,oBAWtBzkB,KAAK+kB,SAAU,EAEf9E,EAAM1D,MAAMvc,KAAMF,WAGtBid,EAAQ+H,EAAY7E,EAAO,CAKvBnC,QAAS,SAAmBwC,GACxB,IAAII,EAAYiE,EAAgBrE,EAAGlX,MA3ZzB,EA8ZNsX,GAAyC,IAAdJ,EAAG0E,SAC9BhlB,KAAK+kB,SAAU,GA9ZV,EAiaLrE,GAAuC,IAAbJ,EAAG2E,QAC7BvE,EAjaI,GAqaH1gB,KAAK+kB,UAraF,EAyaJrE,IACA1gB,KAAK+kB,SAAU,GAGnB/kB,KAAK8H,SAAS9H,KAAKkgB,QAASQ,EAAW,CACnCG,SAAU,CAACP,GACXS,gBAAiB,CAACT,GAClB4E,YAvbW,QAwbXtB,SAAUtD,QAKtB,IAAI6E,EAAoB,CACpBC,YAzbc,EA0bdC,YAzba,EA0bbC,UAzbY,EA0bZC,cAzbe,EA0bfC,WA1be,GA8bfC,EAAyB,CACzBC,EAzcmB,QA0cnBC,EAzciB,MA0cjBC,EAzcmB,QA0cnBC,EAzcoB,UA4cpBC,EAAyB,cACzBC,GAAwB,sCAa5B,SAASC,KACLhmB,KAAKukB,KAAOuB,EACZ9lB,KAAKykB,MAAQsB,GAEb9F,EAAM1D,MAAMvc,KAAMF,WAElBE,KAAKimB,MAASjmB,KAAKkgB,QAAQgB,QAAQgF,cAAgB,GAhBnD1lB,EAAO2lB,iBAAmB3lB,EAAO4lB,eACjCN,EAAyB,gBACzBC,GAAwB,6CAiB5BhJ,EAAQiJ,GAAmB/F,EAAO,CAK9BnC,QAAS,SAAmBwC,GACxB,IAAI2F,EAAQjmB,KAAKimB,MACbI,GAAgB,EAEhBC,EAAsBhG,EAAGlX,KAAKsG,cAAc/H,QAAQ,KAAM,IAC1D+Y,EAAYyE,EAAkBmB,GAC9BpB,EAAcO,EAAuBnF,EAAG4E,cAAgB5E,EAAG4E,YAE3DqB,EAnfW,SAmfArB,EAGXsB,EAAajI,EAAQ0H,EAAO3F,EAAGmG,UAAW,aA/epC,EAkfN/F,IAA0C,IAAdJ,EAAG0E,QAAgBuB,GAC3CC,EAAa,IACbP,EAAMhgB,KAAKqa,GACXkG,EAAaP,EAAM9mB,OAAS,GAEb,GAAZuhB,IACP2F,GAAgB,GAIhBG,EAAa,IAKjBP,EAAMO,GAAclG,EAEpBtgB,KAAK8H,SAAS9H,KAAKkgB,QAASQ,EAAW,CACnCG,SAAUoF,EACVlF,gBAAiB,CAACT,GAClB4E,YAAaA,EACbtB,SAAUtD,IAGV+F,GAEAJ,EAAMjS,OAAOwS,EAAY,OAKrC,IAAIE,GAAyB,CACzBC,WAlhBc,EAmhBd/Z,UAlhBa,EAmhBbga,SAlhBY,EAmhBZC,YAlhBe,GA6hBnB,SAASC,KACL9mB,KAAKwkB,SATwB,aAU7BxkB,KAAKykB,MATwB,4CAU7BzkB,KAAKgI,SAAU,EAEfiY,EAAM1D,MAAMvc,KAAMF,WAsCtB,SAASinB,GAAuBzG,EAAIlX,GAChC,IAAI6L,EAAMwJ,EAAQ6B,EAAG0G,SACjBC,EAAUxI,EAAQ6B,EAAG4G,gBAMzB,OAJW,GAAP9d,IACA6L,EAAMyJ,EAAYzJ,EAAI3Q,OAAO2iB,GAAU,cAAc,IAGlD,CAAChS,EAAKgS,GA3CjBlK,EAAQ+J,GAAkB7G,EAAO,CAC7BnC,QAAS,SAAmBwC,GACxB,IAAIlX,EAAOsd,GAAuBpG,EAAGlX,MAOrC,GAjjBU,IA6iBNA,IACApJ,KAAKgI,SAAU,GAGdhI,KAAKgI,QAAV,CAIA,IAAIgf,EAAUD,GAAuB7mB,KAAKF,KAAMsgB,EAAIlX,GAGzC,GAAPA,GAAqC4d,EAAQ,GAAG7nB,OAAS6nB,EAAQ,GAAG7nB,QAAW,IAC/Ea,KAAKgI,SAAU,GAGnBhI,KAAK8H,SAAS9H,KAAKkgB,QAAS9W,EAAM,CAC9ByX,SAAUmG,EAAQ,GAClBjG,gBAAiBiG,EAAQ,GACzB9B,YAtkBW,QAukBXtB,SAAUtD,QAsBtB,IAAI6G,GAAkB,CAClBR,WAvlBc,EAwlBd/Z,UAvlBa,EAwlBbga,SAvlBY,EAwlBZC,YAvlBe,GAimBnB,SAASO,KACLpnB,KAAKwkB,SARiB,4CAStBxkB,KAAKqnB,UAAY,GAEjBpH,EAAM1D,MAAMvc,KAAMF,WA0BtB,SAASwnB,GAAWhH,EAAIlX,GACpB,IAAIme,EAAa9I,EAAQ6B,EAAG0G,SACxBK,EAAYrnB,KAAKqnB,UAGrB,GAAW,EAAPje,GAA2D,IAAtBme,EAAWpoB,OAEhD,OADAkoB,EAAUE,EAAW,GAAGC,aAAc,EAC/B,CAACD,EAAYA,GAGxB,IAAIzmB,EACA2mB,EACAP,EAAiBzI,EAAQ6B,EAAG4G,gBAC5BQ,EAAuB,GACvB1Z,EAAShO,KAAKgO,OAQlB,GALAyZ,EAAgBF,EAAWnW,QAAO,SAASuW,GACvC,OAAOxJ,EAAUwJ,EAAM3Z,OAAQA,MAppBrB,IAwpBV5E,EAEA,IADAtI,EAAI,EACGA,EAAI2mB,EAActoB,QACrBkoB,EAAUI,EAAc3mB,GAAG0mB,aAAc,EACzC1mB,IAMR,IADAA,EAAI,EACGA,EAAIomB,EAAe/nB,QAClBkoB,EAAUH,EAAepmB,GAAG0mB,aAC5BE,EAAqBzhB,KAAKihB,EAAepmB,IAIlC,GAAPsI,UACOie,EAAUH,EAAepmB,GAAG0mB,YAEvC1mB,IAGJ,OAAK4mB,EAAqBvoB,OAInB,CAEHuf,EAAY+I,EAAcnjB,OAAOojB,GAAuB,cAAc,GACtEA,QAPJ,EAnEJ3K,EAAQqK,GAAYnH,EAAO,CACvBnC,QAAS,SAAoBwC,GACzB,IAAIlX,EAAO+d,GAAgB7G,EAAGlX,MAC1B4d,EAAUM,GAAWpnB,KAAKF,KAAMsgB,EAAIlX,GACnC4d,GAILhnB,KAAK8H,SAAS9H,KAAKkgB,QAAS9W,EAAM,CAC9ByX,SAAUmG,EAAQ,GAClBjG,gBAAiBiG,EAAQ,GACzB9B,YA7nBW,QA8nBXtB,SAAUtD,OA+EtB,SAASsH,KACL3H,EAAM1D,MAAMvc,KAAMF,WAElB,IAAIge,EAAUrC,EAAOzb,KAAK8d,QAAS9d,MACnCA,KAAK2nB,MAAQ,IAAIP,GAAWpnB,KAAKkgB,QAASpC,GAC1C9d,KAAK6nB,MAAQ,IAAI/C,EAAW9kB,KAAKkgB,QAASpC,GAE1C9d,KAAK8nB,aAAe,KACpB9nB,KAAK+nB,YAAc,GAqCvB,SAASC,GAActH,EAAWuH,GAnvBhB,EAovBVvH,GACA1gB,KAAK8nB,aAAeG,EAAUlH,gBAAgB,GAAGyG,WACjDU,GAAahoB,KAAKF,KAAMioB,IACL,GAAZvH,GACPwH,GAAahoB,KAAKF,KAAMioB,GAIhC,SAASC,GAAaD,GAClB,IAAIN,EAAQM,EAAUlH,gBAAgB,GAEtC,GAAI4G,EAAMH,aAAexnB,KAAK8nB,aAAc,CACxC,IAAIK,EAAY,CAAC/F,EAAGuF,EAAM3D,QAAS1B,EAAGqF,EAAM1D,SAC5CjkB,KAAK+nB,YAAY9hB,KAAKkiB,GACtB,IAAIC,EAAMpoB,KAAK+nB,YAOf1f,YANsB,WAClB,IAAIvH,EAAIsnB,EAAIvU,QAAQsU,GAChBrnB,GAAK,GACLsnB,EAAIpU,OAAOlT,EAAG,KAnEV,OA0EpB,SAASunB,GAAiBJ,GAEtB,IADA,IAAI7F,EAAI6F,EAAUrE,SAASI,QAAS1B,EAAI2F,EAAUrE,SAASK,QAClDnjB,EAAI,EAAGA,EAAId,KAAK+nB,YAAY5oB,OAAQ2B,IAAK,CAC9C,IAAIe,EAAI7B,KAAK+nB,YAAYjnB,GACrBwnB,EAAK7gB,KAAK2T,IAAIgH,EAAIvgB,EAAEugB,GAAImG,EAAK9gB,KAAK2T,IAAIkH,EAAIzgB,EAAEygB,GAChD,GAAIgG,GA9ES,IA8EeC,GA9Ef,GA+ET,OAAO,EAGf,OAAO,EArEXxL,EAAQ6K,GAAiB3H,EAAO,CAO5BnC,QAAS,SAAoBoC,EAASsI,EAAYC,GAC9C,IAAIlC,EAhuBW,SAguBAkC,EAAUvD,YACrBwD,EA/tBW,SA+tBAD,EAAUvD,YAEzB,KAAIwD,GAAWD,EAAUE,oBAAsBF,EAAUE,mBAAmBC,kBAA5E,CAKA,GAAIrC,EACAyB,GAAc9nB,KAAKF,KAAMwoB,EAAYC,QAClC,GAAIC,GAAWL,GAAiBnoB,KAAKF,KAAMyoB,GAC9C,OAGJzoB,KAAK8H,SAASoY,EAASsI,EAAYC,KAMvC/D,QAAS,WACL1kB,KAAK2nB,MAAMjD,UACX1kB,KAAK6nB,MAAMnD,aA0CnB,IAAImE,GAAwB7J,EAAS9D,EAAalC,MAAO,eACrD8P,QA9pCJ,IA8pC0BD,GAStBE,GA4IJ,WACI,IAAKD,GACD,OAAO,EAEX,IAAIE,EAAW,GACXC,EAAczoB,EAAO0oB,KAAO1oB,EAAO0oB,IAAIC,SAO3C,MANA,CAAC,OAAQ,eAAgB,QAAS,QAAS,cAAe,QAAQrN,SAAQ,SAASyB,GAI/EyL,EAASzL,IAAO0L,GAAczoB,EAAO0oB,IAAIC,SAAS,eAAgB5L,MAE/DyL,EAxJYI,GASvB,SAASC,GAAYnJ,EAASrgB,GAC1BG,KAAKkgB,QAAUA,EACflgB,KAAKspB,IAAIzpB,GAGbwpB,GAAY3qB,UAAY,CAKpB4qB,IAAK,SAASzpB,GAzBS,WA2BfA,IACAA,EAAQG,KAAKupB,WAGbT,IAAuB9oB,KAAKkgB,QAAQX,QAAQvG,OAAS+P,GAAiBlpB,KACtEG,KAAKkgB,QAAQX,QAAQvG,MAAM6P,IAAyBhpB,GAExDG,KAAK2V,QAAU9V,EAAM6P,cAAcnR,QAMvCkS,OAAQ,WACJzQ,KAAKspB,IAAItpB,KAAKkgB,QAAQhd,QAAQsmB,cAOlCD,QAAS,WACL,IAAI5T,EAAU,GAMd,OALAiG,EAAK5b,KAAKkgB,QAAQuJ,aAAa,SAASC,GAChCpM,EAASoM,EAAWxmB,QAAQqd,OAAQ,CAACmJ,MACrC/T,EAAUA,EAAQrR,OAAOolB,EAAWC,sBAgEpD,SAA2BhU,GAEvB,GAAIyI,EAAMzI,EAnHU,QAoHhB,MApHgB,OAuHpB,IAAIiU,EAAUxL,EAAMzI,EAtHC,SAuHjBkU,EAAUzL,EAAMzI,EAtHC,SA4HrB,GAAIiU,GAAWC,EACX,MA/HgB,OAmIpB,GAAID,GAAWC,EACX,OAAOD,EAnIU,QACA,QAsIrB,GAAIxL,EAAMzI,EAzIkB,gBA0IxB,MA1IwB,eA6I5B,MA9IoB,OAsDTmU,CAAkBnU,EAAQhQ,KAAK,OAO1CokB,gBAAiB,SAASpJ,GACtB,IAAIiD,EAAWjD,EAAMiD,SACjBL,EAAY5C,EAAM8B,gBAGtB,GAAIziB,KAAKkgB,QAAQgB,QAAQ8I,UACrBpG,EAAShL,qBADb,CAKA,IAAIjD,EAAU3V,KAAK2V,QACfsU,EAAU7L,EAAMzI,EAtEJ,UAsEoCoT,GAAgB,KAChEc,EAAUzL,EAAMzI,EArEH,WAqEoCoT,GArEpC,SAsEba,EAAUxL,EAAMzI,EAvEH,WAuEoCoT,GAvEpC,SAyEjB,GAAIkB,EAAS,CAGT,IAAIC,EAAyC,IAA1BvJ,EAAME,SAAS1hB,OAC9BgrB,EAAgBxJ,EAAMmB,SAAW,EACjCsI,EAAiBzJ,EAAMgB,UAAY,IAEvC,GAAIuI,GAAgBC,GAAiBC,EACjC,OAIR,IAAIR,IAAWC,EAKf,OAAII,GACCJ,GAj3BcQ,EAi3BH9G,GACXqG,GAj3BYU,GAi3BD/G,EACLvjB,KAAKuqB,WAAW3G,QAH3B,IAWJ2G,WAAY,SAAS3G,GACjB5jB,KAAKkgB,QAAQgB,QAAQ8I,WAAY,EACjCpG,EAAShL,mBA+FjB,SAAS4R,GAAWtnB,GAChBlD,KAAKkD,QAAUyR,EAAO,GAAI3U,KAAKyqB,SAAUvnB,GAAW,IAEpDlD,KAAK+F,GApgCEsZ,IAsgCPrf,KAAKkgB,QAAU,KAGflgB,KAAKkD,QAAQqd,OAAS9C,EAAYzd,KAAKkD,QAAQqd,QAAQ,GAEvDvgB,KAAK0qB,MAxBY,EA0BjB1qB,KAAK2qB,aAAe,GACpB3qB,KAAK4qB,YAAc,GAqOvB,SAASC,GAASH,GACd,OA5PkB,GA4PdA,EACO,SA/PG,EAgQHA,EACA,MAlQK,EAmQLA,EACA,OArQG,EAsQHA,EACA,QAEJ,GAQX,SAASI,GAAavH,GAClB,OAnuCiB,IAmuCbA,EACO,OAruCI,GAsuCJA,EACA,KAzuCM,GA0uCNA,EACA,OA1uCO,GA2uCPA,EACA,QAEJ,GASX,SAASwH,GAA6BC,EAAiBtB,GACnD,IAAIxJ,EAAUwJ,EAAWxJ,QACzB,OAAIA,EACOA,EAAQze,IAAIupB,GAEhBA,EAQX,SAASC,KACLT,GAAWjO,MAAMvc,KAAMF,WA6D3B,SAASorB,KACLD,GAAe1O,MAAMvc,KAAMF,WAE3BE,KAAKmrB,GAAK,KACVnrB,KAAKorB,GAAK,KA4Ed,SAASC,KACLJ,GAAe1O,MAAMvc,KAAMF,WAsC/B,SAASwrB,KACLd,GAAWjO,MAAMvc,KAAMF,WAEvBE,KAAKurB,OAAS,KACdvrB,KAAKwrB,OAAS,KAmElB,SAASC,KACLR,GAAe1O,MAAMvc,KAAMF,WA8B/B,SAAS4rB,KACLT,GAAe1O,MAAMvc,KAAMF,WA2D/B,SAAS6rB,KACLnB,GAAWjO,MAAMvc,KAAMF,WAIvBE,KAAK4rB,OAAQ,EACb5rB,KAAK6rB,SAAU,EAEf7rB,KAAKurB,OAAS,KACdvrB,KAAKwrB,OAAS,KACdxrB,KAAK8rB,MAAQ,EAqGjB,SAASC,GAAOxM,EAASrc,GAGrB,OAFAA,EAAUA,GAAW,IACbumB,YAAchM,EAAYva,EAAQumB,YAAasC,GAAOtB,SAASuB,QAChE,IAAIC,GAAQ1M,EAASrc,GA7tBhCsnB,GAAW9rB,UAAY,CAKnB+rB,SAAU,GAOVnB,IAAK,SAASpmB,GAKV,OAJAyR,EAAO3U,KAAKkD,QAASA,GAGrBlD,KAAKkgB,SAAWlgB,KAAKkgB,QAAQsJ,YAAY/Y,SAClCzQ,MAQXksB,cAAe,SAASlB,GACpB,GAAItP,EAAesP,EAAiB,gBAAiBhrB,MACjD,OAAOA,KAGX,IAAI2qB,EAAe3qB,KAAK2qB,aAMxB,OAJKA,GADLK,EAAkBD,GAA6BC,EAAiBhrB,OAC9B+F,MAC9B4kB,EAAaK,EAAgBjlB,IAAMilB,EACnCA,EAAgBkB,cAAclsB,OAE3BA,MAQXmsB,kBAAmB,SAASnB,GACxB,OAAItP,EAAesP,EAAiB,oBAAqBhrB,QAIzDgrB,EAAkBD,GAA6BC,EAAiBhrB,aACzDA,KAAK2qB,aAAaK,EAAgBjlB,KAJ9B/F,MAafosB,eAAgB,SAASpB,GACrB,GAAItP,EAAesP,EAAiB,iBAAkBhrB,MAClD,OAAOA,KAGX,IAAI4qB,EAAc5qB,KAAK4qB,YAMvB,OAJ+C,IAA3CrM,EAAQqM,EADZI,EAAkBD,GAA6BC,EAAiBhrB,SAE5D4qB,EAAY3kB,KAAK+kB,GACjBA,EAAgBoB,eAAepsB,OAE5BA,MAQXqsB,mBAAoB,SAASrB,GACzB,GAAItP,EAAesP,EAAiB,qBAAsBhrB,MACtD,OAAOA,KAGXgrB,EAAkBD,GAA6BC,EAAiBhrB,MAChE,IAAIZ,EAAQmf,EAAQve,KAAK4qB,YAAaI,GAItC,OAHI5rB,GAAS,GACTY,KAAK4qB,YAAY5W,OAAO5U,EAAO,GAE5BY,MAOXssB,mBAAoB,WAChB,OAAOtsB,KAAK4qB,YAAYzrB,OAAS,GAQrCotB,iBAAkB,SAASvB,GACvB,QAAShrB,KAAK2qB,aAAaK,EAAgBjlB,KAQ/C+d,KAAM,SAASnD,GACX,IAAIR,EAAOngB,KACP0qB,EAAQ1qB,KAAK0qB,MAEjB,SAAS5G,EAAK5Q,GACViN,EAAKD,QAAQ4D,KAAK5Q,EAAOyN,GAIzB+J,EArJM,GAsJN5G,EAAK3D,EAAKjd,QAAQgQ,MAAQ2X,GAASH,IAGvC5G,EAAK3D,EAAKjd,QAAQgQ,OAEdyN,EAAM6L,iBACN1I,EAAKnD,EAAM6L,iBAIX9B,GAhKM,GAiKN5G,EAAK3D,EAAKjd,QAAQgQ,MAAQ2X,GAASH,KAU3C+B,QAAS,SAAS9L,GACd,GAAI3gB,KAAK0sB,UACL,OAAO1sB,KAAK8jB,KAAKnD,GAGrB3gB,KAAK0qB,MA7KM,IAoLfgC,QAAS,WAEL,IADA,IAAI5rB,EAAI,EACDA,EAAId,KAAK4qB,YAAYzrB,QAAQ,CAChC,KAAM,GAAAa,KAAK4qB,YAAY9pB,GAAG4pB,OACtB,OAAO,EAEX5pB,IAEJ,OAAO,GAOXijB,UAAW,SAAS0E,GAGhB,IAAIkE,EAAiBhY,EAAO,GAAI8T,GAGhC,IAAKnL,EAAStd,KAAKkD,QAAQqd,OAAQ,CAACvgB,KAAM2sB,IAGtC,OAFA3sB,KAAK4sB,aACL5sB,KAAK0qB,MA3ME,IAgNP,GAAA1qB,KAAK0qB,QACL1qB,KAAK0qB,MAvNI,GA0Nb1qB,KAAK0qB,MAAQ1qB,KAAK6sB,QAAQF,GAItB,GAAA3sB,KAAK0qB,OACL1qB,KAAKysB,QAAQE,IAWrBE,QAAS,SAASpE,KAOlBkB,eAAgB,aAOhBiD,MAAO,cA8DX7P,EAAQkO,GAAgBT,GAAY,CAKhCC,SAAU,CAKN5J,SAAU,GASdiM,SAAU,SAASnM,GACf,IAAIoM,EAAiB/sB,KAAKkD,QAAQ2d,SAClC,OAA0B,IAAnBkM,GAAwBpM,EAAME,SAAS1hB,SAAW4tB,GAS7DF,QAAS,SAASlM,GACd,IAAI+J,EAAQ1qB,KAAK0qB,MACbhK,EAAYC,EAAMD,UAElBsM,EAAuB,EAARtC,EACfuC,EAAUjtB,KAAK8sB,SAASnM,GAG5B,OAAIqM,IAlzCO,EAkzCUtM,IAA6BuM,GAvVpC,GAwVHvC,EACAsC,GAAgBC,EArzCnB,EAszCAvM,EA5VE,EA6VKgK,EA/VL,EAgWOA,EA/VL,EAkWDA,EAnWD,EAKC,MAiXnB3N,EAAQmO,GAAeD,GAAgB,CAKnCR,SAAU,CACNvX,MAAO,MACPga,UAAW,GACXrM,SAAU,EACV0C,UA50CY4J,IA+0ChBxD,eAAgB,WACZ,IAAIpG,EAAYvjB,KAAKkD,QAAQqgB,UACzB5N,EAAU,GAOd,OA11CmB0U,EAo1Cf9G,GACA5N,EAAQ1P,KA9jBK,SAtxBAqkB,GAs1Cb/G,GACA5N,EAAQ1P,KAlkBK,SAokBV0P,GAGXyX,cAAe,SAASzM,GACpB,IAAIzd,EAAUlD,KAAKkD,QACfmqB,GAAW,EACXvL,EAAWnB,EAAMmB,SACjByB,EAAY5C,EAAM4C,UAClBnB,EAAIzB,EAAM0B,OACVC,EAAI3B,EAAM4B,OAed,OAZMgB,EAAYrgB,EAAQqgB,YAt2CP8G,EAu2CXnnB,EAAQqgB,WACRA,EAAmB,IAANnB,EA92CR,EA82CqCA,EAAI,EA72CzC,EACC,EA62CNiL,EAAWjL,GAAKpiB,KAAKmrB,GACrBrJ,EAAWra,KAAK2T,IAAIuF,EAAM0B,UAE1BkB,EAAmB,IAANjB,EAl3CR,EAk3CqCA,EAAI,EA/2C3C,EACE,GA+2CL+K,EAAW/K,GAAKtiB,KAAKorB,GACrBtJ,EAAWra,KAAK2T,IAAIuF,EAAM4B,UAGlC5B,EAAM4C,UAAYA,EACX8J,GAAYvL,EAAW5e,EAAQgqB,WAAa3J,EAAYrgB,EAAQqgB,WAG3EuJ,SAAU,SAASnM,GACf,OAAOsK,GAAevsB,UAAUouB,SAAS5sB,KAAKF,KAAM2gB,KAva1C,EAwaL3gB,KAAK0qB,SAxaA,EAwa0B1qB,KAAK0qB,QAAwB1qB,KAAKotB,cAAczM,KAGxFmD,KAAM,SAASnD,GAEX3gB,KAAKmrB,GAAKxK,EAAM0B,OAChBriB,KAAKorB,GAAKzK,EAAM4B,OAEhB,IAAIgB,EAAYuH,GAAanK,EAAM4C,WAE/BA,IACA5C,EAAM6L,gBAAkBxsB,KAAKkD,QAAQgQ,MAAQqQ,GAEjDvjB,KAAKqd,OAAOyG,KAAK5jB,KAAKF,KAAM2gB,MAcpC5D,EAAQsO,GAAiBJ,GAAgB,CAKrCR,SAAU,CACNvX,MAAO,QACPga,UAAW,EACXrM,SAAU,GAGd8I,eAAgB,WACZ,MAAO,CAzoBS,SA4oBpBmD,SAAU,SAASnM,GACf,OAAO3gB,KAAKqd,OAAOyP,SAAS5sB,KAAKF,KAAM2gB,KAClClZ,KAAK2T,IAAIuF,EAAMoC,MAAQ,GAAK/iB,KAAKkD,QAAQgqB,WApdpC,EAodiDltB,KAAK0qB,QAGpE5G,KAAM,SAASnD,GACX,GAAoB,IAAhBA,EAAMoC,MAAa,CACnB,IAAIuK,EAAQ3M,EAAMoC,MAAQ,EAAI,KAAO,MACrCpC,EAAM6L,gBAAkBxsB,KAAKkD,QAAQgQ,MAAQoa,EAEjDttB,KAAKqd,OAAOyG,KAAK5jB,KAAKF,KAAM2gB,MAiBpC5D,EAAQuO,GAAiBd,GAAY,CAKjCC,SAAU,CACNvX,MAAO,QACP2N,SAAU,EACV0M,KAAM,IACNL,UAAW,GAGfvD,eAAgB,WACZ,MAAO,CAtrBS,SAyrBpBkD,QAAS,SAASlM,GACd,IAAIzd,EAAUlD,KAAKkD,QACfsqB,EAAgB7M,EAAME,SAAS1hB,SAAW+D,EAAQ2d,SAClD4M,EAAgB9M,EAAMmB,SAAW5e,EAAQgqB,UACzCQ,EAAY/M,EAAMgB,UAAYze,EAAQqqB,KAM1C,GAJAvtB,KAAKwrB,OAAS7K,GAIT8M,IAAkBD,GAAkB,GAAA7M,EAAMD,YAA2CgN,EACtF1tB,KAAK4sB,aACF,GAn+CG,EAm+CCjM,EAAMD,UACb1gB,KAAK4sB,QACL5sB,KAAKurB,OAASjQ,GAAkB,WAC5Btb,KAAK0qB,MA1gBH,EA2gBF1qB,KAAKysB,YACNvpB,EAAQqqB,KAAMvtB,WACd,GAv+CC,EAu+CG2gB,EAAMD,UACb,OA9gBM,EAghBV,OA7gBW,IAghBfkM,MAAO,WACHrkB,aAAavI,KAAKurB,SAGtBzH,KAAM,SAASnD,GAvhBD,IAwhBN3gB,KAAK0qB,QAIL/J,GAt/CI,EAs/CMA,EAAMD,UAChB1gB,KAAKkgB,QAAQ4D,KAAK9jB,KAAKkD,QAAQgQ,MAAQ,KAAMyN,IAE7C3gB,KAAKwrB,OAAO9J,UAAYrG,IACxBrb,KAAKkgB,QAAQ4D,KAAK9jB,KAAKkD,QAAQgQ,MAAOlT,KAAKwrB,aAevDzO,EAAQ0O,GAAkBR,GAAgB,CAKtCR,SAAU,CACNvX,MAAO,SACPga,UAAW,EACXrM,SAAU,GAGd8I,eAAgB,WACZ,MAAO,CAvvBS,SA0vBpBmD,SAAU,SAASnM,GACf,OAAO3gB,KAAKqd,OAAOyP,SAAS5sB,KAAKF,KAAM2gB,KAClClZ,KAAK2T,IAAIuF,EAAMsC,UAAYjjB,KAAKkD,QAAQgqB,WAlkBnC,EAkkBgDltB,KAAK0qB,UAcvE3N,EAAQ2O,GAAiBT,GAAgB,CAKrCR,SAAU,CACNvX,MAAO,QACPga,UAAW,GACX9J,SAAU,GACVG,UAAW4J,GACXtM,SAAU,GAGd8I,eAAgB,WACZ,OAAOuB,GAAcxsB,UAAUirB,eAAezpB,KAAKF,OAGvD8sB,SAAU,SAASnM,GACf,IACIyC,EADAG,EAAYvjB,KAAKkD,QAAQqgB,UAW7B,OARgB,GAAZA,EACAH,EAAWzC,EAAMgC,gBArjDF0H,EAsjDR9G,EACPH,EAAWzC,EAAMkC,iBAtjDJyH,GAujDN/G,IACPH,EAAWzC,EAAMmC,kBAGd9iB,KAAKqd,OAAOyP,SAAS5sB,KAAKF,KAAM2gB,IACnC4C,EAAY5C,EAAM8B,iBAClB9B,EAAMmB,SAAW9hB,KAAKkD,QAAQgqB,WAC9BvM,EAAMwC,aAAenjB,KAAKkD,QAAQ2d,UAClCzF,EAAIgI,GAAYpjB,KAAKkD,QAAQkgB,UAzkDzB,EAykDqCzC,EAAMD,WAGvDoD,KAAM,SAASnD,GACX,IAAI4C,EAAYuH,GAAanK,EAAM8B,iBAC/Bc,GACAvjB,KAAKkgB,QAAQ4D,KAAK9jB,KAAKkD,QAAQgQ,MAAQqQ,EAAW5C,GAGtD3gB,KAAKkgB,QAAQ4D,KAAK9jB,KAAKkD,QAAQgQ,MAAOyN,MA2B9C5D,EAAQ4O,GAAenB,GAAY,CAK/BC,SAAU,CACNvX,MAAO,MACP2N,SAAU,EACV8M,KAAM,EACNC,SAAU,IACVL,KAAM,IACNL,UAAW,EACXW,aAAc,IAGlBlE,eAAgB,WACZ,MAAO,CAh2BiB,iBAm2B5BkD,QAAS,SAASlM,GACd,IAAIzd,EAAUlD,KAAKkD,QAEfsqB,EAAgB7M,EAAME,SAAS1hB,SAAW+D,EAAQ2d,SAClD4M,EAAgB9M,EAAMmB,SAAW5e,EAAQgqB,UACzCY,EAAiBnN,EAAMgB,UAAYze,EAAQqqB,KAI/C,GAFAvtB,KAAK4sB,QAzoDK,EA2oDLjM,EAAMD,WAA4C,IAAf1gB,KAAK8rB,MACzC,OAAO9rB,KAAK+tB,cAKhB,GAAIN,GAAiBK,GAAkBN,EAAe,CAClD,GAhpDI,GAgpDA7M,EAAMD,UACN,OAAO1gB,KAAK+tB,cAGhB,IAAIC,GAAgBhuB,KAAK4rB,OAASjL,EAAMe,UAAY1hB,KAAK4rB,MAAQ1oB,EAAQ0qB,SACrEK,GAAiBjuB,KAAK6rB,SAAW9J,EAAY/hB,KAAK6rB,QAASlL,EAAMa,QAAUte,EAAQ2qB,aAgBvF,GAdA7tB,KAAK4rB,MAAQjL,EAAMe,UACnB1hB,KAAK6rB,QAAUlL,EAAMa,OAEhByM,GAAkBD,EAGnBhuB,KAAK8rB,OAAS,EAFd9rB,KAAK8rB,MAAQ,EAKjB9rB,KAAKwrB,OAAS7K,EAKG,IADF3gB,KAAK8rB,MAAQ5oB,EAAQyqB,KAIhC,OAAK3tB,KAAKssB,sBAGNtsB,KAAKurB,OAASjQ,GAAkB,WAC5Btb,KAAK0qB,MAltBX,EAmtBM1qB,KAAKysB,YACNvpB,EAAQ0qB,SAAU5tB,MAttBvB,GAEA,EAytBV,OAttBW,IAytBf+tB,YAAa,WAIT,OAHA/tB,KAAKurB,OAASjQ,GAAkB,WAC5Btb,KAAK0qB,MA3tBE,KA4tBR1qB,KAAKkD,QAAQ0qB,SAAU5tB,MA5tBf,IAguBf4sB,MAAO,WACHrkB,aAAavI,KAAKurB,SAGtBzH,KAAM,WAvuBQ,GAwuBN9jB,KAAK0qB,QACL1qB,KAAKwrB,OAAO0C,SAAWluB,KAAK8rB,MAC5B9rB,KAAKkgB,QAAQ4D,KAAK9jB,KAAKkD,QAAQgQ,MAAOlT,KAAKwrB,YAoBvDO,GAAOoC,QAAU,QAMjBpC,GAAOtB,SAAW,CAOd2D,WAAW,EAQX5E,YAl9BuB,UAw9BvBjJ,QAAQ,EASRH,YAAa,KAObiO,WAAY,KAOZrC,OAAQ,CAEJ,CAACP,GAAkB,CAAClL,QAAQ,IAC5B,CAAC8K,GAAiB,CAAC9K,QAAQ,GAAQ,CAAC,WACpC,CAACmL,GAAiB,CAACnI,UArwDA8G,IAswDnB,CAACa,GAAe,CAAC3H,UAtwDE8G,GAswDgC,CAAC,UACpD,CAACsB,IACD,CAACA,GAAe,CAACzY,MAAO,YAAaya,KAAM,GAAI,CAAC,QAChD,CAACrC,KAQLgD,SAAU,CAMNC,WAAY,OAOZC,YAAa,OASbC,aAAc,OAOdC,eAAgB,OAOhBC,SAAU,OAQVC,kBAAmB,kBAa3B,SAAS3C,GAAQ1M,EAASrc,GAzwD1B,IAA6Bgd,EA0wDzBlgB,KAAKkD,QAAUyR,EAAO,GAAIoX,GAAOtB,SAAUvnB,GAAW,IAEtDlD,KAAKkD,QAAQkd,YAAcpgB,KAAKkD,QAAQkd,aAAeb,EAEvDvf,KAAK6uB,SAAW,GAChB7uB,KAAKkhB,QAAU,GACflhB,KAAKypB,YAAc,GACnBzpB,KAAK8uB,YAAc,GAEnB9uB,KAAKuf,QAAUA,EACfvf,KAAK2gB,MArwDE,KAfkBT,EAoxDQlgB,MAlxDRkD,QAAQmrB,aAItBxO,EACAmG,GACAlG,EACAsH,GACCxH,EAGDgI,GAFA9C,IAIO5E,EAASO,GAswD3BzgB,KAAKwpB,YAAc,IAAIH,GAAYrpB,KAAMA,KAAKkD,QAAQsmB,aAEtDuF,GAAe/uB,MAAM,GAErB4b,EAAK5b,KAAKkD,QAAQumB,aAAa,SAAS9kB,GACpC,IAAI+kB,EAAa1pB,KAAK4D,IAAI,IAAKe,EAAK,GAAIA,EAAK,KAC7CA,EAAK,IAAM+kB,EAAWwC,cAAcvnB,EAAK,IACzCA,EAAK,IAAM+kB,EAAW0C,eAAeznB,EAAK,MAC3C3E,MA4PP,SAAS+uB,GAAe7O,EAAStc,GAC7B,IAIIsb,EAJAK,EAAUW,EAAQX,QACjBA,EAAQvG,QAIb4C,EAAKsE,EAAQhd,QAAQorB,UAAU,SAASzuB,EAAOuB,GAC3C8d,EAAOF,EAASO,EAAQvG,MAAO5X,GAC3BwC,GACAsc,EAAQ4O,YAAY5P,GAAQK,EAAQvG,MAAMkG,GAC1CK,EAAQvG,MAAMkG,GAAQrf,GAEtB0f,EAAQvG,MAAMkG,GAAQgB,EAAQ4O,YAAY5P,IAAS,MAGtDtb,IACDsc,EAAQ4O,YAAc,KAzQ9B7C,GAAQvtB,UAAY,CAMhB4qB,IAAK,SAASpmB,GAaV,OAZAyR,EAAO3U,KAAKkD,QAASA,GAGjBA,EAAQsmB,aACRxpB,KAAKwpB,YAAY/Y,SAEjBvN,EAAQkd,cAERpgB,KAAK2gB,MAAM+D,UACX1kB,KAAK2gB,MAAM3S,OAAS9K,EAAQkd,YAC5BpgB,KAAK2gB,MAAMH,QAERxgB,MASXgvB,KAAM,SAASC,GACXjvB,KAAKkhB,QAAQgO,QAAUD,EA5Db,EADP,GAsEPlL,UAAW,SAAS0E,GAChB,IAAIvH,EAAUlhB,KAAKkhB,QACnB,IAAIA,EAAQgO,QAAZ,CAOA,IAAIxF,EAFJ1pB,KAAKwpB,YAAYO,gBAAgBtB,GAGjC,IAAIgB,EAAczpB,KAAKypB,YAKnB0F,EAAgBjO,EAAQiO,gBAIvBA,GAAkBA,GAz8Bb,EAy8B8BA,EAAczE,SAClDyE,EAAgBjO,EAAQiO,cAAgB,MAI5C,IADA,IAAIruB,EAAI,EACDA,EAAI2oB,EAAYtqB,QACnBuqB,EAAaD,EAAY3oB,GA9FnB,IAsGFogB,EAAQgO,SACHC,GAAiBzF,GAAcyF,IAChCzF,EAAW6C,iBAAiB4C,GAGhCzF,EAAWkD,QAFXlD,EAAW3F,UAAU0E,IAOpB0G,GAAiB,GAAAzF,EAAWgB,QAC7ByE,EAAgBjO,EAAQiO,cAAgBzF,GAE5C5oB,MASRW,IAAK,SAASioB,GACV,GAAIA,aAAsBc,GACtB,OAAOd,EAIX,IADA,IAAID,EAAczpB,KAAKypB,YACd3oB,EAAI,EAAGA,EAAI2oB,EAAYtqB,OAAQ2B,IACpC,GAAI2oB,EAAY3oB,GAAGoC,QAAQgQ,OAASwW,EAChC,OAAOD,EAAY3oB,GAG3B,OAAO,MASX8C,IAAK,SAAS8lB,GACV,GAAIhO,EAAegO,EAAY,MAAO1pB,MAClC,OAAOA,KAIX,IAAIoE,EAAWpE,KAAKyB,IAAIioB,EAAWxmB,QAAQgQ,OAS3C,OARI9O,GACApE,KAAKkH,OAAO9C,GAGhBpE,KAAKypB,YAAYxjB,KAAKyjB,GACtBA,EAAWxJ,QAAUlgB,KAErBA,KAAKwpB,YAAY/Y,SACViZ,GAQXxiB,OAAQ,SAASwiB,GACb,GAAIhO,EAAegO,EAAY,SAAU1pB,MACrC,OAAOA,KAMX,GAHA0pB,EAAa1pB,KAAKyB,IAAIioB,GAGN,CACZ,IAAID,EAAczpB,KAAKypB,YACnBrqB,EAAQmf,EAAQkL,EAAaC,IAElB,IAAXtqB,IACAqqB,EAAYzV,OAAO5U,EAAO,GAC1BY,KAAKwpB,YAAY/Y,UAIzB,OAAOzQ,MASXyM,GAAI,SAAS2iB,EAAQtR,GACjB,QAp5ER,IAo5EYsR,QAp5EZ,IAu5EYtR,EAAJ,CAIA,IAAI+Q,EAAW7uB,KAAK6uB,SAKpB,OAJAjT,EAAKmC,EAASqR,IAAS,SAASlc,GAC5B2b,EAAS3b,GAAS2b,EAAS3b,IAAU,GACrC2b,EAAS3b,GAAOjN,KAAK6X,MAElB9d,OASXqvB,IAAK,SAASD,EAAQtR,GAClB,QA16ER,IA06EYsR,EAAJ,CAIA,IAAIP,EAAW7uB,KAAK6uB,SAQpB,OAPAjT,EAAKmC,EAASqR,IAAS,SAASlc,GACvB4K,EAGD+Q,EAAS3b,IAAU2b,EAAS3b,GAAOc,OAAOuK,EAAQsQ,EAAS3b,GAAQ4K,GAAU,UAFtE+Q,EAAS3b,MAKjBlT,OAQX8jB,KAAM,SAAS5Q,EAAOnO,GAEd/E,KAAKkD,QAAQkrB,WAkEzB,SAAyBlb,EAAOnO,GAC5B,IAAIuqB,EAAetkB,EAASukB,YAAY,SACxCD,EAAaE,UAAUtc,GAAO,GAAM,GACpCoc,EAAaG,QAAU1qB,EACvBA,EAAKiJ,OAAO0hB,cAAcJ,GArElBK,CAAgBzc,EAAOnO,GAI3B,IAAI8pB,EAAW7uB,KAAK6uB,SAAS3b,IAAUlT,KAAK6uB,SAAS3b,GAAOzT,QAC5D,GAAKovB,GAAaA,EAAS1vB,OAA3B,CAIA4F,EAAKqE,KAAO8J,EACZnO,EAAK6T,eAAiB,WAClB7T,EAAK6e,SAAShL,kBAIlB,IADA,IAAI9X,EAAI,EACDA,EAAI+tB,EAAS1vB,QAChB0vB,EAAS/tB,GAAGiE,GACZjE,MAQR4jB,QAAS,WACL1kB,KAAKuf,SAAWwP,GAAe/uB,MAAM,GAErCA,KAAK6uB,SAAW,GAChB7uB,KAAKkhB,QAAU,GACflhB,KAAK2gB,MAAM+D,UACX1kB,KAAKuf,QAAU,OAyCvB5K,EAAOoX,GAAQ,CACX6D,YAtoEc,EAuoEdC,WAtoEa,EAuoEbC,UAtoEY,EAuoEZC,aAtoEe,EAwoEfC,eAlrCiB,EAmrCjBC,YAlrCc,EAmrCdC,cAlrCgB,EAmrChBC,YAlrCc,EAmrCdC,iBAnrCc,EAorCdC,gBAlrCkB,GAmrClBC,aAlrCe,GAorCfC,eA9oEiB,EA+oEjBlG,eA9oEiB,EA+oEjBmG,gBA9oEkB,EA+oElBlG,aA9oEe,EA+oEfmG,eA9oEiB,GA+oEjBtD,qBA7oEuB9C,EA8oEvBqG,mBA7oEqBpG,GA8oErBqG,cA7oEgBxD,GA+oEhBlB,QAASA,GACThM,MAAOA,EACPoJ,YAAaA,GAEbjC,WAAYA,GACZtC,WAAYA,EACZkB,kBAAmBA,GACnB4B,gBAAiBA,GACjBd,iBAAkBA,GAElB0D,WAAYA,GACZS,eAAgBA,GAChB2F,IAAKjF,GACLkF,IAAK3F,GACL4F,MAAOpF,GACPqF,MAAO1F,GACP2F,OAAQvF,GACRwF,MAAO3F,GAEP7e,GAAImR,EACJyR,IAAKpR,EACLrC,KAAMA,EACNkB,MAAOA,EACPH,OAAQA,EACRhI,OAAQA,EACRoI,QAASA,EACTtB,OAAQA,EACRuD,SAAUA,UAKsB,IAAXxe,EAAyBA,EAA0B,oBAAT2f,KAAuBA,KAAO,IACtF4L,OAASA,QAjkFpB,KAokFIjR,aACI,OAAOiR,IADL,8BApkFV,CA6kFGvrB,OAAQwK,W,wCCllFX,I,SCAiM,ECmCjM,CACA,yBACA,YACA,M,OAAA,EACA,0GAEA,OACA,QACA,YACA,cAEA,cACA,YACA,cAEA,QACA,aACA,YAEA,YACA,YACA,cAEA,UACA,YACA,eAGA,UACA,SADA,WAEA,2EAGA,SACA,MADA,WAEA,kB,QC/DIkmB,EAAY,YACd,GHRW,WAAa,IAAInlB,EAAI/L,KAASgM,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAQD,EAAU,OAAEG,EAAG,QAAQ,CAACE,MAAM,CAAC,MAAQL,EAAIolB,UAAU1kB,GAAG,CAAC,MAAQV,EAAIX,QAAQ,CAACc,EAAG,gBAAgB,CAACE,MAAM,CAAC,UAAUL,EAAIqlB,OAAO,gBAAgBrlB,EAAIslB,aAAa,OAAStlB,EAAIulB,OAAO,cAAcvlB,EAAIwlB,WAAW,KAAOxlB,EAAIylB,aAAa,GAAGzlB,EAAImB,OAC1T,IGUpB,EACA,KACA,KACA,MAIa,UAAAgkB,E","file":"files-modal.js?v=0a53bf85074b03faeb99","sourcesContent":["'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Components/Modal\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Components/Modal\"] = factory();\n\telse\n\t\troot[\"NextcloudVue\"] = root[\"NextcloudVue\"] || {}, root[\"NextcloudVue\"][\"Components/Modal\"] = factory();\n})(window, function() {\nreturn "," \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 = \"/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 171);\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","export default \"data:font/ttf;base64,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\"","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCIgPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bWV0YWRhdGE+PC9tZXRhZGF0YT48ZGVmcz48Zm9udCBpZD0iaWNvbmZvbnQtdnVlLWUxZjU1Y2UiIGhvcml6LWFkdi14PSI1MDAwIj48Zm9udC1mYWNlIGZvbnQtZmFtaWx5PSJpY29uZm9udC12dWUtZTFmNTVjZSIgZm9udC13ZWlnaHQ9IjQwMCIgZm9udC1zdHJldGNoPSJub3JtYWwiIHVuaXRzLXBlci1lbT0iNTAwMCIgcGFub3NlLTE9IjIgMCA1IDMgMCAwIDAgMCAwIDAiIGFzY2VudD0iNTAwMCIgZGVzY2VudD0iMCIgeC1oZWlnaHQ9IjAiIGJib3g9Ii0xIDAgNTAxMSA1MDAwIiB1bmRlcmxpbmUtdGhpY2tuZXNzPSIwIiB1bmRlcmxpbmUtcG9zaXRpb249IjUwIiB1bmljb2RlLXJhbmdlPSJVK2VhMDEtZWEwZSIgLz48bWlzc2luZy1nbHlwaCBob3Jpei1hZHYteD0iMCIgIC8+PGdseXBoIGdseXBoLW5hbWU9ImFycm93LWxlZnQtZG91YmxlIiB1bmljb2RlPSImI3hlYTAxOyIgZD0iTTM3NTAgMzkwNiBsLTE0MDYgLTE0MDYgbDE0MDYgLTE0MDYgbDAgMzEyIGwtMTA5NCAxMDk0IGwxMDk0IDEwOTQgbDAgMzEyIFpNMjM0NCAzOTA2IGwtMTQwNiAtMTQwNiBsMTQwNiAtMTQwNiBsMCAzMTIgbC0xMDk0IDEwOTQgbDEwOTQgMTA5NCBsMCAzMTIgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctbGVmdCIgdW5pY29kZT0iJiN4ZWEwMjsiIGQ9Ik0xNTYzIDI1MDAgbDE4NzUgLTE4NzUgbDAgLTMxMiBsLTIxODggMjE4NyBsMjE4OCAyMTg4IGwwIC0zMTMgbC0xODc1IC0xODc1IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImFycm93LXJpZ2h0LWRvdWJsZSIgdW5pY29kZT0iJiN4ZWEwMzsiIGQ9Ik0xMjUwIDEwOTQgbDE0MDYgMTQwNiBsLTE0MDYgMTQwNiBsMCAtMzEyIGwxMDk0IC0xMDk0IGwtMTA5NCAtMTA5NCBsMCAtMzEyIFpNMjY1NiAxMDk0IGwxNDA3IDE0MDYgbC0xNDA3IDE0MDYgbDAgLTMxMiBsMTA5NCAtMTA5NCBsLTEwOTQgLTEwOTQgbDAgLTMxMiBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvdy1yaWdodCIgdW5pY29kZT0iJiN4ZWEwNDsiIGQ9Ik0zNDM4IDI1MDAgbC0xODc1IDE4NzUgbDAgMzEzIGwyMTg3IC0yMTg4IGwtMjE4NyAtMjE4NyBsMCAzMTIgbDE4NzUgMTg3NSBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJicmVhZGNydW1iIiB1bmljb2RlPSImI3hlYTA1OyIgZD0iTTE0OCA1MDAwIGwtMTQ4IC04NSBsMTM5NCAtMjQxNSBsLTEzOTQgLTI0MTUgbDE0OCAtODUgbDE0NDMgMjUwMCBsLTE0NDMgMjUwMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJjaGVja21hcmsiIHVuaWNvZGU9IiYjeGVhMDY7IiBkPSJNNDA0NSAzOTcxIGwtMjA2MSAtMjA2MSBsLTEwMjkgMTAyOSBsLTQ0MiAtNDQxIGwxNDcxIC0xNDcxIGwyNTAzIDI1MDIgbC00NDIgNDQyIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImNsb3NlIiB1bmljb2RlPSImI3hlYTA3OyIgZD0iTTQzNzUgMTE1NiBsLTUzMSAtNTMxIGwtMTM0NCAxMzQ0IGwtMTM0NCAtMTM0NCBsLTUzMSA1MzEgbDEzNDQgMTM0NCBsLTEzNDQgMTM0NCBsNTMxIDUzMSBsMTM0NCAtMTM0NCBsMTM0NCAxMzQ0IGw1MzEgLTUzMSBsLTEzNDQgLTEzNDQgbDEzNDQgLTEzNDQgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iY29uZmlybSIgdW5pY29kZT0iJiN4ZWEwODsiIGQ9Ik0yNjU2IDQ4NDQgcS0xMDEgMCAtMTgwIC01NyBxLTc0IC01MiAtMTA5IC0xMzggcS0zNSAtODYgLTE5IC0xNzUgcTE4IC05NiA5MCAtMTY3IGwxNDk1IC0xNDk0IGwtMzYxNiAwIHEtNzcgMSAtMTM5IC0yNiBxLTU4IC0yNCAtOTkgLTcwIHEtMzkgLTQ0IC01OSAtMTAxIHEtMjAgLTU2IC0yMCAtMTE2IHEwIC02MCAyMCAtMTE2IHEyMCAtNTcgNTkgLTEwMSBxNDEgLTQ2IDk5IC03MCBxNjIgLTI3IDEzOSAtMjUgbDM2MTYgMCBsLTE0OTUgLTE0OTUgcS01NSAtNTMgLTgxIC0xMTYgcS0yNCAtNTkgLTIxIC0xMjEgcTMgLTU4IDMwIC0xMTMgcTI1IC01NCA2OCAtOTcgcTQzIC00MyA5NiAtNjggcTU1IC0yNiAxMTQgLTI5IHE2MiAtMyAxMjAgMjEgcTYzIDI1IDExNiA4MSBsMjAyOSAyMDI4IHE1OSA2MCA4MCAxNDEgcTIxIDgwIDEgMTU5IHEtMjEgODIgLTgxIDE0MiBsLTIwMjkgMjAyOCBxLTQ0IDQ1IC0xMDIgNzAgcS01OCAyNSAtMTIyIDI1IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImluZm8iIHVuaWNvZGU9IiYjeGVhMDk7IiBkPSJNMjQyMiA0Njg4IHEtMTExIDAgLTIxMyAtNDMgcS05OCAtNDIgLTE3NCAtMTE3LjUgcS03NiAtNzUuNSAtMTE3IC0xNzQuNSBxLTQzIC0xMDEgLTQzIC0yMTIuNSBxMCAtMTExLjUgNDMgLTIxMi41IHE0MSAtOTggMTE3IC0xNzQgcTc2IC03NiAxNzQgLTExNyBxMTAyIC00MyAyMTMgLTQzIHExMTEgMCAyMTMgNDMgcTk4IDQxIDE3My41IDExNyBxNzUuNSA3NiAxMTcuNSAxNzQgcTQzIDEwMSA0MyAyMTIuNSBxMCAxMTEuNSAtNDMgMjEyLjUgcS00MiA5OSAtMTE3LjUgMTc0LjUgcS03NS41IDc1LjUgLTE3My41IDExNy41IHEtMTAyIDQzIC0yMTMgNDMgWk0xNTYzIDMxMjUgcS04NiAwIC0xNTggLTQzIHEtNzEgLTQxIC0xMTIgLTExMiBxLTQzIC03MiAtNDMgLTE1Ny41IHEwIC04NS41IDQzIC0xNTcuNSBxNDEgLTcxIDExMiAtMTEyIHE3MiAtNDMgMTU4IC00MyBsNjI1IDAgbDAgLTE1NjIgbC02MjUgMCBxLTg2IDAgLTE1OCAtNDMgcS03MSAtNDEgLTExMiAtMTEyIHEtNDMgLTczIC00MyAtMTU4IHEwIC04NSA0MyAtMTU4IHE0MSAtNzEgMTEyIC0xMTIgcTcyIC00MyAxNTggLTQyIGwxODc1IDAgcTg1IDAgMTU3IDQyIHE3MSA0MSAxMTIgMTEyIHE0MyA3MyA0MyAxNTggcTAgODUgLTQzIDE1OCBxLTQxIDcxIC0xMTIgMTEyIHEtNzIgNDMgLTE1NyA0MyBsLTYyNSAwIGwwIDE4NzUgcTAgODUgLTQzIDE1NyBxLTQxIDcxIC0xMTIgMTEyIHEtNzMgNDMgLTE1OCA0MyBsLTkzNyAwIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9Im1lbnUiIHVuaWNvZGU9IiYjeGVhMGE7IiBkPSJNNjI1IDQzNzUgbDAgLTYyNSBsMzc1MCAwIGwwIDYyNSBsLTM3NTAgMCBaTTYyNSAyODEzIGwwIC02MjUgbDM3NTAgMCBsMCA2MjUgbC0zNzUwIDAgWk02MjUgMTI1MCBsMCAtNjI1IGwzNzUwIDAgbDAgNjI1IGwtMzc1MCAwIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9Im1vcmUiIHVuaWNvZGU9IiYjeGVhMGI7IiBkPSJNNzgxIDMwNDcgcTExMiAwIDIxMyAtNDMgcTk4IC00MiAxNzQgLTExNy41IHE3NiAtNzUuNSAxMTcgLTE3My41IHE0MyAtMTAyIDQzIC0yMTMgcTAgLTExMSAtNDMgLTIxMyBxLTQxIC05OCAtMTE3IC0xNzMuNSBxLTc2IC03NS41IC0xNzQgLTExNy41IHEtMTAxIC00MyAtMjEyLjUgLTQzIHEtMTExLjUgMCAtMjEzLjUgNDMgcS05OCA0MiAtMTczLjUgMTE3LjUgcS03NS41IDc1LjUgLTExNy41IDE3My41IHEtNDMgMTAyIC00MyAyMTMgcTAgMTExIDQzIDIxMyBxNDIgOTggMTE3LjUgMTczLjUgcTc1LjUgNzUuNSAxNzMuNSAxMTcuNSBxMTAyIDQzIDIxMyA0MyBaTTI1MDAgMzA0NyBxMTExIDAgMjEzIC00MyBxOTggLTQyIDE3My41IC0xMTcuNSBxNzUuNSAtNzUuNSAxMTcuNSAtMTczLjUgcTQzIC0xMDIgNDMgLTIxMyBxMCAtMTExIC00MyAtMjEzIHEtNDIgLTk4IC0xMTcuNSAtMTczLjUgcS03NS41IC03NS41IC0xNzMuNSAtMTE3LjUgcS0xMDIgLTQzIC0yMTMgLTQzIHEtMTExIDAgLTIxMyA0MyBxLTk4IDQyIC0xNzMuNSAxMTcuNSBxLTc1LjUgNzUuNSAtMTE3LjUgMTczLjUgcS00MyAxMDIgLTQzIDIxMyBxMCAxMTEgNDMgMjEzIHE0MiA5OCAxMTcuNSAxNzMuNSBxNzUuNSA3NS41IDE3My41IDExNy41IHExMDIgNDMgMjEzIDQzIFpNNDIxOSAzMDQ3IHExMTEgMCAyMTMgLTQzIHE5OCAtNDIgMTczLjUgLTExNy41IHE3NS41IC03NS41IDExNy41IC0xNzMuNSBxNDMgLTEwMiA0MyAtMjEzIHEwIC0xMTEgLTQzIC0yMTMgcS00MiAtOTggLTExNy41IC0xNzMuNSBxLTc1LjUgLTc1LjUgLTE3My41IC0xMTcuNSBxLTEwMiAtNDMgLTIxMy41IC00MyBxLTExMS41IDAgLTIxMi41IDQzIHEtOTggNDIgLTE3NCAxMTcuNSBxLTc2IDc1LjUgLTExNyAxNzMuNSBxLTQzIDEwMiAtNDMgMjEzIHEwIDExMSA0MyAyMTMgcTQxIDk4IDExNyAxNzMuNSBxNzYgNzUuNSAxNzQgMTE3LjUgcTEwMSA0MyAyMTMgNDMgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0icGF1c2UiIHVuaWNvZGU9IiYjeGVhMGM7IiBkPSJNOTM4IDQwNjMgbDAgLTMxMjUgbDEyNTAgMCBsMCAzMTI1IGwtMTI1MCAwIFpNMjgxMyA0MDYzIGwwIC0zMTI1IGwxMjUwIDAgbDAgMzEyNSBsLTEyNTAgMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJwbGF5IiB1bmljb2RlPSImI3hlYTBkOyIgZD0iTTYyNSA0Mzc1IGwzNzUwIC0xODc1IGwtMzc1MCAtMTg3NSBsMCAzNzUwIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InRyaWFuZ2xlLXMiIHVuaWNvZGU9IiYjeGVhMGU7IiBkPSJNMTI1MCAzMTI1IGwxMjUwIC0xMjUwIGwxMjUwIDEyNDggbC0yNTAwIDIgWiIgLz48L2ZvbnQ+PC9kZWZzPjwvc3ZnPg==\"","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=style&index=0&id=9cc143dc&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6e72f645\", content, true, {});","module.exports = require(\"core-js/modules/es.function.name\");","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionButton.vue?vue&type=style&index=0&id=33ba3302&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionButton.vue?vue&type=style&index=0&id=33ba3302&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"li.active[data-v-33ba3302]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-33ba3302]{pointer-events:none;opacity:.5}.action--disabled[data-v-33ba3302]:hover,.action--disabled[data-v-33ba3302]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-33ba3302]{opacity:1 !important}.action-button[data-v-33ba3302]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-button[data-v-33ba3302]:hover,.action-button[data-v-33ba3302]:focus{opacity:1}.action-button>span[data-v-33ba3302]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-33ba3302]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-button p[data-v-33ba3302]{width:150px;padding:7px 0;margin:auto;cursor:pointer;text-align:left;line-height:1.6em}.action-button__longtext[data-v-33ba3302]{cursor:pointer;white-space:pre-wrap}.action-button__title[data-v-33ba3302]{font-weight:bold}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { VTooltip } from 'v-tooltip'\nimport './index.scss'\n\n// force scope the tooltip and use .vue-tooltip\n// instead of .tooltip to avoid server compatibility\n// issues and the use of !important\nVTooltip.options.defaultTemplate = `<div class=\"vue-tooltip\" role=\"tooltip\" data-v-${SCOPE_VERSION}><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>`\nVTooltip.options.defaultHtml = false\n\nexport default VTooltip\n","module.exports = require(\"v-click-outside\");","module.exports = require(\"core-js/modules/es.array.index-of\");","\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue'\n\nexport default {\n\tbefore() {\n\t\t// all actions requires a valid text content\n\t\t// if none, forbid the component mount and throw error\n\t\tif (!this.$slots.default || this.text.trim() === '') {\n\t\t\tVue.util.warn(`${this.$options.name} cannot be empty and requires a meaningful text content`, this)\n\t\t\tthis.$destroy()\n\t\t\tthis.$el.remove()\n\t\t}\n\t},\n\n\tbeforeUpdate() {\n\t\tthis.text = this.getText()\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// $slots are not reactive.\n\t\t\t// We need to update the content manually\n\t\t\ttext: this.getText(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisLongText() {\n\t\t\treturn this.text && this.text.trim().length > 20\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetText() {\n\t\t\treturn this.$slots.default ? this.$slots.default[0].text.trim() : ''\n\t\t},\n\t},\n}\n","\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst GenRandomId = (length) => {\n\treturn Math.random()\n\t\t.toString(36)\n\t\t.replace(/[^a-z]+/g, '')\n\t\t.substr(0, length || 5)\n}\n\nexport default GenRandomId\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default function timer(callback, delay) {\n\tlet id\n\tlet started\n\tlet remaining = delay\n\tlet running\n\n\tthis.start = function() {\n\t\trunning = true\n\t\tstarted = new Date()\n\t\tid = setTimeout(callback, remaining)\n\t}\n\n\tthis.pause = function() {\n\t\trunning = false\n\t\tclearTimeout(id)\n\t\tremaining -= new Date() - started\n\t}\n\n\tthis.clear = function() {\n\t\trunning = false\n\t\tclearTimeout(id)\n\t\tremaining = 0\n\t}\n\n\tthis.getTimeLeft = function() {\n\t\tif (running) {\n\t\t\tthis.pause()\n\t\t\tthis.start()\n\t\t}\n\n\t\treturn remaining\n\t}\n\n\tthis.getStateRunning = function() {\n\t\treturn running\n\t}\n\n\tthis.start()\n}\n","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<docs>\n\n```vue\n<template>\n\t<div>\n\t\t<button @click=\"showModal\">Show Modal</button>\n\t\t<modal v-if=\"modal\" @close=\"closeModal\">\n\t\t\t<div class=\"modal__content\">Hello world</div>\n\t\t</modal>\n\t</div>\n</template>\n<style scoped>\n\t.modal__content {\n\t\twidth: 50vw;\n\t\ttext-align: center;\n\t\tmargin: 10vw 0;\n\t}\n</style>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tmodal: false\n\t\t}\n\t},\n\tmethods: {\n\t\tshowModal() {\n\t\t\tthis.modal = true\n\t\t},\n\t\tcloseModal() {\n\t\t\tthis.modal = false\n\t\t}\n\t}\n}\n</script>\n```\n\n</docs>\n<template>\n\t<transition name=\"fade\">\n\t\t<div ref=\"mask\"\n\t\t\tclass=\"modal-mask\"\n\t\t\t:class=\"{ 'modal-mask--dark': dark }\"\n\t\t\t@click=\"handleMouseMove\"\n\t\t\t@mousemove=\"handleMouseMove\"\n\t\t\t@touchmove=\"handleMouseMove\">\n\t\t\t<!-- Header -->\n\t\t\t<transition name=\"fade-visibility\">\n\t\t\t\t<div v-show=\"!clearView\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\tinvisible: clearView\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"modal-header\">\n\t\t\t\t\t<div v-if=\"title.trim() !== ''\" class=\"modal-title\">\n\t\t\t\t\t\t{{ title }}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"icons-menu\">\n\t\t\t\t\t\t<!-- Play-pause toggle -->\n\t\t\t\t\t\t<button v-if=\"hasNext && enableSlideshow\"\n\t\t\t\t\t\t\tv-tooltip.auto=\"playPauseTitle\"\n\t\t\t\t\t\t\t:class=\"{ 'play-pause--paused': slideshowPaused }\"\n\t\t\t\t\t\t\tclass=\"play-pause\"\n\t\t\t\t\t\t\t@click=\"togglePlayPause\">\n\t\t\t\t\t\t\t<!-- Progress circle, css animated -->\n\t\t\t\t\t\t\t<div :class=\"[playing ? 'icon-pause' : 'icon-play']\">\n\t\t\t\t\t\t\t\t<span class=\"hidden-visually\">\n\t\t\t\t\t\t\t\t\t{{ playPauseTitle }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Progress circle, css animated -->\n\t\t\t\t\t\t\t<svg v-if=\"playing\"\n\t\t\t\t\t\t\t\tclass=\"progress-ring\"\n\t\t\t\t\t\t\t\theight=\"50\"\n\t\t\t\t\t\t\t\twidth=\"50\">\n\t\t\t\t\t\t\t\t<circle class=\"progress-ring__circle\"\n\t\t\t\t\t\t\t\t\tstroke=\"white\"\n\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\tfill=\"transparent\"\n\t\t\t\t\t\t\t\t\tr=\"15\"\n\t\t\t\t\t\t\t\t\tcx=\"25\"\n\t\t\t\t\t\t\t\t\tcy=\"25\" />\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<!-- Actions menu -->\n\t\t\t\t\t\t<Actions class=\"header-actions\">\n\t\t\t\t\t\t\t<!-- @slot List of actions to show -->\n\t\t\t\t\t\t\t<slot name=\"actions\" />\n\t\t\t\t\t\t</Actions>\n\n\t\t\t\t\t\t<!-- Close modal -->\n\t\t\t\t\t\t<Actions v-if=\"canClose\" class=\"header-close\">\n\t\t\t\t\t\t\t<ActionButton icon=\"icon-close\" @click=\"close\">\n\t\t\t\t\t\t\t\t{{ t('Close') }}\n\t\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t\t</Actions>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</transition>\n\n\t\t\t<!-- Content wrapper -->\n\t\t\t<transition :name=\"modalTransitionName\">\n\t\t\t\t<div\n\t\t\t\t\tv-show=\"showModal\"\n\t\t\t\t\t:class=\"[\n\t\t\t\t\t\t`modal-wrapper--${size}`,\n\t\t\t\t\t\tspreadNavigation ? 'modal-wrapper--spread-navigation' : ''\n\t\t\t\t\t]\"\n\t\t\t\t\tclass=\"modal-wrapper\"\n\t\t\t\t\t@click.self=\"close\">\n\t\t\t\t\t<!-- Navigation button -->\n\t\t\t\t\t<transition name=\"fade-visibility\">\n\t\t\t\t\t\t<a v-show=\"hasPrevious && !clearView\"\n\t\t\t\t\t\t\tclass=\"prev\"\n\t\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t\tinvisible: clearView || !hasPrevious\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t@click=\"previous\">\n\t\t\t\t\t\t\t<div class=\"icon icon-previous\">\n\t\t\t\t\t\t\t\t<span class=\"hidden-visually\">\n\t\t\t\t\t\t\t\t\t{{ t('Previous') }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</transition>\n\n\t\t\t\t\t<!-- Content -->\n\t\t\t\t\t<div class=\"modal-container\">\n\t\t\t\t\t\t<!-- @slot Modal content to render -->\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<!-- Navigation button -->\n\t\t\t\t\t<transition name=\"fade-visibility\">\n\t\t\t\t\t\t<a v-show=\"hasNext && !clearView\"\n\t\t\t\t\t\t\tclass=\"next\"\n\t\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t\tinvisible: clearView || !hasNext\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t@click=\"next\">\n\t\t\t\t\t\t\t<div class=\"icon icon-next\">\n\t\t\t\t\t\t\t\t<span class=\"hidden-visually\">\n\t\t\t\t\t\t\t\t\t{{ t('Next') }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t</transition>\n</template>\n\n<script>\nimport Hammer from 'hammerjs'\nimport Actions from '../Actions'\nimport ActionButton from '../ActionButton'\nimport l10n from '../../mixins/l10n'\nimport { t } from '../../l10n'\nimport Tooltip from '../../directives/Tooltip'\nimport Timer from '../../utils/Timer'\n\nexport default {\n\tname: 'Modal',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t},\n\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\n\tmixins: [l10n],\n\n\tprops: {\n\t\t/**\n\t\t * Title to be shown with the modal\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Declare if a previous slide is available\n\t\t */\n\t\thasPrevious: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Declare if a next slide is available\n\t\t */\n\t\thasNext: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Declare if hiding the modal should be animated\n\t\t */\n\t\toutTransition: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Declare if the slideshow functionality should be enabled\n\t\t */\n\t\tenableSlideshow: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tclearViewDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 5000,\n\t\t},\n\t\t/**\n\t\t * Declare the slide interval\n\t\t */\n\t\tslideshowDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 3000,\n\t\t},\n\t\t/**\n\t\t * Allow to pause an ongoing slideshow\n\t\t */\n\t\tslideshowPaused: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Enable swipe between slides\n\t\t */\n\t\tenableSwipe: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tspreadNavigation: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tsize: {\n\t\t\ttype: String,\n\t\t\tdefault: 'normal',\n\t\t\tvalidator: size => {\n\t\t\t\treturn ['normal', 'large', 'full'].indexOf(size) !== -1\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Declare if the modal can be closed\n\t\t */\n\t\tcanClose: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/** Makes the modal backdrop black if true */\n\t\tdark: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tmc: null,\n\t\t\tshowModal: false,\n\t\t\tclearView: false,\n\t\t\tclearViewTimeout: null,\n\t\t\tplaying: false,\n\t\t\tslideshowTimeout: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tmodalTransitionName() {\n\t\t\treturn `modal-${this.outTransition ? 'out' : 'in'}`\n\t\t},\n\t\tplayPauseTitle() {\n\t\t\treturn this.playing ? t('Pause slideshow') : t('Start slideshow')\n\t\t},\n\t},\n\n\twatch: {\n\t\t/**\n\t\t * Handle play/pause of an ongoing slideshow\n\t\t * @param {boolean} paused is the player paused\n\t\t */\n\t\tslideshowPaused: function(paused) {\n\t\t\tif (this.slideshowTimeout) {\n\t\t\t\tif (paused) {\n\t\t\t\t\tthis.slideshowTimeout.pause()\n\t\t\t\t} else {\n\t\t\t\t\tthis.slideshowTimeout.start()\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\twindow.addEventListener('keydown', this.handleKeydown)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('keydown', this.handleKeydown)\n\t},\n\tmounted() {\n\t\tthis.showModal = true\n\n\t\t// init clear view\n\t\tthis.handleMouseMove()\n\n\t\tthis.mc = new Hammer(this.$refs.mask)\n\t\tthis.mc.on('swipeleft swiperight', e => {\n\t\t\tthis.handleSwipe(e)\n\t\t})\n\n\t\t// force mount the component to body\n\t\tdocument.body.insertBefore(this.$el, document.body.lastChild)\n\t},\n\tunmounted() {\n\t\tthis.mc.off('swipeleft swiperight')\n\t\tthis.mc.destroy()\n\t},\n\n\tmethods: {\n\t\t// Events emitters\n\t\tprevious(data) {\n\t\t\t// do not send the event if nothing is available\n\t\t\tif (this.hasPrevious) {\n\t\t\t\t// if data is set, then it's a user mouse event\n\t\t\t\t// and not the slideshow handler, therefore\n\t\t\t\t// we reset the timer\n\t\t\t\tif (data) {\n\t\t\t\t\tthis.resetSlideshow()\n\t\t\t\t}\n\t\t\t\tthis.$emit('previous', data)\n\t\t\t}\n\t\t},\n\t\tnext(data) {\n\t\t\t// do not send the event if nothing is available\n\t\t\tif (this.hasNext) {\n\t\t\t\t// if data is set, then it's a mouse event\n\t\t\t\t// and not the slideshow handler, therefore\n\t\t\t\t// we reset the timer\n\t\t\t\tif (data) {\n\t\t\t\t\tthis.resetSlideshow()\n\t\t\t\t}\n\t\t\t\tthis.$emit('next', data)\n\t\t\t}\n\t\t},\n\t\tclose(data) {\n\t\t\t// do not fire event if forbidden\n\t\t\tif (this.canClose) {\n\t\t\t\tthis.showModal = false\n\n\t\t\t\t// delay closing for animation\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t/**\n\t\t\t\t\t * Emitted when the closing animation is finished\n\t\t\t\t\t */\n\t\t\t\t\tthis.$emit('close', data)\n\t\t\t\t}, 300)\n\t\t\t}\n\t\t},\n\n\t\t// Key Handlers\n\t\thandleKeydown(e) {\n\t\t\tswitch (e.keyCode) {\n\t\t\tcase 37: // left arrow\n\t\t\t\tthis.previous(e)\n\t\t\t\tbreak\n\t\t\tcase 13: // enter key\n\t\t\tcase 39: // rigth arrow\n\t\t\t\tthis.next(e)\n\t\t\t\tbreak\n\t\t\tcase 27: // escape key\n\t\t\t\tthis.close(e)\n\t\t\t\tbreak\n\t\t\t}\n\t\t},\n\t\thandleSwipe(e) {\n\t\t\tif (this.enableSwipe) {\n\t\t\t\tif (e.type === 'swipeleft') {\n\t\t\t\t\t// swiping to left to go to the next item\n\t\t\t\t\tthis.next(e)\n\t\t\t\t} else if (e.type === 'swiperight') {\n\t\t\t\t\t// swiping to right to go back to the previous item\n\t\t\t\t\tthis.previous(e)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thandleMouseMove() {\n\t\t\tif (this.clearViewDelay > 0) {\n\t\t\t\tthis.clearView = false\n\t\t\t\tclearTimeout(this.clearViewTimeout)\n\t\t\t\tthis.clearViewTimeout = setTimeout(() => {\n\t\t\t\t\tthis.clearView = true\n\t\t\t\t}, this.clearViewDelay)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Toggle the slideshow state\n\t\t */\n\t\ttogglePlayPause() {\n\t\t\tthis.playing = !this.playing\n\t\t\tif (this.playing) {\n\t\t\t\tthis.handleSlideshow()\n\t\t\t} else {\n\t\t\t\tthis.clearSlideshowTimeout()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the slideshow timer and keep going if it was on\n\t\t */\n\t\tresetSlideshow() {\n\t\t\tthis.playing = !this.playing\n\t\t\tthis.clearSlideshowTimeout()\n\t\t\tthis.$nextTick(function() {\n\t\t\t\tthis.togglePlayPause()\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Handle the slideshow timer and next event\n\t\t */\n\t\thandleSlideshow() {\n\t\t\tthis.playing = true\n\t\t\tif (this.hasNext) {\n\t\t\t\tthis.slideshowTimeout = new Timer(() => {\n\t\t\t\t\tthis.next()\n\t\t\t\t\tthis.handleSlideshow()\n\t\t\t\t}, this.slideshowDelay)\n\t\t\t} else {\n\t\t\t\tthis.playing = false\n\t\t\t\tthis.clearSlideshowTimeout()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Clear slideshowTimeout if ongoing\n\t\t */\n\t\tclearSlideshowTimeout() {\n\t\t\tif (this.slideshowTimeout) {\n\t\t\t\tthis.slideshowTimeout.clear()\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import '../../fonts/scss/iconfont-vue';\n$header-size: 50px;\n\n.modal-mask {\n\tposition: fixed;\n\tz-index: 9998;\n\ttop: 0;\n\tleft: 0;\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tbackground-color: rgba(0, 0, 0, .5);\n\t&--dark {\n\t\tbackground-color: rgba(0, 0, 0, .92);\n\t}\n}\n\n.modal-header {\n\tposition: absolute;\n\tz-index: 10001;\n\ttop: 0;\n\tright: 0;\n\tleft: 0;\n\t// prevent vue show to use display:none and reseting\n\t// the circle animation loop\n\tdisplay: flex !important;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 100%;\n\theight: $header-size;\n\ttransition: opacity 250ms,\n\t\tvisibility 250ms;\n\n\t// replace display by visibility\n\t&.invisible[style*='display:none'],\n\t&.invisible[style*='display: none'] {\n\t\tvisibility: hidden;\n\t}\n\n\t.modal-title {\n\t\toverflow-x: hidden;\n\t\tbox-sizing: border-box;\n\t\twidth: 100%;\n\t\tpadding: 0 #{$clickable-area * 3} 0 12px; // maximum actions is 3\n\t\ttransition: padding ease 100ms;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: #fff;\n\t\tfont-size: $icon-margin;\n\t}\n\n\t// On wider screens the title can be centered\n\t@media only screen and (min-width: $breakpoint-mobile/2) {\n\t\t.modal-title {\n\t\t\ttext-align: center;\n\t\t\tpadding-left: #{$clickable-area * 3}; // maximum actions is 3\n\t\t}\n\t}\n\n\t.icons-menu {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: flex-end;\n\n\t\t.icon-close {\n\t\t\tbox-sizing: border-box;\n\t\t\tmargin: ($header-size - $clickable-area) / 2;\n\t\t\t// not using $icon-margin since we have a custom font size\n\t\t\t// and alignement seems odd\n\t\t\tpadding: 10px 11px;\n\t\t\tcolor: #fff;\n\t\t\tbackground-image: none;\n\t\t\tfont-size: 23px;\n\n\t\t\t@include iconfont('close');\n\t\t}\n\n\t\t.play-pause {\n\t\t\tposition: relative;\n\t\t\twidth: $header-size;\n\t\t\theight: $header-size;\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t\tcursor: pointer;\n\t\t\tcolor: white;\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t\tfont-size: 22px;\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\t.icon-play,\n\t\t\t\t.icon-pause {\n\t\t\t\t\topacity: 1;\n\t\t\t\t\tborder-radius: $clickable-area / 2;\n\t\t\t\t\tbackground-color: $icon-focus-bg;\n\t\t\t\t}\n\t\t\t}\n\t\t\t.icon-play,\n\t\t\t.icon-pause {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: $clickable-area;\n\t\t\t\theight: $clickable-area;\n\t\t\t\tmargin: ($header-size - $clickable-area) / 2;\n\t\t\t\topacity: .7;\n\t\t\t\tbackground-image: none;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\t\t\t.icon-play {\n\t\t\t\t// better visual\n\t\t\t\tpadding: 11px 13px;\n\t\t\t\t@include iconfont('play');\n\t\t\t}\n\t\t\t.icon-pause {\n\t\t\t\tpadding: 12px;\n\t\t\t\t// ! align with circle\n\t\t\t\tfont-size: 19.5px;\n\t\t\t\t@include iconfont('pause');\n\t\t\t}\n\t\t}\n\n\t\t.header-actions {\n\t\t\tmargin: ($header-size - $clickable-area) / 2;\n\t\t\tcolor: white;\n\t\t}\n\n\t\t.action-item--single {\n\t\t\tbox-sizing: border-box;\n\t\t\twidth: $clickable-area;\n\t\t\theight: $clickable-area;\n\t\t\tcursor: pointer;\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: 22px;\n\t\t}\n\n\t\t&::v-deep .action-item__menutoggle {\n\t\t\tpadding: 13px 11px;\n\t\t\t// force white instead of default main text\n\t\t\tcolor: #fff;\n\t\t\t// 22px is a somehow better looking for the icon-more icon\n\t\t\tfont-size: 22px;\n\t\t}\n\n\t}\n}\n\n.modal-wrapper {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\n\t/* Navigation buttons */\n\t.prev,\n\t.next {\n\t\tz-index: 10000;\n\t\t// ignore display: none\n\t\tdisplay: flex !important;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 15%;\n\t\tmin-width: 60px;\n\t\theight: 100%;\n\t\ttransition: opacity 250ms,\n\t\t\tvisibility 250ms;\n\n\t\t// we want to keep the elements on page\n\t\t// even if hidden to avoid having a unbalanced\n\t\t// centered content\n\t\t// replace display by visibility\n\t\t&.invisible[style*='display:none'],\n\t\t&.invisible[style*='display: none'] {\n\t\t\tvisibility: hidden;\n\t\t}\n\t}\n\n\t// buttons/icons\n\t.icon-next,\n\t.icon-previous {\n\t\tbox-sizing: border-box;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\tpadding: 12px 11px;\n\t\tcolor: white;\n\t\tborder-radius: $clickable-area / 2;\n\t\tbackground-image: none;\n\t\tfont-size: 24px;\n\t}\n\t.icon-previous {\n\t\t@include iconfont('arrow-left');\n\t}\n\t.icon-next {\n\t\t@include iconfont('arrow-right');\n\t}\n\n\t/* Content */\n\t.modal-container {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t\tpadding: 0;\n\t\ttransition: transform 300ms ease;\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-main-background);\n\t\tbox-shadow: 0 0 40px rgba(0, 0, 0, .2);\n\t}\n\t&:not(&--large):not(&--full) .modal-container {\n\t\tmax-width: 900px;\n\t\tmax-height: 80%;\n\t}\n\n\t// Sizing\n\t&--full {\n\t\t.modal-container {\n\t\t\tmax-width: 100%;\n\t\t\tmax-height: 100%;\n\t\t\tborder-radius: 0;\n\t\t}\n\t}\n\t&--full,\n\t&--spread-navigation {\n\t\t.prev,\n\t\t.next {\n\t\t\tposition: absolute;\n\t\t\twidth: 10%;\n\t\t}\n\t\t.prev {\n\t\t\tleft: 0;\n\t\t}\n\t\t.next {\n\t\t\tright: 0;\n\t\t}\n\t}\n\t&--large {\n\t\t.modal-container {\n\t\t\tmax-width: 70%;\n\t\t\tmax-height: 90%;\n\t\t}\n\t\t.prev,\n\t\t.next {\n\t\t\twidth: 10%;\n\t\t}\n\t}\n}\n\n/* TRANSITIONS */\n.fade-enter-active,\n.fade-leave-active {\n\ttransition: opacity 250ms;\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-visibility-enter,\n.fade-visibility-leave-to {\n\tvisibility: hidden;\n\topacity: 0;\n}\n\n.modal-in-enter-active,\n.modal-in-leave-active,\n.modal-out-enter-active,\n.modal-out-leave-active {\n\ttransition: opacity 250ms;\n}\n\n.modal-in-enter,\n.modal-in-leave-to,\n.modal-out-enter,\n.modal-out-leave-to {\n\topacity: 0;\n}\n\n.modal-in-enter .modal-container,\n.modal-in-leave-to .modal-container {\n\ttransform: scale(.9);\n}\n\n.modal-out-enter .modal-container,\n.modal-out-leave-to .modal-container {\n\ttransform: scale(1.1);\n}\n\n// animated circle\n$radius: 15;\n$pi: 3.14159265358979;\n\n.modal-mask .play-pause {\n\t.progress-ring {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\ttransform: rotate(-90deg);\n\t\t.progress-ring__circle {\n\t\t\ttransition: 100ms stroke-dashoffset;\n\t\t\ttransform-origin: 50% 50%; // axis compensation\n\t\t\tanimation: progressring linear 3s infinite;\n\n\t\t\tstroke-linecap: round;\n\t\t\tstroke-dashoffset: $radius * 2 * $pi; // radius * 2 * PI\n\t\t\tstroke-dasharray: $radius * 2 * $pi; // radius * 2 * PI\n\t\t}\n\t}\n\t&--paused {\n\t\t.icon-pause {\n\t\t\tanimation: breath 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n\t\t}\n\t\t.progress-ring__circle {\n\t\t\tanimation-play-state: paused !important;\n\t\t}\n\t}\n}\n\n// keyframes get scoped too and break the animation name, we need them unscoped\n@keyframes progressring {\n\tfrom {\n\t\tstroke-dashoffset: $radius * 2 * $pi; // radius * 2 * PI\n\t}\n\tto {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n\n@keyframes breath {\n\t0% {\n\t\topacity: 1;\n\t}\n\t50% {\n\t\topacity: 0;\n\t}\n\t100% {\n\t\topacity: 1;\n\t}\n}\n\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{ref:\"mask\",staticClass:\"modal-mask\",class:{ 'modal-mask--dark': _vm.dark },on:{\"click\":_vm.handleMouseMove,\"mousemove\":_vm.handleMouseMove,\"touchmove\":_vm.handleMouseMove}},[_c('transition',{attrs:{\"name\":\"fade-visibility\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.clearView),expression:\"!clearView\"}],staticClass:\"modal-header\",class:{\n\t\t\t\t\tinvisible: _vm.clearView\n\t\t\t\t}},[(_vm.title.trim() !== '')?_c('div',{staticClass:\"modal-title\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"icons-menu\"},[(_vm.hasNext && _vm.enableSlideshow)?_c('button',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.playPauseTitle),expression:\"playPauseTitle\",modifiers:{\"auto\":true}}],staticClass:\"play-pause\",class:{ 'play-pause--paused': _vm.slideshowPaused },on:{\"click\":_vm.togglePlayPause}},[_c('div',{class:[_vm.playing ? 'icon-pause' : 'icon-play']},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.playPauseTitle)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])]),_vm._v(\" \"),(_vm.playing)?_c('svg',{staticClass:\"progress-ring\",attrs:{\"height\":\"50\",\"width\":\"50\"}},[_c('circle',{staticClass:\"progress-ring__circle\",attrs:{\"stroke\":\"white\",\"stroke-width\":\"2\",\"fill\":\"transparent\",\"r\":\"15\",\"cx\":\"25\",\"cy\":\"25\"}})]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('Actions',{staticClass:\"header-actions\"},[_vm._t(\"actions\")],2),_vm._v(\" \"),(_vm.canClose)?_c('Actions',{staticClass:\"header-close\"},[_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":_vm.close}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('Close'))+\"\\n\\t\\t\\t\\t\\t\\t\")])],1):_vm._e()],1)])]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":_vm.modalTransitionName}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showModal),expression:\"showModal\"}],staticClass:\"modal-wrapper\",class:[\n\t\t\t\t\t(\"modal-wrapper--\" + _vm.size),\n\t\t\t\t\t_vm.spreadNavigation ? 'modal-wrapper--spread-navigation' : ''\n\t\t\t\t],on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.close($event)}}},[_c('transition',{attrs:{\"name\":\"fade-visibility\"}},[_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasPrevious && !_vm.clearView),expression:\"hasPrevious && !clearView\"}],staticClass:\"prev\",class:{\n\t\t\t\t\t\t\tinvisible: _vm.clearView || !_vm.hasPrevious\n\t\t\t\t\t\t},on:{\"click\":_vm.previous}},[_c('div',{staticClass:\"icon icon-previous\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('Previous'))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"modal-container\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade-visibility\"}},[_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasNext && !_vm.clearView),expression:\"hasNext && !clearView\"}],staticClass:\"next\",class:{\n\t\t\t\t\t\t\tinvisible: _vm.clearView || !_vm.hasNext\n\t\t\t\t\t\t},on:{\"click\":_vm.next}},[_c('div',{staticClass:\"icon icon-next\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('Next'))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])])])])],1)])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport ScopeComponent from '../../utils/ScopeComponent'\nimport Modal from './Modal'\n\nScopeComponent(Modal)\n\nexport default Modal\n","module.exports = require(\"core-js/modules/es.array.iterator\");","module.exports = require(\"core-js/modules/es.string.iterator\");","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n","/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n isProduction = _isProduction\n\n options = _options || {}\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n if (options.ssrId) {\n styleElement.setAttribute(ssrIdKey, obj.id)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n","module.exports = require(\"core-js/modules/web.dom-collections.iterator\");","module.exports = require(\"core-js/modules/es.regexp.exec\");","module.exports = require(\"core-js/modules/es.array.map\");","module.exports = require(\"core-js/modules/es.regexp.to-string\");","module.exports = require(\"core-js/modules/web.url\");","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=style&index=0&id=9cc143dc&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=style&index=0&id=9cc143dc&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = require(\"../../fonts/iconfont-vue-e1f55ce.eot\");\nvar ___CSS_LOADER_URL_IMPORT_1___ = require(\"../../fonts/iconfont-vue-e1f55ce.woff\");\nvar ___CSS_LOADER_URL_IMPORT_2___ = require(\"../../fonts/iconfont-vue-e1f55ce.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_3___ = require(\"../../fonts/iconfont-vue-e1f55ce.svg\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\n// Module\nexports.push([module.id, \"@font-face{font-family:\\\"iconfont-vue-e1f55ce\\\";src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"embedded-opentype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"woff\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"truetype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"svg\\\")}.icon[data-v-9cc143dc]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.arrow-left[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.arrow-right-double[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.arrow-right[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.breadcrumb[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.checkmark[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.close[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.confirm[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.info[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.menu[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.more[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.pause[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.play[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.triangle-s[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.modal-mask[data-v-9cc143dc]{position:fixed;z-index:9998;top:0;left:0;display:block;width:100%;height:100%;background-color:rgba(0,0,0,0.5)}.modal-mask--dark[data-v-9cc143dc]{background-color:rgba(0,0,0,0.92)}.modal-header[data-v-9cc143dc]{position:absolute;z-index:10001;top:0;right:0;left:0;display:flex !important;align-items:center;justify-content:center;width:100%;height:50px;transition:opacity 250ms, visibility 250ms}.modal-header.invisible[style*='display:none'][data-v-9cc143dc],.modal-header.invisible[style*='display: none'][data-v-9cc143dc]{visibility:hidden}.modal-header .modal-title[data-v-9cc143dc]{overflow-x:hidden;box-sizing:border-box;width:100%;padding:0 132px 0 12px;transition:padding ease 100ms;white-space:nowrap;text-overflow:ellipsis;color:#fff;font-size:14px}@media only screen and (min-width: 512px){.modal-header .modal-title[data-v-9cc143dc]{text-align:center;padding-left:132px}}.modal-header .icons-menu[data-v-9cc143dc]{position:absolute;right:0;display:flex;align-items:center;justify-content:flex-end}.modal-header .icons-menu .icon-close[data-v-9cc143dc]{box-sizing:border-box;margin:3px;padding:10px 11px;color:#fff;background-image:none;font-size:23px}.modal-header .icons-menu .icon-close[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.modal-header .icons-menu .play-pause[data-v-9cc143dc]{position:relative;width:50px;height:50px;margin:0;padding:0;cursor:pointer;color:white;border:none;background-color:transparent;font-size:22px}.modal-header .icons-menu .play-pause:hover .icon-play[data-v-9cc143dc],.modal-header .icons-menu .play-pause:hover .icon-pause[data-v-9cc143dc],.modal-header .icons-menu .play-pause:focus .icon-play[data-v-9cc143dc],.modal-header .icons-menu .play-pause:focus .icon-pause[data-v-9cc143dc]{opacity:1;border-radius:22px;background-color:rgba(127,127,127,0.25)}.modal-header .icons-menu .play-pause .icon-play[data-v-9cc143dc],.modal-header .icons-menu .play-pause .icon-pause[data-v-9cc143dc]{box-sizing:border-box;width:44px;height:44px;margin:3px;opacity:.7;background-image:none;cursor:pointer}.modal-header .icons-menu .play-pause .icon-play[data-v-9cc143dc]{padding:11px 13px}.modal-header .icons-menu .play-pause .icon-play[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.modal-header .icons-menu .play-pause .icon-pause[data-v-9cc143dc]{padding:12px;font-size:19.5px}.modal-header .icons-menu .play-pause .icon-pause[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.modal-header .icons-menu .header-actions[data-v-9cc143dc]{margin:3px;color:white}.modal-header .icons-menu .action-item--single[data-v-9cc143dc]{box-sizing:border-box;width:44px;height:44px;cursor:pointer;background-position:center;background-size:22px}.modal-header .icons-menu[data-v-9cc143dc] .action-item__menutoggle{padding:13px 11px;color:#fff;font-size:22px}.modal-wrapper[data-v-9cc143dc]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.modal-wrapper .prev[data-v-9cc143dc],.modal-wrapper .next[data-v-9cc143dc]{z-index:10000;display:flex !important;align-items:center;justify-content:center;width:15%;min-width:60px;height:100%;transition:opacity 250ms, visibility 250ms}.modal-wrapper .prev.invisible[style*='display:none'][data-v-9cc143dc],.modal-wrapper .prev.invisible[style*='display: none'][data-v-9cc143dc],.modal-wrapper .next.invisible[style*='display:none'][data-v-9cc143dc],.modal-wrapper .next.invisible[style*='display: none'][data-v-9cc143dc]{visibility:hidden}.modal-wrapper .icon-next[data-v-9cc143dc],.modal-wrapper .icon-previous[data-v-9cc143dc]{box-sizing:border-box;width:44px;height:44px;padding:12px 11px;color:white;border-radius:22px;background-image:none;font-size:24px}.modal-wrapper .icon-previous[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.modal-wrapper .icon-next[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.modal-wrapper .modal-container[data-v-9cc143dc]{display:block;overflow:hidden;padding:0;transition:transform 300ms ease;border-radius:var(--border-radius-large);background-color:var(--color-main-background);box-shadow:0 0 40px rgba(0,0,0,0.2)}.modal-wrapper:not(.modal-wrapper--large):not(.modal-wrapper--full) .modal-container[data-v-9cc143dc]{max-width:900px;max-height:80%}.modal-wrapper--full .modal-container[data-v-9cc143dc]{max-width:100%;max-height:100%;border-radius:0}.modal-wrapper--full .prev[data-v-9cc143dc],.modal-wrapper--full .next[data-v-9cc143dc],.modal-wrapper--spread-navigation .prev[data-v-9cc143dc],.modal-wrapper--spread-navigation .next[data-v-9cc143dc]{position:absolute;width:10%}.modal-wrapper--full .prev[data-v-9cc143dc],.modal-wrapper--spread-navigation .prev[data-v-9cc143dc]{left:0}.modal-wrapper--full .next[data-v-9cc143dc],.modal-wrapper--spread-navigation .next[data-v-9cc143dc]{right:0}.modal-wrapper--large .modal-container[data-v-9cc143dc]{max-width:70%;max-height:90%}.modal-wrapper--large .prev[data-v-9cc143dc],.modal-wrapper--large .next[data-v-9cc143dc]{width:10%}.fade-enter-active[data-v-9cc143dc],.fade-leave-active[data-v-9cc143dc]{transition:opacity 250ms}.fade-enter[data-v-9cc143dc],.fade-leave-to[data-v-9cc143dc]{opacity:0}.fade-visibility-enter[data-v-9cc143dc],.fade-visibility-leave-to[data-v-9cc143dc]{visibility:hidden;opacity:0}.modal-in-enter-active[data-v-9cc143dc],.modal-in-leave-active[data-v-9cc143dc],.modal-out-enter-active[data-v-9cc143dc],.modal-out-leave-active[data-v-9cc143dc]{transition:opacity 250ms}.modal-in-enter[data-v-9cc143dc],.modal-in-leave-to[data-v-9cc143dc],.modal-out-enter[data-v-9cc143dc],.modal-out-leave-to[data-v-9cc143dc]{opacity:0}.modal-in-enter .modal-container[data-v-9cc143dc],.modal-in-leave-to .modal-container[data-v-9cc143dc]{transform:scale(0.9)}.modal-out-enter .modal-container[data-v-9cc143dc],.modal-out-leave-to .modal-container[data-v-9cc143dc]{transform:scale(1.1)}.modal-mask .play-pause .progress-ring[data-v-9cc143dc]{position:absolute;top:0;left:0;transform:rotate(-90deg)}.modal-mask .play-pause .progress-ring .progress-ring__circle[data-v-9cc143dc]{transition:100ms stroke-dashoffset;transform-origin:50% 50%;animation:progressring-data-v-9cc143dc linear 3s infinite;stroke-linecap:round;stroke-dashoffset:94.24778;stroke-dasharray:94.24778}.modal-mask .play-pause--paused .icon-pause[data-v-9cc143dc]{animation:breath-data-v-9cc143dc 2s cubic-bezier(0.4, 0, 0.2, 1) infinite}.modal-mask .play-pause--paused .progress-ring__circle[data-v-9cc143dc]{animation-play-state:paused !important}@keyframes progressring-data-v-9cc143dc{from{stroke-dashoffset:94.24778}to{stroke-dashoffset:0}}@keyframes breath-data-v-9cc143dc{0%{opacity:1}50%{opacity:0}100%{opacity:1}}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","module.exports = require(\"core-js/modules/es.array.concat\");","\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Get the first parent component matching the provided name\n *\n * @param {Object} context the context to search from (usualy this)\n * @param {string} name the parent name\n * @returns {Object} the parent component\n */\nconst GetParent = function(context, name) {\n\tlet parent = context.$parent\n\twhile (parent) {\n\t\tif (parent.$options.name === name) {\n\t\t\treturn parent\n\t\t}\n\t\tparent = parent.$parent\n\t}\n}\n\nexport default GetParent\n","\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport actionGlobal from './actionGlobal'\nimport GetParent from '../utils/GetParent'\n\nexport default {\n\tmixins: [actionGlobal],\n\tprops: {\n\t\t/**\n\t\t * Icon to show with the action, can be either a CSS class or an URL\n\t\t */\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Title to show next to the icon\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Whether we close the Actions menu after the click\n\t\t */\n\t\tcloseAfterClick: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Aria label for the button. Not needed if the button has text.\n\t\t */\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tisIconUrl() {\n\t\t\ttry {\n\t\t\t\treturn new URL(this.icon)\n\t\t\t} catch (error) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonClick(event) {\n\t\t\t/**\n\t\t\t * Emitted when the action is clicked\n\t\t\t * @type {Event}\n\t\t\t */\n\t\t\tthis.$emit('click', event)\n\n\t\t\tif (this.closeAfterClick) {\n\t\t\t\tconst parent = GetParent(this, 'Actions')\n\t\t\t\tif (parent && parent.closeMenu) {\n\t\t\t\t\tparent.closeMenu()\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n","module.exports = require(\"@nextcloud/l10n/dist/gettext\");","module.exports = require(\"core-js/modules/es.string.trim\");","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Actions.vue?vue&type=style&index=0&id=7b368b0c&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"640a212a\", content, true, {});","module.exports = require(\"v-tooltip\");","module.exports = require(\"core-js/modules/es.string.replace\");","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue'\n\n/**\n * Validate children of a vue component\n *\n * @param {Object[]} slots the vue component slot\n * @param {String[]} allowed the allowed components name\n * @param {Object} vm the vue component instance\n */\nconst ValidateSlot = (slots, allowed, vm) => {\n\tif (slots === undefined) {\n\t\treturn\n\t}\n\n\tfor (let index = slots.length - 1; index >= 0; index--) {\n\t\tconst node = slots[index]\n\t\t// also check against allowed to avoid uninitiated vnodes with no componentOptions\n\t\tconst isHtmlElement = !node.componentOptions && node.tag && allowed.indexOf(node.tag) === -1\n\t\tconst isVueComponent = !!node.componentOptions && typeof node.componentOptions.tag === 'string'\n\t\tconst isForbiddenComponent = isVueComponent && allowed.indexOf(node.componentOptions.tag) === -1\n\n\t\t// if html element or not a vue component or vue component not in allowed tags\n\t\tif (isHtmlElement || !isVueComponent || isForbiddenComponent) {\n\t\t\t// only warn when html elment or forbidden component\n\t\t\t// sometimes text nodes are present which are hardly removeable by the developer and spam the warnings\n\t\t\tif (isHtmlElement || isForbiddenComponent) {\n\t\t\t\tVue.util.warn(`${isHtmlElement ? node.tag : node.componentOptions.tag} is not allowed inside the ${vm.$options.name} component`, vm)\n\t\t\t}\n\n\t\t\t// cleanup\n\t\t\tslots.splice(index, 1)\n\t\t}\n\t}\n}\n\nexport default ValidateSlot\n","import { n, t } from '../l10n'\n\nexport default {\n\tmethods: {\n\t\tn,\n\t\tt,\n\t},\n}\n","module.exports = require(\"core-js/modules/es.number.constructor\");","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Actions from './Actions'\n\nexport default Actions\n","module.exports = require(\"core-js/modules/es.object.to-string\");","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!./index.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"941c791e\", content, true, {});","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".vue-tooltip[data-v-e1f55ce]{position:absolute;z-index:100000;right:auto;left:auto;display:block;margin:0;margin-top:-3px;padding:10px 0;text-align:left;text-align:start;white-space:normal;text-decoration:none;letter-spacing:normal;word-spacing:normal;text-transform:none;word-wrap:normal;word-break:normal;opacity:0;text-shadow:none;font-family:'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;font-size:12px;font-weight:normal;font-style:normal;line-height:1.6;line-break:auto;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.vue-tooltip[data-v-e1f55ce][x-placement^='top'] .tooltip-arrow{bottom:0;margin-top:0;margin-bottom:0;border-width:10px 10px 0 10px;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-e1f55ce][x-placement^='bottom'] .tooltip-arrow{top:0;margin-top:0;margin-bottom:0;border-width:0 10px 10px 10px;border-top-color:transparent;border-right-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-e1f55ce][x-placement^='right'] .tooltip-arrow{right:100%;margin-right:0;margin-left:0;border-width:10px 10px 10px 0;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-e1f55ce][x-placement^='left'] .tooltip-arrow{left:100%;margin-right:0;margin-left:0;border-width:10px 0 10px 10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent}.vue-tooltip[data-v-e1f55ce][aria-hidden='true']{visibility:hidden;transition:opacity .15s, visibility .15s;opacity:0}.vue-tooltip[data-v-e1f55ce][aria-hidden='false']{visibility:visible;transition:opacity .15s;opacity:1}.vue-tooltip[data-v-e1f55ce] .tooltip-inner{max-width:350px;padding:5px 8px;text-align:center;color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background)}.vue-tooltip[data-v-e1f55ce] .tooltip-arrow{position:absolute;z-index:1;width:0;height:0;margin:0;border-style:solid;border-color:var(--color-main-background)}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isValidSingleAction && !_vm.forceMenu)?_c('element',_vm._b({directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.firstAction.text),expression:\"firstAction.text\",modifiers:{\"auto\":true}}],staticClass:\"action-item action-item--single\",class:[_vm.firstAction.icon, _vm.firstActionClass],attrs:{\"rel\":\"noreferrer noopener\"},on:_vm._d({},[_vm.firstActionEventBinding,_vm.execFirstAction])},'element',_vm.firstActionBinding,false),[_c('span',{attrs:{\"aria-hidden\":true,\"hidden\":\"\"}},[_vm._t(\"default\")],2)]):_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasMultipleActions || _vm.forceMenu),expression:\"hasMultipleActions || forceMenu\"},{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.closeMenu),expression:\"closeMenu\"}],staticClass:\"action-item\",class:{'action-item--open': _vm.opened},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();return _vm.focusPreviousAction($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();return _vm.focusNextAction($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }if(!$event.shiftKey){ return null; }$event.preventDefault();return _vm.focusPreviousAction($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"page-up\",undefined,$event.key,undefined)){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();return _vm.focusFirstAction($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"page-down\",undefined,$event.key,undefined)){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();return _vm.focusLastAction($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();return _vm.closeMenu($event)}]}},[_c('a',{staticClass:\"icon action-item__menutoggle\",class:_vm.defaultIcon,attrs:{\"href\":\"#\",\"aria-label\":_vm.ariaLabel,\"aria-haspopup\":\"true\",\"aria-controls\":_vm.randomId,\"aria-expanded\":_vm.opened},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMenu($event)},\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();return _vm.toggleMenu($event)}}}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.opened),expression:\"opened\"}],ref:\"menu\",staticClass:\"action-item__menu\",class:[(\"menu-\" + _vm.menuAlign), { 'open': _vm.opened }],style:({marginRight: (_vm.offsetX + \"px\"), marginTop: (_vm.offsetY + \"px\")}),attrs:{\"tabindex\":\"-1\"},on:{\"mousemove\":_vm.onMouseFocusAction}},[_c('div',{staticClass:\"action-item__menu_arrow\",style:({ transform: (\"translateX(\" + _vm.offsetX + \"px) translateY(\" + _vm.offsetYArrow + \"px) \" + (_vm.rotateArrow ? ' rotate(180deg)' : '')) })}),_vm._v(\" \"),_c('ul',{attrs:{\"id\":_vm.randomId,\"tabindex\":\"-1\"}},[(_vm.opened)?[_vm._t(\"default\")]:_vm._e()],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * Check if an element is out of the viewport\n * (c) 2018 Chris Ferdinandi, MIT License, https://gomakethings.com\n * @param {Node} elem The element to check\n * @return {Object} A set of booleans for each side of the element\n */\nconst isOutOfViewport = function(elem) {\n\t// Get element's bounding\n\tconst bounding = elem.getBoundingClientRect()\n\tconst contentHeight = document.documentElement.clientHeight\n\tconst contentWidth = document.documentElement.clientWidth\n\n\t// Check if it's out of the viewport on each side\n\tconst out = Object.assign({})\n\tout.top = bounding.top < 0\n\tout.left = bounding.left < 0\n\tout.bottom = bounding.bottom > contentHeight\n\tout.right = bounding.right > contentWidth\n\tout.any = out.top || out.left || out.bottom || out.right\n\tout.all = out.top && out.left && out.bottom && out.right\n\n\tout.offsetY = out.top\n\t\t? bounding.top\n\t\t: out.bottom\n\t\t\t? bounding.bottom - contentHeight\n\t\t\t: 0\n\tout.offsetX = out.left\n\t\t? bounding.left\n\t\t: out.right\n\t\t\t? bounding.right - contentWidth\n\t\t\t: 0\n\n\treturn out\n}\n\nexport default isOutOfViewport\n","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n - @author Marco Ambrosini <marcoambrosini@pm.me\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<!-- Accessibility guidelines:\nhttps://www.w3.org/TR/wai-aria-practices/examples/menu-button/menu-button-actions.html -->\n\n<docs>\n### Single action\n\n```\n<Actions>\n\t<ActionButton icon=\"icon-delete\" @click=\"alert('Delete')\">Delete</ActionButton>\n</Actions>\n```\n\n### Multiple actions\n\n```\n<Actions>\n\t<ActionButton icon=\"icon-edit\" @click=\"alert('Edit')\">Edit</ActionButton>\n\t<ActionButton icon=\"icon-delete\" @click=\"alert('Delete')\">Delete</ActionButton>\n\t<ActionLink icon=\"icon-external\" title=\"Link\" href=\"https://nextcloud.com\" />\n</Actions>\n```\n\n### Multiple actions with custom icon\n\n```\n<Actions default-icon=\"icon-edit\">\n\t<ActionButton icon=\"icon-edit\" @click=\"alert('Edit')\">Edit</ActionButton>\n\t<ActionButton icon=\"icon-delete\" @click=\"alert('Delete')\">Delete</ActionButton>\n\t<ActionLink icon=\"icon-external\" title=\"Link\" href=\"https://nextcloud.com\" />\n</Actions>\n```\n</docs>\n<template>\n\t<!-- if only one action, check if we need to bind to click or not -->\n\t<element v-if=\"isValidSingleAction && !forceMenu\"\n\t\tv-tooltip.auto=\"firstAction.text\"\n\t\tv-bind=\"firstActionBinding\"\n\t\t:class=\"[firstAction.icon, firstActionClass]\"\n\t\tclass=\"action-item action-item--single\"\n\t\trel=\"noreferrer noopener\"\n\t\t@[firstActionEventBinding]=\"execFirstAction\">\n\t\t<!-- fake slot to gather main action -->\n\t\t<span :aria-hidden=\"true\" hidden>\n\t\t\t<!-- @slot All action elements passed into the default slot will be used -->\n\t\t\t<slot />\n\t\t</span>\n\t</element>\n\n\t<!-- more than one action -->\n\t<div v-else\n\t\tv-show=\"hasMultipleActions || forceMenu\"\n\t\tv-click-outside=\"closeMenu\"\n\t\t:class=\"{'action-item--open': opened}\"\n\t\tclass=\"action-item\"\n\t\t@keydown.up.exact.prevent=\"focusPreviousAction\"\n\t\t@keydown.down.exact.prevent=\"focusNextAction\"\n\t\t@keydown.shift.tab.prevent=\"focusPreviousAction\"\n\t\t@keydown.page-up.exact.prevent=\"focusFirstAction\"\n\t\t@keydown.page-down.exact.prevent=\"focusLastAction\"\n\t\t@keydown.esc.exact.prevent=\"closeMenu\">\n\t\t<!-- If more than one action, create a popovermenu -->\n\t\t<a class=\"icon action-item__menutoggle\"\n\t\t\t:class=\"defaultIcon\"\n\t\t\thref=\"#\"\n\t\t\t:aria-label=\"ariaLabel\"\n\t\t\taria-haspopup=\"true\"\n\t\t\t:aria-controls=\"randomId\"\n\t\t\t:aria-expanded=\"opened\"\n\t\t\t@click.prevent=\"toggleMenu\"\n\t\t\t@keydown.space.exact.prevent=\"toggleMenu\" />\n\t\t<div v-show=\"opened\"\n\t\t\tref=\"menu\"\n\t\t\t:class=\"[`menu-${menuAlign}`, { 'open': opened }]\"\n\t\t\t:style=\"{marginRight: `${ offsetX }px`, marginTop: `${ offsetY }px`}\"\n\t\t\tclass=\"action-item__menu\"\n\t\t\ttabindex=\"-1\"\n\t\t\t@mousemove=\"onMouseFocusAction\">\n\t\t\t<!-- arrow -->\n\t\t\t<div class=\"action-item__menu_arrow\"\n\t\t\t\t:style=\"{ transform: `translateX(${ offsetX }px) translateY(${ offsetYArrow }px) ${ rotateArrow ? ' rotate(180deg)' : ''}` }\" />\n\n\t\t\t<!-- menu content -->\n\t\t\t<ul :id=\"randomId\" tabindex=\"-1\">\n\t\t\t\t<template v-if=\"opened\">\n\t\t\t\t\t<slot />\n\t\t\t\t</template>\n\t\t\t</ul>\n\t\t</div>\n\t</div>\n</template>\n<script>\nimport { directive as ClickOutside } from 'v-click-outside'\nimport Tooltip from '../../directives/Tooltip'\nimport GenRandomId from '../../utils/GenRandomId'\nimport IsOutOfViewport from '../../utils/IsOutOfViewport'\nimport ValidateSlot from '../../utils/ValidateSlot'\nimport { t } from '../../l10n'\n\n// This is the list of ALL the ALLOWED components\n// in the default SLOT\nconst allowedChildren = [\n\t'ActionButton',\n\t'ActionCheckbox',\n\t'ActionInput',\n\t'ActionLink',\n\t'ActionRadio',\n\t'ActionRouter',\n\t'ActionSeparator',\n\t'ActionText',\n\t'ActionTextEditable',\n]\n\nconst focusableSelector = '.focusable'\n\n/**\n * The Actions component can be used to display one ore more actions.\n * If only a single action is provided, it will be rendered as an inline icon.\n * For more, a menu indicator will be shown and a popovermenu containing the\n * actions will be opened on click.\n *\n * @since 0.10.0\n */\nexport default {\n\tname: 'Actions',\n\n\tdirectives: {\n\t\tClickOutside,\n\t\ttooltip: Tooltip,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Specify the open state of the popover menu\n\t\t */\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Force the actions to display in a three dot menu\n\t\t */\n\t\tforceMenu: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Specify the position of the popovermenu\n\t\t * `left`, `center` or `right`\n\t\t */\n\t\tmenuAlign: {\n\t\t\ttype: String,\n\t\t\tdefault: 'center',\n\t\t\tvalidator: align => {\n\t\t\t\treturn ['left', 'center', 'right'].indexOf(align) > -1\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Icon to show for the toggle menu button\n\t\t * when more than one action is inside the actions component.\n\t\t * Only replace the default three-dot icon if really necessary.\n\t\t */\n\t\tdefaultIcon: {\n\t\t\ttype: String,\n\t\t\tdefault: 'action-item__menutoggle--default-icon',\n\t\t},\n\t\t/**\n\t\t * Aria label for the actions menu\n\t\t */\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Actions'),\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tactions: [],\n\t\t\topened: this.open,\n\t\t\tfocusIndex: 0,\n\t\t\trandomId: 'menu-' + GenRandomId(),\n\t\t\toffsetX: 0,\n\t\t\toffsetY: 0,\n\t\t\toffsetYArrow: 0,\n\t\t\trotateArrow: false,\n\t\t\t// Making children reactive!\n\t\t\t// By binding this here, vuejs will track the object content\n\t\t\t// Needed for firstAction reactivity !!!\n\t\t\tchildren: this.$children,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is there more than one action?\n\t\t * @returns {boolean}\n\t\t */\n\t\thasMultipleActions() {\n\t\t\treturn this.actions.length > 1\n\t\t},\n\t\t/**\n\t\t * Is there any first action ?\n\t\t * And is it allowed as a standalone element ?\n\t\t * @returns {boolean}\n\t\t */\n\t\tisValidSingleAction() {\n\t\t\treturn this.actions.length === 1\n\t\t\t\t&& this.firstActionElement !== null\n\t\t},\n\t\t/**\n\t\t * First action vnode\n\t\t * @returns {Object} return the first action vue vnode\n\t\t */\n\t\tfirstActionVNode() {\n\t\t\treturn this.actions[0]\n\t\t},\n\t\t/**\n\t\t * Reactive binding to the first children\n\t\t * Since we're here, it means we already passed all the proper checks\n\t\t * we can assume the first action is the first children too\n\t\t * @returns {Object} first action vue children object\n\t\t */\n\t\tfirstAction() {\n\t\t\treturn this.children[0]\n\t\t\t\t? this.children[0]\n\t\t\t\t: {}\n\t\t},\n\n\t\t/**\n\t\t * Binding of the first action to the template\n\t\t * @returns {Object} vue template v-bind shortcut\n\t\t */\n\t\tfirstActionBinding() {\n\t\t\tif (this.firstActionVNode && this.firstActionVNode.componentOptions) {\n\t\t\t\tconst tag = this.firstActionVNode.componentOptions.tag\n\t\t\t\tif (tag === 'ActionLink') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tis: 'a',\n\t\t\t\t\t\thref: this.firstAction.href,\n\t\t\t\t\t\ttarget: this.firstAction.target,\n\t\t\t\t\t\t'aria-label': this.firstAction.ariaLabel,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (tag === 'ActionRouter') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tis: 'router-link',\n\t\t\t\t\t\tto: this.firstAction.to,\n\t\t\t\t\t\texact: this.firstAction.exact,\n\t\t\t\t\t\t'aria-label': this.firstAction.ariaLabel,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (tag === 'ActionButton') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tis: 'button',\n\t\t\t\t\t\t'aria-label': this.firstAction.ariaLabel,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// other action types are not allowed as standalone buttons\n\t\t\treturn null\n\t\t},\n\n\t\t// return the event to bind if the firstActionVNode have an action\n\t\tfirstActionEvent() {\n\t\t\treturn this.firstActionVNode\n\t\t\t\t&& this.firstActionVNode.componentOptions\n\t\t\t\t&& this.firstActionVNode.componentOptions.listeners\n\t\t\t\t&& this.firstActionVNode.componentOptions.listeners.click\n\t\t},\n\t\tfirstActionEventBinding() {\n\t\t\treturn this.firstActionEvent ? 'click' : null\n\t\t},\n\t\tfirstActionClass() {\n\t\t\tconst staticClass = this.firstActionVNode && this.firstActionVNode.data.staticClass\n\t\t\tconst dynClass = this.firstActionVNode && this.firstActionVNode.data.class\n\t\t\treturn `${staticClass} ${dynClass}`\n\t\t},\n\t},\n\n\twatch: {\n\t\topen(newVal) {\n\t\t\tthis.opened = newVal\n\t\t\tif (this.opened) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.onOpen()\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t},\n\tbeforeMount() {\n\t\t// init actions\n\t\tthis.initActions()\n\n\t\t// filter invalid menu items\n\t\tValidateSlot(this.$slots.default, allowedChildren, this)\n\t},\n\tbeforeUpdate() {\n\t\t// ! since we're using $slots to manage our actions\n\t\t// ! we NEED to update the actions if anything change\n\n\t\t// update children & actions\n\t\t// no need to init actions again since we bound it to $children\n\t\t// and the array is now reactive\n\t\t// init actions\n\t\tthis.initActions()\n\t\tValidateSlot(this.$slots.default, allowedChildren, this)\n\t},\n\n\tmethods: {\n\t\t// MENU STATE MANAGEMENT\n\t\ttoggleMenu(e) {\n\t\t\tthis.opened = !this.opened\n\t\t\t// focus first on menu open after opening the menu\n\t\t\tif (this.opened) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.onOpen()\n\t\t\t\t\tthis.focusFirstAction()\n\t\t\t\t})\n\t\t\t\t/**\n\t\t\t\t * Event emitted when the popover menu is opened\n\t\t\t\t * @type {null}\n\t\t\t\t */\n\t\t\t\tthis.$emit('open', e)\n\t\t\t} else {\n\t\t\t\tthis.offsetX = 0\n\t\t\t\tthis.offsetY = 0\n\t\t\t\tthis.offsetYArrow = 0\n\t\t\t\tthis.rotateArrow = false\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Event emitted when the popover menu open state is changed\n\t\t\t * @type {bool}\n\t\t\t */\n\t\t\tthis.$emit('update:open', this.opened)\n\t\t},\n\t\tcloseMenu(e) {\n\t\t\t/**\n\t\t\t * only emit events if it was opened\n\t\t\t * or else any click on the page will trigger\n\t\t\t * the click outside directive!\n\t\t\t */\n\t\t\tif (this.opened) {\n\t\t\t\t/**\n\t\t\t\t * Event emitted when the popover menu open state is changed\n\t\t\t\t * @type {bool}\n\t\t\t\t */\n\t\t\t\tthis.$emit('update:open', false)\n\t\t\t\t/**\n\t\t\t\t * Event emitted when the popover menu is closed\n\t\t\t\t * @type {null}\n\t\t\t\t */\n\t\t\t\tthis.$emit('close', e)\n\n\t\t\t}\n\n\t\t\t// close everything\n\t\t\tthis.opened = false\n\t\t\tthis.offsetX = 0\n\t\t\tthis.offsetY = 0\n\t\t\tthis.offsetYArrow = 0\n\t\t\tthis.rotateArrow = false\n\t\t},\n\n\t\t/**\n\t\t * Run when the user open the menu\n\t\t * if align=center, we automatically\n\t\t * shift the popup if it's out of bound\n\t\t */\n\t\tonOpen() {\n\t\t\tthis.offsetX = 0\n\t\t\tthis.offsetY = 0\n\t\t\tthis.offsetYArrow = 0\n\t\t\tthis.rotateArrow = false\n\t\t\tif (this.menuAlign === 'center') {\n\t\t\t\tconst isOut = IsOutOfViewport(this.$refs.menu)\n\t\t\t\tif (isOut.left || isOut.right) {\n\t\t\t\t\tthis.offsetX = isOut.offsetX > 0\n\t\t\t\t\t\t? Math.round(isOut.offsetX) + 5\n\t\t\t\t\t\t: Math.round(isOut.offsetX) - 5\n\t\t\t\t}\n\t\t\t\tif (isOut.bottom) {\n\t\t\t\t\tthis.offsetY = 0 - Math.round(this.$refs.menu.clientHeight) - 42\n\t\t\t\t\tthis.offsetYArrow = Math.round(this.$refs.menu.clientHeight) + 18\n\t\t\t\t\tthis.rotateArrow = true\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// MENU KEYS & FOCUS MANAGEMENT\n\t\t// focus nearest focusable item on mouse move\n\t\t// DO NOT change the focus if the target is already focused\n\t\t// this will prevent issues with input being unfocused\n\t\t// on mouse move\n\t\tonMouseFocusAction(event) {\n\t\t\tif (document.activeElement === event.target) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst menuItem = event.target.closest('li')\n\t\t\tif (menuItem) {\n\t\t\t\tconst focusableItem = menuItem.querySelector(focusableSelector)\n\t\t\t\tif (focusableItem) {\n\t\t\t\t\tconst focusList = this.$refs.menu.querySelectorAll(focusableSelector)\n\t\t\t\t\tconst focusIndex = Array.prototype.indexOf.call(focusList, focusableItem)\n\t\t\t\t\tif (focusIndex > -1) {\n\t\t\t\t\t\tthis.focusIndex = focusIndex\n\t\t\t\t\t\tthis.focusAction()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tremoveCurrentActive() {\n\t\t\tconst currentActiveElement = this.$refs.menu.querySelector('li.active')\n\t\t\tif (currentActiveElement) {\n\t\t\t\tcurrentActiveElement.classList.remove('active')\n\t\t\t}\n\t\t},\n\t\tfocusAction() {\n\t\t\t// TODO: have a global disabled state for non input elements\n\t\t\tconst focusElement = this.$refs.menu.querySelectorAll(focusableSelector)[this.focusIndex]\n\t\t\tif (focusElement) {\n\t\t\t\tconst liMenuParent = focusElement.closest('li')\n\t\t\t\tfocusElement.focus()\n\t\t\t\tif (liMenuParent) {\n\t\t\t\t\tthis.removeCurrentActive()\n\t\t\t\t\tliMenuParent.classList.add('active')\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tfocusPreviousAction() {\n\t\t\tthis.focusIndex = Math.max(this.focusIndex - 1, 0)\n\t\t\tthis.focusAction()\n\t\t},\n\t\tfocusNextAction() {\n\t\t\tthis.focusIndex = Math.min(this.focusIndex + 1, this.$refs.menu.querySelectorAll(focusableSelector).length - 1)\n\t\t\tthis.focusAction()\n\t\t},\n\t\tfocusFirstAction() {\n\t\t\tthis.focusIndex = 0\n\t\t\tthis.focusAction()\n\t\t},\n\t\tfocusLastAction() {\n\t\t\tthis.focusIndex = this.$el.querySelectorAll(focusableSelector).length - 1\n\t\t\tthis.focusAction()\n\t\t},\n\n\t\t// ACTIONS MANAGEMENT\n\t\t// exec the first action\n\t\texecFirstAction(event) {\n\t\t\tif (this.firstActionEvent) {\n\t\t\t\tthis.firstActionEvent(event)\n\t\t\t}\n\t\t},\n\t\tinitActions() {\n\t\t\t// filter out invalid slots\n\t\t\tthis.actions = (this.$slots.default || []).filter(node => !!node && !!node.componentOptions)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import '../../fonts/scss/iconfont-vue';\n\n// arrow distance to the border\n$arrow-margin: ($clickable-area - 2 * $arrow-width) / 2;\n\n.action-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\n\t// put a grey round background when menu is opened\n\t// or hover-focused\n\t&--single:hover,\n\t&--single:focus,\n\t&--single:active,\n\t&__menutoggle:hover,\n\t&__menutoggle:focus,\n\t&__menutoggle:active{\n\t\tborder-radius: $clickable-area / 2;\n\t\t// good looking on dark AND white bg\n\t\tbackground-color: $icon-focus-bg !important; // override default server\n\t\topacity: $opacity_full;\n\t}\n\n\t&.action-item--open .action-item__menutoggle {\n\t\topacity: $opacity_full;\n\t\tborder-radius: $clickable-area / 2;\n\t\tbackground-color: $action-background-hover;\n\t}\n\n\t// icons\n\t&--single,\n\t&__menutoggle {\n\t\tbox-sizing: border-box;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\tmargin: 0;\n\t\tpadding: $icon-margin;\n\n\t\tcursor: pointer;\n\n\t\tborder: none;\n\t\tbackground-color: transparent;\n\t}\n\n\t// icon-more\n\t&__menutoggle {\n\t\t// align menu icon in center\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\topacity: $opacity_normal;\n\n\t\t&:before {\n\t\t\tcontent: '';\n\t\t}\n\n\t\t&--default-icon {\n\t\t\tfont-size: $icon-size;\n\t\t\t@include iconfont('more');\n\t\t}\n\t}\n\n\t&--single {\n\t\topacity: $opacity_normal;\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\topacity: $opacity_full;\n\t\t}\n\t\t// hide anything the slot is displaying\n\t\t& > [hidden] {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t// properly position the menu\n\t&--multiple {\n\t\tposition: relative;\n\t}\n\n\t&__menu {\n\t\tposition: absolute;\n\t\tz-index: 110;\n\t\tright: 50%;\n\n\t\tdisplay: none;\n\n\t\t// make sure to not have the menu right\n\t\t// on the edge of the window\n\t\tmargin-bottom: 10px;\n\t\tmargin-top: -5px;\n\n\t\ttransform: translateX(50%);\n\n\t\tcolor: var(--color-main-text);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\n\t\tfilter: drop-shadow(0 1px 3px var(--color-box-shadow));\n\n\t\t// only allow li elements in the popovermenu\n\t\tul > :not(li) {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&.open {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t/* Arrow */\n\t\t.action-item__menu_arrow {\n\t\t\tposition: absolute;\n\t\t\tright: 50%;\n\t\t\tbottom: 100%;\n\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t\tmargin-right: - $arrow-width;\n\n\t\t\tcontent: ' ';\n\t\t\tpointer-events: none;\n\n\t\t\t/* change this to adjust the arrow position */\n\t\t\tborder: solid transparent;\n\t\t\tborder-width: $arrow-width;\n\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t}\n\n\t\t/* Align the popover to the right */\n\t\t&.menu-right {\n\t\t\tright: 0;\n\t\t\tleft: auto;\n\t\t\ttransform: none;\n\t\t\t.action-item__menu_arrow {\n\t\t\t\t// align to menu icon padding\n\t\t\t\tright: $arrow-margin;\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\t\t}\n\n\t\t/* Align the popover to the left */\n\t\t&.menu-left {\n\t\t\tright: auto;\n\t\t\tleft: 0;\n\t\t\ttransform: none;\n\t\t\t.action-item__menu_arrow {\n\t\t\t\tright: auto;\n\t\t\t\t// align to menu icon padding\n\t\t\t\tleft: $arrow-margin;\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ie,\n.edge {\n\t.action-item__menu,\n\t.action-item__menu .action-item__menu_arrow {\n\t\tborder: 1px solid var(--color-border);\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Actions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Actions.vue?vue&type=script&lang=js&\"","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst ScopeComponent = (Component) => {\n\t// Init mounted vue if none\n\tif (!Component.mounted) {\n\t\tComponent.mounted = []\n\t} else if (!Array.isArray(Component.mounted)) {\n\t\tComponent.mounted = [Component.mounted]\n\t}\n\n\t// Inject root scoping function\n\tComponent.mounted.push(function() {\n\t\tthis.$el.setAttribute(`data-v-${SCOPE_VERSION}`, '')\n\t})\n}\n\nexport default ScopeComponent\n","module.exports = require(\"core-js/modules/es.array.filter\");","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionButton.vue?vue&type=style&index=0&id=33ba3302&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"75b9f902\", content, true, {});","module.exports = require(\"vue\");","import { getGettextBuilder } from '@nextcloud/l10n/dist/gettext'\n\nconst gtBuilder = getGettextBuilder()\n\t.detectLocale()\nTRANSLATIONS.map(data => gtBuilder.addTranslation(data.locale, data.json))\nconst gt = gtBuilder.build()\n\nconst n = gt.ngettext.bind(gt)\nconst t = gt.gettext.bind(gt)\n\nexport { t, n }\n","module.exports = require(\"core-js/modules/es.object.assign\");","module.exports = require(\"core-js/modules/es.array.splice\");","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Actions.vue?vue&type=style&index=0&id=7b368b0c&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Actions.vue?vue&type=style&index=0&id=7b368b0c&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = require(\"../../fonts/iconfont-vue-e1f55ce.eot\");\nvar ___CSS_LOADER_URL_IMPORT_1___ = require(\"../../fonts/iconfont-vue-e1f55ce.woff\");\nvar ___CSS_LOADER_URL_IMPORT_2___ = require(\"../../fonts/iconfont-vue-e1f55ce.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_3___ = require(\"../../fonts/iconfont-vue-e1f55ce.svg\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\n// Module\nexports.push([module.id, \"@font-face{font-family:\\\"iconfont-vue-e1f55ce\\\";src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"embedded-opentype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"woff\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"truetype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"svg\\\")}.icon[data-v-7b368b0c]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.arrow-left[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.arrow-right-double[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.arrow-right[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.breadcrumb[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.checkmark[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.close[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.confirm[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.info[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.menu[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.more[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.pause[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.play[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.triangle-s[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.action-item[data-v-7b368b0c]{position:relative;display:inline-block}.action-item--single[data-v-7b368b0c]:hover,.action-item--single[data-v-7b368b0c]:focus,.action-item--single[data-v-7b368b0c]:active,.action-item__menutoggle[data-v-7b368b0c]:hover,.action-item__menutoggle[data-v-7b368b0c]:focus,.action-item__menutoggle[data-v-7b368b0c]:active{border-radius:22px;background-color:rgba(127,127,127,0.25) !important;opacity:1}.action-item.action-item--open .action-item__menutoggle[data-v-7b368b0c]{opacity:1;border-radius:22px;background-color:rgba(127,127,127,0.25)}.action-item--single[data-v-7b368b0c],.action-item__menutoggle[data-v-7b368b0c]{box-sizing:border-box;width:44px;height:44px;margin:0;padding:14px;cursor:pointer;border:none;background-color:transparent}.action-item__menutoggle[data-v-7b368b0c]{display:flex;align-items:center;justify-content:center;opacity:.7}.action-item__menutoggle[data-v-7b368b0c]:before{content:''}.action-item__menutoggle--default-icon[data-v-7b368b0c]{font-size:16px}.action-item__menutoggle--default-icon[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.action-item--single[data-v-7b368b0c]{opacity:.7}.action-item--single[data-v-7b368b0c]:hover,.action-item--single[data-v-7b368b0c]:focus,.action-item--single[data-v-7b368b0c]:active{opacity:1}.action-item--single>[hidden][data-v-7b368b0c]{display:none}.action-item--multiple[data-v-7b368b0c]{position:relative}.action-item__menu[data-v-7b368b0c]{position:absolute;z-index:110;right:50%;display:none;margin-bottom:10px;margin-top:-5px;transform:translateX(50%);color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 3px var(--color-box-shadow))}.action-item__menu ul[data-v-7b368b0c]>:not(li){display:none}.action-item__menu.open[data-v-7b368b0c]{display:block}.action-item__menu .action-item__menu_arrow[data-v-7b368b0c]{position:absolute;right:50%;bottom:100%;width:0;height:0;margin-right:-9px;content:' ';pointer-events:none;border:solid transparent;border-width:9px;border-bottom-color:var(--color-main-background)}.action-item__menu.menu-right[data-v-7b368b0c]{right:0;left:auto;transform:none}.action-item__menu.menu-right .action-item__menu_arrow[data-v-7b368b0c]{right:13px;margin-right:0}.action-item__menu.menu-left[data-v-7b368b0c]{right:auto;left:0;transform:none}.action-item__menu.menu-left .action-item__menu_arrow[data-v-7b368b0c]{right:auto;left:13px;margin-right:0}.ie .action-item__menu[data-v-7b368b0c],.ie .action-item__menu .action-item__menu_arrow[data-v-7b368b0c],.edge .action-item__menu[data-v-7b368b0c],.edge .action-item__menu .action-item__menu_arrow[data-v-7b368b0c]{border:1px solid var(--color-border)}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== 'string') {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n'), \"\\\"\");\n }\n\n return url;\n};","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:{ 'action--disabled': _vm.disabled }},[_c('button',{staticClass:\"action-button\",class:{ focusable: _vm.isFocusable },attrs:{\"aria-label\":_vm.ariaLabel},on:{\"click\":_vm.onClick}},[_c('span',{staticClass:\"action-button__icon\",class:[_vm.isIconUrl ? 'action-button__icon--url' : _vm.icon],style:({ backgroundImage: _vm.isIconUrl ? (\"url(\" + _vm.icon + \")\") : null })}),_vm._v(\" \"),(_vm.title)?_c('p',[_c('strong',{staticClass:\"action-button__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"action-button__longtext\",domProps:{\"textContent\":_vm._s(_vm.text)}})]):(_vm.isLongText)?_c('p',{staticClass:\"action-button__longtext\",domProps:{\"textContent\":_vm._s(_vm.text)}}):_c('span',{staticClass:\"action-button__text\"},[_vm._v(_vm._s(_vm.text))]),_vm._v(\" \"),(false)?_vm._t(\"default\"):_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionButton.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n - @author Marco Ambrosini <marcoambrosini@pm.me>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<docs>\nThis component is made to be used inside of the [Actions](#Actions) component slots.\n\n```vue\n\t<Actions>\n\t\t<ActionButton icon=\"icon-delete\" @click=\"alert('Delete')\">Delete</ActionButton>\n\t\t<ActionButton icon=\"icon-delete\" :close-after-click=\"true\" @click=\"alert('Delete and close menu')\">Delete and close</ActionButton>\n\t\t<ActionButton icon=\"icon-delete\" :disabled=\"true\" @click=\"alert('Disabled')\">Disabled button</ActionButton>\n\t</Actions>\n```\n\nIf you're using a long text you can specify a title\n\n```vue\n\t<Actions>\n\t\t<ActionButton icon=\"icon-add\" @click=\"alert('Add')\">Add new</ActionButton>\n\t\t<ActionButton icon=\"icon-delete\" title=\"Long button\" @click=\"alert('Delete')\">This button is associated with a very long text.\\nAnd with new lines too.</ActionButton>\n\t</Actions>\n```\n</docs>\n\n<template>\n\t<li :class=\"{ 'action--disabled': disabled }\">\n\t\t<button\n\t\t\tclass=\"action-button\"\n\t\t\t:aria-label=\"ariaLabel\"\n\t\t\t:class=\"{ focusable: isFocusable }\"\n\t\t\t@click=\"onClick\">\n\t\t\t<!-- icon -->\n\t\t\t<span :class=\"[isIconUrl ? 'action-button__icon--url' : icon]\"\n\t\t\t\t:style=\"{ backgroundImage: isIconUrl ? `url(${icon})` : null }\"\n\t\t\t\tclass=\"action-button__icon\" />\n\n\t\t\t<!-- long text with title -->\n\t\t\t<p v-if=\"title\">\n\t\t\t\t<strong class=\"action-button__title\">\n\t\t\t\t\t{{ title }}\n\t\t\t\t</strong>\n\t\t\t\t<br>\n\t\t\t\t<!-- white space is shown on longtext, so we can't\n\t\t\t\t\tput {{ text }} on a new line for code readability -->\n\t\t\t\t<span class=\"action-button__longtext\" v-text=\"text\" />\n\t\t\t</p>\n\n\t\t\t<!-- long text only -->\n\t\t\t<!-- white space is shown on longtext, so we can't\n\t\t\t\tput {{ text }} on a new line for code readability -->\n\t\t\t<p v-else-if=\"isLongText\"\n\t\t\t\tclass=\"action-button__longtext\"\n\t\t\t\tv-text=\"text\" />\n\n\t\t\t<!-- default text display -->\n\t\t\t<span v-else class=\"action-button__text\">{{ text }}</span>\n\n\t\t\t<!-- fake slot to gather inner text -->\n\t\t\t<slot v-if=\"false\" />\n\t\t</button>\n\t</li>\n</template>\n\n<script>\nimport ActionTextMixin from '../../mixins/actionText'\n\n/**\n * Button component to be used in Actions\n*/\nexport default {\n\tname: 'ActionButton',\n\n\tmixins: [ActionTextMixin],\n\n\tprops: {\n\t\t/**\n\t\t * disabled state of the action button\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * determines if the action is focusable\n\t\t * @returns {boolean} is the action focusable ?\n\t\t */\n\t\tisFocusable: function() {\n\t\t\treturn !this.disabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import '../../assets/action';\n@include action-active;\n@include action--disabled;\n@include action-item('button');\n</style>\n","export default \"data:application/vnd.ms-fontobject;base64,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\"","module.exports = require(\"hammerjs\");","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport ActionButton from './ActionButton'\n\nexport default ActionButton\n","export default \"data:font/woff;base64,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DDUAAgAACQIE4gTiBOIMNfseBOAAAQAAAAEAAEB6caFfDzz1AAsTiAAAAADasyhOAAAAANpiTE///wAAE5MTiAAAAAgAAgAAAAAAAAABAAATiAAAAAATiP////UTkwABAAAAAAAAAAAAAAAAAAAABwAAAAATiAAAE4gAABOIAAATiAAABjYAABOIAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAiADYAWABsAIAAlAC0AQ4BfAGaAhACJgI0AkIAAQAAAA8ASwADAAAAAAACAAAACgAKAAAA/wAAAAAAAAAAABAAxgABAAAAAAABABQAAAABAAAAAAACAAcAFAABAAAAAAADABQAGwABAAAAAAAEABQALwABAAAAAAAFAAsAQwABAAAAAAAGABQATgABAAAAAAAKACsAYgABAAAAAAALABMAjQADAAEECQABACgAoAADAAEECQACAA4AyAADAAEECQADACgA1gADAAEECQAEACgA/gADAAEECQAFABYBJgADAAEECQAGACgBPAADAAEECQAKAFYBZAADAAEECQALACYBumljb25mb250LXZ1ZS1lMWY1NWNlUmVndWxhcmljb25mb250LXZ1ZS1lMWY1NWNlaWNvbmZvbnQtdnVlLWUxZjU1Y2VWZXJzaW9uIDEuMGljb25mb250LXZ1ZS1lMWY1NWNlR2VuZXJhdGVkIGJ5IHN2ZzJ0dGYgZnJvbSBGb250ZWxsbyBwcm9qZWN0Lmh0dHA6Ly9mb250ZWxsby5jb20AaQBjAG8AbgBmAG8AbgB0AC0AdgB1AGUALQBlADEAZgA1ADUAYwBlAFIAZQBnAHUAbABhAHIAaQBjAG8AbgBmAG8AbgB0AC0AdgB1AGUALQBlADEAZgA1ADUAYwBlAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AZQAxAGYANQA1AGMAZQBWAGUAcgBzAGkAbwBuACAAMQAuADAAaQBjAG8AbgBmAG8AbgB0AC0AdgB1AGUALQBlADEAZgA1ADUAYwBlAEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AaAB0AHQAcAA6AC8ALwBmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQAAAAIAAAAAAAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAA8ADwAAAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDxFhcnJvdy1sZWZ0LWRvdWJsZQphcnJvdy1sZWZ0EmFycm93LXJpZ2h0LWRvdWJsZQthcnJvdy1yaWdodApicmVhZGNydW1iCWNoZWNrbWFyawVjbG9zZQdjb25maXJtBGluZm8EbWVudQRtb3JlBXBhdXNlBHBsYXkKdHJpYW5nbGUtcw==\"","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.active)?_c('Modal',{attrs:{\"title\":_vm.fileName},on:{\"close\":_vm.close}},[_c('EditorWrapper',{attrs:{\"file-id\":_vm.fileId,\"relative-path\":_vm.relativePath,\"active\":_vm.active,\"share-token\":_vm.shareToken,\"mime\":_vm.mimeType}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PublicFilesEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PublicFilesEditor.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Modal v-if=\"active\" :title=\"fileName\" @close=\"close\">\n\t\t<EditorWrapper :file-id=\"fileId\"\n\t\t\t:relative-path=\"relativePath\"\n\t\t\t:active=\"active\"\n\t\t\t:share-token=\"shareToken\"\n\t\t\t:mime=\"mimeType\" />\n\t</Modal>\n</template>\n\n<script>\nimport Modal from '@nextcloud/vue/dist/Components/Modal'\n\nexport default {\n\tname: 'PublicFilesEditor',\n\tcomponents: {\n\t\tModal,\n\t\tEditorWrapper: () => import(/* webpackChunkName: \"editor\" */'./EditorWrapper'),\n\t},\n\tprops: {\n\t\tfileId: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\trelativePath: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tshareToken: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tmimeType: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tcomputed: {\n\t\tfileName() {\n\t\t\treturn this.relativePath.substring(this.relativePath.lastIndexOf('/') + 1)\n\t\t},\n\t},\n\tmethods: {\n\t\tclose() {\n\t\t\tthis.active = false\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./PublicFilesEditor.vue?vue&type=template&id=602647cd&\"\nimport script from \"./PublicFilesEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./PublicFilesEditor.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///NextcloudVue.[name]/webpack/universalModuleDefinition","webpack:///NextcloudVue.[name]/webpack/bootstrap","webpack:///NextcloudVue.[name]/node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///NextcloudVue.[name]/node_modules/css-loader/dist/runtime/api.js","webpack:///NextcloudVue.[name]/src/fonts/iconfont-vue-e1f55ce.ttf","webpack:///NextcloudVue.[name]/src/fonts/iconfont-vue-e1f55ce.svg","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue?0019","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.function.name\"","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue?5a6b","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue?308c","webpack:///NextcloudVue.[name]/src/directives/Tooltip/index.js","webpack:///webpack:/NextcloudVue.[name]/external \"v-click-outside\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.index-of\"","webpack:///NextcloudVue.[name]/src/mixins/actionGlobal.js","webpack:///NextcloudVue.[name]/src/utils/GenRandomId.js","webpack:///NextcloudVue.[name]/src/utils/Timer.js","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue?6422","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue?d840","webpack:///NextcloudVue.[name]/src/components/Modal/index.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.iterator\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.string.iterator\"","webpack:///NextcloudVue.[name]/node_modules/vue-style-loader/lib/listToStyles.js","webpack:///NextcloudVue.[name]/node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/web.dom-collections.iterator\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.regexp.exec\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.map\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.regexp.to-string\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/web.url\"","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue?4784","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue?c674","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.concat\"","webpack:///NextcloudVue.[name]/src/utils/GetParent.js","webpack:///NextcloudVue.[name]/src/mixins/actionText.js","webpack:///webpack:/NextcloudVue.[name]/external \"@nextcloud/l10n/dist/gettext\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.string.trim\"","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue?4802","webpack:///webpack:/NextcloudVue.[name]/external \"v-tooltip\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.string.replace\"","webpack:///NextcloudVue.[name]/src/utils/ValidateSlot.js","webpack:///NextcloudVue.[name]/src/mixins/l10n.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.number.constructor\"","webpack:///NextcloudVue.[name]/src/components/Actions/index.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.object.to-string\"","webpack:///NextcloudVue.[name]/src/directives/Tooltip/index.scss?30d2","webpack:///NextcloudVue.[name]/src/directives/Tooltip/index.scss","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue?7bd0","webpack:///NextcloudVue.[name]/src/utils/IsOutOfViewport.js","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue?608f","webpack:///NextcloudVue.[name]/src/utils/ScopeComponent.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.filter\"","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue?d3c7","webpack:///webpack:/NextcloudVue.[name]/external \"vue\"","webpack:///NextcloudVue.[name]/src/l10n.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.object.assign\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.splice\"","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue?a15b","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue?4ae1","webpack:///NextcloudVue.[name]/node_modules/css-loader/dist/runtime/getUrl.js","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue?6bb6","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue?fe29","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue","webpack:///NextcloudVue.[name]/src/fonts/iconfont-vue-e1f55ce.eot","webpack:///webpack:/NextcloudVue.[name]/external \"hammerjs\"","webpack:///NextcloudVue.[name]/src/components/ActionButton/index.js","webpack:///NextcloudVue.[name]/src/fonts/iconfont-vue-e1f55ce.woff","webpack:///./node_modules/hammerjs/hammer.js","webpack:///./src/components/PublicFilesEditor.vue?e78f","webpack:///./src/components/PublicFilesEditor.vue?431a","webpack:///src/components/PublicFilesEditor.vue","webpack:///./src/components/PublicFilesEditor.vue"],"names":["DESCRIPTORS","require","global","isForced","redefine","has","classof","inheritIfRequired","toPrimitive","fails","create","getOwnPropertyNames","f","getOwnPropertyDescriptor","defineProperty","trim","NativeNumber","NumberPrototype","prototype","BROKEN_CLASSOF","toNumber","argument","first","third","radix","maxCode","digits","length","index","code","it","charCodeAt","NaN","slice","parseInt","key","NumberWrapper","value","arguments","dummy","this","valueOf","call","keys","split","j","constructor","factory","window","installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","m","c","d","name","getter","o","Object","enumerable","get","r","Symbol","toStringTag","t","mode","__esModule","ns","bind","n","object","property","hasOwnProperty","p","s","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","useSourceMap","list","toString","map","item","content","sourceMap","base64","data","cssMapping","btoa","sourceMapping","unescape","encodeURIComponent","JSON","stringify","sourceURLs","sources","source","sourceRoot","join","mediaQuery","dedupe","alreadyImportedModules","id","_i","push","__webpack_exports__","locals","default","___CSS_LOADER_API_IMPORT___","VTooltip","defaultTemplate","SCOPE_VERSION","defaultHtml","before","$slots","text","Vue","util","warn","$destroy","$el","remove","beforeUpdate","getText","computed","isLongText","methods","GenRandomId","Math","random","replace","substr","timer","callback","delay","started","running","remaining","start","Date","setTimeout","pause","clearTimeout","clear","getTimeLeft","getStateRunning","Modal_Modalvue_type_script_lang_js_","components","Actions","ActionButton","directives","tooltip","mixins","props","title","type","hasPrevious","hasNext","outTransition","enableSlideshow","clearViewDelay","slideshowDelay","slideshowPaused","enableSwipe","spreadNavigation","size","validator","canClose","dark","mc","showModal","clearView","clearViewTimeout","playing","slideshowTimeout","modalTransitionName","playPauseTitle","watch","paused","beforeMount","beforeDestroy","mounted","_this","document","unmounted","previous","next","close","_this2","handleKeydown","handleSwipe","handleMouseMove","_this3","togglePlayPause","resetSlideshow","handleSlideshow","_this4","clearSlideshowTimeout","_vm","_h","$createElement","_c","_self","attrs","ref","staticClass","class","modal-mask--dark","on","click","mousemove","touchmove","rawName","expression","invisible","_v","_s","_e","modifiers","auto","play-pause--paused","height","width","stroke","stroke-width","fill","cx","cy","_t","icon","$event","target","currentTarget","ScopeComponent","Modal","listToStyles","parentId","styles","newStyles","part","css","media","parts","hasDocument","DEBUG","Error","stylesInDom","head","getElementsByTagName","singletonElement","singletonCounter","isProduction","noop","isOldIE","navigator","test","userAgent","toLowerCase","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","refs","addStyle","createStyleElement","styleElement","createElement","appendChild","obj","update","querySelector","parentNode","removeChild","styleIndex","applyToSingletonTag","applyToTag","newObj","textStore","replaceText","replacement","filter","Boolean","styleSheet","cssText","cssNode","createTextNode","childNodes","insertBefore","setAttribute","ssrId","firstChild","___CSS_LOADER_GET_URL_IMPORT___","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","GetParent","$parent","actionGlobal","String","closeAfterClick","ariaLabel","isIconUrl","URL","error","onClick","event","$emit","closeMenu","ValidateSlot","slots","allowed","vm","node","isHtmlElement","componentOptions","tag","indexOf","isVueComponent","isForbiddenComponent","splice","isOutOfViewport","elem","bounding","getBoundingClientRect","contentHeight","documentElement","clientHeight","contentWidth","clientWidth","out","assign","top","left","bottom","right","any","all","offsetY","offsetX","allowedChildren","Actions_Actionsvue_type_script_lang_js_","ClickOutside","open","forceMenu","menuAlign","defaultIcon","actions","opened","focusIndex","randomId","offsetYArrow","rotateArrow","children","hasMultipleActions","isValidSingleAction","firstActionVNode","firstAction","firstActionBinding","is","href","aria-label","to","exact","firstActionEvent","firstActionEventBinding","firstActionClass","dynClass","toggleMenu","onOpen","isOut","onMouseFocusAction","removeCurrentActive","currentActiveElement","focusAction","focusElement","liMenuParent","focusPreviousAction","focusNextAction","focusFirstAction","focusLastAction","execFirstAction","initActions","_b","rel","_d","aria-hidden","hidden","action-item--open","keydown","_k","keyCode","ctrlKey","shiftKey","altKey","metaKey","preventDefault","aria-haspopup","aria-controls","aria-expanded","style","marginRight","marginTop","tabindex","transform","Component","Array","isArray","gtBuilder","getGettextBuilder","detectLocale","TRANSLATIONS","addTranslation","locale","json","gt","build","ngettext","gettext","url","hash","needQuotes","ActionButton_ActionButtonvue_type_script_lang_js_","disabled","isFocusable","action--disabled","focusable","backgroundImage","domProps","textContent","define","exportName","undefined","VENDOR_PREFIXES","TEST_ELEMENT","round","abs","now","setTimeoutContext","fn","timeout","bindFn","invokeArrayArg","arg","each","iterator","forEach","deprecate","method","message","deprecationMessage","e","stack","log","console","apply","TypeError","output","nextKey","extend","dest","src","merge","inherit","child","base","properties","childP","baseP","_super","boolOrFn","val","args","ifUndefined","val1","val2","addEventListeners","types","handler","splitStr","addEventListener","removeEventListeners","removeEventListener","hasParent","inStr","str","find","inArray","findByKey","toArray","uniqueArray","sort","results","values","a","b","prefixed","prefix","prop","camelProp","toUpperCase","_uniqueId","getWindowForElement","element","doc","ownerDocument","defaultView","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","PROPS_XY","PROPS_CLIENT_XY","Input","manager","self","inputTarget","domHandler","ev","enable","init","inputHandler","eventType","input","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","center","getCenter","timeStamp","deltaTime","angle","getAngle","distance","getDistance","offset","offsetDelta","prevDelta","prevInput","x","deltaX","y","deltaY","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","scale","end","rotation","getRotation","maxPointers","velocity","velocityX","velocityY","direction","last","lastInterval","v","computeIntervalInputData","srcEvent","computeInputData","emit","recognize","clientX","clientY","p1","p2","sqrt","atan2","PI","evEl","evTarget","evWin","destroy","MOUSE_INPUT_MAP","mousedown","mouseup","MouseInput","pressed","button","which","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","2","3","4","5","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","store","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchend","touchcancel","SingleTouchInput","normalizeSingleTouches","touches","changed","changedTouches","TOUCH_INPUT_MAP","TouchInput","targetIds","getTouches","allTouches","identifier","targetTouches","changedTargetTouches","touch","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","dx","dy","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","getTouchActionProps","TouchAction","set","compute","touchAction","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","DIRECTION_LEFT","DIRECTION_UP","preventSrc","Recognizer","defaults","state","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","count","Hammer","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","reset","process","attrTest","optionPointers","isRecognized","isValid","threshold","DIRECTION_HORIZONTAL","directionTest","hasMoved","inOut","time","validPointers","validMovement","validTime","taps","interval","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","inputClass","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","handlers","oldCssProps","toggleCssProps","stop","force","stopped","curRecognizer","events","off","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","triggerDomEvent","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_VERTICAL","DIRECTION_ALL","Tap","Pan","Swipe","Pinch","Rotate","Press","component","fileName","fileId","relativePath","active","shareToken","mimeType"],"mappings":"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","file":"files-modal.js?v=27648932fad2c9250dc6","sourcesContent":["'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Components/Modal\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Components/Modal\"] = factory();\n\telse\n\t\troot[\"NextcloudVue\"] = root[\"NextcloudVue\"] || {}, root[\"NextcloudVue\"][\"Components/Modal\"] = factory();\n})(window, function() {\nreturn "," \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 = \"/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 171);\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","export default \"data:font/ttf;base64,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\"","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCIgPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bWV0YWRhdGE+PC9tZXRhZGF0YT48ZGVmcz48Zm9udCBpZD0iaWNvbmZvbnQtdnVlLWUxZjU1Y2UiIGhvcml6LWFkdi14PSI1MDAwIj48Zm9udC1mYWNlIGZvbnQtZmFtaWx5PSJpY29uZm9udC12dWUtZTFmNTVjZSIgZm9udC13ZWlnaHQ9IjQwMCIgZm9udC1zdHJldGNoPSJub3JtYWwiIHVuaXRzLXBlci1lbT0iNTAwMCIgcGFub3NlLTE9IjIgMCA1IDMgMCAwIDAgMCAwIDAiIGFzY2VudD0iNTAwMCIgZGVzY2VudD0iMCIgeC1oZWlnaHQ9IjAiIGJib3g9Ii0xIDAgNTAxMSA1MDAwIiB1bmRlcmxpbmUtdGhpY2tuZXNzPSIwIiB1bmRlcmxpbmUtcG9zaXRpb249IjUwIiB1bmljb2RlLXJhbmdlPSJVK2VhMDEtZWEwZSIgLz48bWlzc2luZy1nbHlwaCBob3Jpei1hZHYteD0iMCIgIC8+PGdseXBoIGdseXBoLW5hbWU9ImFycm93LWxlZnQtZG91YmxlIiB1bmljb2RlPSImI3hlYTAxOyIgZD0iTTM3NTAgMzkwNiBsLTE0MDYgLTE0MDYgbDE0MDYgLTE0MDYgbDAgMzEyIGwtMTA5NCAxMDk0IGwxMDk0IDEwOTQgbDAgMzEyIFpNMjM0NCAzOTA2IGwtMTQwNiAtMTQwNiBsMTQwNiAtMTQwNiBsMCAzMTIgbC0xMDk0IDEwOTQgbDEwOTQgMTA5NCBsMCAzMTIgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctbGVmdCIgdW5pY29kZT0iJiN4ZWEwMjsiIGQ9Ik0xNTYzIDI1MDAgbDE4NzUgLTE4NzUgbDAgLTMxMiBsLTIxODggMjE4NyBsMjE4OCAyMTg4IGwwIC0zMTMgbC0xODc1IC0xODc1IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImFycm93LXJpZ2h0LWRvdWJsZSIgdW5pY29kZT0iJiN4ZWEwMzsiIGQ9Ik0xMjUwIDEwOTQgbDE0MDYgMTQwNiBsLTE0MDYgMTQwNiBsMCAtMzEyIGwxMDk0IC0xMDk0IGwtMTA5NCAtMTA5NCBsMCAtMzEyIFpNMjY1NiAxMDk0IGwxNDA3IDE0MDYgbC0xNDA3IDE0MDYgbDAgLTMxMiBsMTA5NCAtMTA5NCBsLTEwOTQgLTEwOTQgbDAgLTMxMiBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvdy1yaWdodCIgdW5pY29kZT0iJiN4ZWEwNDsiIGQ9Ik0zNDM4IDI1MDAgbC0xODc1IDE4NzUgbDAgMzEzIGwyMTg3IC0yMTg4IGwtMjE4NyAtMjE4NyBsMCAzMTIgbDE4NzUgMTg3NSBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJicmVhZGNydW1iIiB1bmljb2RlPSImI3hlYTA1OyIgZD0iTTE0OCA1MDAwIGwtMTQ4IC04NSBsMTM5NCAtMjQxNSBsLTEzOTQgLTI0MTUgbDE0OCAtODUgbDE0NDMgMjUwMCBsLTE0NDMgMjUwMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJjaGVja21hcmsiIHVuaWNvZGU9IiYjeGVhMDY7IiBkPSJNNDA0NSAzOTcxIGwtMjA2MSAtMjA2MSBsLTEwMjkgMTAyOSBsLTQ0MiAtNDQxIGwxNDcxIC0xNDcxIGwyNTAzIDI1MDIgbC00NDIgNDQyIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImNsb3NlIiB1bmljb2RlPSImI3hlYTA3OyIgZD0iTTQzNzUgMTE1NiBsLTUzMSAtNTMxIGwtMTM0NCAxMzQ0IGwtMTM0NCAtMTM0NCBsLTUzMSA1MzEgbDEzNDQgMTM0NCBsLTEzNDQgMTM0NCBsNTMxIDUzMSBsMTM0NCAtMTM0NCBsMTM0NCAxMzQ0IGw1MzEgLTUzMSBsLTEzNDQgLTEzNDQgbDEzNDQgLTEzNDQgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iY29uZmlybSIgdW5pY29kZT0iJiN4ZWEwODsiIGQ9Ik0yNjU2IDQ4NDQgcS0xMDEgMCAtMTgwIC01NyBxLTc0IC01MiAtMTA5IC0xMzggcS0zNSAtODYgLTE5IC0xNzUgcTE4IC05NiA5MCAtMTY3IGwxNDk1IC0xNDk0IGwtMzYxNiAwIHEtNzcgMSAtMTM5IC0yNiBxLTU4IC0yNCAtOTkgLTcwIHEtMzkgLTQ0IC01OSAtMTAxIHEtMjAgLTU2IC0yMCAtMTE2IHEwIC02MCAyMCAtMTE2IHEyMCAtNTcgNTkgLTEwMSBxNDEgLTQ2IDk5IC03MCBxNjIgLTI3IDEzOSAtMjUgbDM2MTYgMCBsLTE0OTUgLTE0OTUgcS01NSAtNTMgLTgxIC0xMTYgcS0yNCAtNTkgLTIxIC0xMjEgcTMgLTU4IDMwIC0xMTMgcTI1IC01NCA2OCAtOTcgcTQzIC00MyA5NiAtNjggcTU1IC0yNiAxMTQgLTI5IHE2MiAtMyAxMjAgMjEgcTYzIDI1IDExNiA4MSBsMjAyOSAyMDI4IHE1OSA2MCA4MCAxNDEgcTIxIDgwIDEgMTU5IHEtMjEgODIgLTgxIDE0MiBsLTIwMjkgMjAyOCBxLTQ0IDQ1IC0xMDIgNzAgcS01OCAyNSAtMTIyIDI1IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImluZm8iIHVuaWNvZGU9IiYjeGVhMDk7IiBkPSJNMjQyMiA0Njg4IHEtMTExIDAgLTIxMyAtNDMgcS05OCAtNDIgLTE3NCAtMTE3LjUgcS03NiAtNzUuNSAtMTE3IC0xNzQuNSBxLTQzIC0xMDEgLTQzIC0yMTIuNSBxMCAtMTExLjUgNDMgLTIxMi41IHE0MSAtOTggMTE3IC0xNzQgcTc2IC03NiAxNzQgLTExNyBxMTAyIC00MyAyMTMgLTQzIHExMTEgMCAyMTMgNDMgcTk4IDQxIDE3My41IDExNyBxNzUuNSA3NiAxMTcuNSAxNzQgcTQzIDEwMSA0MyAyMTIuNSBxMCAxMTEuNSAtNDMgMjEyLjUgcS00MiA5OSAtMTE3LjUgMTc0LjUgcS03NS41IDc1LjUgLTE3My41IDExNy41IHEtMTAyIDQzIC0yMTMgNDMgWk0xNTYzIDMxMjUgcS04NiAwIC0xNTggLTQzIHEtNzEgLTQxIC0xMTIgLTExMiBxLTQzIC03MiAtNDMgLTE1Ny41IHEwIC04NS41IDQzIC0xNTcuNSBxNDEgLTcxIDExMiAtMTEyIHE3MiAtNDMgMTU4IC00MyBsNjI1IDAgbDAgLTE1NjIgbC02MjUgMCBxLTg2IDAgLTE1OCAtNDMgcS03MSAtNDEgLTExMiAtMTEyIHEtNDMgLTczIC00MyAtMTU4IHEwIC04NSA0MyAtMTU4IHE0MSAtNzEgMTEyIC0xMTIgcTcyIC00MyAxNTggLTQyIGwxODc1IDAgcTg1IDAgMTU3IDQyIHE3MSA0MSAxMTIgMTEyIHE0MyA3MyA0MyAxNTggcTAgODUgLTQzIDE1OCBxLTQxIDcxIC0xMTIgMTEyIHEtNzIgNDMgLTE1NyA0MyBsLTYyNSAwIGwwIDE4NzUgcTAgODUgLTQzIDE1NyBxLTQxIDcxIC0xMTIgMTEyIHEtNzMgNDMgLTE1OCA0MyBsLTkzNyAwIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9Im1lbnUiIHVuaWNvZGU9IiYjeGVhMGE7IiBkPSJNNjI1IDQzNzUgbDAgLTYyNSBsMzc1MCAwIGwwIDYyNSBsLTM3NTAgMCBaTTYyNSAyODEzIGwwIC02MjUgbDM3NTAgMCBsMCA2MjUgbC0zNzUwIDAgWk02MjUgMTI1MCBsMCAtNjI1IGwzNzUwIDAgbDAgNjI1IGwtMzc1MCAwIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9Im1vcmUiIHVuaWNvZGU9IiYjeGVhMGI7IiBkPSJNNzgxIDMwNDcgcTExMiAwIDIxMyAtNDMgcTk4IC00MiAxNzQgLTExNy41IHE3NiAtNzUuNSAxMTcgLTE3My41IHE0MyAtMTAyIDQzIC0yMTMgcTAgLTExMSAtNDMgLTIxMyBxLTQxIC05OCAtMTE3IC0xNzMuNSBxLTc2IC03NS41IC0xNzQgLTExNy41IHEtMTAxIC00MyAtMjEyLjUgLTQzIHEtMTExLjUgMCAtMjEzLjUgNDMgcS05OCA0MiAtMTczLjUgMTE3LjUgcS03NS41IDc1LjUgLTExNy41IDE3My41IHEtNDMgMTAyIC00MyAyMTMgcTAgMTExIDQzIDIxMyBxNDIgOTggMTE3LjUgMTczLjUgcTc1LjUgNzUuNSAxNzMuNSAxMTcuNSBxMTAyIDQzIDIxMyA0MyBaTTI1MDAgMzA0NyBxMTExIDAgMjEzIC00MyBxOTggLTQyIDE3My41IC0xMTcuNSBxNzUuNSAtNzUuNSAxMTcuNSAtMTczLjUgcTQzIC0xMDIgNDMgLTIxMyBxMCAtMTExIC00MyAtMjEzIHEtNDIgLTk4IC0xMTcuNSAtMTczLjUgcS03NS41IC03NS41IC0xNzMuNSAtMTE3LjUgcS0xMDIgLTQzIC0yMTMgLTQzIHEtMTExIDAgLTIxMyA0MyBxLTk4IDQyIC0xNzMuNSAxMTcuNSBxLTc1LjUgNzUuNSAtMTE3LjUgMTczLjUgcS00MyAxMDIgLTQzIDIxMyBxMCAxMTEgNDMgMjEzIHE0MiA5OCAxMTcuNSAxNzMuNSBxNzUuNSA3NS41IDE3My41IDExNy41IHExMDIgNDMgMjEzIDQzIFpNNDIxOSAzMDQ3IHExMTEgMCAyMTMgLTQzIHE5OCAtNDIgMTczLjUgLTExNy41IHE3NS41IC03NS41IDExNy41IC0xNzMuNSBxNDMgLTEwMiA0MyAtMjEzIHEwIC0xMTEgLTQzIC0yMTMgcS00MiAtOTggLTExNy41IC0xNzMuNSBxLTc1LjUgLTc1LjUgLTE3My41IC0xMTcuNSBxLTEwMiAtNDMgLTIxMy41IC00MyBxLTExMS41IDAgLTIxMi41IDQzIHEtOTggNDIgLTE3NCAxMTcuNSBxLTc2IDc1LjUgLTExNyAxNzMuNSBxLTQzIDEwMiAtNDMgMjEzIHEwIDExMSA0MyAyMTMgcTQxIDk4IDExNyAxNzMuNSBxNzYgNzUuNSAxNzQgMTE3LjUgcTEwMSA0MyAyMTMgNDMgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0icGF1c2UiIHVuaWNvZGU9IiYjeGVhMGM7IiBkPSJNOTM4IDQwNjMgbDAgLTMxMjUgbDEyNTAgMCBsMCAzMTI1IGwtMTI1MCAwIFpNMjgxMyA0MDYzIGwwIC0zMTI1IGwxMjUwIDAgbDAgMzEyNSBsLTEyNTAgMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJwbGF5IiB1bmljb2RlPSImI3hlYTBkOyIgZD0iTTYyNSA0Mzc1IGwzNzUwIC0xODc1IGwtMzc1MCAtMTg3NSBsMCAzNzUwIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InRyaWFuZ2xlLXMiIHVuaWNvZGU9IiYjeGVhMGU7IiBkPSJNMTI1MCAzMTI1IGwxMjUwIC0xMjUwIGwxMjUwIDEyNDggbC0yNTAwIDIgWiIgLz48L2ZvbnQ+PC9kZWZzPjwvc3ZnPg==\"","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=style&index=0&id=9cc143dc&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6e72f645\", content, true, {});","module.exports = require(\"core-js/modules/es.function.name\");","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionButton.vue?vue&type=style&index=0&id=33ba3302&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionButton.vue?vue&type=style&index=0&id=33ba3302&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"li.active[data-v-33ba3302]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-33ba3302]{pointer-events:none;opacity:.5}.action--disabled[data-v-33ba3302]:hover,.action--disabled[data-v-33ba3302]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-33ba3302]{opacity:1 !important}.action-button[data-v-33ba3302]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-button[data-v-33ba3302]:hover,.action-button[data-v-33ba3302]:focus{opacity:1}.action-button>span[data-v-33ba3302]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-33ba3302]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-button p[data-v-33ba3302]{width:150px;padding:7px 0;margin:auto;cursor:pointer;text-align:left;line-height:1.6em}.action-button__longtext[data-v-33ba3302]{cursor:pointer;white-space:pre-wrap}.action-button__title[data-v-33ba3302]{font-weight:bold}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { VTooltip } from 'v-tooltip'\nimport './index.scss'\n\n// force scope the tooltip and use .vue-tooltip\n// instead of .tooltip to avoid server compatibility\n// issues and the use of !important\nVTooltip.options.defaultTemplate = `<div class=\"vue-tooltip\" role=\"tooltip\" data-v-${SCOPE_VERSION}><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>`\nVTooltip.options.defaultHtml = false\n\nexport default VTooltip\n","module.exports = require(\"v-click-outside\");","module.exports = require(\"core-js/modules/es.array.index-of\");","\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue'\n\nexport default {\n\tbefore() {\n\t\t// all actions requires a valid text content\n\t\t// if none, forbid the component mount and throw error\n\t\tif (!this.$slots.default || this.text.trim() === '') {\n\t\t\tVue.util.warn(`${this.$options.name} cannot be empty and requires a meaningful text content`, this)\n\t\t\tthis.$destroy()\n\t\t\tthis.$el.remove()\n\t\t}\n\t},\n\n\tbeforeUpdate() {\n\t\tthis.text = this.getText()\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// $slots are not reactive.\n\t\t\t// We need to update the content manually\n\t\t\ttext: this.getText(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisLongText() {\n\t\t\treturn this.text && this.text.trim().length > 20\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetText() {\n\t\t\treturn this.$slots.default ? this.$slots.default[0].text.trim() : ''\n\t\t},\n\t},\n}\n","\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst GenRandomId = (length) => {\n\treturn Math.random()\n\t\t.toString(36)\n\t\t.replace(/[^a-z]+/g, '')\n\t\t.substr(0, length || 5)\n}\n\nexport default GenRandomId\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default function timer(callback, delay) {\n\tlet id\n\tlet started\n\tlet remaining = delay\n\tlet running\n\n\tthis.start = function() {\n\t\trunning = true\n\t\tstarted = new Date()\n\t\tid = setTimeout(callback, remaining)\n\t}\n\n\tthis.pause = function() {\n\t\trunning = false\n\t\tclearTimeout(id)\n\t\tremaining -= new Date() - started\n\t}\n\n\tthis.clear = function() {\n\t\trunning = false\n\t\tclearTimeout(id)\n\t\tremaining = 0\n\t}\n\n\tthis.getTimeLeft = function() {\n\t\tif (running) {\n\t\t\tthis.pause()\n\t\t\tthis.start()\n\t\t}\n\n\t\treturn remaining\n\t}\n\n\tthis.getStateRunning = function() {\n\t\treturn running\n\t}\n\n\tthis.start()\n}\n","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<docs>\n\n```vue\n<template>\n\t<div>\n\t\t<button @click=\"showModal\">Show Modal</button>\n\t\t<modal v-if=\"modal\" @close=\"closeModal\">\n\t\t\t<div class=\"modal__content\">Hello world</div>\n\t\t</modal>\n\t</div>\n</template>\n<style scoped>\n\t.modal__content {\n\t\twidth: 50vw;\n\t\ttext-align: center;\n\t\tmargin: 10vw 0;\n\t}\n</style>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tmodal: false\n\t\t}\n\t},\n\tmethods: {\n\t\tshowModal() {\n\t\t\tthis.modal = true\n\t\t},\n\t\tcloseModal() {\n\t\t\tthis.modal = false\n\t\t}\n\t}\n}\n</script>\n```\n\n</docs>\n<template>\n\t<transition name=\"fade\">\n\t\t<div ref=\"mask\"\n\t\t\tclass=\"modal-mask\"\n\t\t\t:class=\"{ 'modal-mask--dark': dark }\"\n\t\t\t@click=\"handleMouseMove\"\n\t\t\t@mousemove=\"handleMouseMove\"\n\t\t\t@touchmove=\"handleMouseMove\">\n\t\t\t<!-- Header -->\n\t\t\t<transition name=\"fade-visibility\">\n\t\t\t\t<div v-show=\"!clearView\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\tinvisible: clearView\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"modal-header\">\n\t\t\t\t\t<div v-if=\"title.trim() !== ''\" class=\"modal-title\">\n\t\t\t\t\t\t{{ title }}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"icons-menu\">\n\t\t\t\t\t\t<!-- Play-pause toggle -->\n\t\t\t\t\t\t<button v-if=\"hasNext && enableSlideshow\"\n\t\t\t\t\t\t\tv-tooltip.auto=\"playPauseTitle\"\n\t\t\t\t\t\t\t:class=\"{ 'play-pause--paused': slideshowPaused }\"\n\t\t\t\t\t\t\tclass=\"play-pause\"\n\t\t\t\t\t\t\t@click=\"togglePlayPause\">\n\t\t\t\t\t\t\t<!-- Progress circle, css animated -->\n\t\t\t\t\t\t\t<div :class=\"[playing ? 'icon-pause' : 'icon-play']\">\n\t\t\t\t\t\t\t\t<span class=\"hidden-visually\">\n\t\t\t\t\t\t\t\t\t{{ playPauseTitle }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Progress circle, css animated -->\n\t\t\t\t\t\t\t<svg v-if=\"playing\"\n\t\t\t\t\t\t\t\tclass=\"progress-ring\"\n\t\t\t\t\t\t\t\theight=\"50\"\n\t\t\t\t\t\t\t\twidth=\"50\">\n\t\t\t\t\t\t\t\t<circle class=\"progress-ring__circle\"\n\t\t\t\t\t\t\t\t\tstroke=\"white\"\n\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\tfill=\"transparent\"\n\t\t\t\t\t\t\t\t\tr=\"15\"\n\t\t\t\t\t\t\t\t\tcx=\"25\"\n\t\t\t\t\t\t\t\t\tcy=\"25\" />\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<!-- Actions menu -->\n\t\t\t\t\t\t<Actions class=\"header-actions\">\n\t\t\t\t\t\t\t<!-- @slot List of actions to show -->\n\t\t\t\t\t\t\t<slot name=\"actions\" />\n\t\t\t\t\t\t</Actions>\n\n\t\t\t\t\t\t<!-- Close modal -->\n\t\t\t\t\t\t<Actions v-if=\"canClose\" class=\"header-close\">\n\t\t\t\t\t\t\t<ActionButton icon=\"icon-close\" @click=\"close\">\n\t\t\t\t\t\t\t\t{{ t('Close') }}\n\t\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t\t</Actions>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</transition>\n\n\t\t\t<!-- Content wrapper -->\n\t\t\t<transition :name=\"modalTransitionName\">\n\t\t\t\t<div\n\t\t\t\t\tv-show=\"showModal\"\n\t\t\t\t\t:class=\"[\n\t\t\t\t\t\t`modal-wrapper--${size}`,\n\t\t\t\t\t\tspreadNavigation ? 'modal-wrapper--spread-navigation' : ''\n\t\t\t\t\t]\"\n\t\t\t\t\tclass=\"modal-wrapper\"\n\t\t\t\t\t@click.self=\"close\">\n\t\t\t\t\t<!-- Navigation button -->\n\t\t\t\t\t<transition name=\"fade-visibility\">\n\t\t\t\t\t\t<a v-show=\"hasPrevious && !clearView\"\n\t\t\t\t\t\t\tclass=\"prev\"\n\t\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t\tinvisible: clearView || !hasPrevious\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t@click=\"previous\">\n\t\t\t\t\t\t\t<div class=\"icon icon-previous\">\n\t\t\t\t\t\t\t\t<span class=\"hidden-visually\">\n\t\t\t\t\t\t\t\t\t{{ t('Previous') }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</transition>\n\n\t\t\t\t\t<!-- Content -->\n\t\t\t\t\t<div class=\"modal-container\">\n\t\t\t\t\t\t<!-- @slot Modal content to render -->\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<!-- Navigation button -->\n\t\t\t\t\t<transition name=\"fade-visibility\">\n\t\t\t\t\t\t<a v-show=\"hasNext && !clearView\"\n\t\t\t\t\t\t\tclass=\"next\"\n\t\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t\tinvisible: clearView || !hasNext\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t@click=\"next\">\n\t\t\t\t\t\t\t<div class=\"icon icon-next\">\n\t\t\t\t\t\t\t\t<span class=\"hidden-visually\">\n\t\t\t\t\t\t\t\t\t{{ t('Next') }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t</transition>\n</template>\n\n<script>\nimport Hammer from 'hammerjs'\nimport Actions from '../Actions'\nimport ActionButton from '../ActionButton'\nimport l10n from '../../mixins/l10n'\nimport { t } from '../../l10n'\nimport Tooltip from '../../directives/Tooltip'\nimport Timer from '../../utils/Timer'\n\nexport default {\n\tname: 'Modal',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t},\n\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\n\tmixins: [l10n],\n\n\tprops: {\n\t\t/**\n\t\t * Title to be shown with the modal\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Declare if a previous slide is available\n\t\t */\n\t\thasPrevious: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Declare if a next slide is available\n\t\t */\n\t\thasNext: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Declare if hiding the modal should be animated\n\t\t */\n\t\toutTransition: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Declare if the slideshow functionality should be enabled\n\t\t */\n\t\tenableSlideshow: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tclearViewDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 5000,\n\t\t},\n\t\t/**\n\t\t * Declare the slide interval\n\t\t */\n\t\tslideshowDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 3000,\n\t\t},\n\t\t/**\n\t\t * Allow to pause an ongoing slideshow\n\t\t */\n\t\tslideshowPaused: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Enable swipe between slides\n\t\t */\n\t\tenableSwipe: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tspreadNavigation: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tsize: {\n\t\t\ttype: String,\n\t\t\tdefault: 'normal',\n\t\t\tvalidator: size => {\n\t\t\t\treturn ['normal', 'large', 'full'].indexOf(size) !== -1\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Declare if the modal can be closed\n\t\t */\n\t\tcanClose: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/** Makes the modal backdrop black if true */\n\t\tdark: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tmc: null,\n\t\t\tshowModal: false,\n\t\t\tclearView: false,\n\t\t\tclearViewTimeout: null,\n\t\t\tplaying: false,\n\t\t\tslideshowTimeout: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tmodalTransitionName() {\n\t\t\treturn `modal-${this.outTransition ? 'out' : 'in'}`\n\t\t},\n\t\tplayPauseTitle() {\n\t\t\treturn this.playing ? t('Pause slideshow') : t('Start slideshow')\n\t\t},\n\t},\n\n\twatch: {\n\t\t/**\n\t\t * Handle play/pause of an ongoing slideshow\n\t\t * @param {boolean} paused is the player paused\n\t\t */\n\t\tslideshowPaused: function(paused) {\n\t\t\tif (this.slideshowTimeout) {\n\t\t\t\tif (paused) {\n\t\t\t\t\tthis.slideshowTimeout.pause()\n\t\t\t\t} else {\n\t\t\t\t\tthis.slideshowTimeout.start()\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\twindow.addEventListener('keydown', this.handleKeydown)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('keydown', this.handleKeydown)\n\t},\n\tmounted() {\n\t\tthis.showModal = true\n\n\t\t// init clear view\n\t\tthis.handleMouseMove()\n\n\t\tthis.mc = new Hammer(this.$refs.mask)\n\t\tthis.mc.on('swipeleft swiperight', e => {\n\t\t\tthis.handleSwipe(e)\n\t\t})\n\n\t\t// force mount the component to body\n\t\tdocument.body.insertBefore(this.$el, document.body.lastChild)\n\t},\n\tunmounted() {\n\t\tthis.mc.off('swipeleft swiperight')\n\t\tthis.mc.destroy()\n\t},\n\n\tmethods: {\n\t\t// Events emitters\n\t\tprevious(data) {\n\t\t\t// do not send the event if nothing is available\n\t\t\tif (this.hasPrevious) {\n\t\t\t\t// if data is set, then it's a user mouse event\n\t\t\t\t// and not the slideshow handler, therefore\n\t\t\t\t// we reset the timer\n\t\t\t\tif (data) {\n\t\t\t\t\tthis.resetSlideshow()\n\t\t\t\t}\n\t\t\t\tthis.$emit('previous', data)\n\t\t\t}\n\t\t},\n\t\tnext(data) {\n\t\t\t// do not send the event if nothing is available\n\t\t\tif (this.hasNext) {\n\t\t\t\t// if data is set, then it's a mouse event\n\t\t\t\t// and not the slideshow handler, therefore\n\t\t\t\t// we reset the timer\n\t\t\t\tif (data) {\n\t\t\t\t\tthis.resetSlideshow()\n\t\t\t\t}\n\t\t\t\tthis.$emit('next', data)\n\t\t\t}\n\t\t},\n\t\tclose(data) {\n\t\t\t// do not fire event if forbidden\n\t\t\tif (this.canClose) {\n\t\t\t\tthis.showModal = false\n\n\t\t\t\t// delay closing for animation\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t/**\n\t\t\t\t\t * Emitted when the closing animation is finished\n\t\t\t\t\t */\n\t\t\t\t\tthis.$emit('close', data)\n\t\t\t\t}, 300)\n\t\t\t}\n\t\t},\n\n\t\t// Key Handlers\n\t\thandleKeydown(e) {\n\t\t\tswitch (e.keyCode) {\n\t\t\tcase 37: // left arrow\n\t\t\t\tthis.previous(e)\n\t\t\t\tbreak\n\t\t\tcase 13: // enter key\n\t\t\tcase 39: // rigth arrow\n\t\t\t\tthis.next(e)\n\t\t\t\tbreak\n\t\t\tcase 27: // escape key\n\t\t\t\tthis.close(e)\n\t\t\t\tbreak\n\t\t\t}\n\t\t},\n\t\thandleSwipe(e) {\n\t\t\tif (this.enableSwipe) {\n\t\t\t\tif (e.type === 'swipeleft') {\n\t\t\t\t\t// swiping to left to go to the next item\n\t\t\t\t\tthis.next(e)\n\t\t\t\t} else if (e.type === 'swiperight') {\n\t\t\t\t\t// swiping to right to go back to the previous item\n\t\t\t\t\tthis.previous(e)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thandleMouseMove() {\n\t\t\tif (this.clearViewDelay > 0) {\n\t\t\t\tthis.clearView = false\n\t\t\t\tclearTimeout(this.clearViewTimeout)\n\t\t\t\tthis.clearViewTimeout = setTimeout(() => {\n\t\t\t\t\tthis.clearView = true\n\t\t\t\t}, this.clearViewDelay)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Toggle the slideshow state\n\t\t */\n\t\ttogglePlayPause() {\n\t\t\tthis.playing = !this.playing\n\t\t\tif (this.playing) {\n\t\t\t\tthis.handleSlideshow()\n\t\t\t} else {\n\t\t\t\tthis.clearSlideshowTimeout()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the slideshow timer and keep going if it was on\n\t\t */\n\t\tresetSlideshow() {\n\t\t\tthis.playing = !this.playing\n\t\t\tthis.clearSlideshowTimeout()\n\t\t\tthis.$nextTick(function() {\n\t\t\t\tthis.togglePlayPause()\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Handle the slideshow timer and next event\n\t\t */\n\t\thandleSlideshow() {\n\t\t\tthis.playing = true\n\t\t\tif (this.hasNext) {\n\t\t\t\tthis.slideshowTimeout = new Timer(() => {\n\t\t\t\t\tthis.next()\n\t\t\t\t\tthis.handleSlideshow()\n\t\t\t\t}, this.slideshowDelay)\n\t\t\t} else {\n\t\t\t\tthis.playing = false\n\t\t\t\tthis.clearSlideshowTimeout()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Clear slideshowTimeout if ongoing\n\t\t */\n\t\tclearSlideshowTimeout() {\n\t\t\tif (this.slideshowTimeout) {\n\t\t\t\tthis.slideshowTimeout.clear()\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import '../../fonts/scss/iconfont-vue';\n$header-size: 50px;\n\n.modal-mask {\n\tposition: fixed;\n\tz-index: 9998;\n\ttop: 0;\n\tleft: 0;\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tbackground-color: rgba(0, 0, 0, .5);\n\t&--dark {\n\t\tbackground-color: rgba(0, 0, 0, .92);\n\t}\n}\n\n.modal-header {\n\tposition: absolute;\n\tz-index: 10001;\n\ttop: 0;\n\tright: 0;\n\tleft: 0;\n\t// prevent vue show to use display:none and reseting\n\t// the circle animation loop\n\tdisplay: flex !important;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 100%;\n\theight: $header-size;\n\ttransition: opacity 250ms,\n\t\tvisibility 250ms;\n\n\t// replace display by visibility\n\t&.invisible[style*='display:none'],\n\t&.invisible[style*='display: none'] {\n\t\tvisibility: hidden;\n\t}\n\n\t.modal-title {\n\t\toverflow-x: hidden;\n\t\tbox-sizing: border-box;\n\t\twidth: 100%;\n\t\tpadding: 0 #{$clickable-area * 3} 0 12px; // maximum actions is 3\n\t\ttransition: padding ease 100ms;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: #fff;\n\t\tfont-size: $icon-margin;\n\t}\n\n\t// On wider screens the title can be centered\n\t@media only screen and (min-width: $breakpoint-mobile/2) {\n\t\t.modal-title {\n\t\t\ttext-align: center;\n\t\t\tpadding-left: #{$clickable-area * 3}; // maximum actions is 3\n\t\t}\n\t}\n\n\t.icons-menu {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: flex-end;\n\n\t\t.icon-close {\n\t\t\tbox-sizing: border-box;\n\t\t\tmargin: ($header-size - $clickable-area) / 2;\n\t\t\t// not using $icon-margin since we have a custom font size\n\t\t\t// and alignement seems odd\n\t\t\tpadding: 10px 11px;\n\t\t\tcolor: #fff;\n\t\t\tbackground-image: none;\n\t\t\tfont-size: 23px;\n\n\t\t\t@include iconfont('close');\n\t\t}\n\n\t\t.play-pause {\n\t\t\tposition: relative;\n\t\t\twidth: $header-size;\n\t\t\theight: $header-size;\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t\tcursor: pointer;\n\t\t\tcolor: white;\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t\tfont-size: 22px;\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\t.icon-play,\n\t\t\t\t.icon-pause {\n\t\t\t\t\topacity: 1;\n\t\t\t\t\tborder-radius: $clickable-area / 2;\n\t\t\t\t\tbackground-color: $icon-focus-bg;\n\t\t\t\t}\n\t\t\t}\n\t\t\t.icon-play,\n\t\t\t.icon-pause {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: $clickable-area;\n\t\t\t\theight: $clickable-area;\n\t\t\t\tmargin: ($header-size - $clickable-area) / 2;\n\t\t\t\topacity: .7;\n\t\t\t\tbackground-image: none;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\t\t\t.icon-play {\n\t\t\t\t// better visual\n\t\t\t\tpadding: 11px 13px;\n\t\t\t\t@include iconfont('play');\n\t\t\t}\n\t\t\t.icon-pause {\n\t\t\t\tpadding: 12px;\n\t\t\t\t// ! align with circle\n\t\t\t\tfont-size: 19.5px;\n\t\t\t\t@include iconfont('pause');\n\t\t\t}\n\t\t}\n\n\t\t.header-actions {\n\t\t\tmargin: ($header-size - $clickable-area) / 2;\n\t\t\tcolor: white;\n\t\t}\n\n\t\t.action-item--single {\n\t\t\tbox-sizing: border-box;\n\t\t\twidth: $clickable-area;\n\t\t\theight: $clickable-area;\n\t\t\tcursor: pointer;\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: 22px;\n\t\t}\n\n\t\t&::v-deep .action-item__menutoggle {\n\t\t\tpadding: 13px 11px;\n\t\t\t// force white instead of default main text\n\t\t\tcolor: #fff;\n\t\t\t// 22px is a somehow better looking for the icon-more icon\n\t\t\tfont-size: 22px;\n\t\t}\n\n\t}\n}\n\n.modal-wrapper {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\n\t/* Navigation buttons */\n\t.prev,\n\t.next {\n\t\tz-index: 10000;\n\t\t// ignore display: none\n\t\tdisplay: flex !important;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 15%;\n\t\tmin-width: 60px;\n\t\theight: 100%;\n\t\ttransition: opacity 250ms,\n\t\t\tvisibility 250ms;\n\n\t\t// we want to keep the elements on page\n\t\t// even if hidden to avoid having a unbalanced\n\t\t// centered content\n\t\t// replace display by visibility\n\t\t&.invisible[style*='display:none'],\n\t\t&.invisible[style*='display: none'] {\n\t\t\tvisibility: hidden;\n\t\t}\n\t}\n\n\t// buttons/icons\n\t.icon-next,\n\t.icon-previous {\n\t\tbox-sizing: border-box;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\tpadding: 12px 11px;\n\t\tcolor: white;\n\t\tborder-radius: $clickable-area / 2;\n\t\tbackground-image: none;\n\t\tfont-size: 24px;\n\t}\n\t.icon-previous {\n\t\t@include iconfont('arrow-left');\n\t}\n\t.icon-next {\n\t\t@include iconfont('arrow-right');\n\t}\n\n\t/* Content */\n\t.modal-container {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t\tpadding: 0;\n\t\ttransition: transform 300ms ease;\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-main-background);\n\t\tbox-shadow: 0 0 40px rgba(0, 0, 0, .2);\n\t}\n\t&:not(&--large):not(&--full) .modal-container {\n\t\tmax-width: 900px;\n\t\tmax-height: 80%;\n\t}\n\n\t// Sizing\n\t&--full {\n\t\t.modal-container {\n\t\t\tmax-width: 100%;\n\t\t\tmax-height: 100%;\n\t\t\tborder-radius: 0;\n\t\t}\n\t}\n\t&--full,\n\t&--spread-navigation {\n\t\t.prev,\n\t\t.next {\n\t\t\tposition: absolute;\n\t\t\twidth: 10%;\n\t\t}\n\t\t.prev {\n\t\t\tleft: 0;\n\t\t}\n\t\t.next {\n\t\t\tright: 0;\n\t\t}\n\t}\n\t&--large {\n\t\t.modal-container {\n\t\t\tmax-width: 70%;\n\t\t\tmax-height: 90%;\n\t\t}\n\t\t.prev,\n\t\t.next {\n\t\t\twidth: 10%;\n\t\t}\n\t}\n}\n\n/* TRANSITIONS */\n.fade-enter-active,\n.fade-leave-active {\n\ttransition: opacity 250ms;\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-visibility-enter,\n.fade-visibility-leave-to {\n\tvisibility: hidden;\n\topacity: 0;\n}\n\n.modal-in-enter-active,\n.modal-in-leave-active,\n.modal-out-enter-active,\n.modal-out-leave-active {\n\ttransition: opacity 250ms;\n}\n\n.modal-in-enter,\n.modal-in-leave-to,\n.modal-out-enter,\n.modal-out-leave-to {\n\topacity: 0;\n}\n\n.modal-in-enter .modal-container,\n.modal-in-leave-to .modal-container {\n\ttransform: scale(.9);\n}\n\n.modal-out-enter .modal-container,\n.modal-out-leave-to .modal-container {\n\ttransform: scale(1.1);\n}\n\n// animated circle\n$radius: 15;\n$pi: 3.14159265358979;\n\n.modal-mask .play-pause {\n\t.progress-ring {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\ttransform: rotate(-90deg);\n\t\t.progress-ring__circle {\n\t\t\ttransition: 100ms stroke-dashoffset;\n\t\t\ttransform-origin: 50% 50%; // axis compensation\n\t\t\tanimation: progressring linear 3s infinite;\n\n\t\t\tstroke-linecap: round;\n\t\t\tstroke-dashoffset: $radius * 2 * $pi; // radius * 2 * PI\n\t\t\tstroke-dasharray: $radius * 2 * $pi; // radius * 2 * PI\n\t\t}\n\t}\n\t&--paused {\n\t\t.icon-pause {\n\t\t\tanimation: breath 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n\t\t}\n\t\t.progress-ring__circle {\n\t\t\tanimation-play-state: paused !important;\n\t\t}\n\t}\n}\n\n// keyframes get scoped too and break the animation name, we need them unscoped\n@keyframes progressring {\n\tfrom {\n\t\tstroke-dashoffset: $radius * 2 * $pi; // radius * 2 * PI\n\t}\n\tto {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n\n@keyframes breath {\n\t0% {\n\t\topacity: 1;\n\t}\n\t50% {\n\t\topacity: 0;\n\t}\n\t100% {\n\t\topacity: 1;\n\t}\n}\n\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{ref:\"mask\",staticClass:\"modal-mask\",class:{ 'modal-mask--dark': _vm.dark },on:{\"click\":_vm.handleMouseMove,\"mousemove\":_vm.handleMouseMove,\"touchmove\":_vm.handleMouseMove}},[_c('transition',{attrs:{\"name\":\"fade-visibility\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.clearView),expression:\"!clearView\"}],staticClass:\"modal-header\",class:{\n\t\t\t\t\tinvisible: _vm.clearView\n\t\t\t\t}},[(_vm.title.trim() !== '')?_c('div',{staticClass:\"modal-title\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"icons-menu\"},[(_vm.hasNext && _vm.enableSlideshow)?_c('button',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.playPauseTitle),expression:\"playPauseTitle\",modifiers:{\"auto\":true}}],staticClass:\"play-pause\",class:{ 'play-pause--paused': _vm.slideshowPaused },on:{\"click\":_vm.togglePlayPause}},[_c('div',{class:[_vm.playing ? 'icon-pause' : 'icon-play']},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.playPauseTitle)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])]),_vm._v(\" \"),(_vm.playing)?_c('svg',{staticClass:\"progress-ring\",attrs:{\"height\":\"50\",\"width\":\"50\"}},[_c('circle',{staticClass:\"progress-ring__circle\",attrs:{\"stroke\":\"white\",\"stroke-width\":\"2\",\"fill\":\"transparent\",\"r\":\"15\",\"cx\":\"25\",\"cy\":\"25\"}})]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('Actions',{staticClass:\"header-actions\"},[_vm._t(\"actions\")],2),_vm._v(\" \"),(_vm.canClose)?_c('Actions',{staticClass:\"header-close\"},[_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":_vm.close}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('Close'))+\"\\n\\t\\t\\t\\t\\t\\t\")])],1):_vm._e()],1)])]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":_vm.modalTransitionName}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showModal),expression:\"showModal\"}],staticClass:\"modal-wrapper\",class:[\n\t\t\t\t\t(\"modal-wrapper--\" + _vm.size),\n\t\t\t\t\t_vm.spreadNavigation ? 'modal-wrapper--spread-navigation' : ''\n\t\t\t\t],on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.close($event)}}},[_c('transition',{attrs:{\"name\":\"fade-visibility\"}},[_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasPrevious && !_vm.clearView),expression:\"hasPrevious && !clearView\"}],staticClass:\"prev\",class:{\n\t\t\t\t\t\t\tinvisible: _vm.clearView || !_vm.hasPrevious\n\t\t\t\t\t\t},on:{\"click\":_vm.previous}},[_c('div',{staticClass:\"icon icon-previous\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('Previous'))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"modal-container\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade-visibility\"}},[_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasNext && !_vm.clearView),expression:\"hasNext && !clearView\"}],staticClass:\"next\",class:{\n\t\t\t\t\t\t\tinvisible: _vm.clearView || !_vm.hasNext\n\t\t\t\t\t\t},on:{\"click\":_vm.next}},[_c('div',{staticClass:\"icon icon-next\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('Next'))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])])])])],1)])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport ScopeComponent from '../../utils/ScopeComponent'\nimport Modal from './Modal'\n\nScopeComponent(Modal)\n\nexport default Modal\n","module.exports = require(\"core-js/modules/es.array.iterator\");","module.exports = require(\"core-js/modules/es.string.iterator\");","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n","/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n isProduction = _isProduction\n\n options = _options || {}\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n if (options.ssrId) {\n styleElement.setAttribute(ssrIdKey, obj.id)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n","module.exports = require(\"core-js/modules/web.dom-collections.iterator\");","module.exports = require(\"core-js/modules/es.regexp.exec\");","module.exports = require(\"core-js/modules/es.array.map\");","module.exports = require(\"core-js/modules/es.regexp.to-string\");","module.exports = require(\"core-js/modules/web.url\");","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=style&index=0&id=9cc143dc&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=style&index=0&id=9cc143dc&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = require(\"../../fonts/iconfont-vue-e1f55ce.eot\");\nvar ___CSS_LOADER_URL_IMPORT_1___ = require(\"../../fonts/iconfont-vue-e1f55ce.woff\");\nvar ___CSS_LOADER_URL_IMPORT_2___ = require(\"../../fonts/iconfont-vue-e1f55ce.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_3___ = require(\"../../fonts/iconfont-vue-e1f55ce.svg\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\n// Module\nexports.push([module.id, \"@font-face{font-family:\\\"iconfont-vue-e1f55ce\\\";src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"embedded-opentype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"woff\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"truetype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"svg\\\")}.icon[data-v-9cc143dc]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.arrow-left[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.arrow-right-double[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.arrow-right[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.breadcrumb[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.checkmark[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.close[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.confirm[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.info[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.menu[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.more[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.pause[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.play[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.triangle-s[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.modal-mask[data-v-9cc143dc]{position:fixed;z-index:9998;top:0;left:0;display:block;width:100%;height:100%;background-color:rgba(0,0,0,0.5)}.modal-mask--dark[data-v-9cc143dc]{background-color:rgba(0,0,0,0.92)}.modal-header[data-v-9cc143dc]{position:absolute;z-index:10001;top:0;right:0;left:0;display:flex !important;align-items:center;justify-content:center;width:100%;height:50px;transition:opacity 250ms, visibility 250ms}.modal-header.invisible[style*='display:none'][data-v-9cc143dc],.modal-header.invisible[style*='display: none'][data-v-9cc143dc]{visibility:hidden}.modal-header .modal-title[data-v-9cc143dc]{overflow-x:hidden;box-sizing:border-box;width:100%;padding:0 132px 0 12px;transition:padding ease 100ms;white-space:nowrap;text-overflow:ellipsis;color:#fff;font-size:14px}@media only screen and (min-width: 512px){.modal-header .modal-title[data-v-9cc143dc]{text-align:center;padding-left:132px}}.modal-header .icons-menu[data-v-9cc143dc]{position:absolute;right:0;display:flex;align-items:center;justify-content:flex-end}.modal-header .icons-menu .icon-close[data-v-9cc143dc]{box-sizing:border-box;margin:3px;padding:10px 11px;color:#fff;background-image:none;font-size:23px}.modal-header .icons-menu .icon-close[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.modal-header .icons-menu .play-pause[data-v-9cc143dc]{position:relative;width:50px;height:50px;margin:0;padding:0;cursor:pointer;color:white;border:none;background-color:transparent;font-size:22px}.modal-header .icons-menu .play-pause:hover .icon-play[data-v-9cc143dc],.modal-header .icons-menu .play-pause:hover .icon-pause[data-v-9cc143dc],.modal-header .icons-menu .play-pause:focus .icon-play[data-v-9cc143dc],.modal-header .icons-menu .play-pause:focus .icon-pause[data-v-9cc143dc]{opacity:1;border-radius:22px;background-color:rgba(127,127,127,0.25)}.modal-header .icons-menu .play-pause .icon-play[data-v-9cc143dc],.modal-header .icons-menu .play-pause .icon-pause[data-v-9cc143dc]{box-sizing:border-box;width:44px;height:44px;margin:3px;opacity:.7;background-image:none;cursor:pointer}.modal-header .icons-menu .play-pause .icon-play[data-v-9cc143dc]{padding:11px 13px}.modal-header .icons-menu .play-pause .icon-play[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.modal-header .icons-menu .play-pause .icon-pause[data-v-9cc143dc]{padding:12px;font-size:19.5px}.modal-header .icons-menu .play-pause .icon-pause[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.modal-header .icons-menu .header-actions[data-v-9cc143dc]{margin:3px;color:white}.modal-header .icons-menu .action-item--single[data-v-9cc143dc]{box-sizing:border-box;width:44px;height:44px;cursor:pointer;background-position:center;background-size:22px}.modal-header .icons-menu[data-v-9cc143dc] .action-item__menutoggle{padding:13px 11px;color:#fff;font-size:22px}.modal-wrapper[data-v-9cc143dc]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.modal-wrapper .prev[data-v-9cc143dc],.modal-wrapper .next[data-v-9cc143dc]{z-index:10000;display:flex !important;align-items:center;justify-content:center;width:15%;min-width:60px;height:100%;transition:opacity 250ms, visibility 250ms}.modal-wrapper .prev.invisible[style*='display:none'][data-v-9cc143dc],.modal-wrapper .prev.invisible[style*='display: none'][data-v-9cc143dc],.modal-wrapper .next.invisible[style*='display:none'][data-v-9cc143dc],.modal-wrapper .next.invisible[style*='display: none'][data-v-9cc143dc]{visibility:hidden}.modal-wrapper .icon-next[data-v-9cc143dc],.modal-wrapper .icon-previous[data-v-9cc143dc]{box-sizing:border-box;width:44px;height:44px;padding:12px 11px;color:white;border-radius:22px;background-image:none;font-size:24px}.modal-wrapper .icon-previous[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.modal-wrapper .icon-next[data-v-9cc143dc]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.modal-wrapper .modal-container[data-v-9cc143dc]{display:block;overflow:hidden;padding:0;transition:transform 300ms ease;border-radius:var(--border-radius-large);background-color:var(--color-main-background);box-shadow:0 0 40px rgba(0,0,0,0.2)}.modal-wrapper:not(.modal-wrapper--large):not(.modal-wrapper--full) .modal-container[data-v-9cc143dc]{max-width:900px;max-height:80%}.modal-wrapper--full .modal-container[data-v-9cc143dc]{max-width:100%;max-height:100%;border-radius:0}.modal-wrapper--full .prev[data-v-9cc143dc],.modal-wrapper--full .next[data-v-9cc143dc],.modal-wrapper--spread-navigation .prev[data-v-9cc143dc],.modal-wrapper--spread-navigation .next[data-v-9cc143dc]{position:absolute;width:10%}.modal-wrapper--full .prev[data-v-9cc143dc],.modal-wrapper--spread-navigation .prev[data-v-9cc143dc]{left:0}.modal-wrapper--full .next[data-v-9cc143dc],.modal-wrapper--spread-navigation .next[data-v-9cc143dc]{right:0}.modal-wrapper--large .modal-container[data-v-9cc143dc]{max-width:70%;max-height:90%}.modal-wrapper--large .prev[data-v-9cc143dc],.modal-wrapper--large .next[data-v-9cc143dc]{width:10%}.fade-enter-active[data-v-9cc143dc],.fade-leave-active[data-v-9cc143dc]{transition:opacity 250ms}.fade-enter[data-v-9cc143dc],.fade-leave-to[data-v-9cc143dc]{opacity:0}.fade-visibility-enter[data-v-9cc143dc],.fade-visibility-leave-to[data-v-9cc143dc]{visibility:hidden;opacity:0}.modal-in-enter-active[data-v-9cc143dc],.modal-in-leave-active[data-v-9cc143dc],.modal-out-enter-active[data-v-9cc143dc],.modal-out-leave-active[data-v-9cc143dc]{transition:opacity 250ms}.modal-in-enter[data-v-9cc143dc],.modal-in-leave-to[data-v-9cc143dc],.modal-out-enter[data-v-9cc143dc],.modal-out-leave-to[data-v-9cc143dc]{opacity:0}.modal-in-enter .modal-container[data-v-9cc143dc],.modal-in-leave-to .modal-container[data-v-9cc143dc]{transform:scale(0.9)}.modal-out-enter .modal-container[data-v-9cc143dc],.modal-out-leave-to .modal-container[data-v-9cc143dc]{transform:scale(1.1)}.modal-mask .play-pause .progress-ring[data-v-9cc143dc]{position:absolute;top:0;left:0;transform:rotate(-90deg)}.modal-mask .play-pause .progress-ring .progress-ring__circle[data-v-9cc143dc]{transition:100ms stroke-dashoffset;transform-origin:50% 50%;animation:progressring-data-v-9cc143dc linear 3s infinite;stroke-linecap:round;stroke-dashoffset:94.24778;stroke-dasharray:94.24778}.modal-mask .play-pause--paused .icon-pause[data-v-9cc143dc]{animation:breath-data-v-9cc143dc 2s cubic-bezier(0.4, 0, 0.2, 1) infinite}.modal-mask .play-pause--paused .progress-ring__circle[data-v-9cc143dc]{animation-play-state:paused !important}@keyframes progressring-data-v-9cc143dc{from{stroke-dashoffset:94.24778}to{stroke-dashoffset:0}}@keyframes breath-data-v-9cc143dc{0%{opacity:1}50%{opacity:0}100%{opacity:1}}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","module.exports = require(\"core-js/modules/es.array.concat\");","\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Get the first parent component matching the provided name\n *\n * @param {Object} context the context to search from (usualy this)\n * @param {string} name the parent name\n * @returns {Object} the parent component\n */\nconst GetParent = function(context, name) {\n\tlet parent = context.$parent\n\twhile (parent) {\n\t\tif (parent.$options.name === name) {\n\t\t\treturn parent\n\t\t}\n\t\tparent = parent.$parent\n\t}\n}\n\nexport default GetParent\n","\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport actionGlobal from './actionGlobal'\nimport GetParent from '../utils/GetParent'\n\nexport default {\n\tmixins: [actionGlobal],\n\tprops: {\n\t\t/**\n\t\t * Icon to show with the action, can be either a CSS class or an URL\n\t\t */\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Title to show next to the icon\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Whether we close the Actions menu after the click\n\t\t */\n\t\tcloseAfterClick: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Aria label for the button. Not needed if the button has text.\n\t\t */\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tisIconUrl() {\n\t\t\ttry {\n\t\t\t\treturn new URL(this.icon)\n\t\t\t} catch (error) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonClick(event) {\n\t\t\t/**\n\t\t\t * Emitted when the action is clicked\n\t\t\t * @type {Event}\n\t\t\t */\n\t\t\tthis.$emit('click', event)\n\n\t\t\tif (this.closeAfterClick) {\n\t\t\t\tconst parent = GetParent(this, 'Actions')\n\t\t\t\tif (parent && parent.closeMenu) {\n\t\t\t\t\tparent.closeMenu()\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n","module.exports = require(\"@nextcloud/l10n/dist/gettext\");","module.exports = require(\"core-js/modules/es.string.trim\");","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Actions.vue?vue&type=style&index=0&id=7b368b0c&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"640a212a\", content, true, {});","module.exports = require(\"v-tooltip\");","module.exports = require(\"core-js/modules/es.string.replace\");","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue'\n\n/**\n * Validate children of a vue component\n *\n * @param {Object[]} slots the vue component slot\n * @param {String[]} allowed the allowed components name\n * @param {Object} vm the vue component instance\n */\nconst ValidateSlot = (slots, allowed, vm) => {\n\tif (slots === undefined) {\n\t\treturn\n\t}\n\n\tfor (let index = slots.length - 1; index >= 0; index--) {\n\t\tconst node = slots[index]\n\t\t// also check against allowed to avoid uninitiated vnodes with no componentOptions\n\t\tconst isHtmlElement = !node.componentOptions && node.tag && allowed.indexOf(node.tag) === -1\n\t\tconst isVueComponent = !!node.componentOptions && typeof node.componentOptions.tag === 'string'\n\t\tconst isForbiddenComponent = isVueComponent && allowed.indexOf(node.componentOptions.tag) === -1\n\n\t\t// if html element or not a vue component or vue component not in allowed tags\n\t\tif (isHtmlElement || !isVueComponent || isForbiddenComponent) {\n\t\t\t// only warn when html elment or forbidden component\n\t\t\t// sometimes text nodes are present which are hardly removeable by the developer and spam the warnings\n\t\t\tif (isHtmlElement || isForbiddenComponent) {\n\t\t\t\tVue.util.warn(`${isHtmlElement ? node.tag : node.componentOptions.tag} is not allowed inside the ${vm.$options.name} component`, vm)\n\t\t\t}\n\n\t\t\t// cleanup\n\t\t\tslots.splice(index, 1)\n\t\t}\n\t}\n}\n\nexport default ValidateSlot\n","import { n, t } from '../l10n'\n\nexport default {\n\tmethods: {\n\t\tn,\n\t\tt,\n\t},\n}\n","module.exports = require(\"core-js/modules/es.number.constructor\");","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Actions from './Actions'\n\nexport default Actions\n","module.exports = require(\"core-js/modules/es.object.to-string\");","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!./index.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"941c791e\", content, true, {});","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".vue-tooltip[data-v-e1f55ce]{position:absolute;z-index:100000;right:auto;left:auto;display:block;margin:0;margin-top:-3px;padding:10px 0;text-align:left;text-align:start;white-space:normal;text-decoration:none;letter-spacing:normal;word-spacing:normal;text-transform:none;word-wrap:normal;word-break:normal;opacity:0;text-shadow:none;font-family:'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;font-size:12px;font-weight:normal;font-style:normal;line-height:1.6;line-break:auto;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.vue-tooltip[data-v-e1f55ce][x-placement^='top'] .tooltip-arrow{bottom:0;margin-top:0;margin-bottom:0;border-width:10px 10px 0 10px;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-e1f55ce][x-placement^='bottom'] .tooltip-arrow{top:0;margin-top:0;margin-bottom:0;border-width:0 10px 10px 10px;border-top-color:transparent;border-right-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-e1f55ce][x-placement^='right'] .tooltip-arrow{right:100%;margin-right:0;margin-left:0;border-width:10px 10px 10px 0;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-e1f55ce][x-placement^='left'] .tooltip-arrow{left:100%;margin-right:0;margin-left:0;border-width:10px 0 10px 10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent}.vue-tooltip[data-v-e1f55ce][aria-hidden='true']{visibility:hidden;transition:opacity .15s, visibility .15s;opacity:0}.vue-tooltip[data-v-e1f55ce][aria-hidden='false']{visibility:visible;transition:opacity .15s;opacity:1}.vue-tooltip[data-v-e1f55ce] .tooltip-inner{max-width:350px;padding:5px 8px;text-align:center;color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background)}.vue-tooltip[data-v-e1f55ce] .tooltip-arrow{position:absolute;z-index:1;width:0;height:0;margin:0;border-style:solid;border-color:var(--color-main-background)}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isValidSingleAction && !_vm.forceMenu)?_c('element',_vm._b({directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.firstAction.text),expression:\"firstAction.text\",modifiers:{\"auto\":true}}],staticClass:\"action-item action-item--single\",class:[_vm.firstAction.icon, _vm.firstActionClass],attrs:{\"rel\":\"noreferrer noopener\"},on:_vm._d({},[_vm.firstActionEventBinding,_vm.execFirstAction])},'element',_vm.firstActionBinding,false),[_c('span',{attrs:{\"aria-hidden\":true,\"hidden\":\"\"}},[_vm._t(\"default\")],2)]):_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasMultipleActions || _vm.forceMenu),expression:\"hasMultipleActions || forceMenu\"},{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.closeMenu),expression:\"closeMenu\"}],staticClass:\"action-item\",class:{'action-item--open': _vm.opened},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();return _vm.focusPreviousAction($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();return _vm.focusNextAction($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }if(!$event.shiftKey){ return null; }$event.preventDefault();return _vm.focusPreviousAction($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"page-up\",undefined,$event.key,undefined)){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();return _vm.focusFirstAction($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"page-down\",undefined,$event.key,undefined)){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();return _vm.focusLastAction($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();return _vm.closeMenu($event)}]}},[_c('a',{staticClass:\"icon action-item__menutoggle\",class:_vm.defaultIcon,attrs:{\"href\":\"#\",\"aria-label\":_vm.ariaLabel,\"aria-haspopup\":\"true\",\"aria-controls\":_vm.randomId,\"aria-expanded\":_vm.opened},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMenu($event)},\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();return _vm.toggleMenu($event)}}}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.opened),expression:\"opened\"}],ref:\"menu\",staticClass:\"action-item__menu\",class:[(\"menu-\" + _vm.menuAlign), { 'open': _vm.opened }],style:({marginRight: (_vm.offsetX + \"px\"), marginTop: (_vm.offsetY + \"px\")}),attrs:{\"tabindex\":\"-1\"},on:{\"mousemove\":_vm.onMouseFocusAction}},[_c('div',{staticClass:\"action-item__menu_arrow\",style:({ transform: (\"translateX(\" + _vm.offsetX + \"px) translateY(\" + _vm.offsetYArrow + \"px) \" + (_vm.rotateArrow ? ' rotate(180deg)' : '')) })}),_vm._v(\" \"),_c('ul',{attrs:{\"id\":_vm.randomId,\"tabindex\":\"-1\"}},[(_vm.opened)?[_vm._t(\"default\")]:_vm._e()],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * Check if an element is out of the viewport\n * (c) 2018 Chris Ferdinandi, MIT License, https://gomakethings.com\n * @param {Node} elem The element to check\n * @return {Object} A set of booleans for each side of the element\n */\nconst isOutOfViewport = function(elem) {\n\t// Get element's bounding\n\tconst bounding = elem.getBoundingClientRect()\n\tconst contentHeight = document.documentElement.clientHeight\n\tconst contentWidth = document.documentElement.clientWidth\n\n\t// Check if it's out of the viewport on each side\n\tconst out = Object.assign({})\n\tout.top = bounding.top < 0\n\tout.left = bounding.left < 0\n\tout.bottom = bounding.bottom > contentHeight\n\tout.right = bounding.right > contentWidth\n\tout.any = out.top || out.left || out.bottom || out.right\n\tout.all = out.top && out.left && out.bottom && out.right\n\n\tout.offsetY = out.top\n\t\t? bounding.top\n\t\t: out.bottom\n\t\t\t? bounding.bottom - contentHeight\n\t\t\t: 0\n\tout.offsetX = out.left\n\t\t? bounding.left\n\t\t: out.right\n\t\t\t? bounding.right - contentWidth\n\t\t\t: 0\n\n\treturn out\n}\n\nexport default isOutOfViewport\n","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n - @author Marco Ambrosini <marcoambrosini@pm.me\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<!-- Accessibility guidelines:\nhttps://www.w3.org/TR/wai-aria-practices/examples/menu-button/menu-button-actions.html -->\n\n<docs>\n### Single action\n\n```\n<Actions>\n\t<ActionButton icon=\"icon-delete\" @click=\"alert('Delete')\">Delete</ActionButton>\n</Actions>\n```\n\n### Multiple actions\n\n```\n<Actions>\n\t<ActionButton icon=\"icon-edit\" @click=\"alert('Edit')\">Edit</ActionButton>\n\t<ActionButton icon=\"icon-delete\" @click=\"alert('Delete')\">Delete</ActionButton>\n\t<ActionLink icon=\"icon-external\" title=\"Link\" href=\"https://nextcloud.com\" />\n</Actions>\n```\n\n### Multiple actions with custom icon\n\n```\n<Actions default-icon=\"icon-edit\">\n\t<ActionButton icon=\"icon-edit\" @click=\"alert('Edit')\">Edit</ActionButton>\n\t<ActionButton icon=\"icon-delete\" @click=\"alert('Delete')\">Delete</ActionButton>\n\t<ActionLink icon=\"icon-external\" title=\"Link\" href=\"https://nextcloud.com\" />\n</Actions>\n```\n</docs>\n<template>\n\t<!-- if only one action, check if we need to bind to click or not -->\n\t<element v-if=\"isValidSingleAction && !forceMenu\"\n\t\tv-tooltip.auto=\"firstAction.text\"\n\t\tv-bind=\"firstActionBinding\"\n\t\t:class=\"[firstAction.icon, firstActionClass]\"\n\t\tclass=\"action-item action-item--single\"\n\t\trel=\"noreferrer noopener\"\n\t\t@[firstActionEventBinding]=\"execFirstAction\">\n\t\t<!-- fake slot to gather main action -->\n\t\t<span :aria-hidden=\"true\" hidden>\n\t\t\t<!-- @slot All action elements passed into the default slot will be used -->\n\t\t\t<slot />\n\t\t</span>\n\t</element>\n\n\t<!-- more than one action -->\n\t<div v-else\n\t\tv-show=\"hasMultipleActions || forceMenu\"\n\t\tv-click-outside=\"closeMenu\"\n\t\t:class=\"{'action-item--open': opened}\"\n\t\tclass=\"action-item\"\n\t\t@keydown.up.exact.prevent=\"focusPreviousAction\"\n\t\t@keydown.down.exact.prevent=\"focusNextAction\"\n\t\t@keydown.shift.tab.prevent=\"focusPreviousAction\"\n\t\t@keydown.page-up.exact.prevent=\"focusFirstAction\"\n\t\t@keydown.page-down.exact.prevent=\"focusLastAction\"\n\t\t@keydown.esc.exact.prevent=\"closeMenu\">\n\t\t<!-- If more than one action, create a popovermenu -->\n\t\t<a class=\"icon action-item__menutoggle\"\n\t\t\t:class=\"defaultIcon\"\n\t\t\thref=\"#\"\n\t\t\t:aria-label=\"ariaLabel\"\n\t\t\taria-haspopup=\"true\"\n\t\t\t:aria-controls=\"randomId\"\n\t\t\t:aria-expanded=\"opened\"\n\t\t\t@click.prevent=\"toggleMenu\"\n\t\t\t@keydown.space.exact.prevent=\"toggleMenu\" />\n\t\t<div v-show=\"opened\"\n\t\t\tref=\"menu\"\n\t\t\t:class=\"[`menu-${menuAlign}`, { 'open': opened }]\"\n\t\t\t:style=\"{marginRight: `${ offsetX }px`, marginTop: `${ offsetY }px`}\"\n\t\t\tclass=\"action-item__menu\"\n\t\t\ttabindex=\"-1\"\n\t\t\t@mousemove=\"onMouseFocusAction\">\n\t\t\t<!-- arrow -->\n\t\t\t<div class=\"action-item__menu_arrow\"\n\t\t\t\t:style=\"{ transform: `translateX(${ offsetX }px) translateY(${ offsetYArrow }px) ${ rotateArrow ? ' rotate(180deg)' : ''}` }\" />\n\n\t\t\t<!-- menu content -->\n\t\t\t<ul :id=\"randomId\" tabindex=\"-1\">\n\t\t\t\t<template v-if=\"opened\">\n\t\t\t\t\t<slot />\n\t\t\t\t</template>\n\t\t\t</ul>\n\t\t</div>\n\t</div>\n</template>\n<script>\nimport { directive as ClickOutside } from 'v-click-outside'\nimport Tooltip from '../../directives/Tooltip'\nimport GenRandomId from '../../utils/GenRandomId'\nimport IsOutOfViewport from '../../utils/IsOutOfViewport'\nimport ValidateSlot from '../../utils/ValidateSlot'\nimport { t } from '../../l10n'\n\n// This is the list of ALL the ALLOWED components\n// in the default SLOT\nconst allowedChildren = [\n\t'ActionButton',\n\t'ActionCheckbox',\n\t'ActionInput',\n\t'ActionLink',\n\t'ActionRadio',\n\t'ActionRouter',\n\t'ActionSeparator',\n\t'ActionText',\n\t'ActionTextEditable',\n]\n\nconst focusableSelector = '.focusable'\n\n/**\n * The Actions component can be used to display one ore more actions.\n * If only a single action is provided, it will be rendered as an inline icon.\n * For more, a menu indicator will be shown and a popovermenu containing the\n * actions will be opened on click.\n *\n * @since 0.10.0\n */\nexport default {\n\tname: 'Actions',\n\n\tdirectives: {\n\t\tClickOutside,\n\t\ttooltip: Tooltip,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Specify the open state of the popover menu\n\t\t */\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Force the actions to display in a three dot menu\n\t\t */\n\t\tforceMenu: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Specify the position of the popovermenu\n\t\t * `left`, `center` or `right`\n\t\t */\n\t\tmenuAlign: {\n\t\t\ttype: String,\n\t\t\tdefault: 'center',\n\t\t\tvalidator: align => {\n\t\t\t\treturn ['left', 'center', 'right'].indexOf(align) > -1\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Icon to show for the toggle menu button\n\t\t * when more than one action is inside the actions component.\n\t\t * Only replace the default three-dot icon if really necessary.\n\t\t */\n\t\tdefaultIcon: {\n\t\t\ttype: String,\n\t\t\tdefault: 'action-item__menutoggle--default-icon',\n\t\t},\n\t\t/**\n\t\t * Aria label for the actions menu\n\t\t */\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Actions'),\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tactions: [],\n\t\t\topened: this.open,\n\t\t\tfocusIndex: 0,\n\t\t\trandomId: 'menu-' + GenRandomId(),\n\t\t\toffsetX: 0,\n\t\t\toffsetY: 0,\n\t\t\toffsetYArrow: 0,\n\t\t\trotateArrow: false,\n\t\t\t// Making children reactive!\n\t\t\t// By binding this here, vuejs will track the object content\n\t\t\t// Needed for firstAction reactivity !!!\n\t\t\tchildren: this.$children,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is there more than one action?\n\t\t * @returns {boolean}\n\t\t */\n\t\thasMultipleActions() {\n\t\t\treturn this.actions.length > 1\n\t\t},\n\t\t/**\n\t\t * Is there any first action ?\n\t\t * And is it allowed as a standalone element ?\n\t\t * @returns {boolean}\n\t\t */\n\t\tisValidSingleAction() {\n\t\t\treturn this.actions.length === 1\n\t\t\t\t&& this.firstActionElement !== null\n\t\t},\n\t\t/**\n\t\t * First action vnode\n\t\t * @returns {Object} return the first action vue vnode\n\t\t */\n\t\tfirstActionVNode() {\n\t\t\treturn this.actions[0]\n\t\t},\n\t\t/**\n\t\t * Reactive binding to the first children\n\t\t * Since we're here, it means we already passed all the proper checks\n\t\t * we can assume the first action is the first children too\n\t\t * @returns {Object} first action vue children object\n\t\t */\n\t\tfirstAction() {\n\t\t\treturn this.children[0]\n\t\t\t\t? this.children[0]\n\t\t\t\t: {}\n\t\t},\n\n\t\t/**\n\t\t * Binding of the first action to the template\n\t\t * @returns {Object} vue template v-bind shortcut\n\t\t */\n\t\tfirstActionBinding() {\n\t\t\tif (this.firstActionVNode && this.firstActionVNode.componentOptions) {\n\t\t\t\tconst tag = this.firstActionVNode.componentOptions.tag\n\t\t\t\tif (tag === 'ActionLink') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tis: 'a',\n\t\t\t\t\t\thref: this.firstAction.href,\n\t\t\t\t\t\ttarget: this.firstAction.target,\n\t\t\t\t\t\t'aria-label': this.firstAction.ariaLabel,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (tag === 'ActionRouter') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tis: 'router-link',\n\t\t\t\t\t\tto: this.firstAction.to,\n\t\t\t\t\t\texact: this.firstAction.exact,\n\t\t\t\t\t\t'aria-label': this.firstAction.ariaLabel,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (tag === 'ActionButton') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tis: 'button',\n\t\t\t\t\t\t'aria-label': this.firstAction.ariaLabel,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// other action types are not allowed as standalone buttons\n\t\t\treturn null\n\t\t},\n\n\t\t// return the event to bind if the firstActionVNode have an action\n\t\tfirstActionEvent() {\n\t\t\treturn this.firstActionVNode\n\t\t\t\t&& this.firstActionVNode.componentOptions\n\t\t\t\t&& this.firstActionVNode.componentOptions.listeners\n\t\t\t\t&& this.firstActionVNode.componentOptions.listeners.click\n\t\t},\n\t\tfirstActionEventBinding() {\n\t\t\treturn this.firstActionEvent ? 'click' : null\n\t\t},\n\t\tfirstActionClass() {\n\t\t\tconst staticClass = this.firstActionVNode && this.firstActionVNode.data.staticClass\n\t\t\tconst dynClass = this.firstActionVNode && this.firstActionVNode.data.class\n\t\t\treturn `${staticClass} ${dynClass}`\n\t\t},\n\t},\n\n\twatch: {\n\t\topen(newVal) {\n\t\t\tthis.opened = newVal\n\t\t\tif (this.opened) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.onOpen()\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t},\n\tbeforeMount() {\n\t\t// init actions\n\t\tthis.initActions()\n\n\t\t// filter invalid menu items\n\t\tValidateSlot(this.$slots.default, allowedChildren, this)\n\t},\n\tbeforeUpdate() {\n\t\t// ! since we're using $slots to manage our actions\n\t\t// ! we NEED to update the actions if anything change\n\n\t\t// update children & actions\n\t\t// no need to init actions again since we bound it to $children\n\t\t// and the array is now reactive\n\t\t// init actions\n\t\tthis.initActions()\n\t\tValidateSlot(this.$slots.default, allowedChildren, this)\n\t},\n\n\tmethods: {\n\t\t// MENU STATE MANAGEMENT\n\t\ttoggleMenu(e) {\n\t\t\tthis.opened = !this.opened\n\t\t\t// focus first on menu open after opening the menu\n\t\t\tif (this.opened) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.onOpen()\n\t\t\t\t\tthis.focusFirstAction()\n\t\t\t\t})\n\t\t\t\t/**\n\t\t\t\t * Event emitted when the popover menu is opened\n\t\t\t\t * @type {null}\n\t\t\t\t */\n\t\t\t\tthis.$emit('open', e)\n\t\t\t} else {\n\t\t\t\tthis.offsetX = 0\n\t\t\t\tthis.offsetY = 0\n\t\t\t\tthis.offsetYArrow = 0\n\t\t\t\tthis.rotateArrow = false\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Event emitted when the popover menu open state is changed\n\t\t\t * @type {bool}\n\t\t\t */\n\t\t\tthis.$emit('update:open', this.opened)\n\t\t},\n\t\tcloseMenu(e) {\n\t\t\t/**\n\t\t\t * only emit events if it was opened\n\t\t\t * or else any click on the page will trigger\n\t\t\t * the click outside directive!\n\t\t\t */\n\t\t\tif (this.opened) {\n\t\t\t\t/**\n\t\t\t\t * Event emitted when the popover menu open state is changed\n\t\t\t\t * @type {bool}\n\t\t\t\t */\n\t\t\t\tthis.$emit('update:open', false)\n\t\t\t\t/**\n\t\t\t\t * Event emitted when the popover menu is closed\n\t\t\t\t * @type {null}\n\t\t\t\t */\n\t\t\t\tthis.$emit('close', e)\n\n\t\t\t}\n\n\t\t\t// close everything\n\t\t\tthis.opened = false\n\t\t\tthis.offsetX = 0\n\t\t\tthis.offsetY = 0\n\t\t\tthis.offsetYArrow = 0\n\t\t\tthis.rotateArrow = false\n\t\t},\n\n\t\t/**\n\t\t * Run when the user open the menu\n\t\t * if align=center, we automatically\n\t\t * shift the popup if it's out of bound\n\t\t */\n\t\tonOpen() {\n\t\t\tthis.offsetX = 0\n\t\t\tthis.offsetY = 0\n\t\t\tthis.offsetYArrow = 0\n\t\t\tthis.rotateArrow = false\n\t\t\tif (this.menuAlign === 'center') {\n\t\t\t\tconst isOut = IsOutOfViewport(this.$refs.menu)\n\t\t\t\tif (isOut.left || isOut.right) {\n\t\t\t\t\tthis.offsetX = isOut.offsetX > 0\n\t\t\t\t\t\t? Math.round(isOut.offsetX) + 5\n\t\t\t\t\t\t: Math.round(isOut.offsetX) - 5\n\t\t\t\t}\n\t\t\t\tif (isOut.bottom) {\n\t\t\t\t\tthis.offsetY = 0 - Math.round(this.$refs.menu.clientHeight) - 42\n\t\t\t\t\tthis.offsetYArrow = Math.round(this.$refs.menu.clientHeight) + 18\n\t\t\t\t\tthis.rotateArrow = true\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// MENU KEYS & FOCUS MANAGEMENT\n\t\t// focus nearest focusable item on mouse move\n\t\t// DO NOT change the focus if the target is already focused\n\t\t// this will prevent issues with input being unfocused\n\t\t// on mouse move\n\t\tonMouseFocusAction(event) {\n\t\t\tif (document.activeElement === event.target) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst menuItem = event.target.closest('li')\n\t\t\tif (menuItem) {\n\t\t\t\tconst focusableItem = menuItem.querySelector(focusableSelector)\n\t\t\t\tif (focusableItem) {\n\t\t\t\t\tconst focusList = this.$refs.menu.querySelectorAll(focusableSelector)\n\t\t\t\t\tconst focusIndex = Array.prototype.indexOf.call(focusList, focusableItem)\n\t\t\t\t\tif (focusIndex > -1) {\n\t\t\t\t\t\tthis.focusIndex = focusIndex\n\t\t\t\t\t\tthis.focusAction()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tremoveCurrentActive() {\n\t\t\tconst currentActiveElement = this.$refs.menu.querySelector('li.active')\n\t\t\tif (currentActiveElement) {\n\t\t\t\tcurrentActiveElement.classList.remove('active')\n\t\t\t}\n\t\t},\n\t\tfocusAction() {\n\t\t\t// TODO: have a global disabled state for non input elements\n\t\t\tconst focusElement = this.$refs.menu.querySelectorAll(focusableSelector)[this.focusIndex]\n\t\t\tif (focusElement) {\n\t\t\t\tconst liMenuParent = focusElement.closest('li')\n\t\t\t\tfocusElement.focus()\n\t\t\t\tif (liMenuParent) {\n\t\t\t\t\tthis.removeCurrentActive()\n\t\t\t\t\tliMenuParent.classList.add('active')\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tfocusPreviousAction() {\n\t\t\tthis.focusIndex = Math.max(this.focusIndex - 1, 0)\n\t\t\tthis.focusAction()\n\t\t},\n\t\tfocusNextAction() {\n\t\t\tthis.focusIndex = Math.min(this.focusIndex + 1, this.$refs.menu.querySelectorAll(focusableSelector).length - 1)\n\t\t\tthis.focusAction()\n\t\t},\n\t\tfocusFirstAction() {\n\t\t\tthis.focusIndex = 0\n\t\t\tthis.focusAction()\n\t\t},\n\t\tfocusLastAction() {\n\t\t\tthis.focusIndex = this.$el.querySelectorAll(focusableSelector).length - 1\n\t\t\tthis.focusAction()\n\t\t},\n\n\t\t// ACTIONS MANAGEMENT\n\t\t// exec the first action\n\t\texecFirstAction(event) {\n\t\t\tif (this.firstActionEvent) {\n\t\t\t\tthis.firstActionEvent(event)\n\t\t\t}\n\t\t},\n\t\tinitActions() {\n\t\t\t// filter out invalid slots\n\t\t\tthis.actions = (this.$slots.default || []).filter(node => !!node && !!node.componentOptions)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import '../../fonts/scss/iconfont-vue';\n\n// arrow distance to the border\n$arrow-margin: ($clickable-area - 2 * $arrow-width) / 2;\n\n.action-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\n\t// put a grey round background when menu is opened\n\t// or hover-focused\n\t&--single:hover,\n\t&--single:focus,\n\t&--single:active,\n\t&__menutoggle:hover,\n\t&__menutoggle:focus,\n\t&__menutoggle:active{\n\t\tborder-radius: $clickable-area / 2;\n\t\t// good looking on dark AND white bg\n\t\tbackground-color: $icon-focus-bg !important; // override default server\n\t\topacity: $opacity_full;\n\t}\n\n\t&.action-item--open .action-item__menutoggle {\n\t\topacity: $opacity_full;\n\t\tborder-radius: $clickable-area / 2;\n\t\tbackground-color: $action-background-hover;\n\t}\n\n\t// icons\n\t&--single,\n\t&__menutoggle {\n\t\tbox-sizing: border-box;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\tmargin: 0;\n\t\tpadding: $icon-margin;\n\n\t\tcursor: pointer;\n\n\t\tborder: none;\n\t\tbackground-color: transparent;\n\t}\n\n\t// icon-more\n\t&__menutoggle {\n\t\t// align menu icon in center\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\topacity: $opacity_normal;\n\n\t\t&:before {\n\t\t\tcontent: '';\n\t\t}\n\n\t\t&--default-icon {\n\t\t\tfont-size: $icon-size;\n\t\t\t@include iconfont('more');\n\t\t}\n\t}\n\n\t&--single {\n\t\topacity: $opacity_normal;\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\topacity: $opacity_full;\n\t\t}\n\t\t// hide anything the slot is displaying\n\t\t& > [hidden] {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t// properly position the menu\n\t&--multiple {\n\t\tposition: relative;\n\t}\n\n\t&__menu {\n\t\tposition: absolute;\n\t\tz-index: 110;\n\t\tright: 50%;\n\n\t\tdisplay: none;\n\n\t\t// make sure to not have the menu right\n\t\t// on the edge of the window\n\t\tmargin-bottom: 10px;\n\t\tmargin-top: -5px;\n\n\t\ttransform: translateX(50%);\n\n\t\tcolor: var(--color-main-text);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\n\t\tfilter: drop-shadow(0 1px 3px var(--color-box-shadow));\n\n\t\t// only allow li elements in the popovermenu\n\t\tul > :not(li) {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&.open {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t/* Arrow */\n\t\t.action-item__menu_arrow {\n\t\t\tposition: absolute;\n\t\t\tright: 50%;\n\t\t\tbottom: 100%;\n\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t\tmargin-right: - $arrow-width;\n\n\t\t\tcontent: ' ';\n\t\t\tpointer-events: none;\n\n\t\t\t/* change this to adjust the arrow position */\n\t\t\tborder: solid transparent;\n\t\t\tborder-width: $arrow-width;\n\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t}\n\n\t\t/* Align the popover to the right */\n\t\t&.menu-right {\n\t\t\tright: 0;\n\t\t\tleft: auto;\n\t\t\ttransform: none;\n\t\t\t.action-item__menu_arrow {\n\t\t\t\t// align to menu icon padding\n\t\t\t\tright: $arrow-margin;\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\t\t}\n\n\t\t/* Align the popover to the left */\n\t\t&.menu-left {\n\t\t\tright: auto;\n\t\t\tleft: 0;\n\t\t\ttransform: none;\n\t\t\t.action-item__menu_arrow {\n\t\t\t\tright: auto;\n\t\t\t\t// align to menu icon padding\n\t\t\t\tleft: $arrow-margin;\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ie,\n.edge {\n\t.action-item__menu,\n\t.action-item__menu .action-item__menu_arrow {\n\t\tborder: 1px solid var(--color-border);\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Actions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Actions.vue?vue&type=script&lang=js&\"","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst ScopeComponent = (Component) => {\n\t// Init mounted vue if none\n\tif (!Component.mounted) {\n\t\tComponent.mounted = []\n\t} else if (!Array.isArray(Component.mounted)) {\n\t\tComponent.mounted = [Component.mounted]\n\t}\n\n\t// Inject root scoping function\n\tComponent.mounted.push(function() {\n\t\tthis.$el.setAttribute(`data-v-${SCOPE_VERSION}`, '')\n\t})\n}\n\nexport default ScopeComponent\n","module.exports = require(\"core-js/modules/es.array.filter\");","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionButton.vue?vue&type=style&index=0&id=33ba3302&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"75b9f902\", content, true, {});","module.exports = require(\"vue\");","import { getGettextBuilder } from '@nextcloud/l10n/dist/gettext'\n\nconst gtBuilder = getGettextBuilder()\n\t.detectLocale()\nTRANSLATIONS.map(data => gtBuilder.addTranslation(data.locale, data.json))\nconst gt = gtBuilder.build()\n\nconst n = gt.ngettext.bind(gt)\nconst t = gt.gettext.bind(gt)\n\nexport { t, n }\n","module.exports = require(\"core-js/modules/es.object.assign\");","module.exports = require(\"core-js/modules/es.array.splice\");","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Actions.vue?vue&type=style&index=0&id=7b368b0c&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Actions.vue?vue&type=style&index=0&id=7b368b0c&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = require(\"../../fonts/iconfont-vue-e1f55ce.eot\");\nvar ___CSS_LOADER_URL_IMPORT_1___ = require(\"../../fonts/iconfont-vue-e1f55ce.woff\");\nvar ___CSS_LOADER_URL_IMPORT_2___ = require(\"../../fonts/iconfont-vue-e1f55ce.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_3___ = require(\"../../fonts/iconfont-vue-e1f55ce.svg\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\n// Module\nexports.push([module.id, \"@font-face{font-family:\\\"iconfont-vue-e1f55ce\\\";src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"embedded-opentype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"woff\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"truetype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"svg\\\")}.icon[data-v-7b368b0c]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.arrow-left[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.arrow-right-double[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.arrow-right[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.breadcrumb[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.checkmark[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.close[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.confirm[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.info[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.menu[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.more[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.pause[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.play[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.icon.triangle-s[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";content:\\\"\\\"}.action-item[data-v-7b368b0c]{position:relative;display:inline-block}.action-item--single[data-v-7b368b0c]:hover,.action-item--single[data-v-7b368b0c]:focus,.action-item--single[data-v-7b368b0c]:active,.action-item__menutoggle[data-v-7b368b0c]:hover,.action-item__menutoggle[data-v-7b368b0c]:focus,.action-item__menutoggle[data-v-7b368b0c]:active{border-radius:22px;background-color:rgba(127,127,127,0.25) !important;opacity:1}.action-item.action-item--open .action-item__menutoggle[data-v-7b368b0c]{opacity:1;border-radius:22px;background-color:rgba(127,127,127,0.25)}.action-item--single[data-v-7b368b0c],.action-item__menutoggle[data-v-7b368b0c]{box-sizing:border-box;width:44px;height:44px;margin:0;padding:14px;cursor:pointer;border:none;background-color:transparent}.action-item__menutoggle[data-v-7b368b0c]{display:flex;align-items:center;justify-content:center;opacity:.7}.action-item__menutoggle[data-v-7b368b0c]:before{content:''}.action-item__menutoggle--default-icon[data-v-7b368b0c]{font-size:16px}.action-item__menutoggle--default-icon[data-v-7b368b0c]:before{font-family:\\\"iconfont-vue-e1f55ce\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.action-item--single[data-v-7b368b0c]{opacity:.7}.action-item--single[data-v-7b368b0c]:hover,.action-item--single[data-v-7b368b0c]:focus,.action-item--single[data-v-7b368b0c]:active{opacity:1}.action-item--single>[hidden][data-v-7b368b0c]{display:none}.action-item--multiple[data-v-7b368b0c]{position:relative}.action-item__menu[data-v-7b368b0c]{position:absolute;z-index:110;right:50%;display:none;margin-bottom:10px;margin-top:-5px;transform:translateX(50%);color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 3px var(--color-box-shadow))}.action-item__menu ul[data-v-7b368b0c]>:not(li){display:none}.action-item__menu.open[data-v-7b368b0c]{display:block}.action-item__menu .action-item__menu_arrow[data-v-7b368b0c]{position:absolute;right:50%;bottom:100%;width:0;height:0;margin-right:-9px;content:' ';pointer-events:none;border:solid transparent;border-width:9px;border-bottom-color:var(--color-main-background)}.action-item__menu.menu-right[data-v-7b368b0c]{right:0;left:auto;transform:none}.action-item__menu.menu-right .action-item__menu_arrow[data-v-7b368b0c]{right:13px;margin-right:0}.action-item__menu.menu-left[data-v-7b368b0c]{right:auto;left:0;transform:none}.action-item__menu.menu-left .action-item__menu_arrow[data-v-7b368b0c]{right:auto;left:13px;margin-right:0}.ie .action-item__menu[data-v-7b368b0c],.ie .action-item__menu .action-item__menu_arrow[data-v-7b368b0c],.edge .action-item__menu[data-v-7b368b0c],.edge .action-item__menu .action-item__menu_arrow[data-v-7b368b0c]{border:1px solid var(--color-border)}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== 'string') {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n'), \"\\\"\");\n }\n\n return url;\n};","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:{ 'action--disabled': _vm.disabled }},[_c('button',{staticClass:\"action-button\",class:{ focusable: _vm.isFocusable },attrs:{\"aria-label\":_vm.ariaLabel},on:{\"click\":_vm.onClick}},[_c('span',{staticClass:\"action-button__icon\",class:[_vm.isIconUrl ? 'action-button__icon--url' : _vm.icon],style:({ backgroundImage: _vm.isIconUrl ? (\"url(\" + _vm.icon + \")\") : null })}),_vm._v(\" \"),(_vm.title)?_c('p',[_c('strong',{staticClass:\"action-button__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"action-button__longtext\",domProps:{\"textContent\":_vm._s(_vm.text)}})]):(_vm.isLongText)?_c('p',{staticClass:\"action-button__longtext\",domProps:{\"textContent\":_vm._s(_vm.text)}}):_c('span',{staticClass:\"action-button__text\"},[_vm._v(_vm._s(_vm.text))]),_vm._v(\" \"),(false)?_vm._t(\"default\"):_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionButton.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n - @author Marco Ambrosini <marcoambrosini@pm.me>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<docs>\nThis component is made to be used inside of the [Actions](#Actions) component slots.\n\n```vue\n\t<Actions>\n\t\t<ActionButton icon=\"icon-delete\" @click=\"alert('Delete')\">Delete</ActionButton>\n\t\t<ActionButton icon=\"icon-delete\" :close-after-click=\"true\" @click=\"alert('Delete and close menu')\">Delete and close</ActionButton>\n\t\t<ActionButton icon=\"icon-delete\" :disabled=\"true\" @click=\"alert('Disabled')\">Disabled button</ActionButton>\n\t</Actions>\n```\n\nIf you're using a long text you can specify a title\n\n```vue\n\t<Actions>\n\t\t<ActionButton icon=\"icon-add\" @click=\"alert('Add')\">Add new</ActionButton>\n\t\t<ActionButton icon=\"icon-delete\" title=\"Long button\" @click=\"alert('Delete')\">This button is associated with a very long text.\\nAnd with new lines too.</ActionButton>\n\t</Actions>\n```\n</docs>\n\n<template>\n\t<li :class=\"{ 'action--disabled': disabled }\">\n\t\t<button\n\t\t\tclass=\"action-button\"\n\t\t\t:aria-label=\"ariaLabel\"\n\t\t\t:class=\"{ focusable: isFocusable }\"\n\t\t\t@click=\"onClick\">\n\t\t\t<!-- icon -->\n\t\t\t<span :class=\"[isIconUrl ? 'action-button__icon--url' : icon]\"\n\t\t\t\t:style=\"{ backgroundImage: isIconUrl ? `url(${icon})` : null }\"\n\t\t\t\tclass=\"action-button__icon\" />\n\n\t\t\t<!-- long text with title -->\n\t\t\t<p v-if=\"title\">\n\t\t\t\t<strong class=\"action-button__title\">\n\t\t\t\t\t{{ title }}\n\t\t\t\t</strong>\n\t\t\t\t<br>\n\t\t\t\t<!-- white space is shown on longtext, so we can't\n\t\t\t\t\tput {{ text }} on a new line for code readability -->\n\t\t\t\t<span class=\"action-button__longtext\" v-text=\"text\" />\n\t\t\t</p>\n\n\t\t\t<!-- long text only -->\n\t\t\t<!-- white space is shown on longtext, so we can't\n\t\t\t\tput {{ text }} on a new line for code readability -->\n\t\t\t<p v-else-if=\"isLongText\"\n\t\t\t\tclass=\"action-button__longtext\"\n\t\t\t\tv-text=\"text\" />\n\n\t\t\t<!-- default text display -->\n\t\t\t<span v-else class=\"action-button__text\">{{ text }}</span>\n\n\t\t\t<!-- fake slot to gather inner text -->\n\t\t\t<slot v-if=\"false\" />\n\t\t</button>\n\t</li>\n</template>\n\n<script>\nimport ActionTextMixin from '../../mixins/actionText'\n\n/**\n * Button component to be used in Actions\n*/\nexport default {\n\tname: 'ActionButton',\n\n\tmixins: [ActionTextMixin],\n\n\tprops: {\n\t\t/**\n\t\t * disabled state of the action button\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * determines if the action is focusable\n\t\t * @returns {boolean} is the action focusable ?\n\t\t */\n\t\tisFocusable: function() {\n\t\t\treturn !this.disabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import '../../assets/action';\n@include action-active;\n@include action--disabled;\n@include action-item('button');\n</style>\n","export default \"data:application/vnd.ms-fontobject;base64,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\"","module.exports = require(\"hammerjs\");","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport ActionButton from './ActionButton'\n\nexport default ActionButton\n","export default \"data:font/woff;base64,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DDUAAgAACQIE4gTiBOIMNfseBOAAAQAAAAEAAEB6caFfDzz1AAsTiAAAAADasyhOAAAAANpiTE///wAAE5MTiAAAAAgAAgAAAAAAAAABAAATiAAAAAATiP////UTkwABAAAAAAAAAAAAAAAAAAAABwAAAAATiAAAE4gAABOIAAATiAAABjYAABOIAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAiADYAWABsAIAAlAC0AQ4BfAGaAhACJgI0AkIAAQAAAA8ASwADAAAAAAACAAAACgAKAAAA/wAAAAAAAAAAABAAxgABAAAAAAABABQAAAABAAAAAAACAAcAFAABAAAAAAADABQAGwABAAAAAAAEABQALwABAAAAAAAFAAsAQwABAAAAAAAGABQATgABAAAAAAAKACsAYgABAAAAAAALABMAjQADAAEECQABACgAoAADAAEECQACAA4AyAADAAEECQADACgA1gADAAEECQAEACgA/gADAAEECQAFABYBJgADAAEECQAGACgBPAADAAEECQAKAFYBZAADAAEECQALACYBumljb25mb250LXZ1ZS1lMWY1NWNlUmVndWxhcmljb25mb250LXZ1ZS1lMWY1NWNlaWNvbmZvbnQtdnVlLWUxZjU1Y2VWZXJzaW9uIDEuMGljb25mb250LXZ1ZS1lMWY1NWNlR2VuZXJhdGVkIGJ5IHN2ZzJ0dGYgZnJvbSBGb250ZWxsbyBwcm9qZWN0Lmh0dHA6Ly9mb250ZWxsby5jb20AaQBjAG8AbgBmAG8AbgB0AC0AdgB1AGUALQBlADEAZgA1ADUAYwBlAFIAZQBnAHUAbABhAHIAaQBjAG8AbgBmAG8AbgB0AC0AdgB1AGUALQBlADEAZgA1ADUAYwBlAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0AZQAxAGYANQA1AGMAZQBWAGUAcgBzAGkAbwBuACAAMQAuADAAaQBjAG8AbgBmAG8AbgB0AC0AdgB1AGUALQBlADEAZgA1ADUAYwBlAEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AaAB0AHQAcAA6AC8ALwBmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQAAAAIAAAAAAAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAA8ADwAAAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDxFhcnJvdy1sZWZ0LWRvdWJsZQphcnJvdy1sZWZ0EmFycm93LXJpZ2h0LWRvdWJsZQthcnJvdy1yaWdodApicmVhZGNydW1iCWNoZWNrbWFyawVjbG9zZQdjb25maXJtBGluZm8EbWVudQRtb3JlBXBhdXNlBHBsYXkKdHJpYW5nbGUtcw==\"","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.active)?_c('Modal',{attrs:{\"title\":_vm.fileName},on:{\"close\":_vm.close}},[_c('EditorWrapper',{attrs:{\"file-id\":_vm.fileId,\"relative-path\":_vm.relativePath,\"active\":_vm.active,\"share-token\":_vm.shareToken,\"mime\":_vm.mimeType}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PublicFilesEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PublicFilesEditor.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Modal v-if=\"active\" :title=\"fileName\" @close=\"close\">\n\t\t<EditorWrapper :file-id=\"fileId\"\n\t\t\t:relative-path=\"relativePath\"\n\t\t\t:active=\"active\"\n\t\t\t:share-token=\"shareToken\"\n\t\t\t:mime=\"mimeType\" />\n\t</Modal>\n</template>\n\n<script>\nimport Modal from '@nextcloud/vue/dist/Components/Modal'\n\nexport default {\n\tname: 'PublicFilesEditor',\n\tcomponents: {\n\t\tModal,\n\t\tEditorWrapper: () => import(/* webpackChunkName: \"editor\" */'./EditorWrapper'),\n\t},\n\tprops: {\n\t\tfileId: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\trelativePath: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tshareToken: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tmimeType: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tcomputed: {\n\t\tfileName() {\n\t\t\treturn this.relativePath.substring(this.relativePath.lastIndexOf('/') + 1)\n\t\t},\n\t},\n\tmethods: {\n\t\tclose() {\n\t\t\tthis.active = false\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./PublicFilesEditor.vue?vue&type=template&id=602647cd&\"\nimport script from \"./PublicFilesEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./PublicFilesEditor.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}
\ No newline at end of file |