",""]);var wt=/<|?\w+;/;function xt(t,e,n,r,i){for(var o,a,s,l,u,c,d=e.createDocumentFragment(),h=[],f=0,p=t.length;f-1)i&&i.push(o);else if(u=at(o),a=yt(d.appendChild(o),"script"),u&&bt(a),n)for(c=0;o=a[c++];)gt.test(o.type||"")&&n.push(o);return d}var At=/^key/,Mt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,kt=/^([^.]*)(?:\.(.+)|)/;function Lt(){return!0}function Dt(){return!1}function Tt(t,e){return t===function(){try{return y.activeElement}catch(t){}}()==("focus"===e)}function St(t,e,n,r,i,o){var a,s;if("object"==typeof e){for(s in"string"!=typeof n&&(r=r||n,n=void 0),e)St(t,s,n,r,e[s],o);return t}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Dt;else if(!i)return t;return 1===o&&(a=i,(i=function(t){return A().off(t),a.apply(this,arguments)}).guid=a.guid||(a.guid=A.guid++)),t.each((function(){A.event.add(this,e,i,r,n)}))}function Ct(t,e,n){n?(Q.set(t,e,!1),A.event.add(t,e,{namespace:!1,handler:function(t){var r,i,o=Q.get(this,e);if(1&t.isTrigger&&this[e]){if(o.length)(A.event.special[e]||{}).delegateType&&t.stopPropagation();else if(o=s.call(arguments),Q.set(this,e,o),r=n(this,e),this[e](),o!==(i=Q.get(this,e))||r?Q.set(this,e,!1):i={},o!==i)return t.stopImmediatePropagation(),t.preventDefault(),i.value}else o.length&&(Q.set(this,e,{value:A.event.trigger(A.extend(o[0],A.Event.prototype),o.slice(1),this)}),t.stopImmediatePropagation())}})):void 0===Q.get(t,e)&&A.event.add(t,e,Lt)}A.event={global:{},add:function(t,e,n,r,i){var o,a,s,l,u,c,d,h,f,p,m,_=Q.get(t);if(G(t))for(n.handler&&(n=(o=n).handler,i=o.selector),i&&A.find.matchesSelector(ot,i),n.guid||(n.guid=A.guid++),(l=_.events)||(l=_.events=Object.create(null)),(a=_.handle)||(a=_.handle=function(e){return void 0!==A&&A.event.triggered!==e.type?A.event.dispatch.apply(t,arguments):void 0}),u=(e=(e||"").match(H)||[""]).length;u--;)f=m=(s=kt.exec(e[u])||[])[1],p=(s[2]||"").split(".").sort(),f&&(d=A.event.special[f]||{},f=(i?d.delegateType:d.bindType)||f,d=A.event.special[f]||{},c=A.extend({type:f,origType:m,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&A.expr.match.needsContext.test(i),namespace:p.join(".")},o),(h=l[f])||((h=l[f]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(t,r,p,a)||t.addEventListener&&t.addEventListener(f,a)),d.add&&(d.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?h.splice(h.delegateCount++,0,c):h.push(c),A.event.global[f]=!0)},remove:function(t,e,n,r,i){var o,a,s,l,u,c,d,h,f,p,m,_=Q.hasData(t)&&Q.get(t);if(_&&(l=_.events)){for(u=(e=(e||"").match(H)||[""]).length;u--;)if(f=m=(s=kt.exec(e[u])||[])[1],p=(s[2]||"").split(".").sort(),f){for(d=A.event.special[f]||{},h=l[f=(r?d.delegateType:d.bindType)||f]||[],s=s[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=h.length;o--;)c=h[o],!i&&m!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(h.splice(o,1),c.selector&&h.delegateCount--,d.remove&&d.remove.call(t,c));a&&!h.length&&(d.teardown&&!1!==d.teardown.call(t,p,_.handle)||A.removeEvent(t,f,_.handle),delete l[f])}else for(f in l)A.event.remove(t,f+e[u],n,r,!0);A.isEmptyObject(l)&&Q.remove(t,"handle events")}},dispatch:function(t){var e,n,r,i,o,a,s=new Array(arguments.length),l=A.event.fix(t),u=(Q.get(this,"events")||Object.create(null))[l.type]||[],c=A.event.special[l.type]||{};for(s[0]=l,e=1;e=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==t.type||!0!==u.disabled)){for(o=[],a={},n=0;n-1:A.find(i,this,null,[u]).length),a[i]&&o.push(r);o.length&&s.push({elem:u,handlers:o})}return u=this,l\s*$/g;function jt(t,e){return S(t,"table")&&S(11!==e.nodeType?e:e.firstChild,"tr")&&A(t).children("tbody")[0]||t}function Pt(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function It(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Ht(t,e){var n,r,i,o,a,s;if(1===e.nodeType){if(Q.hasData(t)&&(s=Q.get(t).events))for(i in Q.remove(e,"handle events"),s)for(n=0,r=s[i].length;n1&&"string"==typeof p&&!_.checkClone&&Et.test(p))return t.each((function(i){var o=t.eq(i);m&&(e[0]=p.call(this,i,o.html())),zt(o,e,n,r)}));if(h&&(o=(i=xt(e,t[0].ownerDocument,!1,t,r)).firstChild,1===i.childNodes.length&&(i=o),o||r)){for(s=(a=A.map(yt(i,"script"),Pt)).length;d0&&bt(a,!l&&yt(t,"script")),s},cleanData:function(t){for(var e,n,r,i=A.event.special,o=0;void 0!==(n=t[o]);o++)if(G(n)){if(e=n[Q.expando]){if(e.events)for(r in e.events)i[r]?A.event.remove(n,r):A.removeEvent(n,r,e.handle);n[Q.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),A.fn.extend({detach:function(t){return Bt(this,t,!0)},remove:function(t){return Bt(this,t)},text:function(t){return W(this,(function(t){return void 0===t?A.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)}))}),null,t,arguments.length)},append:function(){return zt(this,arguments,(function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||jt(this,t).appendChild(t)}))},prepend:function(){return zt(this,arguments,(function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=jt(this,t);e.insertBefore(t,e.firstChild)}}))},before:function(){return zt(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this)}))},after:function(){return zt(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)}))},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(A.cleanData(yt(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map((function(){return A.clone(this,t,e)}))},html:function(t){return W(this,(function(t){var e=this[0]||{},n=0,r=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!Yt.test(t)&&!vt[(_t.exec(t)||["",""])[1].toLowerCase()]){t=A.htmlPrefilter(t);try{for(;n3,ot.removeChild(t)),s}}))}();var qt=["Webkit","Moz","ms"],Zt=y.createElement("div").style,Gt={};function Jt(t){var e=A.cssProps[t]||Gt[t];return e||(t in Zt?t:Gt[t]=function(t){for(var e=t[0].toUpperCase()+t.slice(1),n=qt.length;n--;)if((t=qt[n]+e)in Zt)return t}(t)||t)}var Qt=/^(none|table(?!-c[ea]).+)/,Kt=/^--/,Xt={position:"absolute",visibility:"hidden",display:"block"},te={letterSpacing:"0",fontWeight:"400"};function ee(t,e,n){var r=rt.exec(e);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):e}function ne(t,e,n,r,i,o){var a="width"===e?1:0,s=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=A.css(t,n+it[a],!0,i)),r?("content"===n&&(l-=A.css(t,"padding"+it[a],!0,i)),"margin"!==n&&(l-=A.css(t,"border"+it[a]+"Width",!0,i))):(l+=A.css(t,"padding"+it[a],!0,i),"padding"!==n?l+=A.css(t,"border"+it[a]+"Width",!0,i):s+=A.css(t,"border"+it[a]+"Width",!0,i));return!r&&o>=0&&(l+=Math.max(0,Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-o-l-s-.5))||0),l}function re(t,e,n){var r=Rt(t),i=(!_.boxSizingReliable()||n)&&"border-box"===A.css(t,"boxSizing",!1,r),o=i,a=Vt(t,e,r),s="offset"+e[0].toUpperCase()+e.slice(1);if(Ft.test(a)){if(!n)return a;a="auto"}return(!_.boxSizingReliable()&&i||!_.reliableTrDimensions()&&S(t,"tr")||"auto"===a||!parseFloat(a)&&"inline"===A.css(t,"display",!1,r))&&t.getClientRects().length&&(i="border-box"===A.css(t,"boxSizing",!1,r),(o=s in t)&&(a=t[s])),(a=parseFloat(a)||0)+ne(t,e,n||(i?"border":"content"),o,r,a)+"px"}function ie(t,e,n,r,i){return new ie.prototype.init(t,e,n,r,i)}A.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=Vt(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(t,e,n,r){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var i,o,a,s=Z(e),l=Kt.test(e),u=t.style;if(l||(e=Jt(s)),a=A.cssHooks[e]||A.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(t,!1,r))?i:u[e];"string"===(o=typeof n)&&(i=rt.exec(n))&&i[1]&&(n=ut(t,e,i),o="number"),null!=n&&n==n&&("number"!==o||l||(n+=i&&i[3]||(A.cssNumber[s]?"":"px")),_.clearCloneStyle||""!==n||0!==e.indexOf("background")||(u[e]="inherit"),a&&"set"in a&&void 0===(n=a.set(t,n,r))||(l?u.setProperty(e,n):u[e]=n))}},css:function(t,e,n,r){var i,o,a,s=Z(e);return Kt.test(e)||(e=Jt(s)),(a=A.cssHooks[e]||A.cssHooks[s])&&"get"in a&&(i=a.get(t,!0,n)),void 0===i&&(i=Vt(t,e,r)),"normal"===i&&e in te&&(i=te[e]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),A.each(["height","width"],(function(t,e){A.cssHooks[e]={get:function(t,n,r){if(n)return!Qt.test(A.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?re(t,e,r):$t(t,Xt,(function(){return re(t,e,r)}))},set:function(t,n,r){var i,o=Rt(t),a=!_.scrollboxSize()&&"absolute"===o.position,s=(a||r)&&"border-box"===A.css(t,"boxSizing",!1,o),l=r?ne(t,e,r,s,o):0;return s&&a&&(l-=Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-parseFloat(o[e])-ne(t,e,"border",!1,o)-.5)),l&&(i=rt.exec(n))&&"px"!==(i[3]||"px")&&(t.style[e]=n,n=A.css(t,e)),ee(0,n,l)}}})),A.cssHooks.marginLeft=Ut(_.reliableMarginLeft,(function(t,e){if(e)return(parseFloat(Vt(t,"marginLeft"))||t.getBoundingClientRect().left-$t(t,{marginLeft:0},(function(){return t.getBoundingClientRect().left})))+"px"})),A.each({margin:"",padding:"",border:"Width"},(function(t,e){A.cssHooks[t+e]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[t+it[r]+e]=o[r]||o[r-2]||o[0];return i}},"margin"!==t&&(A.cssHooks[t+e].set=ee)})),A.fn.extend({css:function(t,e){return W(this,(function(t,e,n){var r,i,o={},a=0;if(Array.isArray(e)){for(r=Rt(t),i=e.length;a1)}}),A.Tween=ie,ie.prototype={constructor:ie,init:function(t,e,n,r,i,o){this.elem=t,this.prop=n,this.easing=i||A.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=r,this.unit=o||(A.cssNumber[n]?"":"px")},cur:function(){var t=ie.propHooks[this.prop];return t&&t.get?t.get(this):ie.propHooks._default.get(this)},run:function(t){var e,n=ie.propHooks[this.prop];return this.options.duration?this.pos=e=A.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):ie.propHooks._default.set(this),this}},ie.prototype.init.prototype=ie.prototype,ie.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=A.css(t.elem,t.prop,""))&&"auto"!==e?e:0},set:function(t){A.fx.step[t.prop]?A.fx.step[t.prop](t):1!==t.elem.nodeType||!A.cssHooks[t.prop]&&null==t.elem.style[Jt(t.prop)]?t.elem[t.prop]=t.now:A.style(t.elem,t.prop,t.now+t.unit)}}},ie.propHooks.scrollTop=ie.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},A.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},A.fx=ie.prototype.init,A.fx.step={};var oe,ae,se=/^(?:toggle|show|hide)$/,le=/queueHooks$/;function ue(){ae&&(!1===y.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(ue):n.setTimeout(ue,A.fx.interval),A.fx.tick())}function ce(){return n.setTimeout((function(){oe=void 0})),oe=Date.now()}function de(t,e){var n,r=0,i={height:t};for(e=e?1:0;r<4;r+=2-e)i["margin"+(n=it[r])]=i["padding"+n]=t;return e&&(i.opacity=i.width=t),i}function he(t,e,n){for(var r,i=(fe.tweeners[e]||[]).concat(fe.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(t){return this.each((function(){A.removeAttr(this,t)}))}}),A.extend({attr:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===t.getAttribute?A.prop(t,e,n):(1===o&&A.isXMLDoc(t)||(i=A.attrHooks[e.toLowerCase()]||(A.expr.match.bool.test(e)?pe:void 0)),void 0!==n?null===n?void A.removeAttr(t,e):i&&"set"in i&&void 0!==(r=i.set(t,n,e))?r:(t.setAttribute(e,n+""),n):i&&"get"in i&&null!==(r=i.get(t,e))?r:null==(r=A.find.attr(t,e))?void 0:r)},attrHooks:{type:{set:function(t,e){if(!_.radioValue&&"radio"===e&&S(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,r=0,i=e&&e.match(H);if(i&&1===t.nodeType)for(;n=i[r++];)t.removeAttribute(n)}}),pe={set:function(t,e,n){return!1===e?A.removeAttr(t,n):t.setAttribute(n,n),n}},A.each(A.expr.match.bool.source.match(/\w+/g),(function(t,e){var n=me[e]||A.find.attr;me[e]=function(t,e,r){var i,o,a=e.toLowerCase();return r||(o=me[a],me[a]=i,i=null!=n(t,e,r)?a:null,me[a]=o),i}}));var _e=/^(?:input|select|textarea|button)$/i,ge=/^(?:a|area)$/i;function ve(t){return(t.match(H)||[]).join(" ")}function ye(t){return t.getAttribute&&t.getAttribute("class")||""}function be(t){return Array.isArray(t)?t:"string"==typeof t&&t.match(H)||[]}A.fn.extend({prop:function(t,e){return W(this,A.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each((function(){delete this[A.propFix[t]||t]}))}}),A.extend({prop:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&A.isXMLDoc(t)||(e=A.propFix[e]||e,i=A.propHooks[e]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(t,n,e))?r:t[e]=n:i&&"get"in i&&null!==(r=i.get(t,e))?r:t[e]},propHooks:{tabIndex:{get:function(t){var e=A.find.attr(t,"tabindex");return e?parseInt(e,10):_e.test(t.nodeName)||ge.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),_.optSelected||(A.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),A.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){A.propFix[this.toLowerCase()]=this})),A.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,l=0;if(g(t))return this.each((function(e){A(this).addClass(t.call(this,e,ye(this)))}));if((e=be(t)).length)for(;n=this[l++];)if(i=ye(n),r=1===n.nodeType&&" "+ve(i)+" "){for(a=0;o=e[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ve(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,l=0;if(g(t))return this.each((function(e){A(this).removeClass(t.call(this,e,ye(this)))}));if(!arguments.length)return this.attr("class","");if((e=be(t)).length)for(;n=this[l++];)if(i=ye(n),r=1===n.nodeType&&" "+ve(i)+" "){for(a=0;o=e[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");i!==(s=ve(r))&&n.setAttribute("class",s)}return this},toggleClass:function(t,e){var n=typeof t,r="string"===n||Array.isArray(t);return"boolean"==typeof e&&r?e?this.addClass(t):this.removeClass(t):g(t)?this.each((function(n){A(this).toggleClass(t.call(this,n,ye(this),e),e)})):this.each((function(){var e,i,o,a;if(r)for(i=0,o=A(this),a=be(t);e=a[i++];)o.hasClass(e)?o.removeClass(e):o.addClass(e);else void 0!==t&&"boolean"!==n||((e=ye(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===t?"":Q.get(this,"__className__")||""))}))},hasClass:function(t){var e,n,r=0;for(e=" "+t+" ";n=this[r++];)if(1===n.nodeType&&(" "+ve(ye(n))+" ").indexOf(e)>-1)return!0;return!1}});var we=/\r/g;A.fn.extend({val:function(t){var e,n,r,i=this[0];return arguments.length?(r=g(t),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?t.call(this,n,A(this).val()):t)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=A.map(i,(function(t){return null==t?"":t+""}))),(e=A.valHooks[this.type]||A.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,i,"value")||(this.value=i))}))):i?(e=A.valHooks[i.type]||A.valHooks[i.nodeName.toLowerCase()])&&"get"in e&&void 0!==(n=e.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(we,""):null==n?"":n:void 0}}),A.extend({valHooks:{option:{get:function(t){var e=A.find.attr(t,"value");return null!=e?e:ve(A.text(t))}},select:{get:function(t){var e,n,r,i=t.options,o=t.selectedIndex,a="select-one"===t.type,s=a?null:[],l=a?o+1:i.length;for(r=o<0?l:a?o:0;r-1)&&(n=!0);return n||(t.selectedIndex=-1),o}}}}),A.each(["radio","checkbox"],(function(){A.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=A.inArray(A(t).val(),e)>-1}},_.checkOn||(A.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})})),_.focusin="onfocusin"in n;var xe=/^(?:focusinfocus|focusoutblur)$/,Ae=function(t){t.stopPropagation()};A.extend(A.event,{trigger:function(t,e,r,i){var o,a,s,l,u,c,d,h,p=[r||y],m=f.call(t,"type")?t.type:t,_=f.call(t,"namespace")?t.namespace.split("."):[];if(a=h=s=r=r||y,3!==r.nodeType&&8!==r.nodeType&&!xe.test(m+A.event.triggered)&&(m.indexOf(".")>-1&&(_=m.split("."),m=_.shift(),_.sort()),u=m.indexOf(":")<0&&"on"+m,(t=t[A.expando]?t:new A.Event(m,"object"==typeof t&&t)).isTrigger=i?2:3,t.namespace=_.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+_.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),e=null==e?[t]:A.makeArray(e,[t]),d=A.event.special[m]||{},i||!d.trigger||!1!==d.trigger.apply(r,e))){if(!i&&!d.noBubble&&!v(r)){for(l=d.delegateType||m,xe.test(l+m)||(a=a.parentNode);a;a=a.parentNode)p.push(a),s=a;s===(r.ownerDocument||y)&&p.push(s.defaultView||s.parentWindow||n)}for(o=0;(a=p[o++])&&!t.isPropagationStopped();)h=a,t.type=o>1?l:d.bindType||m,(c=(Q.get(a,"events")||Object.create(null))[t.type]&&Q.get(a,"handle"))&&c.apply(a,e),(c=u&&a[u])&&c.apply&&G(a)&&(t.result=c.apply(a,e),!1===t.result&&t.preventDefault());return t.type=m,i||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(p.pop(),e)||!G(r)||u&&g(r[m])&&!v(r)&&((s=r[u])&&(r[u]=null),A.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Ae),r[m](),t.isPropagationStopped()&&h.removeEventListener(m,Ae),A.event.triggered=void 0,s&&(r[u]=s)),t.result}},simulate:function(t,e,n){var r=A.extend(new A.Event,n,{type:t,isSimulated:!0});A.event.trigger(r,null,e)}}),A.fn.extend({trigger:function(t,e){return this.each((function(){A.event.trigger(t,e,this)}))},triggerHandler:function(t,e){var n=this[0];if(n)return A.event.trigger(t,e,n,!0)}}),_.focusin||A.each({focus:"focusin",blur:"focusout"},(function(t,e){var n=function(t){A.event.simulate(e,t.target,A.event.fix(t))};A.event.special[e]={setup:function(){var r=this.ownerDocument||this.document||this,i=Q.access(r,e);i||r.addEventListener(t,n,!0),Q.access(r,e,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=Q.access(r,e)-1;i?Q.access(r,e,i):(r.removeEventListener(t,n,!0),Q.remove(r,e))}}}));var Me=n.location,ke={guid:Date.now()},Le=/\?/;A.parseXML=function(t){var e;if(!t||"string"!=typeof t)return null;try{e=(new n.DOMParser).parseFromString(t,"text/xml")}catch(t){e=void 0}return e&&!e.getElementsByTagName("parsererror").length||A.error("Invalid XML: "+t),e};var De=/\[\]$/,Te=/\r?\n/g,Se=/^(?:submit|button|image|reset|file)$/i,Ce=/^(?:input|select|textarea|keygen)/i;function Ye(t,e,n,r){var i;if(Array.isArray(e))A.each(e,(function(e,i){n||De.test(t)?r(t,i):Ye(t+"["+("object"==typeof i&&null!=i?e:"")+"]",i,n,r)}));else if(n||"object"!==x(e))r(t,e);else for(i in e)Ye(t+"["+i+"]",e[i],n,r)}A.param=function(t,e){var n,r=[],i=function(t,e){var n=g(e)?e():e;r[r.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(null==t)return"";if(Array.isArray(t)||t.jquery&&!A.isPlainObject(t))A.each(t,(function(){i(this.name,this.value)}));else for(n in t)Ye(n,t[n],e,i);return r.join("&")},A.fn.extend({serialize:function(){return A.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var t=A.prop(this,"elements");return t?A.makeArray(t):this})).filter((function(){var t=this.type;return this.name&&!A(this).is(":disabled")&&Ce.test(this.nodeName)&&!Se.test(t)&&(this.checked||!mt.test(t))})).map((function(t,e){var n=A(this).val();return null==n?null:Array.isArray(n)?A.map(n,(function(t){return{name:e.name,value:t.replace(Te,"\r\n")}})):{name:e.name,value:n.replace(Te,"\r\n")}})).get()}});var Ee=/%20/g,Oe=/#.*$/,je=/([?&])_=[^&]*/,Pe=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ie=/^(?:GET|HEAD)$/,He=/^\/\//,Ne={},ze={},Be="*/".concat("*"),Fe=y.createElement("a");function Re(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var r,i=0,o=e.toLowerCase().match(H)||[];if(g(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(t[r]=t[r]||[]).unshift(n)):(t[r]=t[r]||[]).push(n)}}function $e(t,e,n,r){var i={},o=t===ze;function a(s){var l;return i[s]=!0,A.each(t[s]||[],(function(t,s){var u=s(e,n,r);return"string"!=typeof u||o||i[u]?o?!(l=u):void 0:(e.dataTypes.unshift(u),a(u),!1)})),l}return a(e.dataTypes[0])||!i["*"]&&a("*")}function We(t,e){var n,r,i=A.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((i[n]?t:r||(r={}))[n]=e[n]);return r&&A.extend(!0,t,r),t}Fe.href=Me.href,A.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Me.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Me.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Be,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":A.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?We(We(t,A.ajaxSettings),e):We(A.ajaxSettings,t)},ajaxPrefilter:Re(Ne),ajaxTransport:Re(ze),ajax:function(t,e){"object"==typeof t&&(e=t,t=void 0),e=e||{};var r,i,o,a,s,l,u,c,d,h,f=A.ajaxSetup({},e),p=f.context||f,m=f.context&&(p.nodeType||p.jquery)?A(p):A.event,_=A.Deferred(),g=A.Callbacks("once memory"),v=f.statusCode||{},b={},w={},x="canceled",M={readyState:0,getResponseHeader:function(t){var e;if(u){if(!a)for(a={};e=Pe.exec(o);)a[e[1].toLowerCase()+" "]=(a[e[1].toLowerCase()+" "]||[]).concat(e[2]);e=a[t.toLowerCase()+" "]}return null==e?null:e.join(", ")},getAllResponseHeaders:function(){return u?o:null},setRequestHeader:function(t,e){return null==u&&(t=w[t.toLowerCase()]=w[t.toLowerCase()]||t,b[t]=e),this},overrideMimeType:function(t){return null==u&&(f.mimeType=t),this},statusCode:function(t){var e;if(t)if(u)M.always(t[M.status]);else for(e in t)v[e]=[v[e],t[e]];return this},abort:function(t){var e=t||x;return r&&r.abort(e),k(0,e),this}};if(_.promise(M),f.url=((t||f.url||Me.href)+"").replace(He,Me.protocol+"//"),f.type=e.method||e.type||f.method||f.type,f.dataTypes=(f.dataType||"*").toLowerCase().match(H)||[""],null==f.crossDomain){l=y.createElement("a");try{l.href=f.url,l.href=l.href,f.crossDomain=Fe.protocol+"//"+Fe.host!=l.protocol+"//"+l.host}catch(t){f.crossDomain=!0}}if(f.data&&f.processData&&"string"!=typeof f.data&&(f.data=A.param(f.data,f.traditional)),$e(Ne,f,e,M),u)return M;for(d in(c=A.event&&f.global)&&0==A.active++&&A.event.trigger("ajaxStart"),f.type=f.type.toUpperCase(),f.hasContent=!Ie.test(f.type),i=f.url.replace(Oe,""),f.hasContent?f.data&&f.processData&&0===(f.contentType||"").indexOf("application/x-www-form-urlencoded")&&(f.data=f.data.replace(Ee,"+")):(h=f.url.slice(i.length),f.data&&(f.processData||"string"==typeof f.data)&&(i+=(Le.test(i)?"&":"?")+f.data,delete f.data),!1===f.cache&&(i=i.replace(je,"$1"),h=(Le.test(i)?"&":"?")+"_="+ke.guid+++h),f.url=i+h),f.ifModified&&(A.lastModified[i]&&M.setRequestHeader("If-Modified-Since",A.lastModified[i]),A.etag[i]&&M.setRequestHeader("If-None-Match",A.etag[i])),(f.data&&f.hasContent&&!1!==f.contentType||e.contentType)&&M.setRequestHeader("Content-Type",f.contentType),M.setRequestHeader("Accept",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+("*"!==f.dataTypes[0]?", "+Be+"; q=0.01":""):f.accepts["*"]),f.headers)M.setRequestHeader(d,f.headers[d]);if(f.beforeSend&&(!1===f.beforeSend.call(p,M,f)||u))return M.abort();if(x="abort",g.add(f.complete),M.done(f.success),M.fail(f.error),r=$e(ze,f,e,M)){if(M.readyState=1,c&&m.trigger("ajaxSend",[M,f]),u)return M;f.async&&f.timeout>0&&(s=n.setTimeout((function(){M.abort("timeout")}),f.timeout));try{u=!1,r.send(b,k)}catch(t){if(u)throw t;k(-1,t)}}else k(-1,"No Transport");function k(t,e,a,l){var d,h,y,b,w,x=e;u||(u=!0,s&&n.clearTimeout(s),r=void 0,o=l||"",M.readyState=t>0?4:0,d=t>=200&&t<300||304===t,a&&(b=function(t,e,n){for(var r,i,o,a,s=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=t.mimeType||e.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){l.unshift(i);break}if(l[0]in n)o=l[0];else{for(i in n){if(!l[0]||t.converters[i+" "+l[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==l[0]&&l.unshift(o),n[o]}(f,M,a)),!d&&A.inArray("script",f.dataTypes)>-1&&(f.converters["text script"]=function(){}),b=function(t,e,n,r){var i,o,a,s,l,u={},c=t.dataTypes.slice();if(c[1])for(a in t.converters)u[a.toLowerCase()]=t.converters[a];for(o=c.shift();o;)if(t.responseFields[o]&&(n[t.responseFields[o]]=e),!l&&r&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(!(a=u[l+" "+o]||u["* "+o]))for(i in u)if((s=i.split(" "))[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){!0===a?a=u[i]:!0!==u[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&t.throws)e=a(e);else try{e=a(e)}catch(t){return{state:"parsererror",error:a?t:"No conversion from "+l+" to "+o}}}return{state:"success",data:e}}(f,b,M,d),d?(f.ifModified&&((w=M.getResponseHeader("Last-Modified"))&&(A.lastModified[i]=w),(w=M.getResponseHeader("etag"))&&(A.etag[i]=w)),204===t||"HEAD"===f.type?x="nocontent":304===t?x="notmodified":(x=b.state,h=b.data,d=!(y=b.error))):(y=x,!t&&x||(x="error",t<0&&(t=0))),M.status=t,M.statusText=(e||x)+"",d?_.resolveWith(p,[h,x,M]):_.rejectWith(p,[M,x,y]),M.statusCode(v),v=void 0,c&&m.trigger(d?"ajaxSuccess":"ajaxError",[M,f,d?h:y]),g.fireWith(p,[M,x]),c&&(m.trigger("ajaxComplete",[M,f]),--A.active||A.event.trigger("ajaxStop")))}return M},getJSON:function(t,e,n){return A.get(t,e,n,"json")},getScript:function(t,e){return A.get(t,void 0,e,"script")}}),A.each(["get","post"],(function(t,e){A[e]=function(t,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),A.ajax(A.extend({url:t,type:e,dataType:i,data:n,success:r},A.isPlainObject(t)&&t))}})),A.ajaxPrefilter((function(t){var e;for(e in t.headers)"content-type"===e.toLowerCase()&&(t.contentType=t.headers[e]||"")})),A._evalUrl=function(t,e,n){return A.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(t){A.globalEval(t,e,n)}})},A.fn.extend({wrapAll:function(t){var e;return this[0]&&(g(t)&&(t=t.call(this[0])),e=A(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map((function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t})).append(this)),this},wrapInner:function(t){return g(t)?this.each((function(e){A(this).wrapInner(t.call(this,e))})):this.each((function(){var e=A(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)}))},wrap:function(t){var e=g(t);return this.each((function(n){A(this).wrapAll(e?t.call(this,n):t)}))},unwrap:function(t){return this.parent(t).not("body").each((function(){A(this).replaceWith(this.childNodes)})),this}}),A.expr.pseudos.hidden=function(t){return!A.expr.pseudos.visible(t)},A.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},A.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(t){}};var Ve={0:200,1223:204},Ue=A.ajaxSettings.xhr();_.cors=!!Ue&&"withCredentials"in Ue,_.ajax=Ue=!!Ue,A.ajaxTransport((function(t){var e,r;if(_.cors||Ue&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];for(a in t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest"),i)s.setRequestHeader(a,i[a]);e=function(t){return function(){e&&(e=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===t?s.abort():"error"===t?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Ve[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=e(),r=s.onerror=s.ontimeout=e("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout((function(){e&&r()}))},e=e("abort");try{s.send(t.hasContent&&t.data||null)}catch(t){if(e)throw t}},abort:function(){e&&e()}}})),A.ajaxPrefilter((function(t){t.crossDomain&&(t.contents.script=!1)})),A.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return A.globalEval(t),t}}}),A.ajaxPrefilter("script",(function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")})),A.ajaxTransport("script",(function(t){var e,n;if(t.crossDomain||t.scriptAttrs)return{send:function(r,i){e=A("\n\n\n","import { render, staticRenderFns } from \"./VueTypeaheadBootstrapListItem.vue?vue&type=template&id=6230cb76&scoped=true&\"\nimport script from \"./VueTypeaheadBootstrapListItem.vue?vue&type=script&lang=js&\"\nexport * from \"./VueTypeaheadBootstrapListItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VueTypeaheadBootstrapListItem.vue?vue&type=style&index=0&id=6230cb76&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6230cb76\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{class:_vm.textClasses,attrs:{\"tabindex\":\"0\",\"href\":\"#\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }return _vm.$emit('listItemBlur')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.$emit('listItemBlur')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }$event.preventDefault();},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }$event.preventDefault();}],\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }return _vm.$parent.selectNextListItem($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }return _vm.$parent.selectPreviousListItem($event)}],\"blur\":_vm.processFocusOut}},[_c('div',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm.screenReaderText))]),_vm._v(\" \"),_c('div',{attrs:{\"aria-hidden\":\"true\"}},[_vm._t(\"suggestion\",[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.htmlText)}})],null,{ data: _vm.data, htmlText: _vm.htmlText })],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n
\n \n\n\n","import mod from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./VueTypeaheadBootstrapList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./VueTypeaheadBootstrapList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./VueTypeaheadBootstrapList.vue?vue&type=template&id=e64f5270&\"\nimport script from \"./VueTypeaheadBootstrapList.vue?vue&type=script&lang=js&\"\nexport * from \"./VueTypeaheadBootstrapList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"suggestionList\",staticClass:\"list-group shadow\"},_vm._l((_vm.matchedItems),function(item,id){return _c('vue-typeahead-bootstrap-list-item',_vm._g({key:id,attrs:{\"active\":_vm.isListItemActive(id),\"id\":(_vm.isListItemActive(id)) ? (\"selected-option-\" + _vm.vbtUniqueId) : false,\"data\":item.data,\"html-text\":_vm.highlight(item.text),\"role\":\"option\",\"aria-selected\":(_vm.isListItemActive(id)) ? 'true' : 'false',\"screen-reader-text\":item.text,\"disabled\":_vm.isDisabledItem(item),\"background-variant\":_vm.backgroundVariant,\"background-variant-resolver\":_vm.backgroundVariantResolver,\"text-variant\":_vm.textVariant},nativeOn:{\"click\":function($event){return _vm.handleHit(item, $event)}},scopedSlots:_vm._u([{key:\"suggestion\",fn:function(ref){\nvar data = ref.data;\nvar htmlText = ref.htmlText;\nreturn (_vm.$scopedSlots.suggestion)?[_vm._t(\"suggestion\",null,null,{ data: data, htmlText: htmlText })]:undefined}}],null,true)},_vm.$listeners))}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./VueTypeaheadBootstrap.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./VueTypeaheadBootstrap.vue?vue&type=script&lang=js&\"","\n 0) ? 'true' : 'false'\"\n >\n
\n
\n \n {{ prepend }} \n \n
\n
\n
\n \n {{ append }} \n \n
\n
\n
0\"\n :query=\"inputValue\"\n :data=\"formattedData\"\n :background-variant=\"backgroundVariant\"\n :background-variant-resolver=\"backgroundVariantResolver\"\n :text-variant=\"textVariant\"\n :maxMatches=\"maxMatches\"\n :minMatchingChars=\"minMatchingChars\"\n :disableSort=\"disableSort\"\n :showOnFocus=\"showOnFocus\"\n :showAllResults=\"showAllResults\"\n @hit=\"handleHit\"\n @listItemBlur=\"handleChildBlur\"\n :highlightClass='highlightClass'\n :disabledValues=\"disabledValues\"\n :vbtUniqueId=\"id\"\n role=\"listbox\"\n >\n \n \n \n \n \n \n
\n \n\n\n\n\n","import { render, staticRenderFns } from \"./VueTypeaheadBootstrap.vue?vue&type=template&id=dbe69e32&scoped=true&\"\nimport script from \"./VueTypeaheadBootstrap.vue?vue&type=script&lang=js&\"\nexport * from \"./VueTypeaheadBootstrap.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VueTypeaheadBootstrap.vue?vue&type=style&index=0&id=dbe69e32&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dbe69e32\",\n null\n \n)\n\nexport default component.exports","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/*!\n * vue-i18n v8.22.4 \n * (c) 2021 kazuya kawaguchi\n * Released under the MIT License.\n */\n/* */\n\n/**\n * constants\n */\n\nvar numberFormatKeys = [\n 'compactDisplay',\n 'currency',\n 'currencyDisplay',\n 'currencySign',\n 'localeMatcher',\n 'notation',\n 'numberingSystem',\n 'signDisplay',\n 'style',\n 'unit',\n 'unitDisplay',\n 'useGrouping',\n 'minimumIntegerDigits',\n 'minimumFractionDigits',\n 'maximumFractionDigits',\n 'minimumSignificantDigits',\n 'maximumSignificantDigits'\n];\n\n/**\n * utilities\n */\n\nfunction warn (msg, err) {\n if (typeof console !== 'undefined') {\n console.warn('[vue-i18n] ' + msg);\n /* istanbul ignore if */\n if (err) {\n console.warn(err.stack);\n }\n }\n}\n\nfunction error (msg, err) {\n if (typeof console !== 'undefined') {\n console.error('[vue-i18n] ' + msg);\n /* istanbul ignore if */\n if (err) {\n console.error(err.stack);\n }\n }\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isBoolean (val) {\n return typeof val === 'boolean'\n}\n\nfunction isString (val) {\n return typeof val === 'string'\n}\n\nvar toString = Object.prototype.toString;\nvar OBJECT_STRING = '[object Object]';\nfunction isPlainObject (obj) {\n return toString.call(obj) === OBJECT_STRING\n}\n\nfunction isNull (val) {\n return val === null || val === undefined\n}\n\nfunction isFunction (val) {\n return typeof val === 'function'\n}\n\nfunction parseArgs () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var locale = null;\n var params = null;\n if (args.length === 1) {\n if (isObject(args[0]) || isArray(args[0])) {\n params = args[0];\n } else if (typeof args[0] === 'string') {\n locale = args[0];\n }\n } else if (args.length === 2) {\n if (typeof args[0] === 'string') {\n locale = args[0];\n }\n /* istanbul ignore if */\n if (isObject(args[1]) || isArray(args[1])) {\n params = args[1];\n }\n }\n\n return { locale: locale, params: params }\n}\n\nfunction looseClone (obj) {\n return JSON.parse(JSON.stringify(obj))\n}\n\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\nfunction includes (arr, item) {\n return !!~arr.indexOf(item)\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\nfunction merge (target) {\n var arguments$1 = arguments;\n\n var output = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments$1[i];\n if (source !== undefined && source !== null) {\n var key = (void 0);\n for (key in source) {\n if (hasOwn(source, key)) {\n if (isObject(source[key])) {\n output[key] = merge(output[key], source[key]);\n } else {\n output[key] = source[key];\n }\n }\n }\n }\n }\n return output\n}\n\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = isArray(a);\n var isArrayB = isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Sanitizes html special characters from input strings. For mitigating risk of XSS attacks.\n * @param rawText The raw input from the user that should be escaped.\n */\nfunction escapeHtml(rawText) {\n return rawText\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n}\n\n/**\n * Escapes html tags and special symbols from all provided params which were returned from parseArgs().params.\n * This method performs an in-place operation on the params object.\n *\n * @param {any} params Parameters as provided from `parseArgs().params`.\n * May be either an array of strings or a string->any map.\n *\n * @returns The manipulated `params` object.\n */\nfunction escapeParams(params) {\n if(params != null) {\n Object.keys(params).forEach(function (key) {\n if(typeof(params[key]) == 'string') {\n params[key] = escapeHtml(params[key]);\n }\n });\n }\n return params\n}\n\n/* */\n\nfunction extend (Vue) {\n if (!Vue.prototype.hasOwnProperty('$i18n')) {\n // $FlowFixMe\n Object.defineProperty(Vue.prototype, '$i18n', {\n get: function get () { return this._i18n }\n });\n }\n\n Vue.prototype.$t = function (key) {\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n var i18n = this.$i18n;\n return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))\n };\n\n Vue.prototype.$tc = function (key, choice) {\n var values = [], len = arguments.length - 2;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n\n var i18n = this.$i18n;\n return i18n._tc.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this, choice ].concat( values ))\n };\n\n Vue.prototype.$te = function (key, locale) {\n var i18n = this.$i18n;\n return i18n._te(key, i18n.locale, i18n._getMessages(), locale)\n };\n\n Vue.prototype.$d = function (value) {\n var ref;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n return (ref = this.$i18n).d.apply(ref, [ value ].concat( args ))\n };\n\n Vue.prototype.$n = function (value) {\n var ref;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n return (ref = this.$i18n).n.apply(ref, [ value ].concat( args ))\n };\n}\n\n/* */\n\nvar mixin = {\n beforeCreate: function beforeCreate () {\n var options = this.$options;\n options.i18n = options.i18n || (options.__i18n ? {} : null);\n\n if (options.i18n) {\n if (options.i18n instanceof VueI18n) {\n // init locale messages via custom blocks\n if (options.__i18n) {\n try {\n var localeMessages = options.i18n && options.i18n.messages ? options.i18n.messages : {};\n options.__i18n.forEach(function (resource) {\n localeMessages = merge(localeMessages, JSON.parse(resource));\n });\n Object.keys(localeMessages).forEach(function (locale) {\n options.i18n.mergeLocaleMessage(locale, localeMessages[locale]);\n });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n error(\"Cannot parse locale messages via custom blocks.\", e);\n }\n }\n }\n this._i18n = options.i18n;\n this._i18nWatcher = this._i18n.watchI18nData();\n } else if (isPlainObject(options.i18n)) {\n var rootI18n = this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n\n ? this.$root.$i18n\n : null;\n // component local i18n\n if (rootI18n) {\n options.i18n.root = this.$root;\n options.i18n.formatter = rootI18n.formatter;\n options.i18n.fallbackLocale = rootI18n.fallbackLocale;\n options.i18n.formatFallbackMessages = rootI18n.formatFallbackMessages;\n options.i18n.silentTranslationWarn = rootI18n.silentTranslationWarn;\n options.i18n.silentFallbackWarn = rootI18n.silentFallbackWarn;\n options.i18n.pluralizationRules = rootI18n.pluralizationRules;\n options.i18n.preserveDirectiveContent = rootI18n.preserveDirectiveContent;\n }\n\n // init locale messages via custom blocks\n if (options.__i18n) {\n try {\n var localeMessages$1 = options.i18n && options.i18n.messages ? options.i18n.messages : {};\n options.__i18n.forEach(function (resource) {\n localeMessages$1 = merge(localeMessages$1, JSON.parse(resource));\n });\n options.i18n.messages = localeMessages$1;\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot parse locale messages via custom blocks.\", e);\n }\n }\n }\n\n var ref = options.i18n;\n var sharedMessages = ref.sharedMessages;\n if (sharedMessages && isPlainObject(sharedMessages)) {\n options.i18n.messages = merge(options.i18n.messages, sharedMessages);\n }\n\n this._i18n = new VueI18n(options.i18n);\n this._i18nWatcher = this._i18n.watchI18nData();\n\n if (options.i18n.sync === undefined || !!options.i18n.sync) {\n this._localeWatcher = this.$i18n.watchLocale();\n }\n\n if (rootI18n) {\n rootI18n.onComponentInstanceCreated(this._i18n);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot be interpreted 'i18n' option.\");\n }\n }\n } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n // root i18n\n this._i18n = this.$root.$i18n;\n } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n // parent i18n\n this._i18n = options.parent.$i18n;\n }\n },\n\n beforeMount: function beforeMount () {\n var options = this.$options;\n options.i18n = options.i18n || (options.__i18n ? {} : null);\n\n if (options.i18n) {\n if (options.i18n instanceof VueI18n) {\n // init locale messages via custom blocks\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else if (isPlainObject(options.i18n)) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot be interpreted 'i18n' option.\");\n }\n }\n } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n }\n },\n\n beforeDestroy: function beforeDestroy () {\n if (!this._i18n) { return }\n\n var self = this;\n this.$nextTick(function () {\n if (self._subscribing) {\n self._i18n.unsubscribeDataChanging(self);\n delete self._subscribing;\n }\n\n if (self._i18nWatcher) {\n self._i18nWatcher();\n self._i18n.destroyVM();\n delete self._i18nWatcher;\n }\n\n if (self._localeWatcher) {\n self._localeWatcher();\n delete self._localeWatcher;\n }\n });\n }\n};\n\n/* */\n\nvar interpolationComponent = {\n name: 'i18n',\n functional: true,\n props: {\n tag: {\n type: [String, Boolean, Object],\n default: 'span'\n },\n path: {\n type: String,\n required: true\n },\n locale: {\n type: String\n },\n places: {\n type: [Array, Object]\n }\n },\n render: function render (h, ref) {\n var data = ref.data;\n var parent = ref.parent;\n var props = ref.props;\n var slots = ref.slots;\n\n var $i18n = parent.$i18n;\n if (!$i18n) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot find VueI18n instance!');\n }\n return\n }\n\n var path = props.path;\n var locale = props.locale;\n var places = props.places;\n var params = slots();\n var children = $i18n.i(\n path,\n locale,\n onlyHasDefaultPlace(params) || places\n ? useLegacyPlaces(params.default, places)\n : params\n );\n\n var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n return tag ? h(tag, data, children) : children\n }\n};\n\nfunction onlyHasDefaultPlace (params) {\n var prop;\n for (prop in params) {\n if (prop !== 'default') { return false }\n }\n return Boolean(prop)\n}\n\nfunction useLegacyPlaces (children, places) {\n var params = places ? createParamsFromPlaces(places) : {};\n\n if (!children) { return params }\n\n // Filter empty text nodes\n children = children.filter(function (child) {\n return child.tag || child.text.trim() !== ''\n });\n\n var everyPlace = children.every(vnodeHasPlaceAttribute);\n if (process.env.NODE_ENV !== 'production' && everyPlace) {\n warn('`place` attribute is deprecated in next major version. Please switch to Vue slots.');\n }\n\n return children.reduce(\n everyPlace ? assignChildPlace : assignChildIndex,\n params\n )\n}\n\nfunction createParamsFromPlaces (places) {\n if (process.env.NODE_ENV !== 'production') {\n warn('`places` prop is deprecated in next major version. Please switch to Vue slots.');\n }\n\n return Array.isArray(places)\n ? places.reduce(assignChildIndex, {})\n : Object.assign({}, places)\n}\n\nfunction assignChildPlace (params, child) {\n if (child.data && child.data.attrs && child.data.attrs.place) {\n params[child.data.attrs.place] = child;\n }\n return params\n}\n\nfunction assignChildIndex (params, child, index) {\n params[index] = child;\n return params\n}\n\nfunction vnodeHasPlaceAttribute (vnode) {\n return Boolean(vnode.data && vnode.data.attrs && vnode.data.attrs.place)\n}\n\n/* */\n\nvar numberComponent = {\n name: 'i18n-n',\n functional: true,\n props: {\n tag: {\n type: [String, Boolean, Object],\n default: 'span'\n },\n value: {\n type: Number,\n required: true\n },\n format: {\n type: [String, Object]\n },\n locale: {\n type: String\n }\n },\n render: function render (h, ref) {\n var props = ref.props;\n var parent = ref.parent;\n var data = ref.data;\n\n var i18n = parent.$i18n;\n\n if (!i18n) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot find VueI18n instance!');\n }\n return null\n }\n\n var key = null;\n var options = null;\n\n if (isString(props.format)) {\n key = props.format;\n } else if (isObject(props.format)) {\n if (props.format.key) {\n key = props.format.key;\n }\n\n // Filter out number format options only\n options = Object.keys(props.format).reduce(function (acc, prop) {\n var obj;\n\n if (includes(numberFormatKeys, prop)) {\n return Object.assign({}, acc, ( obj = {}, obj[prop] = props.format[prop], obj ))\n }\n return acc\n }, null);\n }\n\n var locale = props.locale || i18n.locale;\n var parts = i18n._ntp(props.value, locale, key, options);\n\n var values = parts.map(function (part, index) {\n var obj;\n\n var slot = data.scopedSlots && data.scopedSlots[part.type];\n return slot ? slot(( obj = {}, obj[part.type] = part.value, obj.index = index, obj.parts = parts, obj )) : part.value\n });\n\n var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n return tag\n ? h(tag, {\n attrs: data.attrs,\n 'class': data['class'],\n staticClass: data.staticClass\n }, values)\n : values\n }\n};\n\n/* */\n\nfunction bind (el, binding, vnode) {\n if (!assert(el, vnode)) { return }\n\n t(el, binding, vnode);\n}\n\nfunction update (el, binding, vnode, oldVNode) {\n if (!assert(el, vnode)) { return }\n\n var i18n = vnode.context.$i18n;\n if (localeEqual(el, vnode) &&\n (looseEqual(binding.value, binding.oldValue) &&\n looseEqual(el._localeMessage, i18n.getLocaleMessage(i18n.locale)))) { return }\n\n t(el, binding, vnode);\n}\n\nfunction unbind (el, binding, vnode, oldVNode) {\n var vm = vnode.context;\n if (!vm) {\n warn('Vue instance does not exists in VNode context');\n return\n }\n\n var i18n = vnode.context.$i18n || {};\n if (!binding.modifiers.preserve && !i18n.preserveDirectiveContent) {\n el.textContent = '';\n }\n el._vt = undefined;\n delete el['_vt'];\n el._locale = undefined;\n delete el['_locale'];\n el._localeMessage = undefined;\n delete el['_localeMessage'];\n}\n\nfunction assert (el, vnode) {\n var vm = vnode.context;\n if (!vm) {\n warn('Vue instance does not exists in VNode context');\n return false\n }\n\n if (!vm.$i18n) {\n warn('VueI18n instance does not exists in Vue instance');\n return false\n }\n\n return true\n}\n\nfunction localeEqual (el, vnode) {\n var vm = vnode.context;\n return el._locale === vm.$i18n.locale\n}\n\nfunction t (el, binding, vnode) {\n var ref$1, ref$2;\n\n var value = binding.value;\n\n var ref = parseValue(value);\n var path = ref.path;\n var locale = ref.locale;\n var args = ref.args;\n var choice = ref.choice;\n if (!path && !locale && !args) {\n warn('value type not supported');\n return\n }\n\n if (!path) {\n warn('`path` is required in v-t directive');\n return\n }\n\n var vm = vnode.context;\n if (choice != null) {\n el._vt = el.textContent = (ref$1 = vm.$i18n).tc.apply(ref$1, [ path, choice ].concat( makeParams(locale, args) ));\n } else {\n el._vt = el.textContent = (ref$2 = vm.$i18n).t.apply(ref$2, [ path ].concat( makeParams(locale, args) ));\n }\n el._locale = vm.$i18n.locale;\n el._localeMessage = vm.$i18n.getLocaleMessage(vm.$i18n.locale);\n}\n\nfunction parseValue (value) {\n var path;\n var locale;\n var args;\n var choice;\n\n if (isString(value)) {\n path = value;\n } else if (isPlainObject(value)) {\n path = value.path;\n locale = value.locale;\n args = value.args;\n choice = value.choice;\n }\n\n return { path: path, locale: locale, args: args, choice: choice }\n}\n\nfunction makeParams (locale, args) {\n var params = [];\n\n locale && params.push(locale);\n if (args && (Array.isArray(args) || isPlainObject(args))) {\n params.push(args);\n }\n\n return params\n}\n\nvar Vue;\n\nfunction install (_Vue) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && install.installed && _Vue === Vue) {\n warn('already installed.');\n return\n }\n install.installed = true;\n\n Vue = _Vue;\n\n var version = (Vue.version && Number(Vue.version.split('.')[0])) || -1;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && version < 2) {\n warn((\"vue-i18n (\" + (install.version) + \") need to use Vue 2.0 or later (Vue: \" + (Vue.version) + \").\"));\n return\n }\n\n extend(Vue);\n Vue.mixin(mixin);\n Vue.directive('t', { bind: bind, update: update, unbind: unbind });\n Vue.component(interpolationComponent.name, interpolationComponent);\n Vue.component(numberComponent.name, numberComponent);\n\n // use simple mergeStrategies to prevent i18n instance lose '__proto__'\n var strats = Vue.config.optionMergeStrategies;\n strats.i18n = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n };\n}\n\n/* */\n\nvar BaseFormatter = function BaseFormatter () {\n this._caches = Object.create(null);\n};\n\nBaseFormatter.prototype.interpolate = function interpolate (message, values) {\n if (!values) {\n return [message]\n }\n var tokens = this._caches[message];\n if (!tokens) {\n tokens = parse(message);\n this._caches[message] = tokens;\n }\n return compile(tokens, values)\n};\n\n\n\nvar RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\nvar RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\n\nfunction parse (format) {\n var tokens = [];\n var position = 0;\n\n var text = '';\n while (position < format.length) {\n var char = format[position++];\n if (char === '{') {\n if (text) {\n tokens.push({ type: 'text', value: text });\n }\n\n text = '';\n var sub = '';\n char = format[position++];\n while (char !== undefined && char !== '}') {\n sub += char;\n char = format[position++];\n }\n var isClosed = char === '}';\n\n var type = RE_TOKEN_LIST_VALUE.test(sub)\n ? 'list'\n : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\n ? 'named'\n : 'unknown';\n tokens.push({ value: sub, type: type });\n } else if (char === '%') {\n // when found rails i18n syntax, skip text capture\n if (format[(position)] !== '{') {\n text += char;\n }\n } else {\n text += char;\n }\n }\n\n text && tokens.push({ type: 'text', value: text });\n\n return tokens\n}\n\nfunction compile (tokens, values) {\n var compiled = [];\n var index = 0;\n\n var mode = Array.isArray(values)\n ? 'list'\n : isObject(values)\n ? 'named'\n : 'unknown';\n if (mode === 'unknown') { return compiled }\n\n while (index < tokens.length) {\n var token = tokens[index];\n switch (token.type) {\n case 'text':\n compiled.push(token.value);\n break\n case 'list':\n compiled.push(values[parseInt(token.value, 10)]);\n break\n case 'named':\n if (mode === 'named') {\n compiled.push((values)[token.value]);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Type of token '\" + (token.type) + \"' and format of value '\" + mode + \"' don't match!\"));\n }\n }\n break\n case 'unknown':\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Detect 'unknown' type of token!\");\n }\n break\n }\n index++;\n }\n\n return compiled\n}\n\n/* */\n\n/**\n * Path parser\n * - Inspired:\n * Vue.js Path parser\n */\n\n// actions\nvar APPEND = 0;\nvar PUSH = 1;\nvar INC_SUB_PATH_DEPTH = 2;\nvar PUSH_SUB_PATH = 3;\n\n// states\nvar BEFORE_PATH = 0;\nvar IN_PATH = 1;\nvar BEFORE_IDENT = 2;\nvar IN_IDENT = 3;\nvar IN_SUB_PATH = 4;\nvar IN_SINGLE_QUOTE = 5;\nvar IN_DOUBLE_QUOTE = 6;\nvar AFTER_PATH = 7;\nvar ERROR = 8;\n\nvar pathStateMachine = [];\n\npathStateMachine[BEFORE_PATH] = {\n 'ws': [BEFORE_PATH],\n 'ident': [IN_IDENT, APPEND],\n '[': [IN_SUB_PATH],\n 'eof': [AFTER_PATH]\n};\n\npathStateMachine[IN_PATH] = {\n 'ws': [IN_PATH],\n '.': [BEFORE_IDENT],\n '[': [IN_SUB_PATH],\n 'eof': [AFTER_PATH]\n};\n\npathStateMachine[BEFORE_IDENT] = {\n 'ws': [BEFORE_IDENT],\n 'ident': [IN_IDENT, APPEND],\n '0': [IN_IDENT, APPEND],\n 'number': [IN_IDENT, APPEND]\n};\n\npathStateMachine[IN_IDENT] = {\n 'ident': [IN_IDENT, APPEND],\n '0': [IN_IDENT, APPEND],\n 'number': [IN_IDENT, APPEND],\n 'ws': [IN_PATH, PUSH],\n '.': [BEFORE_IDENT, PUSH],\n '[': [IN_SUB_PATH, PUSH],\n 'eof': [AFTER_PATH, PUSH]\n};\n\npathStateMachine[IN_SUB_PATH] = {\n \"'\": [IN_SINGLE_QUOTE, APPEND],\n '\"': [IN_DOUBLE_QUOTE, APPEND],\n '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],\n ']': [IN_PATH, PUSH_SUB_PATH],\n 'eof': ERROR,\n 'else': [IN_SUB_PATH, APPEND]\n};\n\npathStateMachine[IN_SINGLE_QUOTE] = {\n \"'\": [IN_SUB_PATH, APPEND],\n 'eof': ERROR,\n 'else': [IN_SINGLE_QUOTE, APPEND]\n};\n\npathStateMachine[IN_DOUBLE_QUOTE] = {\n '\"': [IN_SUB_PATH, APPEND],\n 'eof': ERROR,\n 'else': [IN_DOUBLE_QUOTE, APPEND]\n};\n\n/**\n * Check if an expression is a literal value.\n */\n\nvar literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral (exp) {\n return literalValueRE.test(exp)\n}\n\n/**\n * Strip quotes from a string\n */\n\nfunction stripQuotes (str) {\n var a = str.charCodeAt(0);\n var b = str.charCodeAt(str.length - 1);\n return a === b && (a === 0x22 || a === 0x27)\n ? str.slice(1, -1)\n : str\n}\n\n/**\n * Determine the type of a character in a keypath.\n */\n\nfunction getPathCharType (ch) {\n if (ch === undefined || ch === null) { return 'eof' }\n\n var code = ch.charCodeAt(0);\n\n switch (code) {\n case 0x5B: // [\n case 0x5D: // ]\n case 0x2E: // .\n case 0x22: // \"\n case 0x27: // '\n return ch\n\n case 0x5F: // _\n case 0x24: // $\n case 0x2D: // -\n return 'ident'\n\n case 0x09: // Tab\n case 0x0A: // Newline\n case 0x0D: // Return\n case 0xA0: // No-break space\n case 0xFEFF: // Byte Order Mark\n case 0x2028: // Line Separator\n case 0x2029: // Paragraph Separator\n return 'ws'\n }\n\n return 'ident'\n}\n\n/**\n * Format a subPath, return its plain form if it is\n * a literal string or number. Otherwise prepend the\n * dynamic indicator (*).\n */\n\nfunction formatSubPath (path) {\n var trimmed = path.trim();\n // invalid leading 0\n if (path.charAt(0) === '0' && isNaN(path)) { return false }\n\n return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed\n}\n\n/**\n * Parse a string path into an array of segments\n */\n\nfunction parse$1 (path) {\n var keys = [];\n var index = -1;\n var mode = BEFORE_PATH;\n var subPathDepth = 0;\n var c;\n var key;\n var newChar;\n var type;\n var transition;\n var action;\n var typeMap;\n var actions = [];\n\n actions[PUSH] = function () {\n if (key !== undefined) {\n keys.push(key);\n key = undefined;\n }\n };\n\n actions[APPEND] = function () {\n if (key === undefined) {\n key = newChar;\n } else {\n key += newChar;\n }\n };\n\n actions[INC_SUB_PATH_DEPTH] = function () {\n actions[APPEND]();\n subPathDepth++;\n };\n\n actions[PUSH_SUB_PATH] = function () {\n if (subPathDepth > 0) {\n subPathDepth--;\n mode = IN_SUB_PATH;\n actions[APPEND]();\n } else {\n subPathDepth = 0;\n if (key === undefined) { return false }\n key = formatSubPath(key);\n if (key === false) {\n return false\n } else {\n actions[PUSH]();\n }\n }\n };\n\n function maybeUnescapeQuote () {\n var nextChar = path[index + 1];\n if ((mode === IN_SINGLE_QUOTE && nextChar === \"'\") ||\n (mode === IN_DOUBLE_QUOTE && nextChar === '\"')) {\n index++;\n newChar = '\\\\' + nextChar;\n actions[APPEND]();\n return true\n }\n }\n\n while (mode !== null) {\n index++;\n c = path[index];\n\n if (c === '\\\\' && maybeUnescapeQuote()) {\n continue\n }\n\n type = getPathCharType(c);\n typeMap = pathStateMachine[mode];\n transition = typeMap[type] || typeMap['else'] || ERROR;\n\n if (transition === ERROR) {\n return // parse error\n }\n\n mode = transition[0];\n action = actions[transition[1]];\n if (action) {\n newChar = transition[2];\n newChar = newChar === undefined\n ? c\n : newChar;\n if (action() === false) {\n return\n }\n }\n\n if (mode === AFTER_PATH) {\n return keys\n }\n }\n}\n\n\n\n\n\nvar I18nPath = function I18nPath () {\n this._cache = Object.create(null);\n};\n\n/**\n * External parse that check for a cache hit first\n */\nI18nPath.prototype.parsePath = function parsePath (path) {\n var hit = this._cache[path];\n if (!hit) {\n hit = parse$1(path);\n if (hit) {\n this._cache[path] = hit;\n }\n }\n return hit || []\n};\n\n/**\n * Get path value from path string\n */\nI18nPath.prototype.getPathValue = function getPathValue (obj, path) {\n if (!isObject(obj)) { return null }\n\n var paths = this.parsePath(path);\n if (paths.length === 0) {\n return null\n } else {\n var length = paths.length;\n var last = obj;\n var i = 0;\n while (i < length) {\n var value = last[paths[i]];\n if (value === undefined) {\n return null\n }\n last = value;\n i++;\n }\n\n return last\n }\n};\n\n/* */\n\n\n\nvar htmlTagMatcher = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nvar linkKeyMatcher = /(?:@(?:\\.[a-z]+)?:(?:[\\w\\-_|.]+|\\([\\w\\-_|.]+\\)))/g;\nvar linkKeyPrefixMatcher = /^@(?:\\.([a-z]+))?:/;\nvar bracketsMatcher = /[()]/g;\nvar defaultModifiers = {\n 'upper': function (str) { return str.toLocaleUpperCase(); },\n 'lower': function (str) { return str.toLocaleLowerCase(); },\n 'capitalize': function (str) { return (\"\" + (str.charAt(0).toLocaleUpperCase()) + (str.substr(1))); }\n};\n\nvar defaultFormatter = new BaseFormatter();\n\nvar VueI18n = function VueI18n (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #290\n /* istanbul ignore if */\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n var locale = options.locale || 'en-US';\n var fallbackLocale = options.fallbackLocale === false\n ? false\n : options.fallbackLocale || 'en-US';\n var messages = options.messages || {};\n var dateTimeFormats = options.dateTimeFormats || {};\n var numberFormats = options.numberFormats || {};\n\n this._vm = null;\n this._formatter = options.formatter || defaultFormatter;\n this._modifiers = options.modifiers || {};\n this._missing = options.missing || null;\n this._root = options.root || null;\n this._sync = options.sync === undefined ? true : !!options.sync;\n this._fallbackRoot = options.fallbackRoot === undefined\n ? true\n : !!options.fallbackRoot;\n this._formatFallbackMessages = options.formatFallbackMessages === undefined\n ? false\n : !!options.formatFallbackMessages;\n this._silentTranslationWarn = options.silentTranslationWarn === undefined\n ? false\n : options.silentTranslationWarn;\n this._silentFallbackWarn = options.silentFallbackWarn === undefined\n ? false\n : !!options.silentFallbackWarn;\n this._dateTimeFormatters = {};\n this._numberFormatters = {};\n this._path = new I18nPath();\n this._dataListeners = [];\n this._componentInstanceCreatedListener = options.componentInstanceCreatedListener || null;\n this._preserveDirectiveContent = options.preserveDirectiveContent === undefined\n ? false\n : !!options.preserveDirectiveContent;\n this.pluralizationRules = options.pluralizationRules || {};\n this._warnHtmlInMessage = options.warnHtmlInMessage || 'off';\n this._postTranslation = options.postTranslation || null;\n this._escapeParameterHtml = options.escapeParameterHtml || false;\n\n /**\n * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`\n * @param choicesLength {number} an overall amount of available choices\n * @returns a final choice index\n */\n this.getChoiceIndex = function (choice, choicesLength) {\n var thisPrototype = Object.getPrototypeOf(this$1);\n if (thisPrototype && thisPrototype.getChoiceIndex) {\n var prototypeGetChoiceIndex = (thisPrototype.getChoiceIndex);\n return (prototypeGetChoiceIndex).call(this$1, choice, choicesLength)\n }\n\n // Default (old) getChoiceIndex implementation - english-compatible\n var defaultImpl = function (_choice, _choicesLength) {\n _choice = Math.abs(_choice);\n\n if (_choicesLength === 2) {\n return _choice\n ? _choice > 1\n ? 1\n : 0\n : 1\n }\n\n return _choice ? Math.min(_choice, 2) : 0\n };\n\n if (this$1.locale in this$1.pluralizationRules) {\n return this$1.pluralizationRules[this$1.locale].apply(this$1, [choice, choicesLength])\n } else {\n return defaultImpl(choice, choicesLength)\n }\n };\n\n\n this._exist = function (message, key) {\n if (!message || !key) { return false }\n if (!isNull(this$1._path.getPathValue(message, key))) { return true }\n // fallback for flat key\n if (message[key]) { return true }\n return false\n };\n\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n Object.keys(messages).forEach(function (locale) {\n this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n });\n }\n\n this._initVM({\n locale: locale,\n fallbackLocale: fallbackLocale,\n messages: messages,\n dateTimeFormats: dateTimeFormats,\n numberFormats: numberFormats\n });\n};\n\nvar prototypeAccessors = { vm: { configurable: true },messages: { configurable: true },dateTimeFormats: { configurable: true },numberFormats: { configurable: true },availableLocales: { configurable: true },locale: { configurable: true },fallbackLocale: { configurable: true },formatFallbackMessages: { configurable: true },missing: { configurable: true },formatter: { configurable: true },silentTranslationWarn: { configurable: true },silentFallbackWarn: { configurable: true },preserveDirectiveContent: { configurable: true },warnHtmlInMessage: { configurable: true },postTranslation: { configurable: true } };\n\nVueI18n.prototype._checkLocaleMessage = function _checkLocaleMessage (locale, level, message) {\n var paths = [];\n\n var fn = function (level, locale, message, paths) {\n if (isPlainObject(message)) {\n Object.keys(message).forEach(function (key) {\n var val = message[key];\n if (isPlainObject(val)) {\n paths.push(key);\n paths.push('.');\n fn(level, locale, val, paths);\n paths.pop();\n paths.pop();\n } else {\n paths.push(key);\n fn(level, locale, val, paths);\n paths.pop();\n }\n });\n } else if (isArray(message)) {\n message.forEach(function (item, index) {\n if (isPlainObject(item)) {\n paths.push((\"[\" + index + \"]\"));\n paths.push('.');\n fn(level, locale, item, paths);\n paths.pop();\n paths.pop();\n } else {\n paths.push((\"[\" + index + \"]\"));\n fn(level, locale, item, paths);\n paths.pop();\n }\n });\n } else if (isString(message)) {\n var ret = htmlTagMatcher.test(message);\n if (ret) {\n var msg = \"Detected HTML in message '\" + message + \"' of keypath '\" + (paths.join('')) + \"' at '\" + locale + \"'. Consider component interpolation with '' to avoid XSS. See https://bit.ly/2ZqJzkp\";\n if (level === 'warn') {\n warn(msg);\n } else if (level === 'error') {\n error(msg);\n }\n }\n }\n };\n\n fn(level, locale, message, paths);\n};\n\nVueI18n.prototype._initVM = function _initVM (data) {\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n this._vm = new Vue({ data: data });\n Vue.config.silent = silent;\n};\n\nVueI18n.prototype.destroyVM = function destroyVM () {\n this._vm.$destroy();\n};\n\nVueI18n.prototype.subscribeDataChanging = function subscribeDataChanging (vm) {\n this._dataListeners.push(vm);\n};\n\nVueI18n.prototype.unsubscribeDataChanging = function unsubscribeDataChanging (vm) {\n remove(this._dataListeners, vm);\n};\n\nVueI18n.prototype.watchI18nData = function watchI18nData () {\n var self = this;\n return this._vm.$watch('$data', function () {\n var i = self._dataListeners.length;\n while (i--) {\n Vue.nextTick(function () {\n self._dataListeners[i] && self._dataListeners[i].$forceUpdate();\n });\n }\n }, { deep: true })\n};\n\nVueI18n.prototype.watchLocale = function watchLocale () {\n /* istanbul ignore if */\n if (!this._sync || !this._root) { return null }\n var target = this._vm;\n return this._root.$i18n.vm.$watch('locale', function (val) {\n target.$set(target, 'locale', val);\n target.$forceUpdate();\n }, { immediate: true })\n};\n\nVueI18n.prototype.onComponentInstanceCreated = function onComponentInstanceCreated (newI18n) {\n if (this._componentInstanceCreatedListener) {\n this._componentInstanceCreatedListener(newI18n, this);\n }\n};\n\nprototypeAccessors.vm.get = function () { return this._vm };\n\nprototypeAccessors.messages.get = function () { return looseClone(this._getMessages()) };\nprototypeAccessors.dateTimeFormats.get = function () { return looseClone(this._getDateTimeFormats()) };\nprototypeAccessors.numberFormats.get = function () { return looseClone(this._getNumberFormats()) };\nprototypeAccessors.availableLocales.get = function () { return Object.keys(this.messages).sort() };\n\nprototypeAccessors.locale.get = function () { return this._vm.locale };\nprototypeAccessors.locale.set = function (locale) {\n this._vm.$set(this._vm, 'locale', locale);\n};\n\nprototypeAccessors.fallbackLocale.get = function () { return this._vm.fallbackLocale };\nprototypeAccessors.fallbackLocale.set = function (locale) {\n this._localeChainCache = {};\n this._vm.$set(this._vm, 'fallbackLocale', locale);\n};\n\nprototypeAccessors.formatFallbackMessages.get = function () { return this._formatFallbackMessages };\nprototypeAccessors.formatFallbackMessages.set = function (fallback) { this._formatFallbackMessages = fallback; };\n\nprototypeAccessors.missing.get = function () { return this._missing };\nprototypeAccessors.missing.set = function (handler) { this._missing = handler; };\n\nprototypeAccessors.formatter.get = function () { return this._formatter };\nprototypeAccessors.formatter.set = function (formatter) { this._formatter = formatter; };\n\nprototypeAccessors.silentTranslationWarn.get = function () { return this._silentTranslationWarn };\nprototypeAccessors.silentTranslationWarn.set = function (silent) { this._silentTranslationWarn = silent; };\n\nprototypeAccessors.silentFallbackWarn.get = function () { return this._silentFallbackWarn };\nprototypeAccessors.silentFallbackWarn.set = function (silent) { this._silentFallbackWarn = silent; };\n\nprototypeAccessors.preserveDirectiveContent.get = function () { return this._preserveDirectiveContent };\nprototypeAccessors.preserveDirectiveContent.set = function (preserve) { this._preserveDirectiveContent = preserve; };\n\nprototypeAccessors.warnHtmlInMessage.get = function () { return this._warnHtmlInMessage };\nprototypeAccessors.warnHtmlInMessage.set = function (level) {\n var this$1 = this;\n\n var orgLevel = this._warnHtmlInMessage;\n this._warnHtmlInMessage = level;\n if (orgLevel !== level && (level === 'warn' || level === 'error')) {\n var messages = this._getMessages();\n Object.keys(messages).forEach(function (locale) {\n this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n });\n }\n};\n\nprototypeAccessors.postTranslation.get = function () { return this._postTranslation };\nprototypeAccessors.postTranslation.set = function (handler) { this._postTranslation = handler; };\n\nVueI18n.prototype._getMessages = function _getMessages () { return this._vm.messages };\nVueI18n.prototype._getDateTimeFormats = function _getDateTimeFormats () { return this._vm.dateTimeFormats };\nVueI18n.prototype._getNumberFormats = function _getNumberFormats () { return this._vm.numberFormats };\n\nVueI18n.prototype._warnDefault = function _warnDefault (locale, key, result, vm, values, interpolateMode) {\n if (!isNull(result)) { return result }\n if (this._missing) {\n var missingRet = this._missing.apply(null, [locale, key, vm, values]);\n if (isString(missingRet)) {\n return missingRet\n }\n } else {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn(\n \"Cannot translate the value of keypath '\" + key + \"'. \" +\n 'Use the value of keypath as default.'\n );\n }\n }\n\n if (this._formatFallbackMessages) {\n var parsedArgs = parseArgs.apply(void 0, values);\n return this._render(key, interpolateMode, parsedArgs.params, key)\n } else {\n return key\n }\n};\n\nVueI18n.prototype._isFallbackRoot = function _isFallbackRoot (val) {\n return !val && !isNull(this._root) && this._fallbackRoot\n};\n\nVueI18n.prototype._isSilentFallbackWarn = function _isSilentFallbackWarn (key) {\n return this._silentFallbackWarn instanceof RegExp\n ? this._silentFallbackWarn.test(key)\n : this._silentFallbackWarn\n};\n\nVueI18n.prototype._isSilentFallback = function _isSilentFallback (locale, key) {\n return this._isSilentFallbackWarn(key) && (this._isFallbackRoot() || locale !== this.fallbackLocale)\n};\n\nVueI18n.prototype._isSilentTranslationWarn = function _isSilentTranslationWarn (key) {\n return this._silentTranslationWarn instanceof RegExp\n ? this._silentTranslationWarn.test(key)\n : this._silentTranslationWarn\n};\n\nVueI18n.prototype._interpolate = function _interpolate (\n locale,\n message,\n key,\n host,\n interpolateMode,\n values,\n visitedLinkStack\n) {\n if (!message) { return null }\n\n var pathRet = this._path.getPathValue(message, key);\n if (isArray(pathRet) || isPlainObject(pathRet)) { return pathRet }\n\n var ret;\n if (isNull(pathRet)) {\n /* istanbul ignore else */\n if (isPlainObject(message)) {\n ret = message[key];\n if (!(isString(ret) || isFunction(ret))) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n warn((\"Value of key '\" + key + \"' is not a string or function !\"));\n }\n return null\n }\n } else {\n return null\n }\n } else {\n /* istanbul ignore else */\n if (isString(pathRet) || isFunction(pathRet)) {\n ret = pathRet;\n } else {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n warn((\"Value of key '\" + key + \"' is not a string or function!\"));\n }\n return null\n }\n }\n\n // Check for the existence of links within the translated string\n if (isString(ret) && (ret.indexOf('@:') >= 0 || ret.indexOf('@.') >= 0)) {\n ret = this._link(locale, message, ret, host, 'raw', values, visitedLinkStack);\n }\n\n return this._render(ret, interpolateMode, values, key)\n};\n\nVueI18n.prototype._link = function _link (\n locale,\n message,\n str,\n host,\n interpolateMode,\n values,\n visitedLinkStack\n) {\n var ret = str;\n\n // Match all the links within the local\n // We are going to replace each of\n // them with its translation\n var matches = ret.match(linkKeyMatcher);\n for (var idx in matches) {\n // ie compatible: filter custom array\n // prototype method\n if (!matches.hasOwnProperty(idx)) {\n continue\n }\n var link = matches[idx];\n var linkKeyPrefixMatches = link.match(linkKeyPrefixMatcher);\n var linkPrefix = linkKeyPrefixMatches[0];\n var formatterName = linkKeyPrefixMatches[1];\n\n // Remove the leading @:, @.case: and the brackets\n var linkPlaceholder = link.replace(linkPrefix, '').replace(bracketsMatcher, '');\n\n if (includes(visitedLinkStack, linkPlaceholder)) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Circular reference found. \\\"\" + link + \"\\\" is already visited in the chain of \" + (visitedLinkStack.reverse().join(' <- '))));\n }\n return ret\n }\n visitedLinkStack.push(linkPlaceholder);\n\n // Translate the link\n var translated = this._interpolate(\n locale, message, linkPlaceholder, host,\n interpolateMode === 'raw' ? 'string' : interpolateMode,\n interpolateMode === 'raw' ? undefined : values,\n visitedLinkStack\n );\n\n if (this._isFallbackRoot(translated)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(linkPlaceholder)) {\n warn((\"Fall back to translate the link placeholder '\" + linkPlaceholder + \"' with root locale.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n var root = this._root.$i18n;\n translated = root._translate(\n root._getMessages(), root.locale, root.fallbackLocale,\n linkPlaceholder, host, interpolateMode, values\n );\n }\n translated = this._warnDefault(\n locale, linkPlaceholder, translated, host,\n isArray(values) ? values : [values],\n interpolateMode\n );\n\n if (this._modifiers.hasOwnProperty(formatterName)) {\n translated = this._modifiers[formatterName](translated);\n } else if (defaultModifiers.hasOwnProperty(formatterName)) {\n translated = defaultModifiers[formatterName](translated);\n }\n\n visitedLinkStack.pop();\n\n // Replace the link with the translated\n ret = !translated ? ret : ret.replace(link, translated);\n }\n\n return ret\n};\n\nVueI18n.prototype._createMessageContext = function _createMessageContext (values) {\n var _list = isArray(values) ? values : [];\n var _named = isObject(values) ? values : {};\n var list = function (index) { return _list[index]; };\n var named = function (key) { return _named[key]; };\n return {\n list: list,\n named: named\n }\n};\n\nVueI18n.prototype._render = function _render (message, interpolateMode, values, path) {\n if (isFunction(message)) {\n return message(this._createMessageContext(values))\n }\n\n var ret = this._formatter.interpolate(message, values, path);\n\n // If the custom formatter refuses to work - apply the default one\n if (!ret) {\n ret = defaultFormatter.interpolate(message, values, path);\n }\n\n // if interpolateMode is **not** 'string' ('row'),\n // return the compiled data (e.g. ['foo', VNode, 'bar']) with formatter\n return interpolateMode === 'string' && !isString(ret) ? ret.join('') : ret\n};\n\nVueI18n.prototype._appendItemToChain = function _appendItemToChain (chain, item, blocks) {\n var follow = false;\n if (!includes(chain, item)) {\n follow = true;\n if (item) {\n follow = item[item.length - 1] !== '!';\n item = item.replace(/!/g, '');\n chain.push(item);\n if (blocks && blocks[item]) {\n follow = blocks[item];\n }\n }\n }\n return follow\n};\n\nVueI18n.prototype._appendLocaleToChain = function _appendLocaleToChain (chain, locale, blocks) {\n var follow;\n var tokens = locale.split('-');\n do {\n var item = tokens.join('-');\n follow = this._appendItemToChain(chain, item, blocks);\n tokens.splice(-1, 1);\n } while (tokens.length && (follow === true))\n return follow\n};\n\nVueI18n.prototype._appendBlockToChain = function _appendBlockToChain (chain, block, blocks) {\n var follow = true;\n for (var i = 0; (i < block.length) && (isBoolean(follow)); i++) {\n var locale = block[i];\n if (isString(locale)) {\n follow = this._appendLocaleToChain(chain, locale, blocks);\n }\n }\n return follow\n};\n\nVueI18n.prototype._getLocaleChain = function _getLocaleChain (start, fallbackLocale) {\n if (start === '') { return [] }\n\n if (!this._localeChainCache) {\n this._localeChainCache = {};\n }\n\n var chain = this._localeChainCache[start];\n if (!chain) {\n if (!fallbackLocale) {\n fallbackLocale = this.fallbackLocale;\n }\n chain = [];\n\n // first block defined by start\n var block = [start];\n\n // while any intervening block found\n while (isArray(block)) {\n block = this._appendBlockToChain(\n chain,\n block,\n fallbackLocale\n );\n }\n\n // last block defined by default\n var defaults;\n if (isArray(fallbackLocale)) {\n defaults = fallbackLocale;\n } else if (isObject(fallbackLocale)) {\n /* $FlowFixMe */\n if (fallbackLocale['default']) {\n defaults = fallbackLocale['default'];\n } else {\n defaults = null;\n }\n } else {\n defaults = fallbackLocale;\n }\n\n // convert defaults to array\n if (isString(defaults)) {\n block = [defaults];\n } else {\n block = defaults;\n }\n if (block) {\n this._appendBlockToChain(\n chain,\n block,\n null\n );\n }\n this._localeChainCache[start] = chain;\n }\n return chain\n};\n\nVueI18n.prototype._translate = function _translate (\n messages,\n locale,\n fallback,\n key,\n host,\n interpolateMode,\n args\n) {\n var chain = this._getLocaleChain(locale, fallback);\n var res;\n for (var i = 0; i < chain.length; i++) {\n var step = chain[i];\n res =\n this._interpolate(step, messages[step], key, host, interpolateMode, args, [key]);\n if (!isNull(res)) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to translate the keypath '\" + key + \"' with '\" + step + \"' locale.\"));\n }\n return res\n }\n }\n return null\n};\n\nVueI18n.prototype._t = function _t (key, _locale, messages, host) {\n var ref;\n\n var values = [], len = arguments.length - 4;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];\n if (!key) { return '' }\n\n var parsedArgs = parseArgs.apply(void 0, values);\n if(this._escapeParameterHtml) {\n parsedArgs.params = escapeParams(parsedArgs.params);\n }\n\n var locale = parsedArgs.locale || _locale;\n\n var ret = this._translate(\n messages, locale, this.fallbackLocale, key,\n host, 'string', parsedArgs.params\n );\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to translate the keypath '\" + key + \"' with root locale.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return (ref = this._root).$t.apply(ref, [ key ].concat( values ))\n } else {\n ret = this._warnDefault(locale, key, ret, host, values, 'string');\n if (this._postTranslation && ret !== null && ret !== undefined) {\n ret = this._postTranslation(ret, key);\n }\n return ret\n }\n};\n\nVueI18n.prototype.t = function t (key) {\n var ref;\n\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n return (ref = this)._t.apply(ref, [ key, this.locale, this._getMessages(), null ].concat( values ))\n};\n\nVueI18n.prototype._i = function _i (key, locale, messages, host, values) {\n var ret =\n this._translate(messages, locale, this.fallbackLocale, key, host, 'raw', values);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn((\"Fall back to interpolate the keypath '\" + key + \"' with root locale.\"));\n }\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.i(key, locale, values)\n } else {\n return this._warnDefault(locale, key, ret, host, [values], 'raw')\n }\n};\n\nVueI18n.prototype.i = function i (key, locale, values) {\n /* istanbul ignore if */\n if (!key) { return '' }\n\n if (!isString(locale)) {\n locale = this.locale;\n }\n\n return this._i(key, locale, this._getMessages(), null, values)\n};\n\nVueI18n.prototype._tc = function _tc (\n key,\n _locale,\n messages,\n host,\n choice\n) {\n var ref;\n\n var values = [], len = arguments.length - 5;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];\n if (!key) { return '' }\n if (choice === undefined) {\n choice = 1;\n }\n\n var predefined = { 'count': choice, 'n': choice };\n var parsedArgs = parseArgs.apply(void 0, values);\n parsedArgs.params = Object.assign(predefined, parsedArgs.params);\n values = parsedArgs.locale === null ? [parsedArgs.params] : [parsedArgs.locale, parsedArgs.params];\n return this.fetchChoice((ref = this)._t.apply(ref, [ key, _locale, messages, host ].concat( values )), choice)\n};\n\nVueI18n.prototype.fetchChoice = function fetchChoice (message, choice) {\n /* istanbul ignore if */\n if (!message || !isString(message)) { return null }\n var choices = message.split('|');\n\n choice = this.getChoiceIndex(choice, choices.length);\n if (!choices[choice]) { return message }\n return choices[choice].trim()\n};\n\nVueI18n.prototype.tc = function tc (key, choice) {\n var ref;\n\n var values = [], len = arguments.length - 2;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values ))\n};\n\nVueI18n.prototype._te = function _te (key, locale, messages) {\n var args = [], len = arguments.length - 3;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 3 ];\n\n var _locale = parseArgs.apply(void 0, args).locale || locale;\n return this._exist(messages[_locale], key)\n};\n\nVueI18n.prototype.te = function te (key, locale) {\n return this._te(key, this.locale, this._getMessages(), locale)\n};\n\nVueI18n.prototype.getLocaleMessage = function getLocaleMessage (locale) {\n return looseClone(this._vm.messages[locale] || {})\n};\n\nVueI18n.prototype.setLocaleMessage = function setLocaleMessage (locale, message) {\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n }\n this._vm.$set(this._vm.messages, locale, message);\n};\n\nVueI18n.prototype.mergeLocaleMessage = function mergeLocaleMessage (locale, message) {\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n }\n this._vm.$set(this._vm.messages, locale, merge(\n typeof this._vm.messages[locale] !== 'undefined' && Object.keys(this._vm.messages[locale]).length\n ? this._vm.messages[locale]\n : {},\n message\n ));\n};\n\nVueI18n.prototype.getDateTimeFormat = function getDateTimeFormat (locale) {\n return looseClone(this._vm.dateTimeFormats[locale] || {})\n};\n\nVueI18n.prototype.setDateTimeFormat = function setDateTimeFormat (locale, format) {\n this._vm.$set(this._vm.dateTimeFormats, locale, format);\n this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype.mergeDateTimeFormat = function mergeDateTimeFormat (locale, format) {\n this._vm.$set(this._vm.dateTimeFormats, locale, merge(this._vm.dateTimeFormats[locale] || {}, format));\n this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype._clearDateTimeFormat = function _clearDateTimeFormat (locale, format) {\n for (var key in format) {\n var id = locale + \"__\" + key;\n\n if (!this._dateTimeFormatters.hasOwnProperty(id)) {\n continue\n }\n\n delete this._dateTimeFormatters[id];\n }\n};\n\nVueI18n.prototype._localizeDateTime = function _localizeDateTime (\n value,\n locale,\n fallback,\n dateTimeFormats,\n key\n) {\n var _locale = locale;\n var formats = dateTimeFormats[_locale];\n\n var chain = this._getLocaleChain(locale, fallback);\n for (var i = 0; i < chain.length; i++) {\n var current = _locale;\n var step = chain[i];\n formats = dateTimeFormats[step];\n _locale = step;\n // fallback locale\n if (isNull(formats) || isNull(formats[key])) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to '\" + step + \"' datetime formats from '\" + current + \"' datetime formats.\"));\n }\n } else {\n break\n }\n }\n\n if (isNull(formats) || isNull(formats[key])) {\n return null\n } else {\n var format = formats[key];\n var id = _locale + \"__\" + key;\n var formatter = this._dateTimeFormatters[id];\n if (!formatter) {\n formatter = this._dateTimeFormatters[id] = new Intl.DateTimeFormat(_locale, format);\n }\n return formatter.format(value)\n }\n};\n\nVueI18n.prototype._d = function _d (value, locale, key) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !VueI18n.availabilities.dateTimeFormat) {\n warn('Cannot format a Date value due to not supported Intl.DateTimeFormat.');\n return ''\n }\n\n if (!key) {\n return new Intl.DateTimeFormat(locale).format(value)\n }\n\n var ret =\n this._localizeDateTime(value, locale, this.fallbackLocale, this._getDateTimeFormats(), key);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to datetime localization of root: key '\" + key + \"'.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.d(value, key, locale)\n } else {\n return ret || ''\n }\n};\n\nVueI18n.prototype.d = function d (value) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n var locale = this.locale;\n var key = null;\n\n if (args.length === 1) {\n if (isString(args[0])) {\n key = args[0];\n } else if (isObject(args[0])) {\n if (args[0].locale) {\n locale = args[0].locale;\n }\n if (args[0].key) {\n key = args[0].key;\n }\n }\n } else if (args.length === 2) {\n if (isString(args[0])) {\n key = args[0];\n }\n if (isString(args[1])) {\n locale = args[1];\n }\n }\n\n return this._d(value, locale, key)\n};\n\nVueI18n.prototype.getNumberFormat = function getNumberFormat (locale) {\n return looseClone(this._vm.numberFormats[locale] || {})\n};\n\nVueI18n.prototype.setNumberFormat = function setNumberFormat (locale, format) {\n this._vm.$set(this._vm.numberFormats, locale, format);\n this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype.mergeNumberFormat = function mergeNumberFormat (locale, format) {\n this._vm.$set(this._vm.numberFormats, locale, merge(this._vm.numberFormats[locale] || {}, format));\n this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype._clearNumberFormat = function _clearNumberFormat (locale, format) {\n for (var key in format) {\n var id = locale + \"__\" + key;\n\n if (!this._numberFormatters.hasOwnProperty(id)) {\n continue\n }\n\n delete this._numberFormatters[id];\n }\n};\n\nVueI18n.prototype._getNumberFormatter = function _getNumberFormatter (\n value,\n locale,\n fallback,\n numberFormats,\n key,\n options\n) {\n var _locale = locale;\n var formats = numberFormats[_locale];\n\n var chain = this._getLocaleChain(locale, fallback);\n for (var i = 0; i < chain.length; i++) {\n var current = _locale;\n var step = chain[i];\n formats = numberFormats[step];\n _locale = step;\n // fallback locale\n if (isNull(formats) || isNull(formats[key])) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to '\" + step + \"' number formats from '\" + current + \"' number formats.\"));\n }\n } else {\n break\n }\n }\n\n if (isNull(formats) || isNull(formats[key])) {\n return null\n } else {\n var format = formats[key];\n\n var formatter;\n if (options) {\n // If options specified - create one time number formatter\n formatter = new Intl.NumberFormat(_locale, Object.assign({}, format, options));\n } else {\n var id = _locale + \"__\" + key;\n formatter = this._numberFormatters[id];\n if (!formatter) {\n formatter = this._numberFormatters[id] = new Intl.NumberFormat(_locale, format);\n }\n }\n return formatter\n }\n};\n\nVueI18n.prototype._n = function _n (value, locale, key, options) {\n /* istanbul ignore if */\n if (!VueI18n.availabilities.numberFormat) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot format a Number value due to not supported Intl.NumberFormat.');\n }\n return ''\n }\n\n if (!key) {\n var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n return nf.format(value)\n }\n\n var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n var ret = formatter && formatter.format(value);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to number localization of root: key '\" + key + \"'.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.n(value, Object.assign({}, { key: key, locale: locale }, options))\n } else {\n return ret || ''\n }\n};\n\nVueI18n.prototype.n = function n (value) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n var locale = this.locale;\n var key = null;\n var options = null;\n\n if (args.length === 1) {\n if (isString(args[0])) {\n key = args[0];\n } else if (isObject(args[0])) {\n if (args[0].locale) {\n locale = args[0].locale;\n }\n if (args[0].key) {\n key = args[0].key;\n }\n\n // Filter out number format options only\n options = Object.keys(args[0]).reduce(function (acc, key) {\n var obj;\n\n if (includes(numberFormatKeys, key)) {\n return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))\n }\n return acc\n }, null);\n }\n } else if (args.length === 2) {\n if (isString(args[0])) {\n key = args[0];\n }\n if (isString(args[1])) {\n locale = args[1];\n }\n }\n\n return this._n(value, locale, key, options)\n};\n\nVueI18n.prototype._ntp = function _ntp (value, locale, key, options) {\n /* istanbul ignore if */\n if (!VueI18n.availabilities.numberFormat) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot format to parts a Number value due to not supported Intl.NumberFormat.');\n }\n return []\n }\n\n if (!key) {\n var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n return nf.formatToParts(value)\n }\n\n var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n var ret = formatter && formatter.formatToParts(value);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn((\"Fall back to format number to parts of root: key '\" + key + \"' .\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n._ntp(value, locale, key, options)\n } else {\n return ret || []\n }\n};\n\nObject.defineProperties( VueI18n.prototype, prototypeAccessors );\n\nvar availabilities;\n// $FlowFixMe\nObject.defineProperty(VueI18n, 'availabilities', {\n get: function get () {\n if (!availabilities) {\n var intlDefined = typeof Intl !== 'undefined';\n availabilities = {\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n };\n }\n\n return availabilities\n }\n});\n\nVueI18n.install = install;\nVueI18n.version = '8.22.4';\n\nexport default VueI18n;\n","import Vue from 'vue';\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill\nfunction assign (target, varArgs) {\n var arguments$1 = arguments;\n\n if (target === null || target === undefined) {\n throw new TypeError('Cannot convert undefined or null to object')\n }\n var to = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments$1[index];\n if (nextSource !== null && nextSource !== undefined) {\n for (var nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to\n}\n\nfunction isExist (obj) {\n return typeof obj !== 'undefined' && obj !== null\n}\n\nfunction isFunction (obj) {\n return typeof obj === 'function'\n}\n\nfunction isNumber (obj) {\n return typeof obj === 'number'\n}\n\nfunction isString (obj) {\n return typeof obj === 'string'\n}\n\nfunction isBoolean (obj) {\n return typeof obj === 'boolean'\n}\n\nfunction isPromiseSupported () {\n return typeof window !== 'undefined' && isExist(window.Promise)\n}\n\nfunction hasOwnProperty (o, k) {\n return Object.prototype.hasOwnProperty.call(o, k)\n}\n\nvar script = {\n props: {\n value: Number,\n indicators: {\n type: Boolean,\n default: true\n },\n controls: {\n type: Boolean,\n default: true\n },\n interval: {\n type: Number,\n default: 5000\n },\n iconControlLeft: {\n type: String,\n default: 'glyphicon glyphicon-chevron-left'\n },\n iconControlRight: {\n type: String,\n default: 'glyphicon glyphicon-chevron-right'\n }\n },\n data: function data () {\n return {\n slides: [],\n activeIndex: 0, // Make v-model not required\n timeoutId: 0,\n intervalId: 0\n }\n },\n watch: {\n interval: function interval () {\n this.startInterval();\n },\n value: function value (index, oldValue) {\n this.run(index, oldValue);\n this.activeIndex = index;\n }\n },\n mounted: function mounted () {\n if (isExist(this.value)) {\n this.activeIndex = this.value;\n }\n if (this.slides.length > 0) {\n this.$select(this.activeIndex);\n }\n this.startInterval();\n },\n beforeDestroy: function beforeDestroy () {\n this.stopInterval();\n },\n methods: {\n run: function run (newIndex, oldIndex) {\n var this$1 = this;\n\n var currentActiveIndex = oldIndex || 0;\n var direction;\n if (newIndex > currentActiveIndex) {\n direction = ['next', 'left'];\n } else {\n direction = ['prev', 'right'];\n }\n this.slides[newIndex].slideClass[direction[0]] = true;\n this.$nextTick(function () {\n this$1.slides[newIndex].$el.offsetHeight;\n this$1.slides.forEach(function (slide, i) {\n if (i === currentActiveIndex) {\n slide.slideClass.active = true;\n slide.slideClass[direction[1]] = true;\n } else if (i === newIndex) {\n slide.slideClass[direction[1]] = true;\n }\n });\n this$1.timeoutId = setTimeout(function () {\n this$1.$select(newIndex);\n this$1.$emit('change', newIndex);\n this$1.timeoutId = 0;\n }, 600);\n });\n },\n startInterval: function startInterval () {\n var this$1 = this;\n\n this.stopInterval();\n if (this.interval > 0) {\n this.intervalId = setInterval(function () {\n this$1.next();\n }, this.interval);\n }\n },\n stopInterval: function stopInterval () {\n clearInterval(this.intervalId);\n this.intervalId = 0;\n },\n resetAllSlideClass: function resetAllSlideClass () {\n this.slides.forEach(function (slide) {\n slide.slideClass.active = false;\n slide.slideClass.left = false;\n slide.slideClass.right = false;\n slide.slideClass.next = false;\n slide.slideClass.prev = false;\n });\n },\n $select: function $select (index) {\n this.resetAllSlideClass();\n this.slides[index].slideClass.active = true;\n },\n select: function select (index) {\n if (this.timeoutId !== 0 || index === this.activeIndex) {\n return\n }\n if (isExist(this.value)) {\n this.$emit('input', index);\n } else {\n this.run(index, this.activeIndex);\n this.activeIndex = index;\n }\n },\n prev: function prev () {\n this.select(this.activeIndex === 0 ? this.slides.length - 1 : this.activeIndex - 1);\n },\n next: function next () {\n this.select(this.activeIndex === this.slides.length - 1 ? 0 : this.activeIndex + 1);\n }\n }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n var options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n var hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n var originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n var existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\n/* script */\nvar __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n {\n staticClass: \"carousel slide\",\n attrs: { \"data-ride\": \"carousel\" },\n on: { mouseenter: _vm.stopInterval, mouseleave: _vm.startInterval }\n },\n [\n _vm.indicators\n ? _vm._t(\n \"indicators\",\n [\n _c(\n \"ol\",\n { staticClass: \"carousel-indicators\" },\n _vm._l(_vm.slides, function(slide, index) {\n return _c(\"li\", {\n class: { active: index === _vm.activeIndex },\n on: {\n click: function($event) {\n return _vm.select(index)\n }\n }\n })\n }),\n 0\n )\n ],\n { select: _vm.select, activeIndex: _vm.activeIndex }\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"carousel-inner\", attrs: { role: \"listbox\" } },\n [_vm._t(\"default\")],\n 2\n ),\n _vm._v(\" \"),\n _vm.controls\n ? _c(\n \"a\",\n {\n staticClass: \"left carousel-control\",\n attrs: { href: \"#\", role: \"button\" },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.prev()\n }\n }\n },\n [\n _c(\"span\", {\n class: _vm.iconControlLeft,\n attrs: { \"aria-hidden\": \"true\" }\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"sr-only\" }, [_vm._v(\"Previous\")])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.controls\n ? _c(\n \"a\",\n {\n staticClass: \"right carousel-control\",\n attrs: { href: \"#\", role: \"button\" },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.next()\n }\n }\n },\n [\n _c(\"span\", {\n class: _vm.iconControlRight,\n attrs: { \"aria-hidden\": \"true\" }\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"sr-only\" }, [_vm._v(\"Next\")])\n ]\n )\n : _vm._e()\n ],\n 2\n )\n};\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n\n /* style */\n var __vue_inject_styles__ = undefined;\n /* scoped */\n var __vue_scope_id__ = undefined;\n /* module identifier */\n var __vue_module_identifier__ = undefined;\n /* functional template */\n var __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__ = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nfunction spliceIfExist (arr, item) {\n if (Array.isArray(arr)) {\n var index = arr.indexOf(item);\n if (index >= 0) {\n arr.splice(index, 1);\n }\n }\n}\n\nfunction range (end, start, step) {\n if ( start === void 0 ) start = 0;\n if ( step === void 0 ) step = 1;\n\n var arr = [];\n for (var i = start; i < end; i += step) {\n arr.push(i);\n }\n return arr\n}\n\nfunction nodeListToArray (nodeList) {\n return Array.prototype.slice.call(nodeList || [])\n}\n\nfunction onlyUnique (value, index, self) {\n return self.indexOf(value) === index\n}\n\nvar script$1 = {\n data: function data () {\n return {\n slideClass: {\n active: false,\n prev: false,\n next: false,\n left: false,\n right: false\n }\n }\n },\n created: function created () {\n try {\n this.$parent.slides.push(this);\n } catch (e) {\n throw new Error('Slide parent must be Carousel.')\n }\n },\n beforeDestroy: function beforeDestroy () {\n var slides = this.$parent && this.$parent.slides;\n spliceIfExist(slides, this);\n }\n};\n\n/* script */\nvar __vue_script__$1 = script$1;\n\n/* template */\nvar __vue_render__$1 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n { staticClass: \"item\", class: _vm.slideClass },\n [_vm._t(\"default\")],\n 2\n )\n};\nvar __vue_staticRenderFns__$1 = [];\n__vue_render__$1._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$1 = undefined;\n /* scoped */\n var __vue_scope_id__$1 = undefined;\n /* module identifier */\n var __vue_module_identifier__$1 = undefined;\n /* functional template */\n var __vue_is_functional_template__$1 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$1 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 },\n __vue_inject_styles__$1,\n __vue_script__$1,\n __vue_scope_id__$1,\n __vue_is_functional_template__$1,\n __vue_module_identifier__$1,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar EVENTS = {\n MOUSE_ENTER: 'mouseenter',\n MOUSE_LEAVE: 'mouseleave',\n MOUSE_DOWN: 'mousedown',\n MOUSE_UP: 'mouseup',\n FOCUS: 'focus',\n BLUR: 'blur',\n CLICK: 'click',\n INPUT: 'input',\n KEY_DOWN: 'keydown',\n KEY_UP: 'keyup',\n KEY_PRESS: 'keypress',\n RESIZE: 'resize',\n SCROLL: 'scroll',\n TOUCH_START: 'touchstart',\n TOUCH_END: 'touchend'\n};\n\nvar TRIGGERS = {\n CLICK: 'click',\n HOVER: 'hover',\n FOCUS: 'focus',\n HOVER_FOCUS: 'hover-focus',\n OUTSIDE_CLICK: 'outside-click',\n MANUAL: 'manual'\n};\n\nvar PLACEMENTS = {\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n};\n\nfunction isIE11 () {\n /* istanbul ignore next */\n return !!window.MSInputMethodContext && !!document.documentMode\n}\n\nfunction isIE10 () {\n return window.navigator.appVersion.indexOf('MSIE 10') !== -1\n}\n\nfunction getComputedStyle (el) {\n return window.getComputedStyle(el)\n}\n\nfunction getViewportSize () {\n /* istanbul ignore next */\n var width = Math.max(document.documentElement.clientWidth, window.innerWidth) || 0;\n /* istanbul ignore next */\n var height = Math.max(document.documentElement.clientHeight, window.innerHeight) || 0;\n return { width: width, height: height }\n}\n\nvar scrollbarWidth = null;\nvar savedScreenSize = null;\n\nfunction getScrollbarWidth (recalculate) {\n if ( recalculate === void 0 ) recalculate = false;\n\n var screenSize = getViewportSize();\n // return directly when already calculated & not force recalculate & screen size not changed\n if (scrollbarWidth !== null && !recalculate &&\n screenSize.height === savedScreenSize.height && screenSize.width === savedScreenSize.width) {\n return scrollbarWidth\n }\n /* istanbul ignore next */\n if (document.readyState === 'loading') {\n return null\n }\n var div1 = document.createElement('div');\n var div2 = document.createElement('div');\n div1.style.width = div2.style.width = div1.style.height = div2.style.height = '100px';\n div1.style.overflow = 'scroll';\n div2.style.overflow = 'hidden';\n document.body.appendChild(div1);\n document.body.appendChild(div2);\n scrollbarWidth = Math.abs(div1.scrollHeight - div2.scrollHeight);\n document.body.removeChild(div1);\n document.body.removeChild(div2);\n // save new screen size\n savedScreenSize = screenSize;\n return scrollbarWidth\n}\n\nfunction on (element, event, handler) {\n /* istanbul ignore next */\n element.addEventListener(event, handler);\n}\n\nfunction off (element, event, handler) {\n /* istanbul ignore next */\n element.removeEventListener(event, handler);\n}\n\nfunction isElement (el) {\n return el && el.nodeType === Node.ELEMENT_NODE\n}\n\nfunction removeFromDom (el) {\n isElement(el) && isElement(el.parentNode) && el.parentNode.removeChild(el);\n}\n\nfunction ensureElementMatchesFunction () {\n /* istanbul ignore next */\n if (!Element.prototype.matches) {\n Element.prototype.matches =\n Element.prototype.matchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector ||\n Element.prototype.oMatchesSelector ||\n Element.prototype.webkitMatchesSelector ||\n function (s) {\n var matches = (this.document || this.ownerDocument).querySelectorAll(s);\n var i = matches.length;\n // eslint-disable-next-line no-empty\n while (--i >= 0 && matches.item(i) !== this) {}\n return i > -1\n };\n }\n}\n\nfunction addClass (el, className) {\n if (!isElement(el)) {\n return\n }\n if (el.className) {\n var classes = el.className.split(' ');\n if (classes.indexOf(className) < 0) {\n classes.push(className);\n el.className = classes.join(' ');\n }\n } else {\n el.className = className;\n }\n}\n\nfunction removeClass (el, className) {\n if (!isElement(el)) {\n return\n }\n if (el.className) {\n var classes = el.className.split(' ');\n var newClasses = [];\n for (var i = 0, l = classes.length; i < l; i++) {\n if (classes[i] !== className) {\n newClasses.push(classes[i]);\n }\n }\n el.className = newClasses.join(' ');\n }\n}\n\nfunction hasClass (el, className) {\n if (!isElement(el)) {\n return false\n }\n var classes = el.className.split(' ');\n for (var i = 0, l = classes.length; i < l; i++) {\n if (classes[i] === className) {\n return true\n }\n }\n return false\n}\n\nfunction setDropdownPosition (dropdown, trigger, options) {\n if ( options === void 0 ) options = {};\n\n var doc = document.documentElement;\n var containerScrollLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var containerScrollTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var rect = trigger.getBoundingClientRect();\n var dropdownRect = dropdown.getBoundingClientRect();\n dropdown.style.right = 'auto';\n dropdown.style.bottom = 'auto';\n if (options.menuRight) {\n dropdown.style.left = containerScrollLeft + rect.left + rect.width - dropdownRect.width + 'px';\n } else {\n dropdown.style.left = containerScrollLeft + rect.left + 'px';\n }\n if (options.dropup) {\n dropdown.style.top = containerScrollTop + rect.top - dropdownRect.height - 4 + 'px';\n } else {\n dropdown.style.top = containerScrollTop + rect.top + rect.height + 'px';\n }\n}\n\nfunction isAvailableAtPosition (trigger, popup, placement) {\n var triggerRect = trigger.getBoundingClientRect();\n var popupRect = popup.getBoundingClientRect();\n var viewPortSize = getViewportSize();\n var top = true;\n var right = true;\n var bottom = true;\n var left = true;\n switch (placement) {\n case PLACEMENTS.TOP:\n top = triggerRect.top >= popupRect.height;\n left = triggerRect.left + triggerRect.width / 2 >= popupRect.width / 2;\n right = triggerRect.right - triggerRect.width / 2 + popupRect.width / 2 <= viewPortSize.width;\n break\n case PLACEMENTS.BOTTOM:\n bottom = triggerRect.bottom + popupRect.height <= viewPortSize.height;\n left = triggerRect.left + triggerRect.width / 2 >= popupRect.width / 2;\n right = triggerRect.right - triggerRect.width / 2 + popupRect.width / 2 <= viewPortSize.width;\n break\n case PLACEMENTS.RIGHT:\n right = triggerRect.right + popupRect.width <= viewPortSize.width;\n top = triggerRect.top + triggerRect.height / 2 >= popupRect.height / 2;\n bottom = triggerRect.bottom - triggerRect.height / 2 + popupRect.height / 2 <= viewPortSize.height;\n break\n case PLACEMENTS.LEFT:\n left = triggerRect.left >= popupRect.width;\n top = triggerRect.top + triggerRect.height / 2 >= popupRect.height / 2;\n bottom = triggerRect.bottom - triggerRect.height / 2 + popupRect.height / 2 <= viewPortSize.height;\n break\n }\n return top && right && bottom && left\n}\n\nfunction setTooltipPosition (tooltip, trigger, placement, auto, appendTo, positionBy, viewport) {\n if (!isElement(tooltip) || !isElement(trigger)) {\n return\n }\n var isPopover = tooltip && tooltip.className && tooltip.className.indexOf('popover') >= 0;\n var containerScrollTop;\n var containerScrollLeft;\n if (!isExist(appendTo) || appendTo === 'body' || positionBy === 'body') {\n var doc = document.documentElement;\n containerScrollLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n containerScrollTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n } else {\n var container = getElementBySelectorOrRef(positionBy || appendTo);\n containerScrollLeft = container.scrollLeft;\n containerScrollTop = container.scrollTop;\n }\n // auto adjust placement\n if (auto) {\n // Try: right -> bottom -> left -> top\n // Cause the default placement is top\n var placements = [PLACEMENTS.RIGHT, PLACEMENTS.BOTTOM, PLACEMENTS.LEFT, PLACEMENTS.TOP];\n // The class switch helper function\n var changePlacementClass = function (placement) {\n // console.log(placement)\n placements.forEach(function (placement) {\n removeClass(tooltip, placement);\n });\n addClass(tooltip, placement);\n };\n // No need to adjust if the default placement fits\n if (!isAvailableAtPosition(trigger, tooltip, placement)) {\n for (var i = 0, l = placements.length; i < l; i++) {\n // Re-assign placement class\n changePlacementClass(placements[i]);\n // Break if new placement fits\n if (isAvailableAtPosition(trigger, tooltip, placements[i])) {\n placement = placements[i];\n break\n }\n }\n changePlacementClass(placement);\n }\n }\n // fix left and top for tooltip\n var rect = trigger.getBoundingClientRect();\n var tooltipRect = tooltip.getBoundingClientRect();\n var top;\n var left;\n if (placement === PLACEMENTS.BOTTOM) {\n top = containerScrollTop + rect.top + rect.height;\n left = containerScrollLeft + rect.left + rect.width / 2 - tooltipRect.width / 2;\n } else if (placement === PLACEMENTS.LEFT) {\n top = containerScrollTop + rect.top + rect.height / 2 - tooltipRect.height / 2;\n left = containerScrollLeft + rect.left - tooltipRect.width;\n } else if (placement === PLACEMENTS.RIGHT) {\n top = containerScrollTop + rect.top + rect.height / 2 - tooltipRect.height / 2;\n // https://github.com/uiv-lib/uiv/issues/272\n // add 1px to fix above issue\n left = containerScrollLeft + rect.left + rect.width + 1;\n } else {\n top = containerScrollTop + rect.top - tooltipRect.height;\n left = containerScrollLeft + rect.left + rect.width / 2 - tooltipRect.width / 2;\n }\n var viewportEl;\n // viewport option\n if (isString(viewport)) {\n viewportEl = document.querySelector(viewport);\n } else if (isFunction(viewport)) {\n viewportEl = viewport(trigger);\n }\n if (isElement(viewportEl)) {\n var popoverFix = isPopover ? 11 : 0;\n var viewportReact = viewportEl.getBoundingClientRect();\n var viewportTop = containerScrollTop + viewportReact.top;\n var viewportLeft = containerScrollLeft + viewportReact.left;\n var viewportBottom = viewportTop + viewportReact.height;\n var viewportRight = viewportLeft + viewportReact.width;\n // fix top\n if (top < viewportTop) {\n top = viewportTop;\n } else if (top + tooltipRect.height > viewportBottom) {\n top = viewportBottom - tooltipRect.height;\n }\n // fix left\n if (left < viewportLeft) {\n left = viewportLeft;\n } else if (left + tooltipRect.width > viewportRight) {\n left = viewportRight - tooltipRect.width;\n }\n // fix for popover pointer\n if (placement === PLACEMENTS.BOTTOM) {\n top -= popoverFix;\n } else if (placement === PLACEMENTS.LEFT) {\n left += popoverFix;\n } else if (placement === PLACEMENTS.RIGHT) {\n left -= popoverFix;\n } else {\n top += popoverFix;\n }\n }\n // set position finally\n tooltip.style.top = top + \"px\";\n tooltip.style.left = left + \"px\";\n}\n\nfunction hasScrollbar (el) {\n var SCROLL = 'scroll';\n var hasVScroll = el.scrollHeight > el.clientHeight;\n var style = getComputedStyle(el);\n return hasVScroll || style.overflow === SCROLL || style.overflowY === SCROLL\n}\n\nfunction toggleBodyOverflow (enable) {\n var MODAL_OPEN = 'modal-open';\n var FIXED_CONTENT = '.navbar-fixed-top, .navbar-fixed-bottom';\n var body = document.body;\n if (enable) {\n removeClass(body, MODAL_OPEN);\n body.style.paddingRight = null;\n nodeListToArray(document.querySelectorAll(FIXED_CONTENT)).forEach(function (node) {\n node.style.paddingRight = null;\n });\n } else {\n var browsersWithFloatingScrollbar = isIE10() || isIE11();\n var documentHasScrollbar = hasScrollbar(document.documentElement) || hasScrollbar(document.body);\n if (documentHasScrollbar && !browsersWithFloatingScrollbar) {\n var scrollbarWidth = getScrollbarWidth();\n body.style.paddingRight = scrollbarWidth + \"px\";\n nodeListToArray(document.querySelectorAll(FIXED_CONTENT)).forEach(function (node) {\n node.style.paddingRight = scrollbarWidth + \"px\";\n });\n }\n addClass(body, MODAL_OPEN);\n }\n}\n\nfunction getClosest (el, selector) {\n ensureElementMatchesFunction();\n var parent;\n var _el = el;\n while (_el) {\n parent = _el.parentElement;\n if (parent && parent.matches(selector)) {\n return parent\n }\n _el = parent;\n }\n return null\n}\n\nfunction getParents (el, selector, until) {\n if ( until === void 0 ) until = null;\n\n ensureElementMatchesFunction();\n var parents = [];\n var parent = el.parentElement;\n while (parent) {\n if (parent.matches(selector)) {\n parents.push(parent);\n } else if (until && (until === parent || parent.matches(until))) {\n break\n }\n parent = parent.parentElement;\n }\n return parents\n}\n\nfunction focus (el) {\n if (!isElement(el)) {\n return\n }\n el.getAttribute('tabindex') ? null : el.setAttribute('tabindex', '-1');\n el.focus();\n}\n\nvar MODAL_BACKDROP = 'modal-backdrop';\n\nfunction getOpenModals () {\n return document.querySelectorAll((\".\" + MODAL_BACKDROP))\n}\n\nfunction getOpenModalNum () {\n return getOpenModals().length\n}\n\nfunction getElementBySelectorOrRef (q) {\n if (isString(q)) { // is selector\n return document.querySelector(q)\n } else if (isElement(q)) { // is element\n return q\n } else if (isElement(q.$el)) { // is component\n return q.$el\n } else {\n return null\n }\n}\n\nvar COLLAPSE = 'collapse';\nvar IN = 'in';\nvar COLLAPSING = 'collapsing';\n\nvar Collapse = {\n render: function render (h) {\n return h(this.tag, {}, this.$slots.default)\n },\n props: {\n tag: {\n type: String,\n default: 'div'\n },\n value: {\n type: Boolean,\n default: false\n },\n transition: {\n type: Number,\n default: 350\n }\n },\n data: function data () {\n return {\n timeoutId: 0\n }\n },\n watch: {\n value: function value (show) {\n this.toggle(show);\n }\n },\n mounted: function mounted () {\n var el = this.$el;\n addClass(el, COLLAPSE);\n if (this.value) {\n addClass(el, IN);\n }\n },\n methods: {\n toggle: function toggle (show) {\n var this$1 = this;\n\n clearTimeout(this.timeoutId);\n var el = this.$el;\n if (show) {\n this.$emit('show');\n removeClass(el, COLLAPSE);\n el.style.height = 'auto';\n var height = window.getComputedStyle(el).height;\n el.style.height = null;\n addClass(el, COLLAPSING);\n el.offsetHeight; // force repaint\n el.style.height = height;\n this.timeoutId = setTimeout(function () {\n removeClass(el, COLLAPSING);\n addClass(el, COLLAPSE);\n addClass(el, IN);\n el.style.height = null;\n this$1.timeoutId = 0;\n this$1.$emit('shown');\n }, this.transition);\n } else {\n this.$emit('hide');\n el.style.height = window.getComputedStyle(el).height;\n removeClass(el, IN);\n removeClass(el, COLLAPSE);\n el.offsetHeight;\n el.style.height = null;\n addClass(el, COLLAPSING);\n this.timeoutId = setTimeout(function () {\n addClass(el, COLLAPSE);\n removeClass(el, COLLAPSING);\n el.style.height = null;\n this$1.timeoutId = 0;\n this$1.$emit('hidden');\n }, this.transition);\n }\n }\n }\n};\n\nvar DEFAULT_TAG = 'div';\n\nvar Dropdown = {\n render: function render (h) {\n return h(\n this.tag,\n {\n class: {\n 'btn-group': this.tag === DEFAULT_TAG,\n dropdown: !this.dropup,\n dropup: this.dropup,\n open: this.show\n }\n },\n [\n this.$slots.default,\n h(\n 'ul',\n {\n class: {\n 'dropdown-menu': true,\n 'dropdown-menu-right': this.menuRight\n },\n ref: 'dropdown'\n },\n [this.$slots.dropdown]\n )\n ]\n )\n },\n props: {\n tag: {\n type: String,\n default: DEFAULT_TAG\n },\n appendToBody: {\n type: Boolean,\n default: false\n },\n value: Boolean,\n dropup: {\n type: Boolean,\n default: false\n },\n menuRight: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n notCloseElements: Array,\n positionElement: null\n },\n data: function data () {\n return {\n show: false,\n triggerEl: undefined\n }\n },\n watch: {\n value: function value (v) {\n this.toggle(v);\n }\n },\n mounted: function mounted () {\n this.initTrigger();\n if (this.triggerEl) {\n on(this.triggerEl, EVENTS.CLICK, this.toggle);\n on(this.triggerEl, EVENTS.KEY_DOWN, this.onKeyPress);\n }\n on(this.$refs.dropdown, EVENTS.KEY_DOWN, this.onKeyPress);\n on(window, EVENTS.CLICK, this.windowClicked);\n on(window, EVENTS.TOUCH_END, this.windowClicked);\n if (this.value) {\n this.toggle(true);\n }\n },\n beforeDestroy: function beforeDestroy () {\n this.removeDropdownFromBody();\n if (this.triggerEl) {\n off(this.triggerEl, EVENTS.CLICK, this.toggle);\n off(this.triggerEl, EVENTS.KEY_DOWN, this.onKeyPress);\n }\n off(this.$refs.dropdown, EVENTS.KEY_DOWN, this.onKeyPress);\n off(window, EVENTS.CLICK, this.windowClicked);\n off(window, EVENTS.TOUCH_END, this.windowClicked);\n },\n methods: {\n getFocusItem: function getFocusItem () {\n var dropdownEl = this.$refs.dropdown;\n /* istanbul ignore next */\n return dropdownEl.querySelector('li > a:focus')\n },\n onKeyPress: function onKeyPress (event) {\n if (this.show) {\n var dropdownEl = this.$refs.dropdown;\n var keyCode = event.keyCode;\n if (keyCode === 27) {\n // esc\n this.toggle(false);\n this.triggerEl && this.triggerEl.focus();\n } else if (keyCode === 13) {\n // enter\n var currentFocus = this.getFocusItem();\n currentFocus && currentFocus.click();\n } else if (keyCode === 38 || keyCode === 40) {\n // up || down\n event.preventDefault();\n event.stopPropagation();\n var currentFocus$1 = this.getFocusItem();\n var items = dropdownEl.querySelectorAll('li:not(.disabled) > a');\n if (!currentFocus$1) {\n focus(items[0]);\n } else {\n for (var i = 0; i < items.length; i++) {\n if (currentFocus$1 === items[i]) {\n if (keyCode === 38 && i < items.length > 0) {\n focus(items[i - 1]);\n } else if (keyCode === 40 && i < items.length - 1) {\n focus(items[i + 1]);\n }\n break\n }\n }\n }\n }\n }\n },\n initTrigger: function initTrigger () {\n var trigger = this.$el.querySelector('[data-role=\"trigger\"]') || this.$el.querySelector('.dropdown-toggle') || this.$el.firstChild;\n this.triggerEl = trigger && trigger !== this.$refs.dropdown ? trigger : null;\n },\n toggle: function toggle (show) {\n if (this.disabled) {\n return\n }\n if (isBoolean(show)) {\n this.show = show;\n } else {\n this.show = !this.show;\n }\n if (this.appendToBody) {\n this.show ? this.appendDropdownToBody() : this.removeDropdownFromBody();\n }\n this.$emit('input', this.show);\n },\n windowClicked: function windowClicked (event) {\n var target = event.target;\n if (this.show && target) {\n var targetInNotCloseElements = false;\n if (this.notCloseElements) {\n for (var i = 0, l = this.notCloseElements.length; i < l; i++) {\n var isTargetInElement = this.notCloseElements[i].contains(target);\n var shouldBreak = isTargetInElement;\n /* istanbul ignore else */\n if (this.appendToBody) {\n var isTargetInDropdown = this.$refs.dropdown.contains(target);\n var isElInElements = this.notCloseElements.indexOf(this.$el) >= 0;\n shouldBreak = isTargetInElement || (isTargetInDropdown && isElInElements);\n }\n if (shouldBreak) {\n targetInNotCloseElements = true;\n break\n }\n }\n }\n var targetInDropdownBody = this.$refs.dropdown.contains(target);\n var targetInTrigger = this.$el.contains(target) && !targetInDropdownBody;\n // normally, a dropdown select event is handled by @click that trigger after @touchend\n // then @touchend event have to be ignore in this case\n var targetInDropdownAndIsTouchEvent = targetInDropdownBody && event.type === 'touchend';\n if (!targetInTrigger && !targetInNotCloseElements && !targetInDropdownAndIsTouchEvent) {\n this.toggle(false);\n }\n }\n },\n appendDropdownToBody: function appendDropdownToBody () {\n try {\n var el = this.$refs.dropdown;\n el.style.display = 'block';\n document.body.appendChild(el);\n var positionElement = this.positionElement || this.$el;\n setDropdownPosition(el, positionElement, this);\n } catch (e) {\n // Silent\n }\n },\n removeDropdownFromBody: function removeDropdownFromBody () {\n try {\n var el = this.$refs.dropdown;\n el.removeAttribute('style');\n this.$el.appendChild(el);\n } catch (e) {\n // Silent\n }\n }\n }\n};\n\nvar defaultLang = {\n uiv: {\n datePicker: {\n clear: 'Clear',\n today: 'Today',\n month: 'Month',\n month1: 'January',\n month2: 'February',\n month3: 'March',\n month4: 'April',\n month5: 'May',\n month6: 'June',\n month7: 'July',\n month8: 'August',\n month9: 'September',\n month10: 'October',\n month11: 'November',\n month12: 'December',\n year: 'Year',\n week1: 'Mon',\n week2: 'Tue',\n week3: 'Wed',\n week4: 'Thu',\n week5: 'Fri',\n week6: 'Sat',\n week7: 'Sun'\n },\n timePicker: {\n am: 'AM',\n pm: 'PM'\n },\n modal: {\n cancel: 'Cancel',\n ok: 'OK'\n },\n multiSelect: {\n placeholder: 'Select...',\n filterPlaceholder: 'Search...'\n }\n }\n};\n\n// https://github.com/ElemeFE/element/blob/dev/src/locale/index.js\n\nvar lang = defaultLang;\n\nvar i18nHandler = function () {\n var vuei18n = Object.getPrototypeOf(this).$t;\n /* istanbul ignore else */\n /* istanbul ignore next */\n if (isFunction(vuei18n)) {\n /* istanbul ignore next */\n try {\n return vuei18n.apply(this, arguments)\n } catch (err) {\n return this.$t.apply(this, arguments)\n }\n }\n};\n\nvar t = function (path, options) {\n options = options || {};\n var value;\n try {\n value = i18nHandler.apply(this, arguments);\n /* istanbul ignore next */\n if (isExist(value) && !options.$$locale) {\n return value\n }\n } catch (e) {\n // ignore\n }\n var array = path.split('.');\n var current = options.$$locale || lang;\n\n for (var i = 0, j = array.length; i < j; i++) {\n var property = array[i];\n value = current[property];\n if (i === j - 1) { return value }\n if (!value) { return '' }\n current = value;\n }\n /* istanbul ignore next */\n return ''\n};\n\nvar use = function (l) {\n lang = l || lang;\n};\n\nvar i18n = function (fn) {\n i18nHandler = fn || i18nHandler;\n};\n\nvar locale = { use: use, t: t, i18n: i18n };\n\nvar Local = {\n methods: {\n t: function t$1 () {\n var arguments$1 = arguments;\n\n var args = [];\n for (var i = 0; i < arguments.length; ++i) {\n args.push(arguments$1[i]);\n }\n args[1] = assign({}, { $$locale: this.locale }, args[1]);\n return t.apply(this, args)\n }\n },\n props: {\n locale: Object\n }\n};\n\nvar e=function(){return (e=Object.assign||function(e){for(var t,r=1,s=arguments.length;r props\n href: String,\n target: String,\n // props\n to: null,\n replace: {\n type: Boolean,\n default: false\n },\n append: {\n type: Boolean,\n default: false\n },\n exact: {\n type: Boolean,\n default: false\n }\n }\n};\n\nvar BtnGroup = {\n functional: true,\n render: function render (h, ref) {\n var obj;\n\n var props = ref.props;\n var children = ref.children;\n var data = ref.data;\n return h(\n 'div',\n a(data, {\n class: ( obj = {\n 'btn-group': !props.vertical,\n 'btn-group-vertical': props.vertical,\n 'btn-group-justified': props.justified\n }, obj[(\"btn-group-\" + (props.size))] = props.size, obj ),\n attrs: {\n role: 'group',\n 'data-toggle': 'buttons'\n }\n }),\n children\n )\n },\n props: {\n size: String,\n vertical: {\n type: Boolean,\n default: false\n },\n justified: {\n type: Boolean,\n default: false\n }\n }\n};\n\nvar INPUT_TYPE_CHECKBOX = 'checkbox';\nvar INPUT_TYPE_RADIO = 'radio';\n\nvar Btn = {\n functional: true,\n mixins: [linkMixin],\n render: function render (h, ref) {\n var children = ref.children;\n var props = ref.props;\n var data = ref.data;\n\n // event listeners\n var listeners = data.on || {};\n // checkbox: model contain inputValue\n // radio: model === inputValue\n var isInputActive = props.inputType === INPUT_TYPE_CHECKBOX ? props.value.indexOf(props.inputValue) >= 0 : props.value === props.inputValue;\n // button class\n var classes = {\n btn: true,\n active: props.inputType ? isInputActive : props.active,\n disabled: props.disabled,\n 'btn-block': props.block\n };\n classes[(\"btn-\" + (props.type))] = Boolean(props.type);\n classes[(\"btn-\" + (props.size))] = Boolean(props.size);\n // prevent event for disabled links\n var on = {\n click: function click (e) {\n if (props.disabled && e instanceof Event) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n };\n // render params\n var tag, options, slot;\n\n if (props.href) {\n // is native link\n tag = 'a';\n slot = children;\n options = a(data, {\n on: on,\n class: classes,\n attrs: {\n role: 'button',\n href: props.href,\n target: props.target\n }\n });\n } else if (props.to) {\n // is vue router link\n tag = 'router-link';\n slot = children;\n options = a(data, {\n nativeOn: on,\n class: classes,\n props: {\n event: props.disabled ? '' : 'click', // prevent nav while disabled\n to: props.to,\n replace: props.replace,\n append: props.append,\n exact: props.exact\n },\n attrs: {\n role: 'button'\n }\n });\n } else if (props.inputType) {\n // is input checkbox or radio\n tag = 'label';\n options = a(data, {\n on: on,\n class: classes\n });\n slot = [\n h('input', {\n attrs: {\n autocomplete: 'off',\n type: props.inputType,\n checked: isInputActive ? 'checked' : null,\n disabled: props.disabled\n },\n domProps: {\n checked: isInputActive // required\n },\n on: {\n input: function input (evt) {\n evt.stopPropagation();\n },\n change: function change () {\n if (props.inputType === INPUT_TYPE_CHECKBOX) {\n var valueCopied = props.value.slice();\n if (isInputActive) {\n valueCopied.splice(valueCopied.indexOf(props.inputValue), 1);\n } else {\n valueCopied.push(props.inputValue);\n }\n listeners.input(valueCopied);\n } else {\n listeners.input(props.inputValue);\n }\n }\n }\n }),\n children\n ];\n } else if (props.justified) {\n // is in justified btn-group\n tag = BtnGroup;\n options = {};\n slot = [\n h('button', a(data, {\n on: on,\n class: classes,\n attrs: {\n type: props.nativeType,\n disabled: props.disabled\n }\n }), children)\n ];\n } else {\n // is button\n tag = 'button';\n slot = children;\n options = a(data, {\n on: on,\n class: classes,\n attrs: {\n type: props.nativeType,\n disabled: props.disabled\n }\n });\n }\n\n return h(tag, options, slot)\n },\n props: {\n justified: {\n type: Boolean,\n default: false\n },\n type: {\n type: String,\n default: 'default'\n },\n nativeType: {\n type: String,\n default: 'button'\n },\n size: String,\n block: {\n type: Boolean,\n default: false\n },\n active: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n // props\n value: null,\n inputValue: null,\n inputType: {\n type: String,\n validator: function validator (value) {\n return value === INPUT_TYPE_CHECKBOX || value === INPUT_TYPE_RADIO\n }\n }\n }\n};\n\nvar IN$1 = 'in';\n\nvar script$2 = {\n mixins: [Local],\n components: { Btn: Btn },\n props: {\n value: {\n type: Boolean,\n default: false\n },\n title: String,\n size: String,\n backdrop: {\n type: Boolean,\n default: true\n },\n footer: {\n type: Boolean,\n default: true\n },\n header: {\n type: Boolean,\n default: true\n },\n cancelText: String,\n cancelType: {\n type: String,\n default: 'default'\n },\n okText: String,\n okType: {\n type: String,\n default: 'primary'\n },\n dismissBtn: {\n type: Boolean,\n default: true\n },\n transition: {\n type: Number,\n default: 150\n },\n autoFocus: {\n type: Boolean,\n default: false\n },\n keyboard: {\n type: Boolean,\n default: true\n },\n beforeClose: Function,\n zOffset: {\n type: Number,\n default: 20\n },\n appendToBody: {\n type: Boolean,\n default: false\n },\n displayStyle: {\n type: String,\n default: 'block'\n }\n },\n data: function data () {\n return {\n msg: ''\n }\n },\n computed: {\n modalSizeClass: function modalSizeClass () {\n var obj;\n\n return ( obj = {}, obj[(\"modal-\" + (this.size))] = Boolean(this.size), obj )\n }\n },\n watch: {\n value: function value (v) {\n this.$toggle(v);\n }\n },\n mounted: function mounted () {\n removeFromDom(this.$refs.backdrop);\n on(window, EVENTS.MOUSE_DOWN, this.suppressBackgroundClose);\n on(window, EVENTS.KEY_UP, this.onKeyPress);\n if (this.value) {\n this.$toggle(true);\n }\n },\n beforeDestroy: function beforeDestroy () {\n clearTimeout(this.timeoutId);\n removeFromDom(this.$refs.backdrop);\n removeFromDom(this.$el);\n if (getOpenModalNum() === 0) {\n toggleBodyOverflow(true);\n }\n off(window, EVENTS.MOUSE_DOWN, this.suppressBackgroundClose);\n off(window, EVENTS.MOUSE_UP, this.unsuppressBackgroundClose);\n off(window, EVENTS.KEY_UP, this.onKeyPress);\n },\n methods: {\n onKeyPress: function onKeyPress (event) {\n if (this.keyboard && this.value && event.keyCode === 27) {\n var thisModal = this.$refs.backdrop;\n var thisZIndex = thisModal.style.zIndex;\n thisZIndex = thisZIndex && thisZIndex !== 'auto' ? parseInt(thisZIndex) : 0;\n // Find out if this modal is the top most one.\n var modals = getOpenModals();\n var modalsLength = modals.length;\n for (var i = 0; i < modalsLength; i++) {\n if (modals[i] !== thisModal) {\n var zIndex = modals[i].style.zIndex;\n zIndex = zIndex && zIndex !== 'auto' ? parseInt(zIndex) : 0;\n // if any existing modal has higher zIndex, ignore\n if (zIndex > thisZIndex) {\n return\n }\n }\n }\n this.toggle(false);\n }\n },\n toggle: function toggle (show, msg) {\n var this$1 = this;\n\n var shouldClose = true;\n if (isFunction(this.beforeClose)) {\n shouldClose = this.beforeClose(msg);\n }\n\n if (isPromiseSupported()) {\n // Skip the hiding when beforeClose returning falsely value or returned Promise resolves to falsely value\n // Use Promise.resolve to accept both Boolean values and Promises\n Promise.resolve(shouldClose).then(function (shouldClose) {\n // Skip the hiding while show===false\n if (!show && shouldClose) {\n this$1.msg = msg;\n this$1.$emit('input', show);\n }\n });\n } else {\n // Fallback to old version if promise is not supported\n // skip the hiding while show===false & beforeClose returning falsely value\n if (!show && !shouldClose) {\n return\n }\n\n this.msg = msg;\n this.$emit('input', show);\n }\n },\n $toggle: function $toggle (show) {\n var this$1 = this;\n\n var modal = this.$el;\n var backdrop = this.$refs.backdrop;\n clearTimeout(this.timeoutId);\n if (show) {\n // If two modals share the same v-if condition the calculated z-index is incorrect,\n // resulting in popover misbehaviour.\n // solved by adding a nextTick.\n // https://github.com/uiv-lib/uiv/issues/342\n this.$nextTick(function () {\n var alreadyOpenModalNum = getOpenModalNum();\n document.body.appendChild(backdrop);\n if (this$1.appendToBody) {\n document.body.appendChild(modal);\n }\n modal.style.display = this$1.displayStyle;\n modal.scrollTop = 0;\n backdrop.offsetHeight; // force repaint\n toggleBodyOverflow(false);\n addClass(backdrop, IN$1);\n addClass(modal, IN$1);\n // fix z-index for nested modals\n // no need to calculate if no modal is already open\n if (alreadyOpenModalNum > 0) {\n var modalBaseZ = parseInt(getComputedStyle(modal).zIndex) || 1050; // 1050 is default modal z-Index\n var backdropBaseZ = parseInt(getComputedStyle(backdrop).zIndex) || 1040; // 1040 is default backdrop z-Index\n var offset = alreadyOpenModalNum * this$1.zOffset;\n modal.style.zIndex = \"\" + (modalBaseZ + offset);\n backdrop.style.zIndex = \"\" + (backdropBaseZ + offset);\n }\n // z-index fix end\n this$1.timeoutId = setTimeout(function () {\n if (this$1.autoFocus) {\n var btn = this$1.$el.querySelector('[data-action=\"auto-focus\"]');\n if (btn) {\n btn.focus();\n }\n }\n this$1.$emit('show');\n this$1.timeoutId = 0;\n }, this$1.transition);\n });\n } else {\n removeClass(backdrop, IN$1);\n removeClass(modal, IN$1);\n this.timeoutId = setTimeout(function () {\n modal.style.display = 'none';\n removeFromDom(backdrop);\n if (this$1.appendToBody) {\n removeFromDom(modal);\n }\n if (getOpenModalNum() === 0) {\n toggleBodyOverflow(true);\n }\n this$1.$emit('hide', this$1.msg || 'dismiss');\n this$1.msg = '';\n this$1.timeoutId = 0;\n // restore z-index for nested modals\n modal.style.zIndex = '';\n backdrop.style.zIndex = '';\n // z-index fix end\n }, this.transition);\n }\n },\n suppressBackgroundClose: function suppressBackgroundClose (event) {\n if (event && event.target === this.$el) {\n return\n }\n this.isCloseSuppressed = true;\n on(window, 'mouseup', this.unsuppressBackgroundClose);\n },\n unsuppressBackgroundClose: function unsuppressBackgroundClose () {\n var this$1 = this;\n\n if (this.isCloseSuppressed) {\n off(window, 'mouseup', this.unsuppressBackgroundClose);\n setTimeout(function () {\n this$1.isCloseSuppressed = false;\n }, 1);\n }\n },\n backdropClicked: function backdropClicked (event) {\n if (this.backdrop && !this.isCloseSuppressed) {\n this.toggle(false);\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$2 = script$2;\n\n/* template */\nvar __vue_render__$2 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n {\n staticClass: \"modal\",\n class: { fade: _vm.transition > 0 },\n attrs: { tabindex: \"-1\", role: \"dialog\" },\n on: {\n click: function($event) {\n if ($event.target !== $event.currentTarget) {\n return null\n }\n return _vm.backdropClicked($event)\n }\n }\n },\n [\n _c(\n \"div\",\n {\n ref: \"dialog\",\n staticClass: \"modal-dialog\",\n class: _vm.modalSizeClass,\n attrs: { role: \"document\" }\n },\n [\n _c(\"div\", { staticClass: \"modal-content\" }, [\n _vm.header\n ? _c(\n \"div\",\n { staticClass: \"modal-header\" },\n [\n _vm._t(\"header\", [\n _vm.dismissBtn\n ? _c(\n \"button\",\n {\n staticClass: \"close\",\n staticStyle: {\n position: \"relative\",\n \"z-index\": \"1060\"\n },\n attrs: { type: \"button\", \"aria-label\": \"Close\" },\n on: {\n click: function($event) {\n return _vm.toggle(false)\n }\n }\n },\n [\n _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n _vm._v(\"×\")\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"h4\",\n { staticClass: \"modal-title\" },\n [_vm._t(\"title\", [_vm._v(_vm._s(_vm.title))])],\n 2\n )\n ])\n ],\n 2\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"modal-body\" }, [_vm._t(\"default\")], 2),\n _vm._v(\" \"),\n _vm.footer\n ? _c(\n \"div\",\n { staticClass: \"modal-footer\" },\n [\n _vm._t(\"footer\", [\n _c(\n \"btn\",\n {\n attrs: { type: _vm.cancelType },\n on: {\n click: function($event) {\n return _vm.toggle(false, \"cancel\")\n }\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n _vm._s(\n _vm.cancelText || _vm.t(\"uiv.modal.cancel\")\n )\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"btn\",\n {\n attrs: {\n type: _vm.okType,\n \"data-action\": \"auto-focus\"\n },\n on: {\n click: function($event) {\n return _vm.toggle(false, \"ok\")\n }\n }\n },\n [\n _c(\"span\", [\n _vm._v(_vm._s(_vm.okText || _vm.t(\"uiv.modal.ok\")))\n ])\n ]\n )\n ])\n ],\n 2\n )\n : _vm._e()\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", {\n ref: \"backdrop\",\n staticClass: \"modal-backdrop\",\n class: { fade: _vm.transition > 0 }\n })\n ]\n )\n};\nvar __vue_staticRenderFns__$2 = [];\n__vue_render__$2._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$2 = undefined;\n /* scoped */\n var __vue_scope_id__$2 = undefined;\n /* module identifier */\n var __vue_module_identifier__$2 = undefined;\n /* functional template */\n var __vue_is_functional_template__$2 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$2 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$2, staticRenderFns: __vue_staticRenderFns__$2 },\n __vue_inject_styles__$2,\n __vue_script__$2,\n __vue_scope_id__$2,\n __vue_is_functional_template__$2,\n __vue_module_identifier__$2,\n false,\n undefined,\n undefined,\n undefined\n );\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; }\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") { return Array.from(iter); }\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar inBrowser = typeof window !== 'undefined';\nfunction freeze(item) {\n if (Array.isArray(item) || _typeof(item) === 'object') {\n return Object.freeze(item);\n }\n\n return item;\n}\nfunction combinePassengers(transports) {\n var slotProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return transports.reduce(function (passengers, transport) {\n var temp = transport.passengers[0];\n var newPassengers = typeof temp === 'function' ? temp(slotProps) : transport.passengers;\n return passengers.concat(newPassengers);\n }, []);\n}\nfunction stableSort(array, compareFn) {\n return array.map(function (v, idx) {\n return [idx, v];\n }).sort(function (a, b) {\n return compareFn(a[1], b[1]) || a[0] - b[0];\n }).map(function (c) {\n return c[1];\n });\n}\nfunction pick(obj, keys) {\n return keys.reduce(function (acc, key) {\n if (obj.hasOwnProperty(key)) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nvar transports = {};\nvar targets = {};\nvar sources = {};\nvar Wormhole = Vue.extend({\n data: function data() {\n return {\n transports: transports,\n targets: targets,\n sources: sources,\n trackInstances: inBrowser\n };\n },\n methods: {\n open: function open(transport) {\n if (!inBrowser) { return; }\n var to = transport.to,\n from = transport.from,\n passengers = transport.passengers,\n _transport$order = transport.order,\n order = _transport$order === void 0 ? Infinity : _transport$order;\n if (!to || !from || !passengers) { return; }\n var newTransport = {\n to: to,\n from: from,\n passengers: freeze(passengers),\n order: order\n };\n var keys = Object.keys(this.transports);\n\n if (keys.indexOf(to) === -1) {\n Vue.set(this.transports, to, []);\n }\n\n var currentIndex = this.$_getTransportIndex(newTransport); // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n\n var newTransports = this.transports[to].slice(0);\n\n if (currentIndex === -1) {\n newTransports.push(newTransport);\n } else {\n newTransports[currentIndex] = newTransport;\n }\n\n this.transports[to] = stableSort(newTransports, function (a, b) {\n return a.order - b.order;\n });\n },\n close: function close(transport) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var to = transport.to,\n from = transport.from;\n if (!to || !from && force === false) { return; }\n\n if (!this.transports[to]) {\n return;\n }\n\n if (force) {\n this.transports[to] = [];\n } else {\n var index = this.$_getTransportIndex(transport);\n\n if (index >= 0) {\n // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n var newTransports = this.transports[to].slice(0);\n newTransports.splice(index, 1);\n this.transports[to] = newTransports;\n }\n }\n },\n registerTarget: function registerTarget(target, vm, force) {\n if (!inBrowser) { return; }\n\n if (this.trackInstances && !force && this.targets[target]) {\n console.warn(\"[portal-vue]: Target \".concat(target, \" already exists\"));\n }\n\n this.$set(this.targets, target, Object.freeze([vm]));\n },\n unregisterTarget: function unregisterTarget(target) {\n this.$delete(this.targets, target);\n },\n registerSource: function registerSource(source, vm, force) {\n if (!inBrowser) { return; }\n\n if (this.trackInstances && !force && this.sources[source]) {\n console.warn(\"[portal-vue]: source \".concat(source, \" already exists\"));\n }\n\n this.$set(this.sources, source, Object.freeze([vm]));\n },\n unregisterSource: function unregisterSource(source) {\n this.$delete(this.sources, source);\n },\n hasTarget: function hasTarget(to) {\n return !!(this.targets[to] && this.targets[to][0]);\n },\n hasSource: function hasSource(to) {\n return !!(this.sources[to] && this.sources[to][0]);\n },\n hasContentFor: function hasContentFor(to) {\n return !!this.transports[to] && !!this.transports[to].length;\n },\n // Internal\n $_getTransportIndex: function $_getTransportIndex(_ref) {\n var to = _ref.to,\n from = _ref.from;\n\n for (var i in this.transports[to]) {\n if (this.transports[to][i].from === from) {\n return +i;\n }\n }\n\n return -1;\n }\n }\n});\nvar wormhole = new Wormhole(transports);\n\nvar _id = 1;\nvar Portal = Vue.extend({\n name: 'portal',\n props: {\n disabled: {\n type: Boolean\n },\n name: {\n type: String,\n default: function _default() {\n return String(_id++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n }\n },\n created: function created() {\n var _this = this;\n\n this.$nextTick(function () {\n wormhole.registerSource(_this.name, _this);\n });\n },\n mounted: function mounted() {\n if (!this.disabled) {\n this.sendUpdate();\n }\n },\n updated: function updated() {\n if (this.disabled) {\n this.clear();\n } else {\n this.sendUpdate();\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterSource(this.name);\n this.clear();\n },\n watch: {\n to: function to(newValue, oldValue) {\n oldValue && oldValue !== newValue && this.clear(oldValue);\n this.sendUpdate();\n }\n },\n methods: {\n clear: function clear(target) {\n var closer = {\n from: this.name,\n to: target || this.to\n };\n wormhole.close(closer);\n },\n normalizeSlots: function normalizeSlots() {\n return this.$scopedSlots.default ? [this.$scopedSlots.default] : this.$slots.default;\n },\n normalizeOwnChildren: function normalizeOwnChildren(children) {\n return typeof children === 'function' ? children(this.slotProps) : children;\n },\n sendUpdate: function sendUpdate() {\n var slotContent = this.normalizeSlots();\n\n if (slotContent) {\n var transport = {\n from: this.name,\n to: this.to,\n passengers: _toConsumableArray(slotContent),\n order: this.order\n };\n wormhole.open(transport);\n } else {\n this.clear();\n }\n }\n },\n render: function render(h) {\n var children = this.$slots.default || this.$scopedSlots.default || [];\n var Tag = this.tag;\n\n if (children && this.disabled) {\n return children.length <= 1 && this.slim ? this.normalizeOwnChildren(children)[0] : h(Tag, [this.normalizeOwnChildren(children)]);\n } else {\n return this.slim ? h() : h(Tag, {\n class: {\n 'v-portal': true\n },\n style: {\n display: 'none'\n },\n key: 'v-portal-placeholder'\n });\n }\n }\n});\n\nvar PortalTarget = Vue.extend({\n name: 'portalTarget',\n props: {\n multiple: {\n type: Boolean,\n default: false\n },\n name: {\n type: String,\n required: true\n },\n slim: {\n type: Boolean,\n default: false\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n data: function data() {\n return {\n transports: wormhole.transports,\n firstRender: true\n };\n },\n created: function created() {\n var _this = this;\n\n this.$nextTick(function () {\n wormhole.registerTarget(_this.name, _this);\n });\n },\n watch: {\n ownTransports: function ownTransports() {\n this.$emit('change', this.children().length > 0);\n },\n name: function name(newVal, oldVal) {\n /**\r\n * TODO\r\n * This should warn as well ...\r\n */\n wormhole.unregisterTarget(oldVal);\n wormhole.registerTarget(newVal, this);\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n if (this.transition) {\n this.$nextTick(function () {\n // only when we have a transition, because it causes a re-render\n _this2.firstRender = false;\n });\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterTarget(this.name);\n },\n computed: {\n ownTransports: function ownTransports() {\n var transports = this.transports[this.name] || [];\n\n if (this.multiple) {\n return transports;\n }\n\n return transports.length === 0 ? [] : [transports[transports.length - 1]];\n },\n passengers: function passengers() {\n return combinePassengers(this.ownTransports, this.slotProps);\n }\n },\n methods: {\n // can't be a computed prop because it has to \"react\" to $slot changes.\n children: function children() {\n return this.passengers.length !== 0 ? this.passengers : this.$scopedSlots.default ? this.$scopedSlots.default(this.slotProps) : this.$slots.default || [];\n },\n // can't be a computed prop because it has to \"react\" to this.children().\n noWrapper: function noWrapper() {\n var noWrapper = this.slim && !this.transition;\n\n if (noWrapper && this.children().length > 1) {\n console.warn('[portal-vue]: PortalTarget with `slim` option received more than one child element.');\n }\n\n return noWrapper;\n }\n },\n render: function render(h) {\n var noWrapper = this.noWrapper();\n var children = this.children();\n var Tag = this.transition || this.tag;\n return noWrapper ? children[0] : this.slim && !Tag ? h() : h(Tag, {\n props: {\n // if we have a transition component, pass the tag if it exists\n tag: this.transition && this.tag ? this.tag : undefined\n },\n class: {\n 'vue-portal-target': true\n }\n }, children);\n }\n});\n\nvar _id$1 = 0;\nvar portalProps = ['disabled', 'name', 'order', 'slim', 'slotProps', 'tag', 'to'];\nvar targetProps = ['multiple', 'transition'];\nVue.extend({\n name: 'MountingPortal',\n inheritAttrs: false,\n props: {\n append: {\n type: [Boolean, String]\n },\n bail: {\n type: Boolean\n },\n mountTo: {\n type: String,\n required: true\n },\n // Portal\n disabled: {\n type: Boolean\n },\n // name for the portal\n name: {\n type: String,\n default: function _default() {\n return 'mounted_' + String(_id$1++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n // name for the target\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n },\n // Target\n multiple: {\n type: Boolean,\n default: false\n },\n targetSlim: {\n type: Boolean\n },\n targetSlotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n targetTag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n created: function created() {\n if (typeof document === 'undefined') { return; }\n var el = document.querySelector(this.mountTo);\n\n if (!el) {\n console.error(\"[portal-vue]: Mount Point '\".concat(this.mountTo, \"' not found in document\"));\n return;\n }\n\n var props = this.$props; // Target already exists\n\n if (wormhole.targets[props.name]) {\n if (props.bail) {\n console.warn(\"[portal-vue]: Target \".concat(props.name, \" is already mounted.\\n Aborting because 'bail: true' is set\"));\n } else {\n this.portalTarget = wormhole.targets[props.name];\n }\n\n return;\n }\n\n var append = props.append;\n\n if (append) {\n var type = typeof append === 'string' ? append : 'DIV';\n var mountEl = document.createElement(type);\n el.appendChild(mountEl);\n el = mountEl;\n } // get props for target from $props\n // we have to rename a few of them\n\n\n var _props = pick(this.$props, targetProps);\n\n _props.slim = this.targetSlim;\n _props.tag = this.targetTag;\n _props.slotProps = this.targetSlotProps;\n _props.name = this.to;\n this.portalTarget = new PortalTarget({\n el: el,\n parent: this.$parent || this,\n propsData: _props\n });\n },\n beforeDestroy: function beforeDestroy() {\n var target = this.portalTarget;\n\n if (this.append) {\n var el = target.$el;\n el.parentNode.removeChild(el);\n }\n\n target.$destroy();\n },\n render: function render(h) {\n if (!this.portalTarget) {\n console.warn(\"[portal-vue] Target wasn't mounted\");\n return h();\n } // if there's no \"manual\" scoped slot, so we create a ourselves\n\n\n if (!this.$scopedSlots.manual) {\n var props = pick(this.$props, portalProps);\n return h(Portal, {\n props: props,\n attrs: this.$attrs,\n on: this.$listeners,\n scopedSlots: this.$scopedSlots\n }, this.$slots.default);\n } // else, we render the scoped slot\n\n\n var content = this.$scopedSlots.manual({\n to: this.to\n }); // if user used for the scoped slot\n // content will be an array\n\n if (Array.isArray(content)) {\n content = content[0];\n }\n\n if (!content) { return h(); }\n return content;\n }\n});\n\nvar ACTIVE_CLASS = 'active';\nvar IN_CLASS = 'in';\n\nvar script$3 = {\n components: { Portal: Portal },\n props: {\n title: {\n type: String,\n default: 'Tab Title'\n },\n disabled: {\n type: Boolean,\n default: false\n },\n tabClasses: {\n type: Object,\n default: function () { return {} }\n },\n group: String,\n pullRight: {\n type: Boolean,\n default: false\n },\n hidden: {\n type: Boolean,\n default: false\n }\n },\n data: function data () {\n return {\n active: true,\n transition: 150\n }\n },\n watch: {\n active: function active (active$1) {\n var this$1 = this;\n\n if (active$1) {\n setTimeout(function () {\n addClass(this$1.$el, ACTIVE_CLASS);\n this$1.$el.offsetHeight;\n addClass(this$1.$el, IN_CLASS);\n try {\n this$1.$parent.$emit('changed', this$1.$parent.activeIndex);\n } catch (e) {\n throw new Error(' parent must be .')\n }\n }, this.transition);\n } else {\n removeClass(this.$el, IN_CLASS);\n setTimeout(function () {\n removeClass(this$1.$el, ACTIVE_CLASS);\n }, this.transition);\n }\n }\n },\n created: function created () {\n try {\n this.$parent.tabs.push(this);\n } catch (e) {\n throw new Error(' parent must be .')\n }\n },\n beforeDestroy: function beforeDestroy () {\n var tabs = this.$parent && this.$parent.tabs;\n spliceIfExist(tabs, this);\n },\n methods: {\n show: function show () {\n var this$1 = this;\n\n this.$nextTick(function () {\n addClass(this$1.$el, ACTIVE_CLASS);\n addClass(this$1.$el, IN_CLASS);\n });\n }\n }\n};\n\n/* script */\nvar __vue_script__$3 = script$3;\n\n/* template */\nvar __vue_render__$3 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n {\n staticClass: \"tab-pane\",\n class: { fade: _vm.transition > 0 },\n attrs: { role: \"tabpanel\" }\n },\n [\n _vm._t(\"default\"),\n _vm._v(\" \"),\n _c(\"portal\", { attrs: { to: _vm._uid.toString() } }, [_vm._t(\"title\")], 2)\n ],\n 2\n )\n};\nvar __vue_staticRenderFns__$3 = [];\n__vue_render__$3._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$3 = undefined;\n /* scoped */\n var __vue_scope_id__$3 = undefined;\n /* module identifier */\n var __vue_module_identifier__$3 = undefined;\n /* functional template */\n var __vue_is_functional_template__$3 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$3 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$3, staticRenderFns: __vue_staticRenderFns__$3 },\n __vue_inject_styles__$3,\n __vue_script__$3,\n __vue_scope_id__$3,\n __vue_is_functional_template__$3,\n __vue_module_identifier__$3,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar BEFORE_CHANGE_EVENT = 'before-change';\n\nvar script$4 = {\n components: { Dropdown: Dropdown, PortalTarget: PortalTarget },\n props: {\n value: {\n type: Number,\n validator: function (v) { return v >= 0; }\n },\n transition: {\n type: Number,\n default: 150\n },\n justified: Boolean,\n pills: Boolean,\n stacked: Boolean,\n customNavClass: null,\n customContentClass: null\n },\n data: function data () {\n return {\n tabs: [],\n activeIndex: 0 // Make v-model not required\n }\n },\n watch: {\n value: {\n immediate: true,\n handler: function handler (value) {\n if (isNumber(value)) {\n this.activeIndex = value;\n this.selectCurrent();\n }\n }\n },\n tabs: function tabs (tabs$1) {\n var this$1 = this;\n\n tabs$1.forEach(function (tab, index) {\n tab.transition = this$1.transition;\n if (index === this$1.activeIndex) {\n tab.show();\n }\n });\n this.selectCurrent();\n }\n },\n computed: {\n navClasses: function navClasses () {\n var obj;\n\n var tabClasses = {\n nav: true,\n 'nav-justified': this.justified,\n 'nav-tabs': !this.pills,\n 'nav-pills': this.pills,\n 'nav-stacked': this.stacked && this.pills\n };\n var customNavClass = this.customNavClass;\n if (isExist(customNavClass)) {\n if (isString(customNavClass)) {\n return assign({}, tabClasses, ( obj = {}, obj[customNavClass] = true, obj ))\n } else {\n return assign({}, tabClasses, customNavClass)\n }\n } else {\n return tabClasses\n }\n },\n contentClasses: function contentClasses () {\n var obj;\n\n var contentClasses = {\n 'tab-content': true\n };\n var customContentClass = this.customContentClass;\n if (isExist(customContentClass)) {\n if (isString(customContentClass)) {\n return assign({}, contentClasses, ( obj = {}, obj[customContentClass] = true, obj ))\n } else {\n return assign({}, contentClasses, customContentClass)\n }\n } else {\n return contentClasses\n }\n },\n groupedTabs: function groupedTabs () {\n var tabs = [];\n var hash = {};\n this.tabs.forEach(function (tab) {\n if (tab.group) {\n if (hasOwnProperty(hash, tab.group)) {\n tabs[hash[tab.group]].tabs.push(tab);\n } else {\n tabs.push({\n tabs: [tab],\n group: tab.group\n });\n hash[tab.group] = tabs.length - 1;\n }\n if (tab.active) {\n tabs[hash[tab.group]].active = true;\n }\n if (tab.pullRight) {\n tabs[hash[tab.group]].pullRight = true;\n }\n } else {\n tabs.push(tab);\n }\n });\n tabs = tabs.map(function (tab) {\n if (Array.isArray(tab.tabs)) {\n tab.hidden = tab.tabs.filter(function (v) { return v.hidden; }).length === tab.tabs.length;\n }\n return tab\n });\n return tabs\n }\n },\n methods: {\n getTabClasses: function getTabClasses (tab, isSubTab) {\n if ( isSubTab === void 0 ) isSubTab = false;\n\n var defaultClasses = {\n active: tab.active,\n disabled: tab.disabled,\n 'pull-right': tab.pullRight && !isSubTab\n };\n\n // return with new classes added to tab\n return assign(defaultClasses, tab.tabClasses)\n },\n selectCurrent: function selectCurrent () {\n var this$1 = this;\n\n var found = false;\n this.tabs.forEach(function (tab, index) {\n if (index === this$1.activeIndex) {\n found = !tab.active;\n tab.active = true;\n } else {\n tab.active = false;\n }\n });\n if (found) {\n this.$emit('change', this.activeIndex);\n }\n },\n selectValidate: function selectValidate (index) {\n var this$1 = this;\n\n if (isFunction(this.$listeners[BEFORE_CHANGE_EVENT])) {\n this.$emit(BEFORE_CHANGE_EVENT, this.activeIndex, index, function (result) {\n if (!isExist(result)) {\n this$1.$select(index);\n }\n });\n } else {\n this.$select(index);\n }\n },\n select: function select (index) {\n if (!this.tabs[index].disabled && index !== this.activeIndex) {\n this.selectValidate(index);\n }\n },\n $select: function $select (index) {\n if (isNumber(this.value)) {\n this.$emit('input', index);\n } else {\n this.activeIndex = index;\n this.selectCurrent();\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$4 = script$4;\n\n/* template */\nvar __vue_render__$4 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"section\", [\n _c(\n \"ul\",\n { class: _vm.navClasses, attrs: { role: \"tablist\" } },\n [\n _vm._l(_vm.groupedTabs, function(tab, index) {\n return [\n tab.tabs\n ? _c(\n \"dropdown\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !tab.hidden,\n expression: \"!tab.hidden\"\n }\n ],\n class: _vm.getTabClasses(tab),\n attrs: { role: \"presentation\", tag: \"li\" }\n },\n [\n _c(\n \"a\",\n {\n staticClass: \"dropdown-toggle\",\n attrs: { role: \"tab\", href: \"#\" },\n on: {\n click: function($event) {\n $event.preventDefault();\n }\n }\n },\n [\n _vm._v(_vm._s(tab.group) + \" \"),\n _c(\"span\", { staticClass: \"caret\" })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"template\",\n { slot: \"dropdown\" },\n _vm._l(tab.tabs, function(subTab) {\n return _c(\n \"li\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !subTab.hidden,\n expression: \"!subTab.hidden\"\n }\n ],\n class: _vm.getTabClasses(subTab, true)\n },\n [\n _c(\n \"a\",\n {\n attrs: { href: \"#\" },\n on: {\n click: function($event) {\n $event.preventDefault();\n _vm.select(_vm.tabs.indexOf(subTab));\n }\n }\n },\n [_vm._v(_vm._s(subTab.title))]\n )\n ]\n )\n }),\n 0\n )\n ],\n 2\n )\n : _c(\n \"li\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !tab.hidden,\n expression: \"!tab.hidden\"\n }\n ],\n class: _vm.getTabClasses(tab),\n attrs: { role: \"presentation\" }\n },\n [\n tab.$slots.title\n ? _c(\n \"a\",\n {\n attrs: { role: \"tab\", href: \"#\" },\n on: {\n click: function($event) {\n $event.preventDefault();\n _vm.select(_vm.tabs.indexOf(tab));\n }\n }\n },\n [\n _c(\"portal-target\", {\n attrs: { name: tab._uid.toString() }\n })\n ],\n 1\n )\n : _c(\"a\", {\n attrs: { role: \"tab\", href: \"#\" },\n domProps: { textContent: _vm._s(tab.title) },\n on: {\n click: function($event) {\n $event.preventDefault();\n _vm.select(_vm.tabs.indexOf(tab));\n }\n }\n })\n ]\n )\n ]\n }),\n _vm._v(\" \"),\n !_vm.justified && _vm.$slots[\"nav-right\"]\n ? _c(\"li\", { staticClass: \"pull-right\" }, [_vm._t(\"nav-right\")], 2)\n : _vm._e()\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\"div\", { class: _vm.contentClasses }, [_vm._t(\"default\")], 2)\n ])\n};\nvar __vue_staticRenderFns__$4 = [];\n__vue_render__$4._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$4 = undefined;\n /* scoped */\n var __vue_scope_id__$4 = undefined;\n /* module identifier */\n var __vue_module_identifier__$4 = undefined;\n /* functional template */\n var __vue_is_functional_template__$4 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$4 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$4, staticRenderFns: __vue_staticRenderFns__$4 },\n __vue_inject_styles__$4,\n __vue_script__$4,\n __vue_scope_id__$4,\n __vue_is_functional_template__$4,\n __vue_module_identifier__$4,\n false,\n undefined,\n undefined,\n undefined\n );\n\nfunction pad (value, num) {\n value = value + '';\n for (var i = num - value.length; i > 0; i--) {\n value = '0' + value;\n }\n return value\n}\n\nvar monthNames = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n];\n\n/**\n * Get total days number in a month.\n * because we're using 0 as the day so that it returns the last day\n * of the last month, so you have to add 1 to the month number\n * so it returns the correct amount of days.\n * https://stackoverflow.com/questions/1184334/get-number-days-in-a-specified-month-using-javascript\n * @param month 0-based\n * @param year\n * @returns {number}\n */\nfunction daysInMonth (month, year) {\n return new Date(year, month + 1, 0).getDate()\n}\n\nfunction stringify (date, format) {\n try {\n var year = date.getFullYear();\n var month = date.getMonth() + 1;\n var day = date.getDate();\n var monthName = monthNames[month - 1];\n return format\n .replace(/yyyy/g, year)\n .replace(/MMMM/g, monthName)\n .replace(/MMM/g, monthName.substring(0, 3))\n .replace(/MM/g, pad(month, 2))\n .replace(/dd/g, pad(day, 2))\n .replace(/yy/g, year)\n .replace(/M(?!a)/g, month)\n .replace(/d/g, day)\n } catch (e) {\n return ''\n }\n}\n\nfunction convertDateToUTC (date) {\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds())\n}\n\n/**\n * https://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php\n * For a given date, get the ISO week number\n * Based on information at:\n * http://www.merlyn.demon.co.uk/weekcalc.htm#WNR\n *\n * Algorithm is to find nearest thursday, it's year\n * is the year of the week number. Then get weeks\n * between that date and the first day of that year.\n *\n * Note that dates in one year can be weeks of previous\n * or next year, overlap is up to 3 days.\n *\n * e.g. 2014/12/29 is Monday in week 1 of 2015\n * 2012/1/1 is Sunday in week 52 of 2011\n *\n * @param {number} d.year year of date\n * @param {number} d.month month of date\n * @param {number} d.date date of date\n * @returns {number}\n */\nfunction getWeekNumber (d) {\n // Copy date so don't modify original\n var _d = new Date(Date.UTC(d.year, d.month, d.date));\n // Set to nearest Thursday: current date + 4 - current day number\n // Make Sunday's day number 7\n _d.setUTCDate(_d.getUTCDate() + 4 - (_d.getUTCDay() || 7));\n // Get first day of year\n var yearStart = new Date(Date.UTC(_d.getUTCFullYear(), 0, 1));\n // Calculate full weeks to nearest Thursday\n return Math.ceil((((_d - yearStart) / 86400000) + 1) / 7)\n}\n\nvar script$5 = {\n mixins: [Local],\n props: {\n month: Number,\n year: Number,\n date: Date,\n today: Date,\n limit: Object,\n weekStartsWith: Number,\n iconControlLeft: String,\n iconControlRight: String,\n dateClass: Function,\n yearMonthFormatter: Function,\n weekNumbers: Boolean\n },\n components: { Btn: Btn },\n computed: {\n weekDays: function weekDays () {\n var days = [];\n var firstDay = this.weekStartsWith;\n while (days.length < 7) {\n days.push(firstDay++);\n if (firstDay > 6) {\n firstDay = 0;\n }\n }\n return days\n },\n yearMonthStr: function yearMonthStr () {\n if (this.yearMonthFormatter) {\n return this.yearMonthFormatter(this.year, this.month)\n } else {\n return isExist(this.month) ? ((this.year) + \" \" + (this.t((\"uiv.datePicker.month\" + (this.month + 1))))) : this.year\n }\n },\n monthDayRows: function monthDayRows () {\n var rows = [];\n var firstDay = new Date(this.year, this.month, 1);\n var prevMonthLastDate = new Date(this.year, this.month, 0).getDate();\n var startIndex = firstDay.getDay();\n // console.log(startIndex)\n var daysNum = daysInMonth(this.month, this.year);\n var weekOffset = 0;\n if (this.weekStartsWith > startIndex) {\n weekOffset = 7 - this.weekStartsWith;\n } else {\n weekOffset = 0 - this.weekStartsWith;\n }\n // console.log(prevMonthLastDate, startIndex, daysNum)\n for (var i = 0; i < 6; i++) {\n rows.push([]);\n for (var j = 0 - weekOffset; j < 7 - weekOffset; j++) {\n var currentIndex = i * 7 + j;\n var date = { year: this.year, disabled: false };\n // date in and not in current month\n if (currentIndex < startIndex) {\n date.date = prevMonthLastDate - startIndex + currentIndex + 1;\n if (this.month > 0) {\n date.month = this.month - 1;\n } else {\n date.month = 11;\n date.year--;\n }\n } else if (currentIndex < startIndex + daysNum) {\n date.date = currentIndex - startIndex + 1;\n date.month = this.month;\n } else {\n date.date = currentIndex - startIndex - daysNum + 1;\n if (this.month < 11) {\n date.month = this.month + 1;\n } else {\n date.month = 0;\n date.year++;\n }\n }\n // process limit dates\n var dateObj = new Date(date.year, date.month, date.date);\n var afterFrom = true;\n var beforeTo = true;\n if (this.limit && this.limit.from) {\n afterFrom = dateObj >= this.limit.from;\n }\n if (this.limit && this.limit.to) {\n beforeTo = dateObj < this.limit.to;\n }\n date.disabled = !afterFrom || !beforeTo;\n if (isFunction(this.dateClass)) {\n date.classes = this.dateClass(dateObj, {\n currentMonth: this.month,\n currentYear: this.year\n });\n } else {\n date.classes = '';\n }\n rows[i].push(date);\n }\n }\n return rows\n }\n },\n methods: {\n getWeekNumber: getWeekNumber,\n tWeekName: function tWeekName (index) {\n return this.t((\"uiv.datePicker.week\" + index))\n },\n getBtnType: function getBtnType (date) {\n if (this.date &&\n date.date === this.date.getDate() &&\n date.month === this.date.getMonth() &&\n date.year === this.date.getFullYear()) {\n return 'primary'\n } else if (date.date === this.today.getDate() &&\n date.month === this.today.getMonth() &&\n date.year === this.today.getFullYear()) {\n return 'info'\n } else {\n return 'default'\n }\n },\n select: function select (date) {\n this.$emit('date-change', date);\n },\n goPrevMonth: function goPrevMonth () {\n var month = this.month;\n var year = this.year;\n if (this.month > 0) {\n month--;\n } else {\n month = 11;\n year--;\n this.$emit('year-change', year);\n }\n this.$emit('month-change', month);\n },\n goNextMonth: function goNextMonth () {\n var month = this.month;\n var year = this.year;\n if (this.month < 11) {\n month++;\n } else {\n month = 0;\n year++;\n this.$emit('year-change', year);\n }\n this.$emit('month-change', month);\n },\n changeView: function changeView () {\n this.$emit('view-change', 'm');\n }\n }\n};\n\n/* script */\nvar __vue_script__$5 = script$5;\n\n/* template */\nvar __vue_render__$5 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"table\",\n { staticStyle: { width: \"100%\" }, attrs: { role: \"grid\" } },\n [\n _c(\"thead\", [\n _c(\"tr\", [\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-pager-prev\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" },\n on: { click: _vm.goPrevMonth }\n },\n [_c(\"i\", { class: _vm.iconControlLeft })]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"td\",\n { attrs: { colspan: _vm.weekNumbers ? 6 : 5 } },\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-title\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" },\n on: { click: _vm.changeView }\n },\n [_c(\"b\", [_vm._v(_vm._s(_vm.yearMonthStr))])]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-pager-next\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" },\n on: { click: _vm.goNextMonth }\n },\n [_c(\"i\", { class: _vm.iconControlRight })]\n )\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"tr\",\n { attrs: { align: \"center\" } },\n [\n _vm.weekNumbers ? _c(\"td\") : _vm._e(),\n _vm._v(\" \"),\n _vm._l(_vm.weekDays, function(day) {\n return _c(\"td\", { attrs: { width: \"14.2857142857%\" } }, [\n _c(\"small\", { staticClass: \"uiv-datepicker-week\" }, [\n _vm._v(_vm._s(_vm.tWeekName(day === 0 ? 7 : day)))\n ])\n ])\n })\n ],\n 2\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"tbody\",\n _vm._l(_vm.monthDayRows, function(row) {\n return _c(\n \"tr\",\n [\n _vm.weekNumbers\n ? _c(\n \"td\",\n {\n staticClass: \"text-center\",\n staticStyle: { \"border-right\": \"1px solid #eee\" }\n },\n [\n _c(\"small\", { staticClass: \"text-muted\" }, [\n _vm._v(\n _vm._s(_vm.getWeekNumber(row[_vm.weekStartsWith]))\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm._l(row, function(date) {\n return _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n class: date.classes,\n staticStyle: { border: \"none\" },\n attrs: {\n block: \"\",\n size: \"sm\",\n \"data-action\": \"select\",\n type: _vm.getBtnType(date),\n disabled: date.disabled\n },\n on: {\n click: function($event) {\n return _vm.select(date)\n }\n }\n },\n [\n _c(\n \"span\",\n {\n class: { \"text-muted\": _vm.month !== date.month },\n attrs: { \"data-action\": \"select\" }\n },\n [_vm._v(_vm._s(date.date))]\n )\n ]\n )\n ],\n 1\n )\n })\n ],\n 2\n )\n }),\n 0\n )\n ]\n )\n};\nvar __vue_staticRenderFns__$5 = [];\n__vue_render__$5._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$5 = undefined;\n /* scoped */\n var __vue_scope_id__$5 = undefined;\n /* module identifier */\n var __vue_module_identifier__$5 = undefined;\n /* functional template */\n var __vue_is_functional_template__$5 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$5 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$5, staticRenderFns: __vue_staticRenderFns__$5 },\n __vue_inject_styles__$5,\n __vue_script__$5,\n __vue_scope_id__$5,\n __vue_is_functional_template__$5,\n __vue_module_identifier__$5,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$6 = {\n components: { Btn: Btn },\n mixins: [Local],\n props: {\n month: Number,\n year: Number,\n iconControlLeft: String,\n iconControlRight: String\n },\n data: function data () {\n return {\n rows: []\n }\n },\n mounted: function mounted () {\n for (var i = 0; i < 4; i++) {\n this.rows.push([]);\n for (var j = 0; j < 3; j++) {\n this.rows[i].push(i * 3 + j + 1);\n }\n }\n },\n methods: {\n tCell: function tCell (cell) {\n return this.t((\"uiv.datePicker.month\" + cell))\n },\n getBtnClass: function getBtnClass (month) {\n if (month === this.month) {\n return 'primary'\n } else {\n return 'default'\n }\n },\n goPrevYear: function goPrevYear () {\n this.$emit('year-change', this.year - 1);\n },\n goNextYear: function goNextYear () {\n this.$emit('year-change', this.year + 1);\n },\n changeView: function changeView (monthIndex) {\n if (isExist(monthIndex)) {\n this.$emit('month-change', monthIndex);\n this.$emit('view-change', 'd');\n } else {\n this.$emit('view-change', 'y');\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$6 = script$6;\n\n/* template */\nvar __vue_render__$6 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"table\",\n { staticStyle: { width: \"100%\" }, attrs: { role: \"grid\" } },\n [\n _c(\"thead\", [\n _c(\"tr\", [\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-pager-prev\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" },\n on: { click: _vm.goPrevYear }\n },\n [_c(\"i\", { class: _vm.iconControlLeft })]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"td\",\n { attrs: { colspan: \"4\" } },\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-title\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" },\n on: {\n click: function($event) {\n return _vm.changeView()\n }\n }\n },\n [_c(\"b\", [_vm._v(_vm._s(_vm.year))])]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-pager-next\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" },\n on: { click: _vm.goNextYear }\n },\n [_c(\"i\", { class: _vm.iconControlRight })]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\n \"tbody\",\n _vm._l(_vm.rows, function(row, i) {\n return _c(\n \"tr\",\n _vm._l(row, function(month, j) {\n return _c(\n \"td\",\n { attrs: { colspan: \"2\", width: \"33.333333%\" } },\n [\n _c(\n \"btn\",\n {\n staticStyle: { border: \"none\" },\n attrs: {\n block: \"\",\n size: \"sm\",\n type: _vm.getBtnClass(i * 3 + j)\n },\n on: {\n click: function($event) {\n return _vm.changeView(i * 3 + j)\n }\n }\n },\n [_c(\"span\", [_vm._v(_vm._s(_vm.tCell(month)))])]\n )\n ],\n 1\n )\n }),\n 0\n )\n }),\n 0\n )\n ]\n )\n};\nvar __vue_staticRenderFns__$6 = [];\n__vue_render__$6._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$6 = undefined;\n /* scoped */\n var __vue_scope_id__$6 = undefined;\n /* module identifier */\n var __vue_module_identifier__$6 = undefined;\n /* functional template */\n var __vue_is_functional_template__$6 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$6 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$6, staticRenderFns: __vue_staticRenderFns__$6 },\n __vue_inject_styles__$6,\n __vue_script__$6,\n __vue_scope_id__$6,\n __vue_is_functional_template__$6,\n __vue_module_identifier__$6,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$7 = {\n components: { Btn: Btn },\n props: {\n year: Number,\n iconControlLeft: String,\n iconControlRight: String\n },\n computed: {\n rows: function rows () {\n var rows = [];\n var yearGroupStart = this.year - this.year % 20;\n for (var i = 0; i < 4; i++) {\n rows.push([]);\n for (var j = 0; j < 5; j++) {\n rows[i].push(yearGroupStart + i * 5 + j);\n }\n }\n return rows\n },\n yearStr: function yearStr () {\n var start = this.year - this.year % 20;\n return (start + \" ~ \" + (start + 19))\n }\n },\n methods: {\n getBtnClass: function getBtnClass (year) {\n if (year === this.year) {\n return 'primary'\n } else {\n return 'default'\n }\n },\n goPrevYear: function goPrevYear () {\n this.$emit('year-change', this.year - 20);\n },\n goNextYear: function goNextYear () {\n this.$emit('year-change', this.year + 20);\n },\n changeView: function changeView (year) {\n this.$emit('year-change', year);\n this.$emit('view-change', 'm');\n }\n }\n};\n\n/* script */\nvar __vue_script__$7 = script$7;\n\n/* template */\nvar __vue_render__$7 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"table\",\n { staticStyle: { width: \"100%\" }, attrs: { role: \"grid\" } },\n [\n _c(\"thead\", [\n _c(\"tr\", [\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-pager-prev\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" },\n on: { click: _vm.goPrevYear }\n },\n [_c(\"i\", { class: _vm.iconControlLeft })]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"td\",\n { attrs: { colspan: \"3\" } },\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-title\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" }\n },\n [_c(\"b\", [_vm._v(_vm._s(_vm.yearStr))])]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-pager-next\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" },\n on: { click: _vm.goNextYear }\n },\n [_c(\"i\", { class: _vm.iconControlRight })]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\n \"tbody\",\n _vm._l(_vm.rows, function(row) {\n return _c(\n \"tr\",\n _vm._l(row, function(year) {\n return _c(\n \"td\",\n { attrs: { width: \"20%\" } },\n [\n _c(\n \"btn\",\n {\n staticStyle: { border: \"none\" },\n attrs: {\n block: \"\",\n size: \"sm\",\n type: _vm.getBtnClass(year)\n },\n on: {\n click: function($event) {\n return _vm.changeView(year)\n }\n }\n },\n [_c(\"span\", [_vm._v(_vm._s(year))])]\n )\n ],\n 1\n )\n }),\n 0\n )\n }),\n 0\n )\n ]\n )\n};\nvar __vue_staticRenderFns__$7 = [];\n__vue_render__$7._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$7 = undefined;\n /* scoped */\n var __vue_scope_id__$7 = undefined;\n /* module identifier */\n var __vue_module_identifier__$7 = undefined;\n /* functional template */\n var __vue_is_functional_template__$7 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$7 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$7, staticRenderFns: __vue_staticRenderFns__$7 },\n __vue_inject_styles__$7,\n __vue_script__$7,\n __vue_scope_id__$7,\n __vue_is_functional_template__$7,\n __vue_module_identifier__$7,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$8 = {\n mixins: [Local],\n components: { DateView: __vue_component__$5, MonthView: __vue_component__$6, YearView: __vue_component__$7, Btn: Btn },\n props: {\n value: null,\n width: {\n type: Number,\n default: 270\n },\n todayBtn: {\n type: Boolean,\n default: true\n },\n clearBtn: {\n type: Boolean,\n default: true\n },\n closeOnSelected: {\n type: Boolean,\n default: true\n },\n limitFrom: null,\n limitTo: null,\n format: {\n type: String,\n default: 'yyyy-MM-dd'\n },\n initialView: {\n type: String,\n default: 'd'\n },\n dateParser: {\n type: Function,\n default: Date.parse\n },\n dateClass: Function,\n yearMonthFormatter: Function,\n weekStartsWith: {\n type: Number,\n default: 0,\n validator: function validator (value) {\n return value >= 0 && value <= 6\n }\n },\n weekNumbers: Boolean,\n iconControlLeft: {\n type: String,\n default: 'glyphicon glyphicon-chevron-left'\n },\n iconControlRight: {\n type: String,\n default: 'glyphicon glyphicon-chevron-right'\n }\n },\n data: function data () {\n return {\n show: false,\n now: new Date(),\n currentMonth: 0,\n currentYear: 0,\n view: 'd'\n }\n },\n computed: {\n valueDateObj: function valueDateObj () {\n var ts = this.dateParser(this.value);\n if (isNaN(ts)) {\n return null\n } else {\n var date = new Date(ts);\n if (date.getHours() !== 0) {\n date = new Date(ts + date.getTimezoneOffset() * 60 * 1000);\n }\n return date\n }\n },\n pickerStyle: function pickerStyle () {\n return {\n width: this.width + 'px'\n }\n },\n pickerClass: function pickerClass () {\n return {\n 'uiv-datepicker': true,\n 'uiv-datepicker-date': this.view === 'd',\n 'uiv-datepicker-month': this.view === 'm',\n 'uiv-datepicker-year': this.view === 'y'\n }\n },\n limit: function limit () {\n var limit = {};\n if (this.limitFrom) {\n var limitFrom = this.dateParser(this.limitFrom);\n if (!isNaN(limitFrom)) {\n limitFrom = convertDateToUTC(new Date(limitFrom));\n limitFrom.setHours(0, 0, 0, 0);\n limit.from = limitFrom;\n }\n }\n if (this.limitTo) {\n var limitTo = this.dateParser(this.limitTo);\n if (!isNaN(limitTo)) {\n limitTo = convertDateToUTC(new Date(limitTo));\n limitTo.setHours(0, 0, 0, 0);\n limit.to = limitTo;\n }\n }\n return limit\n }\n },\n mounted: function mounted () {\n if (this.value) {\n this.setMonthAndYearByValue(this.value);\n } else {\n this.currentMonth = this.now.getMonth();\n this.currentYear = this.now.getFullYear();\n this.view = this.initialView;\n }\n },\n watch: {\n value: function value (val, oldVal) {\n this.setMonthAndYearByValue(val, oldVal);\n }\n },\n methods: {\n setMonthAndYearByValue: function setMonthAndYearByValue (val, oldVal) {\n var ts = this.dateParser(val);\n if (!isNaN(ts)) {\n var date = new Date(ts);\n if (date.getHours() !== 0) {\n date = new Date(ts + date.getTimezoneOffset() * 60 * 1000);\n }\n if (this.limit && ((this.limit.from && date < this.limit.from) || (this.limit.to && date >= this.limit.to))) {\n this.$emit('input', oldVal || '');\n } else {\n this.currentMonth = date.getMonth();\n this.currentYear = date.getFullYear();\n }\n }\n },\n onMonthChange: function onMonthChange (month) {\n this.currentMonth = month;\n },\n onYearChange: function onYearChange (year) {\n this.currentYear = year;\n this.currentMonth = undefined;\n },\n onDateChange: function onDateChange (date) {\n if (date && isNumber(date.date) && isNumber(date.month) && isNumber(date.year)) {\n var _date = new Date(date.year, date.month, date.date);\n this.$emit('input', this.format ? stringify(_date, this.format) : _date);\n // if the input event trigger nothing (same value)\n // manually correct\n this.currentMonth = date.month;\n this.currentYear = date.year;\n } else {\n this.$emit('input', '');\n }\n },\n onViewChange: function onViewChange (view) {\n this.view = view;\n },\n selectToday: function selectToday () {\n this.view = 'd';\n this.onDateChange({\n date: this.now.getDate(),\n month: this.now.getMonth(),\n year: this.now.getFullYear()\n });\n },\n clearSelect: function clearSelect () {\n this.currentMonth = this.now.getMonth();\n this.currentYear = this.now.getFullYear();\n this.view = this.initialView;\n this.onDateChange();\n },\n onPickerClick: function onPickerClick (event) {\n if (event.target.getAttribute('data-action') !== 'select' || !this.closeOnSelected) {\n event.stopPropagation();\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$8 = script$8;\n\n/* template */\nvar __vue_render__$8 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n {\n class: _vm.pickerClass,\n style: _vm.pickerStyle,\n attrs: { \"data-role\": \"date-picker\" },\n on: { click: _vm.onPickerClick }\n },\n [\n _c(\"date-view\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.view === \"d\",\n expression: \"view==='d'\"\n }\n ],\n attrs: {\n month: _vm.currentMonth,\n year: _vm.currentYear,\n date: _vm.valueDateObj,\n today: _vm.now,\n limit: _vm.limit,\n \"week-starts-with\": _vm.weekStartsWith,\n \"icon-control-left\": _vm.iconControlLeft,\n \"icon-control-right\": _vm.iconControlRight,\n \"date-class\": _vm.dateClass,\n \"year-month-formatter\": _vm.yearMonthFormatter,\n \"week-numbers\": _vm.weekNumbers,\n locale: _vm.locale\n },\n on: {\n \"month-change\": _vm.onMonthChange,\n \"year-change\": _vm.onYearChange,\n \"date-change\": _vm.onDateChange,\n \"view-change\": _vm.onViewChange\n }\n }),\n _vm._v(\" \"),\n _c(\"month-view\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.view === \"m\",\n expression: \"view==='m'\"\n }\n ],\n attrs: {\n month: _vm.currentMonth,\n year: _vm.currentYear,\n \"icon-control-left\": _vm.iconControlLeft,\n \"icon-control-right\": _vm.iconControlRight,\n locale: _vm.locale\n },\n on: {\n \"month-change\": _vm.onMonthChange,\n \"year-change\": _vm.onYearChange,\n \"view-change\": _vm.onViewChange\n }\n }),\n _vm._v(\" \"),\n _c(\"year-view\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.view === \"y\",\n expression: \"view==='y'\"\n }\n ],\n attrs: {\n year: _vm.currentYear,\n \"icon-control-left\": _vm.iconControlLeft,\n \"icon-control-right\": _vm.iconControlRight\n },\n on: { \"year-change\": _vm.onYearChange, \"view-change\": _vm.onViewChange }\n }),\n _vm._v(\" \"),\n _vm.todayBtn || _vm.clearBtn\n ? _c(\"div\", [\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"text-center\" },\n [\n _vm.todayBtn\n ? _c(\"btn\", {\n attrs: {\n \"data-action\": \"select\",\n type: \"info\",\n size: \"sm\"\n },\n domProps: {\n textContent: _vm._s(_vm.t(\"uiv.datePicker.today\"))\n },\n on: { click: _vm.selectToday }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.clearBtn\n ? _c(\"btn\", {\n attrs: { \"data-action\": \"select\", size: \"sm\" },\n domProps: {\n textContent: _vm._s(_vm.t(\"uiv.datePicker.clear\"))\n },\n on: { click: _vm.clearSelect }\n })\n : _vm._e()\n ],\n 1\n )\n ])\n : _vm._e()\n ],\n 1\n )\n};\nvar __vue_staticRenderFns__$8 = [];\n__vue_render__$8._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$8 = undefined;\n /* scoped */\n var __vue_scope_id__$8 = undefined;\n /* module identifier */\n var __vue_module_identifier__$8 = undefined;\n /* functional template */\n var __vue_is_functional_template__$8 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$8 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$8, staticRenderFns: __vue_staticRenderFns__$8 },\n __vue_inject_styles__$8,\n __vue_script__$8,\n __vue_scope_id__$8,\n __vue_is_functional_template__$8,\n __vue_module_identifier__$8,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar HANDLER = '_uiv_scroll_handler';\nvar events = [EVENTS.RESIZE, EVENTS.SCROLL];\n\nvar bind = function (el, binding) {\n var callback = binding.value;\n if (!isFunction(callback)) {\n return\n }\n unbind(el);\n el[HANDLER] = callback;\n events.forEach(function (event) {\n on(window, event, el[HANDLER]);\n });\n};\n\nvar unbind = function (el) {\n events.forEach(function (event) {\n off(window, event, el[HANDLER]);\n });\n delete el[HANDLER];\n};\n\nvar update = function (el, binding) {\n if (binding.value !== binding.oldValue) {\n bind(el, binding);\n }\n};\n\nvar scroll = { bind: bind, unbind: unbind, update: update };\n\nvar script$9 = {\n directives: {\n scroll: scroll\n },\n props: {\n offset: {\n type: Number,\n default: 0\n }\n },\n data: function data () {\n return {\n affixed: false\n }\n },\n computed: {\n classes: function classes () {\n return {\n affix: this.affixed\n }\n },\n styles: function styles () {\n return {\n top: this.affixed ? this.offset + 'px' : null\n }\n }\n },\n methods: {\n // from https://github.com/ant-design/ant-design/blob/master/components/affix/index.jsx#L20\n onScroll: function onScroll () {\n var this$1 = this;\n\n // if is hidden don't calculate anything\n if (!(this.$el.offsetWidth || this.$el.offsetHeight || this.$el.getClientRects().length)) {\n return\n }\n // get window scroll and element position to detect if have to be normal or affixed\n var scroll = {};\n var element = {};\n var rect = this.$el.getBoundingClientRect();\n var body = document.body;\n var types = ['Top', 'Left'];\n types.forEach(function (type) {\n var t = type.toLowerCase();\n scroll[t] = window['page' + (type === 'Top' ? 'Y' : 'X') + 'Offset'];\n element[t] = scroll[t] + rect[t] - (this$1.$el['client' + type] || body['client' + type] || 0);\n });\n var fix = scroll.top > element.top - this.offset;\n if (this.affixed !== fix) {\n this.affixed = fix;\n this.$emit(this.affixed ? 'affix' : 'unfix');\n this.$nextTick(function () {\n this$1.$emit(this$1.affixed ? 'affixed' : 'unfixed');\n });\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$9 = script$9;\n\n/* template */\nvar __vue_render__$9 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"div\", { staticClass: \"hidden-print\" }, [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"scroll\",\n rawName: \"v-scroll\",\n value: _vm.onScroll,\n expression: \"onScroll\"\n }\n ],\n class: _vm.classes,\n style: _vm.styles\n },\n [_vm._t(\"default\")],\n 2\n )\n ])\n};\nvar __vue_staticRenderFns__$9 = [];\n__vue_render__$9._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$9 = undefined;\n /* scoped */\n var __vue_scope_id__$9 = undefined;\n /* module identifier */\n var __vue_module_identifier__$9 = undefined;\n /* functional template */\n var __vue_is_functional_template__$9 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$9 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$9, staticRenderFns: __vue_staticRenderFns__$9 },\n __vue_inject_styles__$9,\n __vue_script__$9,\n __vue_scope_id__$9,\n __vue_is_functional_template__$9,\n __vue_module_identifier__$9,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$a = {\n props: {\n dismissible: {\n type: Boolean,\n default: false\n },\n duration: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: 'info'\n }\n },\n data: function data () {\n return {\n timeout: 0\n }\n },\n computed: {\n alertClass: function alertClass () {\n var obj;\n\n return ( obj = {\n alert: true\n }, obj[(\"alert-\" + (this.type))] = Boolean(this.type), obj['alert-dismissible'] = this.dismissible, obj )\n }\n },\n methods: {\n closeAlert: function closeAlert () {\n clearTimeout(this.timeout);\n this.$emit('dismissed');\n }\n },\n mounted: function mounted () {\n if (this.duration > 0) {\n this.timeout = setTimeout(this.closeAlert, this.duration);\n }\n },\n destroyed: function destroyed () {\n clearTimeout(this.timeout);\n }\n};\n\n/* script */\nvar __vue_script__$a = script$a;\n\n/* template */\nvar __vue_render__$a = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n { class: _vm.alertClass, attrs: { role: \"alert\" } },\n [\n _vm.dismissible\n ? _c(\n \"button\",\n {\n staticClass: \"close\",\n attrs: { type: \"button\", \"aria-label\": \"Close\" },\n on: { click: _vm.closeAlert }\n },\n [_c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [_vm._v(\"×\")])]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm._t(\"default\")\n ],\n 2\n )\n};\nvar __vue_staticRenderFns__$a = [];\n__vue_render__$a._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$a = undefined;\n /* scoped */\n var __vue_scope_id__$a = undefined;\n /* module identifier */\n var __vue_module_identifier__$a = undefined;\n /* functional template */\n var __vue_is_functional_template__$a = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$a = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$a, staticRenderFns: __vue_staticRenderFns__$a },\n __vue_inject_styles__$a,\n __vue_script__$a,\n __vue_scope_id__$a,\n __vue_is_functional_template__$a,\n __vue_module_identifier__$a,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$b = {\n props: {\n value: {\n type: Number,\n required: true,\n validator: function (v) { return v >= 1; }\n },\n boundaryLinks: {\n type: Boolean,\n default: false\n },\n directionLinks: {\n type: Boolean,\n default: true\n },\n size: String,\n align: String,\n totalPage: {\n type: Number,\n required: true,\n validator: function (v) { return v >= 0; }\n },\n maxSize: {\n type: Number,\n default: 5,\n validator: function (v) { return v >= 0; }\n },\n disabled: Boolean\n },\n data: function data () {\n return {\n sliceStart: 0\n }\n },\n computed: {\n navClasses: function navClasses () {\n var obj;\n\n return ( obj = {}, obj[(\"text-\" + (this.align))] = Boolean(this.align), obj )\n },\n classes: function classes () {\n var obj;\n\n return ( obj = {}, obj[(\"pagination-\" + (this.size))] = Boolean(this.size), obj )\n },\n sliceArray: function sliceArray () {\n return range(this.totalPage).slice(this.sliceStart, this.sliceStart + this.maxSize)\n }\n },\n methods: {\n calculateSliceStart: function calculateSliceStart () {\n var currentPage = this.value;\n var chunkSize = this.maxSize;\n var currentChunkStart = this.sliceStart;\n var currentChunkEnd = currentChunkStart + chunkSize;\n if (currentPage > currentChunkEnd) {\n var lastChunkStart = this.totalPage - chunkSize;\n if (currentPage > lastChunkStart) {\n this.sliceStart = lastChunkStart;\n } else {\n this.sliceStart = currentPage - 1;\n }\n } else if (currentPage < currentChunkStart + 1) {\n if (currentPage > chunkSize) {\n this.sliceStart = currentPage - chunkSize;\n } else {\n this.sliceStart = 0;\n }\n }\n },\n onPageChange: function onPageChange (page) {\n if (!this.disabled && page > 0 && page <= this.totalPage && page !== this.value) {\n this.$emit('input', page);\n this.$emit('change', page);\n }\n },\n toPage: function toPage (pre) {\n if (this.disabled) {\n return\n }\n var chunkSize = this.maxSize;\n var currentChunkStart = this.sliceStart;\n var lastChunkStart = this.totalPage - chunkSize;\n var start = pre ? currentChunkStart - chunkSize : currentChunkStart + chunkSize;\n if (start < 0) {\n this.sliceStart = 0;\n } else if (start > lastChunkStart) {\n this.sliceStart = lastChunkStart;\n } else {\n this.sliceStart = start;\n }\n }\n },\n created: function created () {\n this.$watch(function (vm) { return [vm.value, vm.maxSize, vm.totalPage].join(); }, this.calculateSliceStart, {\n immediate: true\n });\n }\n};\n\n/* script */\nvar __vue_script__$b = script$b;\n\n/* template */\nvar __vue_render__$b = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"nav\",\n { class: _vm.navClasses, attrs: { \"aria-label\": \"Page navigation\" } },\n [\n _c(\n \"ul\",\n { staticClass: \"pagination\", class: _vm.classes },\n [\n _vm.boundaryLinks\n ? _c(\n \"li\",\n { class: { disabled: _vm.value <= 1 || _vm.disabled } },\n [\n _c(\n \"a\",\n {\n attrs: {\n href: \"#\",\n role: \"button\",\n \"aria-label\": \"First\"\n },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.onPageChange(1)\n }\n }\n },\n [\n _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n _vm._v(\"«\")\n ])\n ]\n )\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.directionLinks\n ? _c(\n \"li\",\n { class: { disabled: _vm.value <= 1 || _vm.disabled } },\n [\n _c(\n \"a\",\n {\n attrs: {\n href: \"#\",\n role: \"button\",\n \"aria-label\": \"Previous\"\n },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.onPageChange(_vm.value - 1)\n }\n }\n },\n [\n _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n _vm._v(\"‹\")\n ])\n ]\n )\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.sliceStart > 0\n ? _c(\"li\", { class: { disabled: _vm.disabled } }, [\n _c(\n \"a\",\n {\n attrs: {\n href: \"#\",\n role: \"button\",\n \"aria-label\": \"Previous group\"\n },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.toPage(1)\n }\n }\n },\n [\n _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n _vm._v(\"…\")\n ])\n ]\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm._l(_vm.sliceArray, function(item) {\n return _c(\n \"li\",\n {\n key: item,\n class: {\n active: _vm.value === item + 1,\n disabled: _vm.disabled\n }\n },\n [\n _c(\n \"a\",\n {\n attrs: { href: \"#\", role: \"button\" },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.onPageChange(item + 1)\n }\n }\n },\n [_vm._v(_vm._s(item + 1))]\n )\n ]\n )\n }),\n _vm._v(\" \"),\n _vm.sliceStart < _vm.totalPage - _vm.maxSize\n ? _c(\"li\", { class: { disabled: _vm.disabled } }, [\n _c(\n \"a\",\n {\n attrs: {\n href: \"#\",\n role: \"button\",\n \"aria-label\": \"Next group\"\n },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.toPage(0)\n }\n }\n },\n [\n _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n _vm._v(\"…\")\n ])\n ]\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.directionLinks\n ? _c(\n \"li\",\n {\n class: {\n disabled: _vm.value >= _vm.totalPage || _vm.disabled\n }\n },\n [\n _c(\n \"a\",\n {\n attrs: {\n href: \"#\",\n role: \"button\",\n \"aria-label\": \"Next\"\n },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.onPageChange(_vm.value + 1)\n }\n }\n },\n [\n _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n _vm._v(\"›\")\n ])\n ]\n )\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.boundaryLinks\n ? _c(\n \"li\",\n {\n class: {\n disabled: _vm.value >= _vm.totalPage || _vm.disabled\n }\n },\n [\n _c(\n \"a\",\n {\n attrs: {\n href: \"#\",\n role: \"button\",\n \"aria-label\": \"Last\"\n },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.onPageChange(_vm.totalPage)\n }\n }\n },\n [\n _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n _vm._v(\"»\")\n ])\n ]\n )\n ]\n )\n : _vm._e()\n ],\n 2\n )\n ]\n )\n};\nvar __vue_staticRenderFns__$b = [];\n__vue_render__$b._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$b = undefined;\n /* scoped */\n var __vue_scope_id__$b = undefined;\n /* module identifier */\n var __vue_module_identifier__$b = undefined;\n /* functional template */\n var __vue_is_functional_template__$b = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$b = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$b, staticRenderFns: __vue_staticRenderFns__$b },\n __vue_inject_styles__$b,\n __vue_script__$b,\n __vue_scope_id__$b,\n __vue_is_functional_template__$b,\n __vue_module_identifier__$b,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar SHOW_CLASS = 'in';\n\nvar popupMixin = {\n props: {\n value: {\n type: Boolean,\n default: false\n },\n tag: {\n type: String,\n default: 'span'\n },\n placement: {\n type: String,\n default: PLACEMENTS.TOP\n },\n autoPlacement: {\n type: Boolean,\n default: true\n },\n appendTo: {\n type: null,\n default: 'body'\n },\n positionBy: {\n type: null,\n default: null\n },\n transition: {\n type: Number,\n default: 150\n },\n hideDelay: {\n type: Number,\n default: 0\n },\n showDelay: {\n type: Number,\n default: 0\n },\n enable: {\n type: Boolean,\n default: true\n },\n enterable: {\n type: Boolean,\n default: true\n },\n target: null,\n viewport: null,\n customClass: String\n },\n data: function data () {\n return {\n triggerEl: null,\n hideTimeoutId: 0,\n showTimeoutId: 0,\n transitionTimeoutId: 0,\n autoTimeoutId: 0\n }\n },\n watch: {\n value: function value (v) {\n v ? this.show() : this.hide();\n },\n trigger: function trigger () {\n this.clearListeners();\n this.initListeners();\n },\n target: function target (value) {\n this.clearListeners();\n this.initTriggerElByTarget(value);\n this.initListeners();\n },\n allContent: function allContent (value) {\n var this$1 = this;\n\n // can not use value because it can not detect slot changes\n if (this.isNotEmpty()) {\n // reset position while content changed & is shown\n // nextTick is required\n this.$nextTick(function () {\n /* istanbul ignore else */\n if (this$1.isShown()) {\n this$1.resetPosition();\n }\n });\n } else {\n this.hide();\n }\n },\n enable: function enable (value) {\n // hide if enable changed to false\n /* istanbul ignore else */\n if (!value) {\n this.hide();\n }\n }\n },\n mounted: function mounted () {\n var this$1 = this;\n\n ensureElementMatchesFunction();\n removeFromDom(this.$refs.popup);\n this.$nextTick(function () {\n this$1.initTriggerElByTarget(this$1.target);\n this$1.initListeners();\n if (this$1.value) {\n this$1.show();\n }\n });\n },\n beforeDestroy: function beforeDestroy () {\n this.clearListeners();\n removeFromDom(this.$refs.popup);\n },\n methods: {\n initTriggerElByTarget: function initTriggerElByTarget (target) {\n if (target) {\n // target exist\n this.triggerEl = getElementBySelectorOrRef(target);\n } else {\n // find special element\n var trigger = this.$el.querySelector('[data-role=\"trigger\"]');\n if (trigger) {\n this.triggerEl = trigger;\n } else {\n // use the first child\n var firstChild = this.$el.firstChild;\n this.triggerEl = firstChild === this.$refs.popup ? null : firstChild;\n }\n }\n },\n initListeners: function initListeners () {\n if (this.triggerEl) {\n if (this.trigger === TRIGGERS.HOVER) {\n on(this.triggerEl, EVENTS.MOUSE_ENTER, this.show);\n on(this.triggerEl, EVENTS.MOUSE_LEAVE, this.hide);\n } else if (this.trigger === TRIGGERS.FOCUS) {\n on(this.triggerEl, EVENTS.FOCUS, this.show);\n on(this.triggerEl, EVENTS.BLUR, this.hide);\n } else if (this.trigger === TRIGGERS.HOVER_FOCUS) {\n on(this.triggerEl, EVENTS.MOUSE_ENTER, this.handleAuto);\n on(this.triggerEl, EVENTS.MOUSE_LEAVE, this.handleAuto);\n on(this.triggerEl, EVENTS.FOCUS, this.handleAuto);\n on(this.triggerEl, EVENTS.BLUR, this.handleAuto);\n } else if (this.trigger === TRIGGERS.CLICK || this.trigger === TRIGGERS.OUTSIDE_CLICK) {\n on(this.triggerEl, EVENTS.CLICK, this.toggle);\n }\n }\n on(window, EVENTS.CLICK, this.windowClicked);\n },\n clearListeners: function clearListeners () {\n if (this.triggerEl) {\n off(this.triggerEl, EVENTS.FOCUS, this.show);\n off(this.triggerEl, EVENTS.BLUR, this.hide);\n off(this.triggerEl, EVENTS.MOUSE_ENTER, this.show);\n off(this.triggerEl, EVENTS.MOUSE_LEAVE, this.hide);\n off(this.triggerEl, EVENTS.CLICK, this.toggle);\n off(this.triggerEl, EVENTS.MOUSE_ENTER, this.handleAuto);\n off(this.triggerEl, EVENTS.MOUSE_LEAVE, this.handleAuto);\n off(this.triggerEl, EVENTS.FOCUS, this.handleAuto);\n off(this.triggerEl, EVENTS.BLUR, this.handleAuto);\n }\n off(window, EVENTS.CLICK, this.windowClicked);\n this.clearTimeouts();\n },\n clearTimeouts: function clearTimeouts () {\n if (this.hideTimeoutId) {\n clearTimeout(this.hideTimeoutId);\n this.hideTimeoutId = 0;\n }\n if (this.showTimeoutId) {\n clearTimeout(this.showTimeoutId);\n this.showTimeoutId = 0;\n }\n if (this.transitionTimeoutId) {\n clearTimeout(this.transitionTimeoutId);\n this.transitionTimeoutId = 0;\n }\n if (this.autoTimeoutId) {\n clearTimeout(this.autoTimeoutId);\n this.autoTimeoutId = 0;\n }\n },\n resetPosition: function resetPosition () {\n var popup = this.$refs.popup;\n /* istanbul ignore else */\n if (popup) {\n setTooltipPosition(popup, this.triggerEl, this.placement, this.autoPlacement, this.appendTo, this.positionBy, this.viewport);\n popup.offsetHeight;\n }\n },\n hideOnLeave: function hideOnLeave () {\n if (this.trigger === TRIGGERS.HOVER || (this.trigger === TRIGGERS.HOVER_FOCUS && !this.triggerEl.matches(':focus'))) {\n this.$hide();\n }\n },\n toggle: function toggle () {\n if (this.isShown()) {\n this.hide();\n } else {\n this.show();\n }\n },\n show: function show () {\n var this$1 = this;\n\n if (this.enable && this.triggerEl && this.isNotEmpty() && !this.isShown()) {\n var popUpAppendedContainer = this.hideTimeoutId > 0; // weird condition\n if (popUpAppendedContainer) {\n clearTimeout(this.hideTimeoutId);\n this.hideTimeoutId = 0;\n }\n if (this.transitionTimeoutId > 0) {\n clearTimeout(this.transitionTimeoutId);\n this.transitionTimeoutId = 0;\n }\n clearTimeout(this.showTimeoutId);\n this.showTimeoutId = setTimeout(function () {\n this$1.showTimeoutId = 0;\n var popup = this$1.$refs.popup;\n if (popup) {\n var alreadyOpenModalNum = getOpenModalNum();\n if (alreadyOpenModalNum > 1) {\n var defaultZ = this$1.name === 'popover' ? 1060 : 1070;\n var offset = (alreadyOpenModalNum - 1) * 20;\n popup.style.zIndex = \"\" + (defaultZ + offset);\n }\n // add to dom\n if (!popUpAppendedContainer) {\n popup.className = (this$1.name) + \" \" + (this$1.placement) + \" \" + (this$1.customClass ? this$1.customClass : '') + \" fade\";\n var container = getElementBySelectorOrRef(this$1.appendTo);\n container.appendChild(popup);\n this$1.resetPosition();\n }\n addClass(popup, SHOW_CLASS);\n this$1.$emit('input', true);\n this$1.$emit('show');\n }\n }, this.showDelay);\n }\n },\n hide: function hide () {\n var this$1 = this;\n\n if (this.showTimeoutId > 0) {\n clearTimeout(this.showTimeoutId);\n this.showTimeoutId = 0;\n }\n\n if (!this.isShown()) {\n return\n }\n if (this.enterable && (this.trigger === TRIGGERS.HOVER || this.trigger === TRIGGERS.HOVER_FOCUS)) {\n clearTimeout(this.hideTimeoutId);\n this.hideTimeoutId = setTimeout(function () {\n this$1.hideTimeoutId = 0;\n var popup = this$1.$refs.popup;\n if (popup && !popup.matches(':hover')) {\n this$1.$hide();\n }\n }, 100);\n } else {\n this.$hide();\n }\n },\n $hide: function $hide () {\n var this$1 = this;\n\n if (this.isShown()) {\n clearTimeout(this.hideTimeoutId);\n this.hideTimeoutId = setTimeout(function () {\n this$1.hideTimeoutId = 0;\n removeClass(this$1.$refs.popup, SHOW_CLASS);\n // gives fade out time\n this$1.transitionTimeoutId = setTimeout(function () {\n this$1.transitionTimeoutId = 0;\n removeFromDom(this$1.$refs.popup);\n this$1.$emit('input', false);\n this$1.$emit('hide');\n }, this$1.transition);\n }, this.hideDelay);\n }\n },\n isShown: function isShown () {\n return hasClass(this.$refs.popup, SHOW_CLASS)\n },\n windowClicked: function windowClicked (event) {\n if (this.triggerEl && isFunction(this.triggerEl.contains) && !this.triggerEl.contains(event.target) &&\n this.trigger === TRIGGERS.OUTSIDE_CLICK && !(this.$refs.popup && this.$refs.popup.contains(event.target)) &&\n this.isShown()) {\n this.hide();\n }\n },\n handleAuto: function handleAuto () {\n var this$1 = this;\n\n clearTimeout(this.autoTimeoutId);\n this.autoTimeoutId = setTimeout(function () {\n this$1.autoTimeoutId = 0;\n if (this$1.triggerEl.matches(':hover, :focus')) {\n this$1.show();\n } else {\n this$1.hide();\n }\n }, 20); // 20ms make firefox happy\n }\n }\n};\n\nvar Tooltip = {\n mixins: [popupMixin],\n data: function data () {\n return {\n name: 'tooltip'\n }\n },\n render: function render (h) {\n return h(\n this.tag,\n [\n this.$slots.default,\n h('div',\n {\n ref: 'popup',\n attrs: {\n role: 'tooltip'\n },\n on: {\n mouseleave: this.hideOnLeave\n }\n },\n [\n h('div', { class: 'tooltip-arrow' }),\n h('div', {\n class: 'tooltip-inner',\n domProps: { innerHTML: this.text }\n })\n ]\n )\n ]\n )\n },\n props: {\n text: {\n type: String,\n default: ''\n },\n trigger: {\n type: String,\n default: TRIGGERS.HOVER_FOCUS\n }\n },\n computed: {\n allContent: function allContent () {\n return this.text\n }\n },\n methods: {\n isNotEmpty: function isNotEmpty () {\n return this.text\n }\n }\n};\n\nvar Popover = {\n mixins: [popupMixin],\n data: function data () {\n return {\n name: 'popover'\n }\n },\n render: function render (h) {\n return h(this.tag,\n [\n this.$slots.default,\n h('div',\n {\n style: {\n display: 'block'\n },\n ref: 'popup',\n on: {\n mouseleave: this.hideOnLeave\n }\n },\n [\n h('div', { class: 'arrow' }),\n h('h3', {\n class: 'popover-title',\n directives: [\n { name: 'show', value: this.title }\n ]\n }, this.title),\n h('div', { class: 'popover-content' }, [this.content || this.$slots.popover])\n ]\n )\n ]\n )\n },\n props: {\n title: {\n type: String,\n default: ''\n },\n content: {\n type: String,\n default: ''\n },\n trigger: {\n type: String,\n default: TRIGGERS.OUTSIDE_CLICK\n }\n },\n computed: {\n allContent: function allContent () {\n return this.title + this.content\n }\n },\n methods: {\n isNotEmpty: function isNotEmpty () {\n return this.title || this.content || this.$slots.popover\n }\n }\n};\n\nvar maxHours = 23;\nvar zero = 0;\nvar maxMinutes = 59;\nvar cutUpAmAndPm = 12;\n\nvar script$c = {\n components: { Btn: Btn },\n mixins: [Local],\n props: {\n value: {\n type: Date,\n required: true\n },\n showMeridian: {\n type: Boolean,\n default: true\n },\n min: Date,\n max: Date,\n hourStep: {\n type: Number,\n default: 1\n },\n minStep: {\n type: Number,\n default: 1\n },\n readonly: {\n type: Boolean,\n default: false\n },\n controls: {\n type: Boolean,\n default: true\n },\n iconControlUp: {\n type: String,\n default: 'glyphicon glyphicon-chevron-up'\n },\n iconControlDown: {\n type: String,\n default: 'glyphicon glyphicon-chevron-down'\n },\n inputWidth: {\n type: Number,\n default: 50\n }\n },\n data: function data () {\n return {\n hours: 0,\n minutes: 0,\n meridian: true,\n hoursText: '',\n minutesText: ''\n }\n },\n mounted: function mounted () {\n this.updateByValue(this.value);\n },\n computed: {\n inputStyles: function inputStyles () {\n return {\n width: ((this.inputWidth) + \"px\")\n }\n }\n },\n watch: {\n value: function value (value$1) {\n this.updateByValue(value$1);\n },\n showMeridian: function showMeridian (value) {\n this.setTime();\n },\n hoursText: function hoursText (value) {\n if (this.hours === 0 && value === '') {\n // Prevent a runtime reset from being overwritten\n return\n }\n var hour = parseInt(value);\n if (this.showMeridian) {\n if (hour >= 1 && hour <= cutUpAmAndPm) {\n if (this.meridian) {\n this.hours = hour === cutUpAmAndPm ? 0 : hour;\n } else {\n this.hours = hour === cutUpAmAndPm ? cutUpAmAndPm : hour + cutUpAmAndPm;\n }\n }\n } else if (hour >= zero && hour <= maxHours) {\n this.hours = hour;\n }\n this.setTime();\n },\n minutesText: function minutesText (value) {\n if (this.minutes === 0 && value === '') {\n // Prevent a runtime reset from being overwritten\n return\n }\n var minutesStr = parseInt(value);\n if (minutesStr >= zero && minutesStr <= maxMinutes) {\n this.minutes = minutesStr;\n }\n this.setTime();\n }\n },\n methods: {\n updateByValue: function updateByValue (value) {\n if (isNaN(value.getTime())) {\n this.hours = 0;\n this.minutes = 0;\n this.hoursText = '';\n this.minutesText = '';\n this.meridian = true;\n return\n }\n this.hours = value.getHours();\n this.minutes = value.getMinutes();\n if (!this.showMeridian) {\n this.hoursText = pad(this.hours, 2);\n } else {\n if (this.hours >= cutUpAmAndPm) {\n if (this.hours === cutUpAmAndPm) {\n this.hoursText = this.hours + '';\n } else {\n this.hoursText = pad(this.hours - cutUpAmAndPm, 2);\n }\n this.meridian = false;\n } else {\n if (this.hours === zero) {\n this.hoursText = cutUpAmAndPm.toString();\n } else {\n this.hoursText = pad(this.hours, 2);\n }\n this.meridian = true;\n }\n }\n this.minutesText = pad(this.minutes, 2);\n // lazy model won't update when using keyboard up/down\n this.$refs.hoursInput.value = this.hoursText;\n this.$refs.minutesInput.value = this.minutesText;\n },\n addHour: function addHour (step) {\n step = step || this.hourStep;\n this.hours = this.hours >= maxHours ? zero : this.hours + step;\n },\n reduceHour: function reduceHour (step) {\n step = step || this.hourStep;\n this.hours = this.hours <= zero ? maxHours : this.hours - step;\n },\n addMinute: function addMinute () {\n if (this.minutes >= maxMinutes) {\n this.minutes = zero;\n this.addHour(1);\n } else {\n this.minutes += this.minStep;\n }\n },\n reduceMinute: function reduceMinute () {\n if (this.minutes <= zero) {\n this.minutes = maxMinutes + 1 - this.minStep;\n this.reduceHour(1);\n } else {\n this.minutes -= this.minStep;\n }\n },\n changeTime: function changeTime (isHour, isPlus) {\n if (!this.readonly) {\n if (isHour && isPlus) {\n this.addHour();\n } else if (isHour && !isPlus) {\n this.reduceHour();\n } else if (!isHour && isPlus) {\n this.addMinute();\n } else {\n this.reduceMinute();\n }\n this.setTime();\n }\n },\n toggleMeridian: function toggleMeridian () {\n this.meridian = !this.meridian;\n if (this.meridian) {\n this.hours -= cutUpAmAndPm;\n } else {\n this.hours += cutUpAmAndPm;\n }\n this.setTime();\n },\n onWheel: function onWheel (e, isHour) {\n if (!this.readonly) {\n e.preventDefault();\n this.changeTime(isHour, e.deltaY < 0);\n }\n },\n setTime: function setTime () {\n var time = this.value;\n if (isNaN(time.getTime())) {\n time = new Date();\n time.setHours(0);\n time.setMinutes(0);\n }\n time.setHours(this.hours);\n time.setMinutes(this.minutes);\n if (this.max) {\n var max = new Date(time);\n max.setHours(this.max.getHours());\n max.setMinutes(this.max.getMinutes());\n time = time > max ? max : time;\n }\n if (this.min) {\n var min = new Date(time);\n min.setHours(this.min.getHours());\n min.setMinutes(this.min.getMinutes());\n time = time < min ? min : time;\n }\n this.$emit('input', new Date(time));\n },\n selectInputValue: function selectInputValue (e) {\n // mouseup should be prevented!\n // See various comments in https://stackoverflow.com/questions/3272089/programmatically-selecting-text-in-an-input-field-on-ios-devices-mobile-safari\n e.target.setSelectionRange(0, 2);\n }\n }\n};\n\n/* script */\nvar __vue_script__$c = script$c;\n\n/* template */\nvar __vue_render__$c = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"section\",\n {\n on: {\n click: function($event) {\n $event.stopPropagation();\n }\n }\n },\n [\n _c(\"table\", [\n _c(\"tbody\", [\n _vm.controls\n ? _c(\"tr\", { staticClass: \"text-center\" }, [\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n attrs: {\n type: \"link\",\n size: \"sm\",\n disabled: _vm.readonly\n },\n on: {\n click: function($event) {\n return _vm.changeTime(1, 1)\n }\n }\n },\n [_c(\"i\", { class: _vm.iconControlUp })]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n attrs: {\n type: \"link\",\n size: \"sm\",\n disabled: _vm.readonly\n },\n on: {\n click: function($event) {\n return _vm.changeTime(0, 1)\n }\n }\n },\n [_c(\"i\", { class: _vm.iconControlUp })]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.showMeridian ? _c(\"td\") : _vm._e()\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"tr\", [\n _c(\"td\", { staticClass: \"form-group\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model.lazy\",\n value: _vm.hoursText,\n expression: \"hoursText\",\n modifiers: { lazy: true }\n }\n ],\n ref: \"hoursInput\",\n staticClass: \"form-control text-center\",\n style: _vm.inputStyles,\n attrs: {\n type: \"tel\",\n pattern: \"\\\\d*\",\n placeholder: \"HH\",\n readonly: _vm.readonly,\n maxlength: \"2\",\n size: \"2\"\n },\n domProps: { value: _vm.hoursText },\n on: {\n mouseup: _vm.selectInputValue,\n keydown: [\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n return _vm.changeTime(1, 1)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n return _vm.changeTime(1, 0)\n }\n ],\n wheel: function($event) {\n return _vm.onWheel($event, true)\n },\n change: function($event) {\n _vm.hoursText = $event.target.value;\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"td\", { staticClass: \"form-group\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model.lazy\",\n value: _vm.minutesText,\n expression: \"minutesText\",\n modifiers: { lazy: true }\n }\n ],\n ref: \"minutesInput\",\n staticClass: \"form-control text-center\",\n style: _vm.inputStyles,\n attrs: {\n type: \"tel\",\n pattern: \"\\\\d*\",\n placeholder: \"MM\",\n readonly: _vm.readonly,\n maxlength: \"2\",\n size: \"2\"\n },\n domProps: { value: _vm.minutesText },\n on: {\n mouseup: _vm.selectInputValue,\n keydown: [\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n return _vm.changeTime(0, 1)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n return _vm.changeTime(0, 0)\n }\n ],\n wheel: function($event) {\n return _vm.onWheel($event, false)\n },\n change: function($event) {\n _vm.minutesText = $event.target.value;\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _vm.showMeridian\n ? _c(\n \"td\",\n [\n _vm._v(\"\\n \\n \"),\n _c(\"btn\", {\n attrs: {\n \"data-action\": \"toggleMeridian\",\n disabled: _vm.readonly\n },\n domProps: {\n textContent: _vm._s(\n _vm.meridian\n ? _vm.t(\"uiv.timePicker.am\")\n : _vm.t(\"uiv.timePicker.pm\")\n )\n },\n on: { click: _vm.toggleMeridian }\n })\n ],\n 1\n )\n : _vm._e()\n ]),\n _vm._v(\" \"),\n _vm.controls\n ? _c(\"tr\", { staticClass: \"text-center\" }, [\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n attrs: {\n type: \"link\",\n size: \"sm\",\n disabled: _vm.readonly\n },\n on: {\n click: function($event) {\n return _vm.changeTime(1, 0)\n }\n }\n },\n [_c(\"i\", { class: _vm.iconControlDown })]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n attrs: {\n type: \"link\",\n size: \"sm\",\n disabled: _vm.readonly\n },\n on: {\n click: function($event) {\n return _vm.changeTime(0, 0)\n }\n }\n },\n [_c(\"i\", { class: _vm.iconControlDown })]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.showMeridian ? _c(\"td\") : _vm._e()\n ])\n : _vm._e()\n ])\n ])\n ]\n )\n};\nvar __vue_staticRenderFns__$c = [\n function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"td\", [_vm._v(\" \"), _c(\"b\", [_vm._v(\":\")]), _vm._v(\" \")])\n }\n];\n__vue_render__$c._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$c = undefined;\n /* scoped */\n var __vue_scope_id__$c = undefined;\n /* module identifier */\n var __vue_module_identifier__$c = undefined;\n /* functional template */\n var __vue_is_functional_template__$c = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$c = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$c, staticRenderFns: __vue_staticRenderFns__$c },\n __vue_inject_styles__$c,\n __vue_script__$c,\n __vue_scope_id__$c,\n __vue_is_functional_template__$c,\n __vue_module_identifier__$c,\n false,\n undefined,\n undefined,\n undefined\n );\n\nfunction request (url, method) {\n if ( method === void 0 ) method = 'GET';\n\n var request = new window.XMLHttpRequest();\n var data = {};\n var p = {\n then: function (fn1, fn2) { return p.done(fn1).fail(fn2); },\n catch: function (fn) { return p.fail(fn); },\n always: function (fn) { return p.done(fn).fail(fn); }\n };\n var statuses = ['done', 'fail'];\n statuses.forEach(function (name) {\n data[name] = [];\n p[name] = function (fn) {\n if (fn instanceof Function) { data[name].push(fn); }\n return p\n };\n });\n p.done(JSON.parse);\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n var e = { status: request.status };\n if (request.status === 200) {\n var response = request.responseText;\n for (var i in data.done) {\n /* istanbul ignore else */\n if (hasOwnProperty(data.done, i) && isFunction(data.done[i])) {\n var value = data.done[i](response);\n if (isExist(value)) {\n response = value;\n }\n }\n }\n } else {\n data.fail.forEach(function (fail) { return fail(e); });\n }\n }\n };\n request.open(method, url);\n request.setRequestHeader('Accept', 'application/json');\n request.send();\n return p\n}\n\nvar script$d = {\n components: { Dropdown: Dropdown },\n props: {\n value: {\n required: true\n },\n data: Array,\n itemKey: String,\n appendToBody: {\n type: Boolean,\n default: false\n },\n ignoreCase: {\n type: Boolean,\n default: true\n },\n matchStart: {\n type: Boolean,\n default: false\n },\n forceSelect: {\n type: Boolean,\n default: false\n },\n forceClear: {\n type: Boolean,\n default: false\n },\n limit: {\n type: Number,\n default: 10\n },\n asyncSrc: String,\n asyncKey: String,\n asyncFunction: Function,\n debounce: {\n type: Number,\n default: 200\n },\n openOnFocus: {\n type: Boolean,\n default: true\n },\n openOnEmpty: {\n type: Boolean,\n default: false\n },\n target: {\n required: true\n },\n preselect: {\n type: Boolean,\n default: true\n }\n },\n data: function data () {\n return {\n inputEl: null,\n items: [],\n activeIndex: 0,\n timeoutID: 0,\n elements: [],\n open: false,\n dropdownMenuEl: null\n }\n },\n computed: {\n regexOptions: function regexOptions () {\n var options = '';\n if (this.ignoreCase) {\n options += 'i';\n }\n if (!this.matchStart) {\n options += 'g';\n }\n return options\n }\n },\n mounted: function mounted () {\n var this$1 = this;\n\n ensureElementMatchesFunction();\n this.$nextTick(function () {\n this$1.initInputElByTarget(this$1.target);\n this$1.initListeners();\n this$1.dropdownMenuEl = this$1.$refs.dropdown.$el.querySelector('.dropdown-menu');\n // set input text if v-model not empty\n if (this$1.value) {\n this$1.setInputTextByValue(this$1.value);\n }\n });\n },\n beforeDestroy: function beforeDestroy () {\n this.removeListeners();\n },\n watch: {\n target: function target (el) {\n this.removeListeners();\n this.initInputElByTarget(el);\n this.initListeners();\n },\n value: function value (value$1) {\n this.setInputTextByValue(value$1);\n }\n },\n methods: {\n setInputTextByValue: function setInputTextByValue (value) {\n if (isString(value)) {\n // direct\n this.inputEl.value = value;\n } else if (value) {\n // is object\n this.inputEl.value = this.itemKey ? value[this.itemKey] : value;\n } else if (value === null) {\n // is null or undefined or something else not valid\n this.inputEl.value = '';\n }\n },\n hasEmptySlot: function hasEmptySlot () {\n return !!this.$slots.empty || !!this.$scopedSlots.empty\n },\n initInputElByTarget: function initInputElByTarget (target) {\n if (!target) {\n return\n }\n this.inputEl = getElementBySelectorOrRef(target);\n },\n initListeners: function initListeners () {\n if (this.inputEl) {\n this.elements = [this.inputEl];\n on(this.inputEl, EVENTS.FOCUS, this.inputFocused);\n on(this.inputEl, EVENTS.BLUR, this.inputBlured);\n on(this.inputEl, EVENTS.INPUT, this.inputChanged);\n on(this.inputEl, EVENTS.KEY_DOWN, this.inputKeyPressed);\n }\n },\n removeListeners: function removeListeners () {\n this.elements = [];\n if (this.inputEl) {\n off(this.inputEl, EVENTS.FOCUS, this.inputFocused);\n off(this.inputEl, EVENTS.BLUR, this.inputBlured);\n off(this.inputEl, EVENTS.INPUT, this.inputChanged);\n off(this.inputEl, EVENTS.KEY_DOWN, this.inputKeyPressed);\n }\n },\n prepareItems: function prepareItems (data, disableFilters) {\n if ( disableFilters === void 0 ) disableFilters = false;\n\n if (disableFilters) {\n this.items = data.slice(0, this.limit);\n return\n }\n this.items = [];\n this.activeIndex = this.preselect ? 0 : -1;\n for (var i = 0, l = data.length; i < l; i++) {\n var item = data[i];\n var key = this.itemKey ? item[this.itemKey] : item;\n key = key.toString();\n var index = -1;\n if (this.ignoreCase) {\n index = key.toLowerCase().indexOf(this.inputEl.value.toLowerCase());\n } else {\n index = key.indexOf(this.inputEl.value);\n }\n if (this.matchStart ? index === 0 : index >= 0) {\n this.items.push(item);\n }\n if (this.items.length >= this.limit) {\n break\n }\n }\n },\n fetchItems: function fetchItems (value, debounce) {\n var this$1 = this;\n\n clearTimeout(this.timeoutID);\n if (value === '' && !this.openOnEmpty) {\n this.open = false;\n } else if (this.data) {\n this.prepareItems(this.data);\n this.open = this.hasEmptySlot() || Boolean(this.items.length);\n } else if (this.asyncSrc) {\n this.timeoutID = setTimeout(function () {\n this$1.$emit('loading');\n request(this$1.asyncSrc + encodeURIComponent(value))\n .then(function (data) {\n if (this$1.inputEl.matches(':focus')) {\n this$1.prepareItems(this$1.asyncKey ? data[this$1.asyncKey] : data, true);\n this$1.open = this$1.hasEmptySlot() || Boolean(this$1.items.length);\n }\n this$1.$emit('loaded');\n })\n .catch(function (err) {\n console.error(err);\n this$1.$emit('loaded-error');\n });\n }, debounce);\n } else if (this.asyncFunction) {\n var cb = function (data) {\n if (this$1.inputEl.matches(':focus')) {\n this$1.prepareItems(data, true);\n this$1.open = this$1.hasEmptySlot() || Boolean(this$1.items.length);\n }\n this$1.$emit('loaded');\n };\n this.timeoutID = setTimeout(function () {\n this$1.$emit('loading');\n this$1.asyncFunction(value, cb);\n }, debounce);\n }\n },\n inputChanged: function inputChanged () {\n var value = this.inputEl.value;\n this.fetchItems(value, this.debounce);\n this.$emit('input', this.forceSelect ? undefined : value);\n },\n inputFocused: function inputFocused () {\n if (this.openOnFocus) {\n var value = this.inputEl.value;\n this.fetchItems(value, 0);\n }\n },\n inputBlured: function inputBlured () {\n var this$1 = this;\n\n if (!this.dropdownMenuEl.matches(':hover')) {\n this.open = false;\n }\n if (this.inputEl && this.forceClear) {\n this.$nextTick(function () {\n if (typeof this$1.value === 'undefined') {\n this$1.inputEl.value = '';\n }\n });\n }\n },\n inputKeyPressed: function inputKeyPressed (event) {\n event.stopPropagation();\n if (this.open) {\n switch (event.keyCode) {\n case 13:\n if (this.activeIndex >= 0) {\n this.selectItem(this.items[this.activeIndex]);\n } else {\n this.open = false;\n }\n event.preventDefault();\n break\n case 27:\n this.open = false;\n break\n case 38:\n this.activeIndex = this.activeIndex > 0 ? this.activeIndex - 1 : 0;\n break\n case 40: {\n var maxIndex = this.items.length - 1;\n this.activeIndex = this.activeIndex < maxIndex ? this.activeIndex + 1 : maxIndex;\n break\n }\n }\n }\n },\n selectItem: function selectItem (item) {\n this.$emit('input', item);\n this.open = false;\n },\n highlight: function highlight (item) {\n var value = this.itemKey ? item[this.itemKey] : item;\n var inputValue = this.inputEl.value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n return value.replace(new RegExp((\"\" + inputValue), this.regexOptions), '$& ')\n }\n }\n};\n\n/* script */\nvar __vue_script__$d = script$d;\n\n/* template */\nvar __vue_render__$d = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"dropdown\",\n {\n ref: \"dropdown\",\n attrs: {\n tag: \"section\",\n \"append-to-body\": _vm.appendToBody,\n \"not-close-elements\": _vm.elements,\n \"position-element\": _vm.inputEl\n },\n model: {\n value: _vm.open,\n callback: function($$v) {\n _vm.open = $$v;\n },\n expression: \"open\"\n }\n },\n [\n _c(\n \"template\",\n { slot: \"dropdown\" },\n [\n _vm._t(\n \"item\",\n _vm._l(_vm.items, function(item, index) {\n return _c(\n \"li\",\n { class: { active: _vm.activeIndex === index } },\n [\n _c(\n \"a\",\n {\n attrs: { href: \"#\" },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.selectItem(item)\n }\n }\n },\n [\n _c(\"span\", {\n domProps: { innerHTML: _vm._s(_vm.highlight(item)) }\n })\n ]\n )\n ]\n )\n }),\n {\n items: _vm.items,\n activeIndex: _vm.activeIndex,\n select: _vm.selectItem,\n highlight: _vm.highlight\n }\n ),\n _vm._v(\" \"),\n !_vm.items || _vm.items.length === 0 ? _vm._t(\"empty\") : _vm._e()\n ],\n 2\n )\n ],\n 2\n )\n};\nvar __vue_staticRenderFns__$d = [];\n__vue_render__$d._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$d = undefined;\n /* scoped */\n var __vue_scope_id__$d = undefined;\n /* module identifier */\n var __vue_module_identifier__$d = undefined;\n /* functional template */\n var __vue_is_functional_template__$d = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$d = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$d, staticRenderFns: __vue_staticRenderFns__$d },\n __vue_inject_styles__$d,\n __vue_script__$d,\n __vue_scope_id__$d,\n __vue_is_functional_template__$d,\n __vue_module_identifier__$d,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar ProgressBarStack = {\n functional: true,\n render: function render (h, ref) {\n var obj;\n\n var props = ref.props;\n var data = ref.data;\n return h(\n 'div',\n a(data, {\n class: ( obj = {\n 'progress-bar': true,\n 'progress-bar-striped': props.striped,\n active: props.striped && props.active\n }, obj[(\"progress-bar-\" + (props.type))] = Boolean(props.type), obj ),\n style: {\n minWidth: props.minWidth ? '2em' : null,\n width: ((props.value) + \"%\")\n },\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuenow': props.value,\n 'aria-valuemax': 100\n }\n }),\n props.label ? (props.labelText ? props.labelText : ((props.value) + \"%\")) : null\n )\n },\n props: {\n value: {\n type: Number,\n required: true,\n validator: function validator (value) {\n return value >= 0 && value <= 100\n }\n },\n labelText: String,\n type: String,\n label: {\n type: Boolean,\n default: false\n },\n minWidth: {\n type: Boolean,\n default: false\n },\n striped: {\n type: Boolean,\n default: false\n },\n active: {\n type: Boolean,\n default: false\n }\n }\n};\n\nvar ProgressBar = {\n functional: true,\n render: function render (h, ref) {\n var props = ref.props;\n var data = ref.data;\n var children = ref.children;\n\n return h(\n 'div',\n a(data, { class: 'progress' }),\n children && children.length ? children : [h(ProgressBarStack, { props: props })]\n )\n }\n};\n\nvar BreadcrumbItem = {\n functional: true,\n mixins: [linkMixin],\n render: function render (h, ref) {\n var props = ref.props;\n var data = ref.data;\n var children = ref.children;\n\n var slot;\n if (props.active) {\n slot = children;\n } else if (props.to) {\n slot = [\n h('router-link', {\n props: {\n to: props.to,\n replace: props.replace,\n append: props.append,\n exact: props.exact\n }\n }, children)\n ];\n } else {\n slot = [\n h('a', {\n attrs: {\n href: props.href,\n target: props.target\n }\n }, children)\n ];\n }\n return h('li', a(data, { class: { active: props.active } }), slot)\n },\n props: {\n active: {\n type: Boolean,\n default: false\n }\n }\n};\n\nvar Breadcrumbs = {\n functional: true,\n render: function render (h, ref) {\n var props = ref.props;\n var data = ref.data;\n var children = ref.children;\n\n var slot = [];\n if (children && children.length) {\n slot = children;\n } else if (props.items) {\n slot = props.items.map(function (item, index) {\n return h(\n BreadcrumbItem,\n {\n key: hasOwnProperty(item, 'key') ? item.key : index,\n props: {\n active: hasOwnProperty(item, 'active') ? item.active : index === props.items.length - 1,\n href: item.href,\n target: item.target,\n to: item.to,\n replace: item.replace,\n append: item.append,\n exact: item.exact\n }\n },\n item.text\n )\n });\n }\n return h('ol', a(data, { class: 'breadcrumb' }), slot)\n },\n props: {\n items: Array\n }\n};\n\nvar BtnToolbar = {\n functional: true,\n render: function render (h, ref) {\n var children = ref.children;\n var data = ref.data;\n\n return h(\n 'div',\n a(data, {\n class: {\n 'btn-toolbar': true\n },\n attrs: {\n role: 'toolbar'\n }\n }),\n children\n )\n }\n};\n\nvar script$e = {\n mixins: [Local],\n components: { Dropdown: Dropdown },\n props: {\n value: {\n type: Array,\n required: true\n },\n options: {\n type: Array,\n required: true\n },\n labelKey: {\n type: String,\n default: 'label'\n },\n valueKey: {\n type: String,\n default: 'value'\n },\n limit: {\n type: Number,\n default: 0\n },\n size: String,\n placeholder: String,\n split: {\n type: String,\n default: ', '\n },\n disabled: {\n type: Boolean,\n default: false\n },\n appendToBody: {\n type: Boolean,\n default: false\n },\n block: {\n type: Boolean,\n default: false\n },\n collapseSelected: {\n type: Boolean,\n default: false\n },\n filterable: {\n type: Boolean,\n default: false\n },\n filterAutoFocus: {\n type: Boolean,\n default: true\n },\n filterFunction: Function,\n filterPlaceholder: String,\n selectedIcon: {\n type: String,\n default: 'glyphicon glyphicon-ok'\n },\n itemSelectedClass: String\n },\n data: function data () {\n return {\n showDropdown: false,\n els: [],\n filterInput: '',\n currentActive: -1\n }\n },\n computed: {\n containerStyles: function containerStyles () {\n return {\n width: this.block ? '100%' : ''\n }\n },\n filteredOptions: function filteredOptions () {\n var this$1 = this;\n\n if (this.filterable && this.filterInput) {\n if (this.filterFunction) {\n return this.filterFunction(this.filterInput)\n } else {\n var filterInput = this.filterInput.toLowerCase();\n return this.options.filter(function (v) { return (\n v[this$1.valueKey].toString().toLowerCase().indexOf(filterInput) >= 0 ||\n v[this$1.labelKey].toString().toLowerCase().indexOf(filterInput) >= 0\n ); })\n }\n } else {\n return this.options\n }\n },\n groupedOptions: function groupedOptions () {\n var this$1 = this;\n\n return this.filteredOptions\n .map(function (v) { return v.group; })\n .filter(onlyUnique)\n .map(function (v) { return ({\n options: this$1.filteredOptions.filter(function (option) { return option.group === v; }),\n $group: v\n }); })\n },\n flattenGroupedOptions: function flattenGroupedOptions () {\n var ref;\n\n return (ref = []).concat.apply(ref, this.groupedOptions.map(function (v) { return v.options; }))\n },\n selectClasses: function selectClasses () {\n var obj;\n\n return ( obj = {}, obj[(\"input-\" + (this.size))] = this.size, obj )\n },\n selectedIconClasses: function selectedIconClasses () {\n var obj;\n\n return ( obj = {}, obj[this.selectedIcon] = true, obj['pull-right'] = true, obj )\n },\n selectTextClasses: function selectTextClasses () {\n return {\n 'text-muted': this.value.length === 0\n }\n },\n labelValue: function labelValue () {\n var this$1 = this;\n\n var optionsByValue = this.options.map(function (v) { return v[this$1.valueKey]; });\n return this.value.map(function (v) {\n var index = optionsByValue.indexOf(v);\n return index >= 0 ? this$1.options[index][this$1.labelKey] : v\n })\n },\n selectedText: function selectedText () {\n if (this.value.length) {\n var labelValue = this.labelValue;\n if (this.collapseSelected) {\n var str = labelValue[0];\n str += labelValue.length > 1 ? ((this.split) + \"+\" + (labelValue.length - 1)) : '';\n return str\n } else {\n return labelValue.join(this.split)\n }\n } else {\n return this.placeholder || this.t('uiv.multiSelect.placeholder')\n }\n },\n customOptionsVisible: function customOptionsVisible () {\n return !!this.$slots.option || !!this.$scopedSlots.option\n }\n },\n watch: {\n showDropdown: function showDropdown (v) {\n var this$1 = this;\n\n // clear filter input when dropdown toggles\n this.filterInput = '';\n this.currentActive = -1;\n this.$emit('visible-change', v);\n if (v && this.filterable && this.filterAutoFocus) {\n this.$nextTick(function () {\n this$1.$refs.filterInput.focus();\n });\n }\n }\n },\n mounted: function mounted () {\n this.els = [this.$el];\n },\n methods: {\n goPrevOption: function goPrevOption () {\n if (!this.showDropdown) {\n return\n }\n this.currentActive > 0 ? this.currentActive-- : this.currentActive = this.flattenGroupedOptions.length - 1;\n },\n goNextOption: function goNextOption () {\n if (!this.showDropdown) {\n return\n }\n this.currentActive < this.flattenGroupedOptions.length - 1 ? this.currentActive++ : this.currentActive = 0;\n },\n selectOption: function selectOption () {\n var index = this.currentActive;\n var options = this.flattenGroupedOptions;\n if (!this.showDropdown) {\n this.showDropdown = true;\n } else if (index >= 0 && index < options.length) {\n this.toggle(options[index]);\n }\n },\n itemClasses: function itemClasses (item) {\n var result = {\n disabled: item.disabled,\n active: this.currentActive === this.flattenGroupedOptions.indexOf(item)\n };\n if (this.itemSelectedClass) {\n result[this.itemSelectedClass] = this.isItemSelected(item);\n }\n return result\n },\n isItemSelected: function isItemSelected (item) {\n return this.value.indexOf(item[this.valueKey]) >= 0\n },\n toggle: function toggle (item) {\n if (item.disabled) {\n return\n }\n var value = item[this.valueKey];\n var index = this.value.indexOf(value);\n if (this.limit === 1) {\n var newValue = index >= 0 ? [] : [value];\n this.$emit('input', newValue);\n this.$emit('change', newValue);\n } else {\n if (index >= 0) {\n var newVal = this.value.slice();\n newVal.splice(index, 1);\n this.$emit('input', newVal);\n this.$emit('change', newVal);\n } else if (this.limit === 0 || this.value.length < this.limit) {\n var newVal$1 = this.value.slice();\n newVal$1.push(value);\n this.$emit('input', newVal$1);\n this.$emit('change', newVal$1);\n } else {\n this.$emit('limit-exceed');\n }\n }\n },\n searchClicked: function searchClicked () {\n this.$emit('search', this.filterInput);\n }\n }\n};\n\n/* script */\nvar __vue_script__$e = script$e;\n\n/* template */\nvar __vue_render__$e = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"dropdown\",\n {\n ref: \"dropdown\",\n style: _vm.containerStyles,\n attrs: {\n \"not-close-elements\": _vm.els,\n \"append-to-body\": _vm.appendToBody,\n disabled: _vm.disabled\n },\n nativeOn: {\n keydown: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])\n ) {\n return null\n }\n _vm.showDropdown = false;\n }\n },\n model: {\n value: _vm.showDropdown,\n callback: function($$v) {\n _vm.showDropdown = $$v;\n },\n expression: \"showDropdown\"\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"form-control dropdown-toggle clearfix\",\n class: _vm.selectClasses,\n attrs: {\n disabled: _vm.disabled,\n tabindex: \"0\",\n \"data-role\": \"trigger\"\n },\n on: {\n focus: function($event) {\n return _vm.$emit(\"focus\", $event)\n },\n blur: function($event) {\n return _vm.$emit(\"blur\", $event)\n },\n keydown: [\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.goNextOption($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.goPrevOption($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.selectOption($event)\n }\n ]\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"pull-right\",\n staticStyle: {\n display: \"inline-block\",\n \"vertical-align\": \"middle\"\n }\n },\n [\n _c(\"span\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"caret\" })\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", {\n class: _vm.selectTextClasses,\n staticStyle: {\n \"overflow-x\": \"hidden\",\n \"text-overflow\": \"ellipsis\",\n \"white-space\": \"nowrap\"\n },\n domProps: { textContent: _vm._s(_vm.selectedText) }\n })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"template\",\n { slot: \"dropdown\" },\n [\n _vm.filterable\n ? _c(\"li\", { staticStyle: { padding: \"4px 8px\" } }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.filterInput,\n expression: \"filterInput\"\n }\n ],\n ref: \"filterInput\",\n staticClass: \"form-control input-sm\",\n attrs: {\n \"aria-label\": \"Filter...\",\n type: \"text\",\n placeholder:\n _vm.filterPlaceholder ||\n _vm.t(\"uiv.multiSelect.filterPlaceholder\")\n },\n domProps: { value: _vm.filterInput },\n on: {\n keyup: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.searchClicked($event)\n },\n keydown: [\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.goNextOption($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.goPrevOption($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.selectOption($event)\n }\n ],\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.filterInput = $event.target.value;\n }\n }\n })\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm._l(_vm.groupedOptions, function(item) {\n return [\n item.$group\n ? _c(\"li\", {\n staticClass: \"dropdown-header\",\n domProps: { textContent: _vm._s(item.$group) }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm._l(item.options, function(_item) {\n return [\n _c(\n \"li\",\n {\n class: _vm.itemClasses(_item),\n staticStyle: { outline: \"0\" },\n on: {\n keydown: [\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.goNextOption($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.goPrevOption($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.selectOption($event)\n }\n ],\n click: function($event) {\n $event.stopPropagation();\n return _vm.toggle(_item)\n },\n mouseenter: function($event) {\n _vm.currentActive = -1;\n }\n }\n },\n [\n _vm.customOptionsVisible\n ? _c(\n \"a\",\n {\n staticStyle: { outline: \"0\" },\n attrs: { role: \"button\" }\n },\n [\n _vm._t(\"option\", null, { item: _item }),\n _vm._v(\" \"),\n _vm.selectedIcon && _vm.isItemSelected(_item)\n ? _c(\"span\", { class: _vm.selectedIconClasses })\n : _vm._e()\n ],\n 2\n )\n : _vm.isItemSelected(_item)\n ? _c(\n \"a\",\n {\n staticStyle: { outline: \"0\" },\n attrs: { role: \"button\" }\n },\n [\n _c(\"b\", [_vm._v(_vm._s(_item[_vm.labelKey]))]),\n _vm._v(\" \"),\n _vm.selectedIcon\n ? _c(\"span\", { class: _vm.selectedIconClasses })\n : _vm._e()\n ]\n )\n : _c(\n \"a\",\n {\n staticStyle: { outline: \"0\" },\n attrs: { role: \"button\" }\n },\n [_c(\"span\", [_vm._v(_vm._s(_item[_vm.labelKey]))])]\n )\n ]\n )\n ]\n })\n ]\n })\n ],\n 2\n )\n ],\n 2\n )\n};\nvar __vue_staticRenderFns__$e = [];\n__vue_render__$e._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$e = undefined;\n /* scoped */\n var __vue_scope_id__$e = undefined;\n /* module identifier */\n var __vue_module_identifier__$e = undefined;\n /* functional template */\n var __vue_is_functional_template__$e = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$e = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$e, staticRenderFns: __vue_staticRenderFns__$e },\n __vue_inject_styles__$e,\n __vue_script__$e,\n __vue_scope_id__$e,\n __vue_is_functional_template__$e,\n __vue_module_identifier__$e,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$f = {\n components: { Collapse: Collapse },\n props: {\n value: Boolean,\n fluid: {\n type: Boolean,\n default: true\n },\n fixedTop: Boolean,\n fixedBottom: Boolean,\n staticTop: Boolean,\n inverse: Boolean\n },\n data: function data () {\n return {\n show: false\n }\n },\n computed: {\n navClasses: function navClasses () {\n return {\n navbar: true,\n 'navbar-default': !this.inverse,\n 'navbar-inverse': this.inverse,\n 'navbar-static-top': this.staticTop,\n 'navbar-fixed-bottom': this.fixedBottom,\n 'navbar-fixed-top': this.fixedTop\n }\n }\n },\n mounted: function mounted () {\n this.show = !!this.value;\n },\n watch: {\n value: function value (v) {\n this.show = v;\n }\n },\n methods: {\n toggle: function toggle () {\n this.show = !this.show;\n this.$emit('input', this.show);\n }\n }\n};\n\n/* script */\nvar __vue_script__$f = script$f;\n\n/* template */\nvar __vue_render__$f = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"nav\", { class: _vm.navClasses }, [\n _c(\n \"div\",\n { class: _vm.fluid ? \"container-fluid\" : \"container\" },\n [\n _c(\n \"div\",\n { staticClass: \"navbar-header\" },\n [\n _vm._t(\"collapse-btn\", [\n _c(\n \"button\",\n {\n staticClass: \"navbar-toggle collapsed\",\n attrs: { type: \"button\" },\n on: { click: _vm.toggle }\n },\n [\n _c(\"span\", { staticClass: \"sr-only\" }, [\n _vm._v(\"Toggle navigation\")\n ]),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"icon-bar\" }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"icon-bar\" }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"icon-bar\" })\n ]\n )\n ]),\n _vm._v(\" \"),\n _vm._t(\"brand\")\n ],\n 2\n ),\n _vm._v(\" \"),\n _vm._t(\"default\"),\n _vm._v(\" \"),\n _c(\n \"collapse\",\n {\n staticClass: \"navbar-collapse\",\n model: {\n value: _vm.show,\n callback: function($$v) {\n _vm.show = $$v;\n },\n expression: \"show\"\n }\n },\n [_vm._t(\"collapse\")],\n 2\n )\n ],\n 2\n )\n ])\n};\nvar __vue_staticRenderFns__$f = [];\n__vue_render__$f._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$f = undefined;\n /* scoped */\n var __vue_scope_id__$f = undefined;\n /* module identifier */\n var __vue_module_identifier__$f = undefined;\n /* functional template */\n var __vue_is_functional_template__$f = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$f = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$f, staticRenderFns: __vue_staticRenderFns__$f },\n __vue_inject_styles__$f,\n __vue_script__$f,\n __vue_scope_id__$f,\n __vue_is_functional_template__$f,\n __vue_module_identifier__$f,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar NavbarNav = {\n functional: true,\n render: function render (h, ref) {\n var children = ref.children;\n var data = ref.data;\n var props = ref.props;\n\n return h(\n 'ul',\n a(data, {\n class: {\n nav: true,\n 'navbar-nav': true,\n 'navbar-left': props.left,\n 'navbar-right': props.right\n }\n }),\n children\n )\n },\n props: {\n left: Boolean,\n right: Boolean\n }\n};\n\nvar NavbarForm = {\n functional: true,\n render: function render (h, ref) {\n var children = ref.children;\n var data = ref.data;\n var props = ref.props;\n\n return h(\n 'form',\n a(data, {\n class: {\n 'navbar-form': true,\n 'navbar-left': props.left,\n 'navbar-right': props.right\n }\n }),\n children\n )\n },\n props: {\n left: Boolean,\n right: Boolean\n }\n};\n\nvar NavbarText = {\n functional: true,\n render: function render (h, ref) {\n var children = ref.children;\n var data = ref.data;\n var props = ref.props;\n\n return h(\n 'p',\n a(data, {\n class: {\n 'navbar-text': true,\n 'navbar-left': props.left,\n 'navbar-right': props.right\n }\n }),\n children\n )\n },\n props: {\n left: Boolean,\n right: Boolean\n }\n};\n\nvar components = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Carousel: __vue_component__,\n Slide: __vue_component__$1,\n Collapse: Collapse,\n Dropdown: Dropdown,\n Modal: __vue_component__$2,\n Tab: __vue_component__$3,\n Tabs: __vue_component__$4,\n DatePicker: __vue_component__$8,\n Affix: __vue_component__$9,\n Alert: __vue_component__$a,\n Pagination: __vue_component__$b,\n Tooltip: Tooltip,\n Popover: Popover,\n TimePicker: __vue_component__$c,\n Typeahead: __vue_component__$d,\n ProgressBar: ProgressBar,\n ProgressBarStack: ProgressBarStack,\n Breadcrumbs: Breadcrumbs,\n BreadcrumbItem: BreadcrumbItem,\n Btn: Btn,\n BtnGroup: BtnGroup,\n BtnToolbar: BtnToolbar,\n MultiSelect: __vue_component__$e,\n Navbar: __vue_component__$f,\n NavbarNav: NavbarNav,\n NavbarForm: NavbarForm,\n NavbarText: NavbarText\n});\n\nvar INSTANCE = '_uiv_tooltip_instance';\n\nvar bind$1 = function (el, binding) {\n // console.log('bind')\n unbind$1(el);\n var Constructor = Vue.extend(Tooltip);\n var vm = new Constructor({\n propsData: {\n target: el,\n appendTo: binding.arg && '#' + binding.arg,\n text: typeof binding.value === 'string' ? (binding.value && binding.value.toString()) : (binding.value && binding.value.text && binding.value.text.toString()),\n positionBy: binding.value && binding.value.positionBy && binding.value.positionBy.toString(),\n viewport: binding.value && binding.value.viewport && binding.value.viewport.toString(),\n customClass: binding.value && binding.value.customClass && binding.value.customClass.toString(),\n showDelay: binding.value && binding.value.showDelay,\n hideDelay: binding.value && binding.value.hideDelay\n }\n });\n var options = [];\n for (var key in binding.modifiers) {\n if (hasOwnProperty(binding.modifiers, key) && binding.modifiers[key]) {\n options.push(key);\n }\n }\n options.forEach(function (option) {\n if (/(top)|(left)|(right)|(bottom)/.test(option)) {\n vm.placement = option;\n } else if (/(hover)|(focus)|(click)/.test(option)) {\n vm.trigger = option;\n } else if (/unenterable/.test(option)) {\n vm.enterable = false;\n }\n });\n vm.$mount();\n el[INSTANCE] = vm;\n};\n\nvar unbind$1 = function (el) {\n // console.log('unbind')\n var vm = el[INSTANCE];\n if (vm) {\n vm.$destroy();\n }\n delete el[INSTANCE];\n};\n\nvar update$1 = function (el, binding) {\n // console.log('update')\n if (binding.value !== binding.oldValue) {\n bind$1(el, binding);\n }\n};\n\nvar tooltip = { bind: bind$1, unbind: unbind$1, update: update$1 };\n\nvar INSTANCE$1 = '_uiv_popover_instance';\n\nvar bind$2 = function (el, binding) {\n // console.log('bind')\n unbind$2(el);\n var Constructor = Vue.extend(Popover);\n var vm = new Constructor({\n propsData: {\n target: el,\n appendTo: binding.arg && '#' + binding.arg,\n title: binding.value && binding.value.title && binding.value.title.toString(),\n positionBy: binding.value && binding.value.positionBy && binding.value.positionBy.toString(),\n content: binding.value && binding.value.content && binding.value.content.toString(),\n viewport: binding.value && binding.value.viewport && binding.value.viewport.toString(),\n customClass: binding.value && binding.value.customClass && binding.value.customClass.toString()\n }\n });\n var options = [];\n for (var key in binding.modifiers) {\n if (hasOwnProperty(binding.modifiers, key) && binding.modifiers[key]) {\n options.push(key);\n }\n }\n options.forEach(function (option) {\n if (/(top)|(left)|(right)|(bottom)/.test(option)) {\n vm.placement = option;\n } else if (/(hover)|(focus)|(click)/.test(option)) {\n vm.trigger = option;\n } else if (/unenterable/.test(option)) {\n vm.enterable = false;\n }\n });\n vm.$mount();\n el[INSTANCE$1] = vm;\n};\n\nvar unbind$2 = function (el) {\n // console.log('unbind')\n var vm = el[INSTANCE$1];\n if (vm) {\n vm.$destroy();\n }\n delete el[INSTANCE$1];\n};\n\nvar update$2 = function (el, binding) {\n // console.log('update')\n if (binding.value !== binding.oldValue) {\n bind$2(el, binding);\n }\n};\n\nvar popover = { bind: bind$2, unbind: unbind$2, update: update$2 };\n\nfunction ScrollSpy (element, target, options) {\n if ( target === void 0 ) target = 'body';\n if ( options === void 0 ) options = {};\n\n this.el = element;\n this.opts = assign({}, ScrollSpy.DEFAULTS, options);\n this.opts.target = target;\n if (target === 'body') {\n this.scrollElement = window;\n } else {\n this.scrollElement = document.querySelector((\"[id=\" + target + \"]\"));\n }\n this.selector = 'li > a';\n this.offsets = [];\n this.targets = [];\n this.activeTarget = null;\n this.scrollHeight = 0;\n if (this.scrollElement) {\n this.refresh();\n this.process();\n }\n}\n\nScrollSpy.DEFAULTS = {\n offset: 10,\n callback: function (ele) { return 0; }\n};\n\nScrollSpy.prototype.getScrollHeight = function () {\n return this.scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)\n};\n\nScrollSpy.prototype.refresh = function () {\n var this$1 = this;\n\n this.offsets = [];\n this.targets = [];\n this.scrollHeight = this.getScrollHeight();\n var list = nodeListToArray(this.el.querySelectorAll(this.selector));\n var isWindow = this.scrollElement === window;\n list\n .map(function (ele) {\n var href = ele.getAttribute('href');\n if (/^#./.test(href)) {\n var rootEl = isWindow ? document : this$1.scrollElement;\n var hrefEl = rootEl.querySelector((\"[id='\" + (href.slice(1)) + \"']\"));\n var offset = isWindow ? hrefEl.getBoundingClientRect().top : hrefEl.offsetTop;\n return [offset, href]\n } else {\n return null\n }\n })\n .filter(function (item) { return item; })\n .sort(function (a, b) { return a[0] - b[0]; })\n .forEach(function (item) {\n this$1.offsets.push(item[0]);\n this$1.targets.push(item[1]);\n });\n // console.log(this.offsets, this.targets)\n};\n\nScrollSpy.prototype.process = function () {\n var isWindow = this.scrollElement === window;\n var scrollTop = (isWindow ? window.pageYOffset : this.scrollElement.scrollTop) + this.opts.offset;\n var scrollHeight = this.getScrollHeight();\n var scrollElementHeight = isWindow ? getViewportSize().height : this.scrollElement.getBoundingClientRect().height;\n var maxScroll = this.opts.offset + scrollHeight - scrollElementHeight;\n var offsets = this.offsets;\n var targets = this.targets;\n var activeTarget = this.activeTarget;\n var i;\n if (this.scrollHeight !== scrollHeight) {\n this.refresh();\n }\n if (scrollTop >= maxScroll) {\n return activeTarget !== (i = targets[targets.length - 1]) && this.activate(i)\n }\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null;\n return this.clear()\n }\n for (i = offsets.length; i--;) {\n activeTarget !== targets[i] &&\n scrollTop >= offsets[i] &&\n (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) &&\n this.activate(targets[i]);\n }\n};\n\nScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target;\n this.clear();\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]';\n var activeCallback = this.opts.callback;\n var active = nodeListToArray(this.el.querySelectorAll(selector));\n active.forEach(function (ele) {\n getParents(ele, 'li')\n .forEach(function (item) {\n addClass(item, 'active');\n activeCallback(item);\n });\n if (getParents(ele, '.dropdown-menu').length) {\n addClass(getClosest(ele, 'li.dropdown'), 'active');\n }\n });\n};\n\nScrollSpy.prototype.clear = function () {\n var this$1 = this;\n\n var list = nodeListToArray(this.el.querySelectorAll(this.selector));\n list.forEach(function (ele) {\n getParents(ele, '.active', this$1.opts.target).forEach(function (item) {\n removeClass(item, 'active');\n });\n });\n};\n\nvar INSTANCE$2 = '_uiv_scrollspy_instance';\nvar events$1 = [EVENTS.RESIZE, EVENTS.SCROLL];\n\nvar bind$3 = function (el, binding) {\n // console.log('bind')\n unbind$3(el);\n};\n\nvar inserted = function (el, binding) {\n // console.log('inserted')\n var scrollSpy = new ScrollSpy(el, binding.arg, binding.value);\n if (scrollSpy.scrollElement) {\n scrollSpy.handler = function () {\n scrollSpy.process();\n };\n events$1.forEach(function (event) {\n on(scrollSpy.scrollElement, event, scrollSpy.handler);\n });\n }\n el[INSTANCE$2] = scrollSpy;\n};\n\nvar unbind$3 = function (el) {\n // console.log('unbind')\n var instance = el[INSTANCE$2];\n if (instance && instance.scrollElement) {\n events$1.forEach(function (event) {\n off(instance.scrollElement, event, instance.handler);\n });\n delete el[INSTANCE$2];\n }\n};\n\nvar update$3 = function (el, binding) {\n // console.log('update')\n var isArgUpdated = binding.arg !== binding.oldArg;\n var isValueUpdated = binding.value !== binding.oldValue;\n if (isArgUpdated || isValueUpdated) {\n bind$3(el);\n inserted(el, binding);\n }\n};\n\nvar scrollspy = { bind: bind$3, unbind: unbind$3, update: update$3, inserted: inserted };\n\nvar directives = /*#__PURE__*/Object.freeze({\n __proto__: null,\n tooltip: tooltip,\n popover: popover,\n scrollspy: scrollspy\n});\n\nvar TYPES = {\n ALERT: 0,\n CONFIRM: 1,\n PROMPT: 2\n};\n\nvar script$g = {\n mixins: [Local],\n components: { Modal: __vue_component__$2, Btn: Btn },\n props: {\n backdrop: null,\n title: String,\n content: String,\n html: {\n type: Boolean,\n default: false\n },\n okText: String,\n okType: {\n type: String,\n default: 'primary'\n },\n cancelText: String,\n cancelType: {\n type: String,\n default: 'default'\n },\n type: {\n type: Number,\n default: TYPES.ALERT\n },\n size: {\n type: String,\n default: 'sm'\n },\n cb: {\n type: Function,\n required: true\n },\n validator: {\n type: Function,\n default: function () { return null; }\n },\n customClass: null,\n defaultValue: String,\n inputType: {\n type: String,\n default: 'text'\n },\n autoFocus: {\n type: String,\n default: 'ok'\n },\n reverseButtons: {\n type: Boolean,\n default: false\n }\n },\n data: function data () {\n return {\n TYPES: TYPES,\n show: false,\n input: '',\n dirty: false\n }\n },\n mounted: function mounted () {\n if (this.defaultValue) {\n this.input = this.defaultValue;\n }\n },\n computed: {\n closeOnBackdropClick: function closeOnBackdropClick () {\n // use backdrop prop if exist\n // otherwise, only not available if render as alert\n return isExist(this.backdrop) ? Boolean(this.backdrop) : (this.type !== TYPES.ALERT)\n },\n inputError: function inputError () {\n return this.validator(this.input)\n },\n inputNotValid: function inputNotValid () {\n return this.dirty && this.inputError\n },\n okBtnText: function okBtnText () {\n return this.okText || this.t('uiv.modal.ok')\n },\n cancelBtnText: function cancelBtnText () {\n return this.cancelText || this.t('uiv.modal.cancel')\n }\n },\n methods: {\n toggle: function toggle (show, msg) {\n this.$refs.modal.toggle(show, msg);\n },\n validate: function validate () {\n this.dirty = true;\n if (!isExist(this.inputError)) {\n this.toggle(false, { value: this.input });\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$g = script$g;\n\n/* template */\nvar __vue_render__$g = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"modal\",\n {\n ref: \"modal\",\n class: _vm.customClass,\n attrs: {\n \"auto-focus\": \"\",\n size: _vm.size,\n title: _vm.title,\n header: !!_vm.title,\n backdrop: _vm.closeOnBackdropClick,\n \"cancel-text\": _vm.cancelText,\n \"ok-text\": _vm.okText\n },\n on: { hide: _vm.cb },\n model: {\n value: _vm.show,\n callback: function($$v) {\n _vm.show = $$v;\n },\n expression: \"show\"\n }\n },\n [\n _vm.html\n ? _c(\"div\", { domProps: { innerHTML: _vm._s(_vm.content) } })\n : _c(\"p\", [_vm._v(_vm._s(_vm.content))]),\n _vm._v(\" \"),\n _vm.type === _vm.TYPES.PROMPT\n ? _c(\"div\", [\n _c(\n \"div\",\n {\n staticClass: \"form-group\",\n class: { \"has-error\": _vm.inputNotValid }\n },\n [\n _vm.inputType === \"checkbox\"\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.input,\n expression: \"input\"\n }\n ],\n ref: \"input\",\n staticClass: \"form-control\",\n attrs: {\n required: \"\",\n \"data-action\": \"auto-focus\",\n type: \"checkbox\"\n },\n domProps: {\n checked: Array.isArray(_vm.input)\n ? _vm._i(_vm.input, null) > -1\n : _vm.input\n },\n on: {\n change: [\n function($event) {\n var $$a = _vm.input,\n $$el = $event.target,\n $$c = $$el.checked ? true : false;\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v);\n if ($$el.checked) {\n $$i < 0 && (_vm.input = $$a.concat([$$v]));\n } else {\n $$i > -1 &&\n (_vm.input = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)));\n }\n } else {\n _vm.input = $$c;\n }\n },\n function($event) {\n _vm.dirty = true;\n }\n ],\n keyup: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n return _vm.validate($event)\n }\n }\n })\n : _vm.inputType === \"radio\"\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.input,\n expression: \"input\"\n }\n ],\n ref: \"input\",\n staticClass: \"form-control\",\n attrs: {\n required: \"\",\n \"data-action\": \"auto-focus\",\n type: \"radio\"\n },\n domProps: { checked: _vm._q(_vm.input, null) },\n on: {\n change: [\n function($event) {\n _vm.input = null;\n },\n function($event) {\n _vm.dirty = true;\n }\n ],\n keyup: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n return _vm.validate($event)\n }\n }\n })\n : _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.input,\n expression: \"input\"\n }\n ],\n ref: \"input\",\n staticClass: \"form-control\",\n attrs: {\n required: \"\",\n \"data-action\": \"auto-focus\",\n type: _vm.inputType\n },\n domProps: { value: _vm.input },\n on: {\n change: function($event) {\n _vm.dirty = true;\n },\n keyup: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n return _vm.validate($event)\n },\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.input = $event.target.value;\n }\n }\n }),\n _vm._v(\" \"),\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.inputNotValid,\n expression: \"inputNotValid\"\n }\n ],\n staticClass: \"help-block\"\n },\n [_vm._v(_vm._s(_vm.inputError))]\n )\n ]\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.type === _vm.TYPES.ALERT\n ? _c(\n \"template\",\n { slot: \"footer\" },\n [\n _c(\"btn\", {\n attrs: {\n type: _vm.okType,\n \"data-action\": _vm.autoFocus === \"ok\" ? \"auto-focus\" : \"\"\n },\n domProps: { textContent: _vm._s(_vm.okBtnText) },\n on: {\n click: function($event) {\n return _vm.toggle(false, \"ok\")\n }\n }\n })\n ],\n 1\n )\n : _c(\n \"template\",\n { slot: \"footer\" },\n [\n _vm.reverseButtons\n ? [\n _vm.type === _vm.TYPES.CONFIRM\n ? _c(\"btn\", {\n attrs: {\n type: _vm.okType,\n \"data-action\":\n _vm.autoFocus === \"ok\" ? \"auto-focus\" : \"\"\n },\n domProps: { textContent: _vm._s(_vm.okBtnText) },\n on: {\n click: function($event) {\n return _vm.toggle(false, \"ok\")\n }\n }\n })\n : _c(\"btn\", {\n attrs: { type: _vm.okType },\n domProps: { textContent: _vm._s(_vm.okBtnText) },\n on: { click: _vm.validate }\n }),\n _vm._v(\" \"),\n _c(\"btn\", {\n attrs: {\n type: _vm.cancelType,\n \"data-action\":\n _vm.autoFocus === \"cancel\" ? \"auto-focus\" : \"\"\n },\n domProps: { textContent: _vm._s(_vm.cancelBtnText) },\n on: {\n click: function($event) {\n return _vm.toggle(false, \"cancel\")\n }\n }\n })\n ]\n : [\n _c(\"btn\", {\n attrs: {\n type: _vm.cancelType,\n \"data-action\":\n _vm.autoFocus === \"cancel\" ? \"auto-focus\" : \"\"\n },\n domProps: { textContent: _vm._s(_vm.cancelBtnText) },\n on: {\n click: function($event) {\n return _vm.toggle(false, \"cancel\")\n }\n }\n }),\n _vm._v(\" \"),\n _vm.type === _vm.TYPES.CONFIRM\n ? _c(\"btn\", {\n attrs: {\n type: _vm.okType,\n \"data-action\":\n _vm.autoFocus === \"ok\" ? \"auto-focus\" : \"\"\n },\n domProps: { textContent: _vm._s(_vm.okBtnText) },\n on: {\n click: function($event) {\n return _vm.toggle(false, \"ok\")\n }\n }\n })\n : _c(\"btn\", {\n attrs: { type: _vm.okType },\n domProps: { textContent: _vm._s(_vm.okBtnText) },\n on: { click: _vm.validate }\n })\n ]\n ],\n 2\n )\n ],\n 2\n )\n};\nvar __vue_staticRenderFns__$g = [];\n__vue_render__$g._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$g = undefined;\n /* scoped */\n var __vue_scope_id__$g = undefined;\n /* module identifier */\n var __vue_module_identifier__$g = undefined;\n /* functional template */\n var __vue_is_functional_template__$g = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$g = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$g, staticRenderFns: __vue_staticRenderFns__$g },\n __vue_inject_styles__$g,\n __vue_script__$g,\n __vue_scope_id__$g,\n __vue_is_functional_template__$g,\n __vue_module_identifier__$g,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar queue = [];\n\nvar destroy = function (instance) {\n // console.log('destroyModal')\n removeFromDom(instance.$el);\n instance.$destroy();\n spliceIfExist(queue, instance);\n};\n\n// handel cancel or ok for confirm & prompt\nvar shallResolve = function (type, msg) {\n if (type === TYPES.CONFIRM) {\n // is confirm\n return msg === 'ok'\n } else {\n // is prompt\n return isExist(msg) && isString(msg.value)\n }\n};\n\nvar init = function (type, options, cb, resolve, reject) {\n if ( resolve === void 0 ) resolve = null;\n if ( reject === void 0 ) reject = null;\n\n var i18n = this.$i18n;\n var instance = new Vue({\n extends: __vue_component__$g,\n i18n: i18n,\n propsData: assign({}, { type: type }, options, {\n cb: function cb$1 (msg) {\n destroy(instance);\n if (isFunction(cb)) {\n if (type === TYPES.CONFIRM) {\n shallResolve(type, msg) ? cb(null, msg) : cb(msg);\n } else if (type === TYPES.PROMPT) {\n shallResolve(type, msg) ? cb(null, msg.value) : cb(msg);\n } else {\n cb(msg);\n }\n } else if (resolve && reject) {\n if (type === TYPES.CONFIRM) {\n shallResolve(type, msg) ? resolve(msg) : reject(msg);\n } else if (type === TYPES.PROMPT) {\n shallResolve(type, msg) ? resolve(msg.value) : reject(msg);\n } else {\n resolve(msg);\n }\n }\n }\n })\n });\n instance.$mount();\n document.body.appendChild(instance.$el);\n instance.show = true;\n queue.push(instance);\n};\n\n// eslint-disable-next-line default-param-last\nvar initModal = function (type, options, cb) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n if (isPromiseSupported()) {\n return new Promise(function (resolve, reject) {\n init.apply(this$1, [type, options, cb, resolve, reject]);\n })\n } else {\n init.apply(this, [type, options, cb]);\n }\n};\n\nvar alert = function (options, cb) {\n return initModal.apply(this, [TYPES.ALERT, options, cb])\n};\n\nvar confirm = function (options, cb) {\n return initModal.apply(this, [TYPES.CONFIRM, options, cb])\n};\n\nvar prompt = function (options, cb) {\n return initModal.apply(this, [TYPES.PROMPT, options, cb])\n};\n\nvar MessageBox = { alert: alert, confirm: confirm, prompt: prompt };\n\nvar TYPES$1 = {\n SUCCESS: 'success',\n INFO: 'info',\n DANGER: 'danger',\n WARNING: 'warning'\n};\n\nvar PLACEMENTS$1 = {\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right',\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right'\n};\n\nvar IN_CLASS$1 = 'in';\nvar ICON = 'glyphicon';\nvar WIDTH = 300;\nvar TRANSITION_DURATION = 300;\n\nvar script$h = {\n components: { Alert: __vue_component__$a },\n props: {\n title: String,\n content: String,\n html: {\n type: Boolean,\n default: false\n },\n duration: {\n type: Number,\n default: 5000\n },\n dismissible: {\n type: Boolean,\n default: true\n },\n type: String,\n placement: String,\n icon: String,\n customClass: null,\n cb: {\n type: Function,\n required: true\n },\n queue: {\n type: Array,\n required: true\n },\n offsetY: {\n type: Number,\n default: 15\n },\n offsetX: {\n type: Number,\n default: 15\n },\n offset: {\n type: Number,\n default: 15\n }\n },\n data: function data () {\n return {\n height: 0,\n top: 0,\n horizontal: this.placement === PLACEMENTS$1.TOP_LEFT || this.placement === PLACEMENTS$1.BOTTOM_LEFT ? 'left' : 'right',\n vertical: this.placement === PLACEMENTS$1.TOP_LEFT || this.placement === PLACEMENTS$1.TOP_RIGHT ? 'top' : 'bottom'\n }\n },\n created: function created () {\n // get prev notifications total height in the queue\n this.top = this.getTotalHeightOfQueue(this.queue);\n },\n mounted: function mounted () {\n var this$1 = this;\n\n var el = this.$el;\n el.style[this.vertical] = this.top + 'px';\n this.$nextTick(function () {\n el.style[this$1.horizontal] = \"-\" + WIDTH + \"px\";\n this$1.height = el.offsetHeight;\n el.style[this$1.horizontal] = (this$1.offsetX) + \"px\";\n addClass(el, IN_CLASS$1);\n });\n },\n computed: {\n styles: function styles () {\n var obj;\n\n var queue = this.queue;\n var thisIndex = queue.indexOf(this);\n return ( obj = {\n position: 'fixed'\n }, obj[this.vertical] = ((this.getTotalHeightOfQueue(queue, thisIndex)) + \"px\"), obj.width = (WIDTH + \"px\"), obj.transition = (\"all \" + (TRANSITION_DURATION / 1000) + \"s ease-in-out\"), obj )\n },\n icons: function icons () {\n if (isString(this.icon)) {\n return this.icon\n }\n switch (this.type) {\n case TYPES$1.INFO:\n case TYPES$1.WARNING:\n return (ICON + \" \" + ICON + \"-info-sign\")\n case TYPES$1.SUCCESS:\n return (ICON + \" \" + ICON + \"-ok-sign\")\n case TYPES$1.DANGER:\n return (ICON + \" \" + ICON + \"-remove-sign\")\n default:\n return null\n }\n }\n },\n methods: {\n getTotalHeightOfQueue: function getTotalHeightOfQueue (queue, lastIndex) {\n if ( lastIndex === void 0 ) lastIndex = queue.length;\n\n var totalHeight = this.offsetY;\n for (var i = 0; i < lastIndex; i++) {\n totalHeight += queue[i].height + this.offset;\n }\n return totalHeight\n },\n onDismissed: function onDismissed () {\n removeClass(this.$el, IN_CLASS$1);\n setTimeout(this.cb, TRANSITION_DURATION);\n }\n }\n};\n\n/* script */\nvar __vue_script__$h = script$h;\n\n/* template */\nvar __vue_render__$h = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"alert\",\n {\n staticClass: \"fade\",\n class: _vm.customClass,\n style: _vm.styles,\n attrs: {\n type: _vm.type,\n duration: _vm.duration,\n dismissible: _vm.dismissible\n },\n on: { dismissed: _vm.onDismissed }\n },\n [\n _c(\"div\", { staticClass: \"media\", staticStyle: { margin: \"0\" } }, [\n _vm.icons\n ? _c(\"div\", { staticClass: \"media-left\" }, [\n _c(\"span\", {\n class: _vm.icons,\n staticStyle: { \"font-size\": \"1.5em\" }\n })\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"media-body\" }, [\n _vm.title\n ? _c(\"div\", { staticClass: \"media-heading\" }, [\n _c(\"b\", [_vm._v(_vm._s(_vm.title))])\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.html\n ? _c(\"div\", { domProps: { innerHTML: _vm._s(_vm.content) } })\n : _c(\"div\", [_vm._v(_vm._s(_vm.content))])\n ])\n ])\n ]\n )\n};\nvar __vue_staticRenderFns__$h = [];\n__vue_render__$h._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$h = undefined;\n /* scoped */\n var __vue_scope_id__$h = undefined;\n /* module identifier */\n var __vue_module_identifier__$h = undefined;\n /* functional template */\n var __vue_is_functional_template__$h = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$h = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$h, staticRenderFns: __vue_staticRenderFns__$h },\n __vue_inject_styles__$h,\n __vue_script__$h,\n __vue_scope_id__$h,\n __vue_is_functional_template__$h,\n __vue_module_identifier__$h,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar queues = {};\nqueues[PLACEMENTS$1.TOP_LEFT] = [];\nqueues[PLACEMENTS$1.TOP_RIGHT] = [];\nqueues[PLACEMENTS$1.BOTTOM_LEFT] = [];\nqueues[PLACEMENTS$1.BOTTOM_RIGHT] = [];\n\nvar destroy$1 = function (queue, instance) {\n // console.log('destroyNotification')\n removeFromDom(instance.$el);\n instance.$destroy();\n spliceIfExist(queue, instance);\n};\n\nvar init$1 = function (options, cb, resolve, reject) {\n if ( resolve === void 0 ) resolve = null;\n if ( reject === void 0 ) reject = null;\n\n var placement = options.placement;\n var queue = queues[placement];\n // check if placement is valid\n if (!isExist(queue)) {\n return\n }\n /* istanbul ignore else */\n // `error` alias of `danger`\n if (options.type === 'error') {\n options.type = 'danger';\n }\n var instance = new Vue({\n extends: __vue_component__$h,\n propsData: assign({}, { queue: queue, placement: placement }, options, {\n cb: function cb$1 (msg) {\n destroy$1(queue, instance);\n if (isFunction(cb)) {\n cb(msg);\n } else if (resolve && reject) {\n resolve(msg);\n }\n }\n })\n });\n instance.$mount();\n document.body.appendChild(instance.$el);\n queue.push(instance);\n};\n\n// eslint-disable-next-line default-param-last\nvar _notify = function (options, cb) {\n if ( options === void 0 ) options = {};\n\n // simplify usage: pass string as option.content\n if (isString(options)) {\n options = {\n content: options\n };\n }\n // set default placement as top-right\n if (!isExist(options.placement)) {\n options.placement = PLACEMENTS$1.TOP_RIGHT;\n }\n if (isPromiseSupported()) {\n return new Promise(function (resolve, reject) {\n init$1(options, cb, resolve, reject);\n })\n } else {\n init$1(options, cb);\n }\n};\n\nfunction _notify2 (type, args) {\n if (isString(args)) {\n _notify({\n content: args,\n type: type\n });\n } else {\n _notify(assign({}, args, {\n type: type\n }));\n }\n}\n\nvar notify = Object.defineProperties(_notify, {\n success: {\n configurable: false,\n writable: false,\n value: function value (args) {\n _notify2('success', args);\n }\n },\n info: {\n configurable: false,\n writable: false,\n value: function value (args) {\n _notify2('info', args);\n }\n },\n warning: {\n configurable: false,\n writable: false,\n value: function value (args) {\n _notify2('warning', args);\n }\n },\n danger: {\n configurable: false,\n writable: false,\n value: function value (args) {\n _notify2('danger', args);\n }\n },\n error: {\n configurable: false,\n writable: false,\n value: function value (args) {\n _notify2('danger', args);\n }\n },\n dismissAll: {\n configurable: false,\n writable: false,\n value: function value () {\n for (var key in queues) {\n /* istanbul ignore else */\n if (hasOwnProperty(queues, key)) {\n queues[key].forEach(function (instance) {\n instance.onDismissed();\n });\n }\n }\n }\n }\n});\n\nvar Notification = { notify: notify };\n\nvar services = /*#__PURE__*/Object.freeze({\n __proto__: null,\n MessageBox: MessageBox,\n Notification: Notification\n});\n\nvar install = function (Vue, options) {\n if ( options === void 0 ) options = {};\n\n // Setup language, en-US for default\n locale.use(options.locale);\n locale.i18n(options.i18n);\n // Register components\n Object.keys(components).forEach(function (key) {\n var _key = options.prefix ? options.prefix + key : key;\n Vue.component(_key, components[key]);\n });\n // Register directives\n Object.keys(directives).forEach(function (key) {\n var _key = options.prefix ? options.prefix + '-' + key : key;\n Vue.directive(_key, directives[key]);\n });\n // Register services\n Object.keys(services).forEach(function (key) {\n var service = services[key];\n Object.keys(service).forEach(function (serviceKey) {\n var _key = options.prefix ? options.prefix + '_' + serviceKey : serviceKey;\n Vue.prototype['$' + _key] = service[serviceKey];\n });\n });\n};\n\nexport { __vue_component__$9 as Affix, __vue_component__$a as Alert, BreadcrumbItem, Breadcrumbs, Btn, BtnGroup, BtnToolbar, __vue_component__ as Carousel, Collapse, __vue_component__$8 as DatePicker, Dropdown, MessageBox, __vue_component__$2 as Modal, __vue_component__$e as MultiSelect, __vue_component__$f as Navbar, NavbarForm, NavbarNav, NavbarText, Notification, __vue_component__$b as Pagination, Popover, ProgressBar, ProgressBarStack, __vue_component__$1 as Slide, __vue_component__$3 as Tab, __vue_component__$4 as Tabs, __vue_component__$c as TimePicker, Tooltip, __vue_component__$d as Typeahead, install, popover, scrollspy, tooltip };\n//# sourceMappingURL=uiv.esm.js.map\n","/*\n * bootstrap.js\n * Copyright (c) 2020 james@firefly-iii.org\n *\n * This file is part of Firefly III (https://github.com/firefly-iii).\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 .\n */\n\n// // imports\nimport Vue from 'vue';\nimport VueI18n from 'vue-i18n'\nimport * as uiv from 'uiv';\n\n// export jquery for others scripts to use\nwindow.$ = window.jQuery = require('jquery');\n\n// axios\nwindow.axios = require('axios');\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n\n// CSRF\nlet token = document.head.querySelector('meta[name=\"csrf-token\"]');\n\nif (token) {\n window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;\n} else {\n console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');\n}\n\n// locale\nlet localeToken = document.head.querySelector('meta[name=\"locale\"]');\n\nif (localeToken) {\n localStorage.locale = localeToken.content;\n} else {\n localStorage.locale = 'en_US';\n}\n\n// admin stuff\nrequire('jquery-ui');\nrequire('bootstrap'); // bootstrap CSS?\n\nrequire('./dist/js/adminlte');\nrequire('overlayscrollbars');\n\n\n// vue\nwindow.vuei18n = VueI18n;\nwindow.uiv = uiv;\nVue.use(vuei18n);\nVue.use(uiv);\nwindow.Vue = Vue;","/*\n * create.js\n * Copyright (c) 2020 james@firefly-iii.org\n *\n * This file is part of Firefly III (https://github.com/firefly-iii).\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 .\n */\n\nconst lodashClonedeep = require('lodash.clonedeep');\n\n// initial state\nconst state = () => ({\n transactionType: 'any',\n date: new Date,\n time: new Date,\n groupTitle: '',\n transactions: [],\n allowedOpposingTypes: {},\n accountToTransaction: {},\n sourceAllowedTypes: ['Asset account', 'Loan', 'Debt', 'Mortgage', 'Revenue account'],\n destinationAllowedTypes: ['Asset account', 'Loan', 'Debt', 'Mortgage', 'Expense account'],\n customDateFields: {\n interest_date: false,\n book_date: false,\n process_date: false,\n due_date: false,\n payment_date: false,\n invoice_date: false,\n },\n defaultErrors: {\n description: [],\n amount: [],\n source: [],\n destination: [],\n currency: [],\n foreign_currency: [],\n foreign_amount: [],\n date: [],\n custom_dates: [],\n budget: [],\n category: [],\n bill: [],\n tags: [],\n piggy_bank: [],\n internal_reference: [],\n external_url: [],\n notes: [],\n location: []\n },\n defaultTransaction: {\n // basic\n description: '',\n transaction_journal_id: 0,\n // accounts:\n source_account_id: null,\n source_account_name: null,\n source_account_type: null,\n\n source_account_currency_id: null,\n source_account_currency_code: null,\n source_account_currency_symbol: null,\n\n destination_account_id: null,\n destination_account_name: null,\n destination_account_type: null,\n\n destination_account_currency_id: null,\n destination_account_currency_code: null,\n destination_account_currency_symbol: null,\n\n source_account: {\n id: 0,\n name: \"\",\n name_with_balance: \"\",\n type: \"\",\n currency_id: 0,\n currency_name: '',\n currency_code: '',\n currency_decimal_places: 2\n },\n destination_account: {\n id: 0,\n name: \"\",\n type: \"\",\n currency_id: 0,\n currency_name: '',\n currency_code: '',\n currency_decimal_places: 2\n },\n\n // amount:\n amount: '',\n currency_id: 0,\n foreign_amount: '',\n foreign_currency_id: 0,\n\n // meta data\n category: null,\n budget_id: 0,\n bill_id: 0,\n piggy_bank_id: 0,\n tags: [],\n\n // optional date fields (6x):\n interest_date: null,\n book_date: null,\n process_date: null,\n due_date: null,\n payment_date: null,\n invoice_date: null,\n\n // optional other fields:\n internal_reference: null,\n external_url: null,\n external_id: null,\n notes: null,\n\n // transaction links:\n links: [],\n attachments: [],\n // location:\n zoom_level: null,\n longitude: null,\n latitude: null,\n\n // error handling\n errors: {},\n },\n }\n)\n\n\n// getters\nconst getters = {\n transactions: state => {\n return state.transactions;\n },\n date: state => {\n return state.date;\n },\n time: state => {\n return state.time;\n },\n groupTitle: state => {\n return state.groupTitle;\n },\n transactionType: state => {\n return state.transactionType;\n },\n accountToTransaction: state => {\n // TODO better architecture here, does not need the store.\n // possible API point!!\n return state.accountToTransaction;\n },\n defaultTransaction: state => {\n return state.defaultTransaction;\n },\n sourceAllowedTypes: state => {\n return state.sourceAllowedTypes;\n },\n destinationAllowedTypes: state => {\n return state.destinationAllowedTypes;\n },\n allowedOpposingTypes: state => {\n return state.allowedOpposingTypes;\n },\n customDateFields: state => {\n return state.customDateFields;\n }\n // // `getters` is localized to this module's getters\n // // you can use rootGetters via 4th argument of getters\n // someGetter (state, getters, rootState, rootGetters) {\n // getters.someOtherGetter // -> 'foo/someOtherGetter'\n // rootGetters.someOtherGetter // -> 'someOtherGetter'\n // rootGetters['bar/someOtherGetter'] // -> 'bar/someOtherGetter'\n // },\n\n}\n\n// actions\nconst actions = {\n\n}\n\n// mutations\nconst mutations = {\n addTransaction(state) {\n let newTransaction = lodashClonedeep(state.defaultTransaction);\n newTransaction.errors = lodashClonedeep(state.defaultErrors);\n state.transactions.push(newTransaction);\n },\n resetErrors(state, payload) {\n //console.log('resetErrors for index ' + payload.index);\n state.transactions[payload.index].errors = lodashClonedeep(state.defaultErrors);\n },\n resetTransactions(state) {\n state.transactions = [];\n },\n setDate(state, payload) {\n state.date = payload.date;\n },\n setTime(state, payload) {\n state.time = payload.time;\n },\n setGroupTitle(state, payload) {\n state.groupTitle = payload.groupTitle;\n },\n setCustomDateFields(state, payload) {\n state.customDateFields = payload;\n },\n deleteTransaction(state, payload) {\n state.transactions.splice(payload.index, 1);\n },\n setTransactionType(state, transactionType) {\n state.transactionType = transactionType;\n },\n setAllowedOpposingTypes(state, allowedOpposingTypes) {\n state.allowedOpposingTypes = allowedOpposingTypes;\n },\n setAccountToTransaction(state, payload) {\n state.accountToTransaction = payload;\n },\n updateField(state, payload) {\n state.transactions[payload.index][payload.field] = payload.value;\n },\n setTransactionError(state, payload) {\n //console.log('Will set transactions[' + payload.index + '][errors][' + payload.field + '] to ');\n //console.log(payload.errors);\n state.transactions[payload.index].errors[payload.field] = payload.errors;\n },\n setDestinationAllowedTypes(state, payload) {\n // console.log('Destination allowed types was changed!');\n state.destinationAllowedTypes = payload;\n },\n setSourceAllowedTypes(state, payload) {\n state.sourceAllowedTypes = payload;\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n}\n","/*\n * edit.js\n * Copyright (c) 2021 james@firefly-iii.org\n *\n * This file is part of Firefly III (https://github.com/firefly-iii).\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 .\n */\n\n// initial state\nconst state = () => ({});\n\n\n// getters\nconst getters = {\n};\n\n// actions\nconst actions = {\n};\n\n// mutations\nconst mutations = {\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n}\n","/*\n * index.js\n * Copyright (c) 2020 james@firefly-iii.org\n *\n * This file is part of Firefly III (https://github.com/firefly-iii).\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 .\n */\n\n// initial state\nconst state = () => (\n {\n viewRange: 'default',\n start: null,\n end: null,\n // default range:\n defaultStart: null,\n defaultEnd: null,\n }\n)\n\n\n// getters\nconst getters = {\n start: state => {\n return state.start;\n },\n end: state => {\n return state.end;\n },\n defaultStart: state => {\n return state.defaultStart;\n },\n defaultEnd: state => {\n return state.defaultEnd;\n },\n viewRange: state => {\n return state.viewRange;\n }\n}\n\n// actions\nconst actions = {\n initialiseStore(context) {\n if ('default' === context.state.viewRange) {\n axios.get('./api/v1/preferences/viewRange')\n .then(response => {\n let viewRange = response.data.data.attributes.data;\n context.commit('setViewRange', viewRange);\n // call another action:\n context.dispatch('setDatesFromViewRange');\n }\n ).catch(error => {\n // console.log(error);\n context.commit('setViewRange', '1M');\n // call another action:\n context.dispatch('setDatesFromViewRange');\n });\n }\n },\n setDatesFromViewRange(context) {\n // console.log('Must set dates from viewRange \"' + context.state.viewRange + '\"');\n // check local storage first?\n if (localStorage.viewRangeStart) {\n // console.log('view range start set from local storage.');\n context.commit('setStart', new Date(localStorage.viewRangeStart));\n }\n if (localStorage.viewRangeEnd) {\n // console.log('view range end set from local storage.');\n context.commit('setEnd', new Date(localStorage.viewRangeEnd));\n }\n // also set default:\n if(localStorage.viewRangeDefaultStart) {\n // console.log('view range default start set from local storage.');\n // console.log(localStorage.viewRangeDefaultStart);\n context.commit('setDefaultStart', new Date(localStorage.viewRangeDefaultStart));\n }\n if(localStorage.viewRangeDefaultEnd) {\n // console.log('view range default end set from local storage.');\n // console.log(localStorage.viewRangeDefaultEnd);\n context.commit('setDefaultEnd', new Date(localStorage.viewRangeDefaultEnd));\n }\n\n if (null !== context.getters.end && null !== context.getters.start) {\n return;\n }\n let start;\n let end;\n let viewRange = context.getters.viewRange;\n // console.log('Will recreate view range on ' + viewRange);\n switch (viewRange) {\n case '1D':\n // one day:\n start = new Date;\n end = new Date(start.getTime());\n start.setHours(0, 0, 0, 0);\n end.setHours(23, 59, 59, 999);\n break;\n case '1W':\n // this week:\n start = new Date;\n end = new Date(start.getTime());\n // start of week\n let diff = start.getDate() - start.getDay() + (start.getDay() === 0 ? -6 : 1);\n start.setDate(diff);\n start.setHours(0, 0, 0, 0);\n\n // end of week\n let lastday = end.getDate() - (end.getDay() - 1) + 6;\n end.setDate(lastday);\n end.setHours(23, 59, 59, 999);\n break;\n case '1M':\n // this month:\n start = new Date;\n start = new Date(start.getFullYear(), start.getMonth(), 1);\n start.setHours(0, 0, 0, 0);\n end = new Date(start.getFullYear(), start.getMonth() + 1, 0);\n end.setHours(23, 59, 59, 999);\n break;\n case '3M':\n // this quarter\n start = new Date;\n end = new Date;\n let quarter = Math.floor((start.getMonth() + 3) / 3) - 1;\n // start and end months? I'm sure this could be better:\n let startMonths = [0, 3, 6, 9];\n let endMonths = [2, 5, 8, 11];\n // set start to the correct month, day one:\n start = new Date(start.getFullYear(), startMonths[quarter], 1);\n start.setHours(0, 0, 0, 0);\n\n // set end to the correct month, day one\n end = new Date(end.getFullYear(), endMonths[quarter], 1);\n // then to the last day of the month:\n end = new Date(end.getFullYear(), end.getMonth() + 1, 0);\n end.setHours(23, 59, 59, 999);\n break;\n case '6M':\n // this half-year\n start = new Date;\n end = new Date;\n let half = start.getMonth() <= 5 ? 0 : 1;\n\n let startHalf = [0, 6];\n let endHalf = [5, 11];\n // set start to the correct month, day one:\n start = new Date(start.getFullYear(), startHalf[half], 1);\n start.setHours(0, 0, 0, 0);\n\n // set end to the correct month, day one\n end = new Date(end.getFullYear(), endHalf[half], 1);\n // then to the last day of the month:\n end = new Date(end.getFullYear(), end.getMonth() + 1, 0);\n end.setHours(23, 59, 59, 999);\n break;\n case '1Y':\n // this year\n start = new Date;\n end = new Date;\n start = new Date(start.getFullYear(), 0, 1);\n\n end = new Date(end.getFullYear(), 11, 31);\n start.setHours(0, 0, 0, 0);\n end.setHours(23, 59, 59, 999);\n break;\n }\n // console.log('Range is ' + viewRange);\n // console.log('Start is ' + start);\n // console.log('End is ' + end);\n context.commit('setStart', start);\n context.commit('setEnd', end);\n context.commit('setDefaultStart', start);\n context.commit('setDefaultEnd', end);\n }\n}\n\n// mutations\nconst mutations = {\n setStart(state, value) {\n state.start = value;\n window.localStorage.setItem('viewRangeStart', value);\n },\n setEnd(state, value) {\n state.end = value;\n window.localStorage.setItem('viewRangeEnd', value);\n },\n setDefaultStart(state, value) {\n state.defaultStart = value;\n window.localStorage.setItem('viewRangeDefaultStart', value);\n },\n setDefaultEnd(state, value) {\n state.defaultEnd = value;\n window.localStorage.setItem('viewRangeDefaultEnd', value);\n },\n setViewRange(state, range) {\n state.viewRange = range;\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n}\n","/*\n * index.js\n * Copyright (c) 2020 james@firefly-iii.org\n *\n * This file is part of Firefly III (https://github.com/firefly-iii).\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 .\n */\n\nimport Vue from 'vue'\nimport Vuex, {createLogger} from 'vuex'\nimport transactions_create from './modules/transactions/create';\nimport transactions_edit from './modules/transactions/edit';\nimport dashboard_index from './modules/dashboard/index';\n\nVue.use(Vuex)\nconst debug = process.env.NODE_ENV !== 'production'\n\nexport default new Vuex.Store(\n {\n modules: {\n transactions: {\n namespaced: true,\n modules: {\n create: transactions_create,\n edit: transactions_edit\n }\n },\n dashboard: {\n namespaced: true,\n modules: {\n index: dashboard_index\n }\n }\n },\n strict: debug,\n plugins: debug ? [createLogger()] : [],\n state: {\n currencyPreference: {},\n locale: 'en-US'\n },\n mutations: {\n setCurrencyPreference(state, payload) {\n //console.log('setCurrencyPreference', payload);\n state.currencyPreference = payload.payload;\n },\n initialiseStore(state) {\n // if locale in local storage:\n if (localStorage.locale) {\n state.locale = localStorage.locale;\n return;\n }\n // set locale from HTML:\n let localeToken = document.head.querySelector('meta[name=\"locale\"]');\n if (localeToken) {\n state.locale = localeToken.content;\n localStorage.locale = localeToken.content;\n }\n }\n },\n getters: {\n currencyCode: state => {\n return state.currencyPreference.code;\n },\n currencyPreference: state => {\n return state.currencyPreference;\n },\n currencyId: state => {\n return state.currencyPreference.id;\n },\n locale: state => {\n return state.locale;\n }\n },\n actions: {\n updateCurrencyPreference(context) {\n if (localStorage.currencyPreference) {\n //console.log('set from local storage.');\n //console.log(localStorage.currencyPreference);\n //console.log({payload: JSON.parse(localStorage.currencyPreference)});\n context.commit('setCurrencyPreference', {payload: JSON.parse(localStorage.currencyPreference)});\n return;\n }\n axios.get('./api/v1/currencies/default')\n .then(response => {\n let currencyResponse = {\n id: parseInt(response.data.data.id),\n name: response.data.data.attributes.name,\n symbol: response.data.data.attributes.symbol,\n code: response.data.data.attributes.code,\n decimal_places: parseInt(response.data.data.attributes.decimal_places),\n };\n localStorage.currencyPreference = JSON.stringify(currencyResponse);\n //console.log('getCurrencyPreference from server')\n //console.log(JSON.stringify(currencyResponse));\n context.commit('setCurrencyPreference', {payload: currencyResponse});\n }).catch(err => {\n // console.log('Got error response.');\n console.error(err);\n context.commit('setCurrencyPreference', {\n payload: {\n id: 1,\n name: 'Euro',\n symbol: '€',\n code: 'EUR',\n decimal_places: 2\n }\n });\n });\n\n }\n }\n }\n);","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/*\n * i18n.js\n * Copyright (c) 2020 james@firefly-iii.org\n *\n * This file is part of Firefly III (https://github.com/firefly-iii).\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 .\n */\n\n// Create VueI18n instance with options\nmodule.exports = new vuei18n({\n locale: document.documentElement.lang, // set locale\n fallbackLocale: 'en',\n messages: {\n 'bg': require('./locales/bg.json'),\n 'cs': require('./locales/cs.json'),\n 'de': require('./locales/de.json'),\n 'en': require('./locales/en.json'),\n 'en-us': require('./locales/en.json'),\n 'en-gb': require('./locales/en-gb.json'),\n 'es': require('./locales/es.json'),\n 'el': require('./locales/el.json'),\n 'fr': require('./locales/fr.json'),\n 'hu': require('./locales/hu.json'),\n //'id': require('./locales/id.json'),\n 'it': require('./locales/it.json'),\n 'nl': require('./locales/nl.json'),\n 'nb': require('./locales/nb.json'),\n 'pl': require('./locales/pl.json'),\n 'fi': require('./locales/fi.json'),\n 'pt-br': require('./locales/pt-br.json'),\n 'pt-pt': require('./locales/pt.json'),\n 'ro': require('./locales/ro.json'),\n 'ru': require('./locales/ru.json'),\n //'zh': require('./locales/zh.json'),\n 'zh-tw': require('./locales/zh-tw.json'),\n 'zh-cn': require('./locales/zh-cn.json'),\n 'sk': require('./locales/sk.json'),\n 'sv': require('./locales/sv.json'),\n 'vi': require('./locales/vi.json'),\n }\n});\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target, parent) {\n if (parent){\n return parent.querySelector(target);\n }\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target, parent) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target, parent);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of \n","import { render, staticRenderFns } from \"./VueTypeaheadBootstrapListItem.vue?vue&type=template&id=6230cb76&scoped=true&\"\nimport script from \"./VueTypeaheadBootstrapListItem.vue?vue&type=script&lang=js&\"\nexport * from \"./VueTypeaheadBootstrapListItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VueTypeaheadBootstrapListItem.vue?vue&type=style&index=0&id=6230cb76&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6230cb76\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{class:_vm.textClasses,attrs:{\"tabindex\":\"0\",\"href\":\"#\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }return _vm.$emit('listItemBlur')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.$emit('listItemBlur')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }$event.preventDefault();},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }$event.preventDefault();}],\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }return _vm.$parent.selectNextListItem($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }return _vm.$parent.selectPreviousListItem($event)}],\"blur\":_vm.processFocusOut}},[_c('div',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm.screenReaderText))]),_vm._v(\" \"),_c('div',{attrs:{\"aria-hidden\":\"true\"}},[_vm._t(\"suggestion\",[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.htmlText)}})],null,{ data: _vm.data, htmlText: _vm.htmlText })],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n
\n \n\n\n","import mod from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./VueTypeaheadBootstrapList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./VueTypeaheadBootstrapList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./VueTypeaheadBootstrapList.vue?vue&type=template&id=e64f5270&\"\nimport script from \"./VueTypeaheadBootstrapList.vue?vue&type=script&lang=js&\"\nexport * from \"./VueTypeaheadBootstrapList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"suggestionList\",staticClass:\"list-group shadow\"},_vm._l((_vm.matchedItems),function(item,id){return _c('vue-typeahead-bootstrap-list-item',_vm._g({key:id,attrs:{\"active\":_vm.isListItemActive(id),\"id\":(_vm.isListItemActive(id)) ? (\"selected-option-\" + _vm.vbtUniqueId) : false,\"data\":item.data,\"html-text\":_vm.highlight(item.text),\"role\":\"option\",\"aria-selected\":(_vm.isListItemActive(id)) ? 'true' : 'false',\"screen-reader-text\":item.text,\"disabled\":_vm.isDisabledItem(item),\"background-variant\":_vm.backgroundVariant,\"background-variant-resolver\":_vm.backgroundVariantResolver,\"text-variant\":_vm.textVariant},nativeOn:{\"click\":function($event){return _vm.handleHit(item, $event)}},scopedSlots:_vm._u([{key:\"suggestion\",fn:function(ref){\nvar data = ref.data;\nvar htmlText = ref.htmlText;\nreturn (_vm.$scopedSlots.suggestion)?[_vm._t(\"suggestion\",null,null,{ data: data, htmlText: htmlText })]:undefined}}],null,true)},_vm.$listeners))}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./VueTypeaheadBootstrap.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./VueTypeaheadBootstrap.vue?vue&type=script&lang=js&\"","\n 0) ? 'true' : 'false'\"\n >\n
\n
\n \n {{ prepend }} \n \n
\n
\n
\n \n {{ append }} \n \n
\n
\n
0\"\n :query=\"inputValue\"\n :data=\"formattedData\"\n :background-variant=\"backgroundVariant\"\n :background-variant-resolver=\"backgroundVariantResolver\"\n :text-variant=\"textVariant\"\n :maxMatches=\"maxMatches\"\n :minMatchingChars=\"minMatchingChars\"\n :disableSort=\"disableSort\"\n :showOnFocus=\"showOnFocus\"\n :showAllResults=\"showAllResults\"\n @hit=\"handleHit\"\n @listItemBlur=\"handleChildBlur\"\n :highlightClass='highlightClass'\n :disabledValues=\"disabledValues\"\n :vbtUniqueId=\"id\"\n role=\"listbox\"\n >\n \n \n \n \n \n \n
\n \n\n\n\n\n","import { render, staticRenderFns } from \"./VueTypeaheadBootstrap.vue?vue&type=template&id=dbe69e32&scoped=true&\"\nimport script from \"./VueTypeaheadBootstrap.vue?vue&type=script&lang=js&\"\nexport * from \"./VueTypeaheadBootstrap.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VueTypeaheadBootstrap.vue?vue&type=style&index=0&id=dbe69e32&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dbe69e32\",\n null\n \n)\n\nexport default component.exports","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/*!\n * vue-i18n v8.23.0 \n * (c) 2021 kazuya kawaguchi\n * Released under the MIT License.\n */\n/* */\n\n/**\n * constants\n */\n\nvar numberFormatKeys = [\n 'compactDisplay',\n 'currency',\n 'currencyDisplay',\n 'currencySign',\n 'localeMatcher',\n 'notation',\n 'numberingSystem',\n 'signDisplay',\n 'style',\n 'unit',\n 'unitDisplay',\n 'useGrouping',\n 'minimumIntegerDigits',\n 'minimumFractionDigits',\n 'maximumFractionDigits',\n 'minimumSignificantDigits',\n 'maximumSignificantDigits'\n];\n\n/**\n * utilities\n */\n\nfunction warn (msg, err) {\n if (typeof console !== 'undefined') {\n console.warn('[vue-i18n] ' + msg);\n /* istanbul ignore if */\n if (err) {\n console.warn(err.stack);\n }\n }\n}\n\nfunction error (msg, err) {\n if (typeof console !== 'undefined') {\n console.error('[vue-i18n] ' + msg);\n /* istanbul ignore if */\n if (err) {\n console.error(err.stack);\n }\n }\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isBoolean (val) {\n return typeof val === 'boolean'\n}\n\nfunction isString (val) {\n return typeof val === 'string'\n}\n\nvar toString = Object.prototype.toString;\nvar OBJECT_STRING = '[object Object]';\nfunction isPlainObject (obj) {\n return toString.call(obj) === OBJECT_STRING\n}\n\nfunction isNull (val) {\n return val === null || val === undefined\n}\n\nfunction isFunction (val) {\n return typeof val === 'function'\n}\n\nfunction parseArgs () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var locale = null;\n var params = null;\n if (args.length === 1) {\n if (isObject(args[0]) || isArray(args[0])) {\n params = args[0];\n } else if (typeof args[0] === 'string') {\n locale = args[0];\n }\n } else if (args.length === 2) {\n if (typeof args[0] === 'string') {\n locale = args[0];\n }\n /* istanbul ignore if */\n if (isObject(args[1]) || isArray(args[1])) {\n params = args[1];\n }\n }\n\n return { locale: locale, params: params }\n}\n\nfunction looseClone (obj) {\n return JSON.parse(JSON.stringify(obj))\n}\n\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\nfunction includes (arr, item) {\n return !!~arr.indexOf(item)\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\nfunction merge (target) {\n var arguments$1 = arguments;\n\n var output = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments$1[i];\n if (source !== undefined && source !== null) {\n var key = (void 0);\n for (key in source) {\n if (hasOwn(source, key)) {\n if (isObject(source[key])) {\n output[key] = merge(output[key], source[key]);\n } else {\n output[key] = source[key];\n }\n }\n }\n }\n }\n return output\n}\n\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = isArray(a);\n var isArrayB = isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Sanitizes html special characters from input strings. For mitigating risk of XSS attacks.\n * @param rawText The raw input from the user that should be escaped.\n */\nfunction escapeHtml(rawText) {\n return rawText\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n}\n\n/**\n * Escapes html tags and special symbols from all provided params which were returned from parseArgs().params.\n * This method performs an in-place operation on the params object.\n *\n * @param {any} params Parameters as provided from `parseArgs().params`.\n * May be either an array of strings or a string->any map.\n *\n * @returns The manipulated `params` object.\n */\nfunction escapeParams(params) {\n if(params != null) {\n Object.keys(params).forEach(function (key) {\n if(typeof(params[key]) == 'string') {\n params[key] = escapeHtml(params[key]);\n }\n });\n }\n return params\n}\n\n/* */\n\nfunction extend (Vue) {\n if (!Vue.prototype.hasOwnProperty('$i18n')) {\n // $FlowFixMe\n Object.defineProperty(Vue.prototype, '$i18n', {\n get: function get () { return this._i18n }\n });\n }\n\n Vue.prototype.$t = function (key) {\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n var i18n = this.$i18n;\n return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))\n };\n\n Vue.prototype.$tc = function (key, choice) {\n var values = [], len = arguments.length - 2;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n\n var i18n = this.$i18n;\n return i18n._tc.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this, choice ].concat( values ))\n };\n\n Vue.prototype.$te = function (key, locale) {\n var i18n = this.$i18n;\n return i18n._te(key, i18n.locale, i18n._getMessages(), locale)\n };\n\n Vue.prototype.$d = function (value) {\n var ref;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n return (ref = this.$i18n).d.apply(ref, [ value ].concat( args ))\n };\n\n Vue.prototype.$n = function (value) {\n var ref;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n return (ref = this.$i18n).n.apply(ref, [ value ].concat( args ))\n };\n}\n\n/* */\n\nvar mixin = {\n beforeCreate: function beforeCreate () {\n var options = this.$options;\n options.i18n = options.i18n || (options.__i18n ? {} : null);\n\n if (options.i18n) {\n if (options.i18n instanceof VueI18n) {\n // init locale messages via custom blocks\n if (options.__i18n) {\n try {\n var localeMessages = options.i18n && options.i18n.messages ? options.i18n.messages : {};\n options.__i18n.forEach(function (resource) {\n localeMessages = merge(localeMessages, JSON.parse(resource));\n });\n Object.keys(localeMessages).forEach(function (locale) {\n options.i18n.mergeLocaleMessage(locale, localeMessages[locale]);\n });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n error(\"Cannot parse locale messages via custom blocks.\", e);\n }\n }\n }\n this._i18n = options.i18n;\n this._i18nWatcher = this._i18n.watchI18nData();\n } else if (isPlainObject(options.i18n)) {\n var rootI18n = this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n\n ? this.$root.$i18n\n : null;\n // component local i18n\n if (rootI18n) {\n options.i18n.root = this.$root;\n options.i18n.formatter = rootI18n.formatter;\n options.i18n.fallbackLocale = rootI18n.fallbackLocale;\n options.i18n.formatFallbackMessages = rootI18n.formatFallbackMessages;\n options.i18n.silentTranslationWarn = rootI18n.silentTranslationWarn;\n options.i18n.silentFallbackWarn = rootI18n.silentFallbackWarn;\n options.i18n.pluralizationRules = rootI18n.pluralizationRules;\n options.i18n.preserveDirectiveContent = rootI18n.preserveDirectiveContent;\n }\n\n // init locale messages via custom blocks\n if (options.__i18n) {\n try {\n var localeMessages$1 = options.i18n && options.i18n.messages ? options.i18n.messages : {};\n options.__i18n.forEach(function (resource) {\n localeMessages$1 = merge(localeMessages$1, JSON.parse(resource));\n });\n options.i18n.messages = localeMessages$1;\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot parse locale messages via custom blocks.\", e);\n }\n }\n }\n\n var ref = options.i18n;\n var sharedMessages = ref.sharedMessages;\n if (sharedMessages && isPlainObject(sharedMessages)) {\n options.i18n.messages = merge(options.i18n.messages, sharedMessages);\n }\n\n this._i18n = new VueI18n(options.i18n);\n this._i18nWatcher = this._i18n.watchI18nData();\n\n if (options.i18n.sync === undefined || !!options.i18n.sync) {\n this._localeWatcher = this.$i18n.watchLocale();\n }\n\n if (rootI18n) {\n rootI18n.onComponentInstanceCreated(this._i18n);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot be interpreted 'i18n' option.\");\n }\n }\n } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n // root i18n\n this._i18n = this.$root.$i18n;\n } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n // parent i18n\n this._i18n = options.parent.$i18n;\n }\n },\n\n beforeMount: function beforeMount () {\n var options = this.$options;\n options.i18n = options.i18n || (options.__i18n ? {} : null);\n\n if (options.i18n) {\n if (options.i18n instanceof VueI18n) {\n // init locale messages via custom blocks\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else if (isPlainObject(options.i18n)) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot be interpreted 'i18n' option.\");\n }\n }\n } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n }\n },\n\n beforeDestroy: function beforeDestroy () {\n if (!this._i18n) { return }\n\n var self = this;\n this.$nextTick(function () {\n if (self._subscribing) {\n self._i18n.unsubscribeDataChanging(self);\n delete self._subscribing;\n }\n\n if (self._i18nWatcher) {\n self._i18nWatcher();\n self._i18n.destroyVM();\n delete self._i18nWatcher;\n }\n\n if (self._localeWatcher) {\n self._localeWatcher();\n delete self._localeWatcher;\n }\n });\n }\n};\n\n/* */\n\nvar interpolationComponent = {\n name: 'i18n',\n functional: true,\n props: {\n tag: {\n type: [String, Boolean, Object],\n default: 'span'\n },\n path: {\n type: String,\n required: true\n },\n locale: {\n type: String\n },\n places: {\n type: [Array, Object]\n }\n },\n render: function render (h, ref) {\n var data = ref.data;\n var parent = ref.parent;\n var props = ref.props;\n var slots = ref.slots;\n\n var $i18n = parent.$i18n;\n if (!$i18n) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot find VueI18n instance!');\n }\n return\n }\n\n var path = props.path;\n var locale = props.locale;\n var places = props.places;\n var params = slots();\n var children = $i18n.i(\n path,\n locale,\n onlyHasDefaultPlace(params) || places\n ? useLegacyPlaces(params.default, places)\n : params\n );\n\n var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n return tag ? h(tag, data, children) : children\n }\n};\n\nfunction onlyHasDefaultPlace (params) {\n var prop;\n for (prop in params) {\n if (prop !== 'default') { return false }\n }\n return Boolean(prop)\n}\n\nfunction useLegacyPlaces (children, places) {\n var params = places ? createParamsFromPlaces(places) : {};\n\n if (!children) { return params }\n\n // Filter empty text nodes\n children = children.filter(function (child) {\n return child.tag || child.text.trim() !== ''\n });\n\n var everyPlace = children.every(vnodeHasPlaceAttribute);\n if (process.env.NODE_ENV !== 'production' && everyPlace) {\n warn('`place` attribute is deprecated in next major version. Please switch to Vue slots.');\n }\n\n return children.reduce(\n everyPlace ? assignChildPlace : assignChildIndex,\n params\n )\n}\n\nfunction createParamsFromPlaces (places) {\n if (process.env.NODE_ENV !== 'production') {\n warn('`places` prop is deprecated in next major version. Please switch to Vue slots.');\n }\n\n return Array.isArray(places)\n ? places.reduce(assignChildIndex, {})\n : Object.assign({}, places)\n}\n\nfunction assignChildPlace (params, child) {\n if (child.data && child.data.attrs && child.data.attrs.place) {\n params[child.data.attrs.place] = child;\n }\n return params\n}\n\nfunction assignChildIndex (params, child, index) {\n params[index] = child;\n return params\n}\n\nfunction vnodeHasPlaceAttribute (vnode) {\n return Boolean(vnode.data && vnode.data.attrs && vnode.data.attrs.place)\n}\n\n/* */\n\nvar numberComponent = {\n name: 'i18n-n',\n functional: true,\n props: {\n tag: {\n type: [String, Boolean, Object],\n default: 'span'\n },\n value: {\n type: Number,\n required: true\n },\n format: {\n type: [String, Object]\n },\n locale: {\n type: String\n }\n },\n render: function render (h, ref) {\n var props = ref.props;\n var parent = ref.parent;\n var data = ref.data;\n\n var i18n = parent.$i18n;\n\n if (!i18n) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot find VueI18n instance!');\n }\n return null\n }\n\n var key = null;\n var options = null;\n\n if (isString(props.format)) {\n key = props.format;\n } else if (isObject(props.format)) {\n if (props.format.key) {\n key = props.format.key;\n }\n\n // Filter out number format options only\n options = Object.keys(props.format).reduce(function (acc, prop) {\n var obj;\n\n if (includes(numberFormatKeys, prop)) {\n return Object.assign({}, acc, ( obj = {}, obj[prop] = props.format[prop], obj ))\n }\n return acc\n }, null);\n }\n\n var locale = props.locale || i18n.locale;\n var parts = i18n._ntp(props.value, locale, key, options);\n\n var values = parts.map(function (part, index) {\n var obj;\n\n var slot = data.scopedSlots && data.scopedSlots[part.type];\n return slot ? slot(( obj = {}, obj[part.type] = part.value, obj.index = index, obj.parts = parts, obj )) : part.value\n });\n\n var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n return tag\n ? h(tag, {\n attrs: data.attrs,\n 'class': data['class'],\n staticClass: data.staticClass\n }, values)\n : values\n }\n};\n\n/* */\n\nfunction bind (el, binding, vnode) {\n if (!assert(el, vnode)) { return }\n\n t(el, binding, vnode);\n}\n\nfunction update (el, binding, vnode, oldVNode) {\n if (!assert(el, vnode)) { return }\n\n var i18n = vnode.context.$i18n;\n if (localeEqual(el, vnode) &&\n (looseEqual(binding.value, binding.oldValue) &&\n looseEqual(el._localeMessage, i18n.getLocaleMessage(i18n.locale)))) { return }\n\n t(el, binding, vnode);\n}\n\nfunction unbind (el, binding, vnode, oldVNode) {\n var vm = vnode.context;\n if (!vm) {\n warn('Vue instance does not exists in VNode context');\n return\n }\n\n var i18n = vnode.context.$i18n || {};\n if (!binding.modifiers.preserve && !i18n.preserveDirectiveContent) {\n el.textContent = '';\n }\n el._vt = undefined;\n delete el['_vt'];\n el._locale = undefined;\n delete el['_locale'];\n el._localeMessage = undefined;\n delete el['_localeMessage'];\n}\n\nfunction assert (el, vnode) {\n var vm = vnode.context;\n if (!vm) {\n warn('Vue instance does not exists in VNode context');\n return false\n }\n\n if (!vm.$i18n) {\n warn('VueI18n instance does not exists in Vue instance');\n return false\n }\n\n return true\n}\n\nfunction localeEqual (el, vnode) {\n var vm = vnode.context;\n return el._locale === vm.$i18n.locale\n}\n\nfunction t (el, binding, vnode) {\n var ref$1, ref$2;\n\n var value = binding.value;\n\n var ref = parseValue(value);\n var path = ref.path;\n var locale = ref.locale;\n var args = ref.args;\n var choice = ref.choice;\n if (!path && !locale && !args) {\n warn('value type not supported');\n return\n }\n\n if (!path) {\n warn('`path` is required in v-t directive');\n return\n }\n\n var vm = vnode.context;\n if (choice != null) {\n el._vt = el.textContent = (ref$1 = vm.$i18n).tc.apply(ref$1, [ path, choice ].concat( makeParams(locale, args) ));\n } else {\n el._vt = el.textContent = (ref$2 = vm.$i18n).t.apply(ref$2, [ path ].concat( makeParams(locale, args) ));\n }\n el._locale = vm.$i18n.locale;\n el._localeMessage = vm.$i18n.getLocaleMessage(vm.$i18n.locale);\n}\n\nfunction parseValue (value) {\n var path;\n var locale;\n var args;\n var choice;\n\n if (isString(value)) {\n path = value;\n } else if (isPlainObject(value)) {\n path = value.path;\n locale = value.locale;\n args = value.args;\n choice = value.choice;\n }\n\n return { path: path, locale: locale, args: args, choice: choice }\n}\n\nfunction makeParams (locale, args) {\n var params = [];\n\n locale && params.push(locale);\n if (args && (Array.isArray(args) || isPlainObject(args))) {\n params.push(args);\n }\n\n return params\n}\n\nvar Vue;\n\nfunction install (_Vue) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && install.installed && _Vue === Vue) {\n warn('already installed.');\n return\n }\n install.installed = true;\n\n Vue = _Vue;\n\n var version = (Vue.version && Number(Vue.version.split('.')[0])) || -1;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && version < 2) {\n warn((\"vue-i18n (\" + (install.version) + \") need to use Vue 2.0 or later (Vue: \" + (Vue.version) + \").\"));\n return\n }\n\n extend(Vue);\n Vue.mixin(mixin);\n Vue.directive('t', { bind: bind, update: update, unbind: unbind });\n Vue.component(interpolationComponent.name, interpolationComponent);\n Vue.component(numberComponent.name, numberComponent);\n\n // use simple mergeStrategies to prevent i18n instance lose '__proto__'\n var strats = Vue.config.optionMergeStrategies;\n strats.i18n = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n };\n}\n\n/* */\n\nvar BaseFormatter = function BaseFormatter () {\n this._caches = Object.create(null);\n};\n\nBaseFormatter.prototype.interpolate = function interpolate (message, values) {\n if (!values) {\n return [message]\n }\n var tokens = this._caches[message];\n if (!tokens) {\n tokens = parse(message);\n this._caches[message] = tokens;\n }\n return compile(tokens, values)\n};\n\n\n\nvar RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\nvar RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\n\nfunction parse (format) {\n var tokens = [];\n var position = 0;\n\n var text = '';\n while (position < format.length) {\n var char = format[position++];\n if (char === '{') {\n if (text) {\n tokens.push({ type: 'text', value: text });\n }\n\n text = '';\n var sub = '';\n char = format[position++];\n while (char !== undefined && char !== '}') {\n sub += char;\n char = format[position++];\n }\n var isClosed = char === '}';\n\n var type = RE_TOKEN_LIST_VALUE.test(sub)\n ? 'list'\n : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\n ? 'named'\n : 'unknown';\n tokens.push({ value: sub, type: type });\n } else if (char === '%') {\n // when found rails i18n syntax, skip text capture\n if (format[(position)] !== '{') {\n text += char;\n }\n } else {\n text += char;\n }\n }\n\n text && tokens.push({ type: 'text', value: text });\n\n return tokens\n}\n\nfunction compile (tokens, values) {\n var compiled = [];\n var index = 0;\n\n var mode = Array.isArray(values)\n ? 'list'\n : isObject(values)\n ? 'named'\n : 'unknown';\n if (mode === 'unknown') { return compiled }\n\n while (index < tokens.length) {\n var token = tokens[index];\n switch (token.type) {\n case 'text':\n compiled.push(token.value);\n break\n case 'list':\n compiled.push(values[parseInt(token.value, 10)]);\n break\n case 'named':\n if (mode === 'named') {\n compiled.push((values)[token.value]);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Type of token '\" + (token.type) + \"' and format of value '\" + mode + \"' don't match!\"));\n }\n }\n break\n case 'unknown':\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Detect 'unknown' type of token!\");\n }\n break\n }\n index++;\n }\n\n return compiled\n}\n\n/* */\n\n/**\n * Path parser\n * - Inspired:\n * Vue.js Path parser\n */\n\n// actions\nvar APPEND = 0;\nvar PUSH = 1;\nvar INC_SUB_PATH_DEPTH = 2;\nvar PUSH_SUB_PATH = 3;\n\n// states\nvar BEFORE_PATH = 0;\nvar IN_PATH = 1;\nvar BEFORE_IDENT = 2;\nvar IN_IDENT = 3;\nvar IN_SUB_PATH = 4;\nvar IN_SINGLE_QUOTE = 5;\nvar IN_DOUBLE_QUOTE = 6;\nvar AFTER_PATH = 7;\nvar ERROR = 8;\n\nvar pathStateMachine = [];\n\npathStateMachine[BEFORE_PATH] = {\n 'ws': [BEFORE_PATH],\n 'ident': [IN_IDENT, APPEND],\n '[': [IN_SUB_PATH],\n 'eof': [AFTER_PATH]\n};\n\npathStateMachine[IN_PATH] = {\n 'ws': [IN_PATH],\n '.': [BEFORE_IDENT],\n '[': [IN_SUB_PATH],\n 'eof': [AFTER_PATH]\n};\n\npathStateMachine[BEFORE_IDENT] = {\n 'ws': [BEFORE_IDENT],\n 'ident': [IN_IDENT, APPEND],\n '0': [IN_IDENT, APPEND],\n 'number': [IN_IDENT, APPEND]\n};\n\npathStateMachine[IN_IDENT] = {\n 'ident': [IN_IDENT, APPEND],\n '0': [IN_IDENT, APPEND],\n 'number': [IN_IDENT, APPEND],\n 'ws': [IN_PATH, PUSH],\n '.': [BEFORE_IDENT, PUSH],\n '[': [IN_SUB_PATH, PUSH],\n 'eof': [AFTER_PATH, PUSH]\n};\n\npathStateMachine[IN_SUB_PATH] = {\n \"'\": [IN_SINGLE_QUOTE, APPEND],\n '\"': [IN_DOUBLE_QUOTE, APPEND],\n '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],\n ']': [IN_PATH, PUSH_SUB_PATH],\n 'eof': ERROR,\n 'else': [IN_SUB_PATH, APPEND]\n};\n\npathStateMachine[IN_SINGLE_QUOTE] = {\n \"'\": [IN_SUB_PATH, APPEND],\n 'eof': ERROR,\n 'else': [IN_SINGLE_QUOTE, APPEND]\n};\n\npathStateMachine[IN_DOUBLE_QUOTE] = {\n '\"': [IN_SUB_PATH, APPEND],\n 'eof': ERROR,\n 'else': [IN_DOUBLE_QUOTE, APPEND]\n};\n\n/**\n * Check if an expression is a literal value.\n */\n\nvar literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral (exp) {\n return literalValueRE.test(exp)\n}\n\n/**\n * Strip quotes from a string\n */\n\nfunction stripQuotes (str) {\n var a = str.charCodeAt(0);\n var b = str.charCodeAt(str.length - 1);\n return a === b && (a === 0x22 || a === 0x27)\n ? str.slice(1, -1)\n : str\n}\n\n/**\n * Determine the type of a character in a keypath.\n */\n\nfunction getPathCharType (ch) {\n if (ch === undefined || ch === null) { return 'eof' }\n\n var code = ch.charCodeAt(0);\n\n switch (code) {\n case 0x5B: // [\n case 0x5D: // ]\n case 0x2E: // .\n case 0x22: // \"\n case 0x27: // '\n return ch\n\n case 0x5F: // _\n case 0x24: // $\n case 0x2D: // -\n return 'ident'\n\n case 0x09: // Tab\n case 0x0A: // Newline\n case 0x0D: // Return\n case 0xA0: // No-break space\n case 0xFEFF: // Byte Order Mark\n case 0x2028: // Line Separator\n case 0x2029: // Paragraph Separator\n return 'ws'\n }\n\n return 'ident'\n}\n\n/**\n * Format a subPath, return its plain form if it is\n * a literal string or number. Otherwise prepend the\n * dynamic indicator (*).\n */\n\nfunction formatSubPath (path) {\n var trimmed = path.trim();\n // invalid leading 0\n if (path.charAt(0) === '0' && isNaN(path)) { return false }\n\n return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed\n}\n\n/**\n * Parse a string path into an array of segments\n */\n\nfunction parse$1 (path) {\n var keys = [];\n var index = -1;\n var mode = BEFORE_PATH;\n var subPathDepth = 0;\n var c;\n var key;\n var newChar;\n var type;\n var transition;\n var action;\n var typeMap;\n var actions = [];\n\n actions[PUSH] = function () {\n if (key !== undefined) {\n keys.push(key);\n key = undefined;\n }\n };\n\n actions[APPEND] = function () {\n if (key === undefined) {\n key = newChar;\n } else {\n key += newChar;\n }\n };\n\n actions[INC_SUB_PATH_DEPTH] = function () {\n actions[APPEND]();\n subPathDepth++;\n };\n\n actions[PUSH_SUB_PATH] = function () {\n if (subPathDepth > 0) {\n subPathDepth--;\n mode = IN_SUB_PATH;\n actions[APPEND]();\n } else {\n subPathDepth = 0;\n if (key === undefined) { return false }\n key = formatSubPath(key);\n if (key === false) {\n return false\n } else {\n actions[PUSH]();\n }\n }\n };\n\n function maybeUnescapeQuote () {\n var nextChar = path[index + 1];\n if ((mode === IN_SINGLE_QUOTE && nextChar === \"'\") ||\n (mode === IN_DOUBLE_QUOTE && nextChar === '\"')) {\n index++;\n newChar = '\\\\' + nextChar;\n actions[APPEND]();\n return true\n }\n }\n\n while (mode !== null) {\n index++;\n c = path[index];\n\n if (c === '\\\\' && maybeUnescapeQuote()) {\n continue\n }\n\n type = getPathCharType(c);\n typeMap = pathStateMachine[mode];\n transition = typeMap[type] || typeMap['else'] || ERROR;\n\n if (transition === ERROR) {\n return // parse error\n }\n\n mode = transition[0];\n action = actions[transition[1]];\n if (action) {\n newChar = transition[2];\n newChar = newChar === undefined\n ? c\n : newChar;\n if (action() === false) {\n return\n }\n }\n\n if (mode === AFTER_PATH) {\n return keys\n }\n }\n}\n\n\n\n\n\nvar I18nPath = function I18nPath () {\n this._cache = Object.create(null);\n};\n\n/**\n * External parse that check for a cache hit first\n */\nI18nPath.prototype.parsePath = function parsePath (path) {\n var hit = this._cache[path];\n if (!hit) {\n hit = parse$1(path);\n if (hit) {\n this._cache[path] = hit;\n }\n }\n return hit || []\n};\n\n/**\n * Get path value from path string\n */\nI18nPath.prototype.getPathValue = function getPathValue (obj, path) {\n if (!isObject(obj)) { return null }\n\n var paths = this.parsePath(path);\n if (paths.length === 0) {\n return null\n } else {\n var length = paths.length;\n var last = obj;\n var i = 0;\n while (i < length) {\n var value = last[paths[i]];\n if (value === undefined) {\n return null\n }\n last = value;\n i++;\n }\n\n return last\n }\n};\n\n/* */\n\n\n\nvar htmlTagMatcher = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nvar linkKeyMatcher = /(?:@(?:\\.[a-z]+)?:(?:[\\w\\-_|.]+|\\([\\w\\-_|.]+\\)))/g;\nvar linkKeyPrefixMatcher = /^@(?:\\.([a-z]+))?:/;\nvar bracketsMatcher = /[()]/g;\nvar defaultModifiers = {\n 'upper': function (str) { return str.toLocaleUpperCase(); },\n 'lower': function (str) { return str.toLocaleLowerCase(); },\n 'capitalize': function (str) { return (\"\" + (str.charAt(0).toLocaleUpperCase()) + (str.substr(1))); }\n};\n\nvar defaultFormatter = new BaseFormatter();\n\nvar VueI18n = function VueI18n (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #290\n /* istanbul ignore if */\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n var locale = options.locale || 'en-US';\n var fallbackLocale = options.fallbackLocale === false\n ? false\n : options.fallbackLocale || 'en-US';\n var messages = options.messages || {};\n var dateTimeFormats = options.dateTimeFormats || {};\n var numberFormats = options.numberFormats || {};\n\n this._vm = null;\n this._formatter = options.formatter || defaultFormatter;\n this._modifiers = options.modifiers || {};\n this._missing = options.missing || null;\n this._root = options.root || null;\n this._sync = options.sync === undefined ? true : !!options.sync;\n this._fallbackRoot = options.fallbackRoot === undefined\n ? true\n : !!options.fallbackRoot;\n this._formatFallbackMessages = options.formatFallbackMessages === undefined\n ? false\n : !!options.formatFallbackMessages;\n this._silentTranslationWarn = options.silentTranslationWarn === undefined\n ? false\n : options.silentTranslationWarn;\n this._silentFallbackWarn = options.silentFallbackWarn === undefined\n ? false\n : !!options.silentFallbackWarn;\n this._dateTimeFormatters = {};\n this._numberFormatters = {};\n this._path = new I18nPath();\n this._dataListeners = [];\n this._componentInstanceCreatedListener = options.componentInstanceCreatedListener || null;\n this._preserveDirectiveContent = options.preserveDirectiveContent === undefined\n ? false\n : !!options.preserveDirectiveContent;\n this.pluralizationRules = options.pluralizationRules || {};\n this._warnHtmlInMessage = options.warnHtmlInMessage || 'off';\n this._postTranslation = options.postTranslation || null;\n this._escapeParameterHtml = options.escapeParameterHtml || false;\n\n /**\n * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`\n * @param choicesLength {number} an overall amount of available choices\n * @returns a final choice index\n */\n this.getChoiceIndex = function (choice, choicesLength) {\n var thisPrototype = Object.getPrototypeOf(this$1);\n if (thisPrototype && thisPrototype.getChoiceIndex) {\n var prototypeGetChoiceIndex = (thisPrototype.getChoiceIndex);\n return (prototypeGetChoiceIndex).call(this$1, choice, choicesLength)\n }\n\n // Default (old) getChoiceIndex implementation - english-compatible\n var defaultImpl = function (_choice, _choicesLength) {\n _choice = Math.abs(_choice);\n\n if (_choicesLength === 2) {\n return _choice\n ? _choice > 1\n ? 1\n : 0\n : 1\n }\n\n return _choice ? Math.min(_choice, 2) : 0\n };\n\n if (this$1.locale in this$1.pluralizationRules) {\n return this$1.pluralizationRules[this$1.locale].apply(this$1, [choice, choicesLength])\n } else {\n return defaultImpl(choice, choicesLength)\n }\n };\n\n\n this._exist = function (message, key) {\n if (!message || !key) { return false }\n if (!isNull(this$1._path.getPathValue(message, key))) { return true }\n // fallback for flat key\n if (message[key]) { return true }\n return false\n };\n\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n Object.keys(messages).forEach(function (locale) {\n this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n });\n }\n\n this._initVM({\n locale: locale,\n fallbackLocale: fallbackLocale,\n messages: messages,\n dateTimeFormats: dateTimeFormats,\n numberFormats: numberFormats\n });\n};\n\nvar prototypeAccessors = { vm: { configurable: true },messages: { configurable: true },dateTimeFormats: { configurable: true },numberFormats: { configurable: true },availableLocales: { configurable: true },locale: { configurable: true },fallbackLocale: { configurable: true },formatFallbackMessages: { configurable: true },missing: { configurable: true },formatter: { configurable: true },silentTranslationWarn: { configurable: true },silentFallbackWarn: { configurable: true },preserveDirectiveContent: { configurable: true },warnHtmlInMessage: { configurable: true },postTranslation: { configurable: true } };\n\nVueI18n.prototype._checkLocaleMessage = function _checkLocaleMessage (locale, level, message) {\n var paths = [];\n\n var fn = function (level, locale, message, paths) {\n if (isPlainObject(message)) {\n Object.keys(message).forEach(function (key) {\n var val = message[key];\n if (isPlainObject(val)) {\n paths.push(key);\n paths.push('.');\n fn(level, locale, val, paths);\n paths.pop();\n paths.pop();\n } else {\n paths.push(key);\n fn(level, locale, val, paths);\n paths.pop();\n }\n });\n } else if (isArray(message)) {\n message.forEach(function (item, index) {\n if (isPlainObject(item)) {\n paths.push((\"[\" + index + \"]\"));\n paths.push('.');\n fn(level, locale, item, paths);\n paths.pop();\n paths.pop();\n } else {\n paths.push((\"[\" + index + \"]\"));\n fn(level, locale, item, paths);\n paths.pop();\n }\n });\n } else if (isString(message)) {\n var ret = htmlTagMatcher.test(message);\n if (ret) {\n var msg = \"Detected HTML in message '\" + message + \"' of keypath '\" + (paths.join('')) + \"' at '\" + locale + \"'. Consider component interpolation with '' to avoid XSS. See https://bit.ly/2ZqJzkp\";\n if (level === 'warn') {\n warn(msg);\n } else if (level === 'error') {\n error(msg);\n }\n }\n }\n };\n\n fn(level, locale, message, paths);\n};\n\nVueI18n.prototype._initVM = function _initVM (data) {\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n this._vm = new Vue({ data: data });\n Vue.config.silent = silent;\n};\n\nVueI18n.prototype.destroyVM = function destroyVM () {\n this._vm.$destroy();\n};\n\nVueI18n.prototype.subscribeDataChanging = function subscribeDataChanging (vm) {\n this._dataListeners.push(vm);\n};\n\nVueI18n.prototype.unsubscribeDataChanging = function unsubscribeDataChanging (vm) {\n remove(this._dataListeners, vm);\n};\n\nVueI18n.prototype.watchI18nData = function watchI18nData () {\n var self = this;\n return this._vm.$watch('$data', function () {\n var i = self._dataListeners.length;\n while (i--) {\n Vue.nextTick(function () {\n self._dataListeners[i] && self._dataListeners[i].$forceUpdate();\n });\n }\n }, { deep: true })\n};\n\nVueI18n.prototype.watchLocale = function watchLocale () {\n /* istanbul ignore if */\n if (!this._sync || !this._root) { return null }\n var target = this._vm;\n return this._root.$i18n.vm.$watch('locale', function (val) {\n target.$set(target, 'locale', val);\n target.$forceUpdate();\n }, { immediate: true })\n};\n\nVueI18n.prototype.onComponentInstanceCreated = function onComponentInstanceCreated (newI18n) {\n if (this._componentInstanceCreatedListener) {\n this._componentInstanceCreatedListener(newI18n, this);\n }\n};\n\nprototypeAccessors.vm.get = function () { return this._vm };\n\nprototypeAccessors.messages.get = function () { return looseClone(this._getMessages()) };\nprototypeAccessors.dateTimeFormats.get = function () { return looseClone(this._getDateTimeFormats()) };\nprototypeAccessors.numberFormats.get = function () { return looseClone(this._getNumberFormats()) };\nprototypeAccessors.availableLocales.get = function () { return Object.keys(this.messages).sort() };\n\nprototypeAccessors.locale.get = function () { return this._vm.locale };\nprototypeAccessors.locale.set = function (locale) {\n this._vm.$set(this._vm, 'locale', locale);\n};\n\nprototypeAccessors.fallbackLocale.get = function () { return this._vm.fallbackLocale };\nprototypeAccessors.fallbackLocale.set = function (locale) {\n this._localeChainCache = {};\n this._vm.$set(this._vm, 'fallbackLocale', locale);\n};\n\nprototypeAccessors.formatFallbackMessages.get = function () { return this._formatFallbackMessages };\nprototypeAccessors.formatFallbackMessages.set = function (fallback) { this._formatFallbackMessages = fallback; };\n\nprototypeAccessors.missing.get = function () { return this._missing };\nprototypeAccessors.missing.set = function (handler) { this._missing = handler; };\n\nprototypeAccessors.formatter.get = function () { return this._formatter };\nprototypeAccessors.formatter.set = function (formatter) { this._formatter = formatter; };\n\nprototypeAccessors.silentTranslationWarn.get = function () { return this._silentTranslationWarn };\nprototypeAccessors.silentTranslationWarn.set = function (silent) { this._silentTranslationWarn = silent; };\n\nprototypeAccessors.silentFallbackWarn.get = function () { return this._silentFallbackWarn };\nprototypeAccessors.silentFallbackWarn.set = function (silent) { this._silentFallbackWarn = silent; };\n\nprototypeAccessors.preserveDirectiveContent.get = function () { return this._preserveDirectiveContent };\nprototypeAccessors.preserveDirectiveContent.set = function (preserve) { this._preserveDirectiveContent = preserve; };\n\nprototypeAccessors.warnHtmlInMessage.get = function () { return this._warnHtmlInMessage };\nprototypeAccessors.warnHtmlInMessage.set = function (level) {\n var this$1 = this;\n\n var orgLevel = this._warnHtmlInMessage;\n this._warnHtmlInMessage = level;\n if (orgLevel !== level && (level === 'warn' || level === 'error')) {\n var messages = this._getMessages();\n Object.keys(messages).forEach(function (locale) {\n this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n });\n }\n};\n\nprototypeAccessors.postTranslation.get = function () { return this._postTranslation };\nprototypeAccessors.postTranslation.set = function (handler) { this._postTranslation = handler; };\n\nVueI18n.prototype._getMessages = function _getMessages () { return this._vm.messages };\nVueI18n.prototype._getDateTimeFormats = function _getDateTimeFormats () { return this._vm.dateTimeFormats };\nVueI18n.prototype._getNumberFormats = function _getNumberFormats () { return this._vm.numberFormats };\n\nVueI18n.prototype._warnDefault = function _warnDefault (locale, key, result, vm, values, interpolateMode) {\n if (!isNull(result)) { return result }\n if (this._missing) {\n var missingRet = this._missing.apply(null, [locale, key, vm, values]);\n if (isString(missingRet)) {\n return missingRet\n }\n } else {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn(\n \"Cannot translate the value of keypath '\" + key + \"'. \" +\n 'Use the value of keypath as default.'\n );\n }\n }\n\n if (this._formatFallbackMessages) {\n var parsedArgs = parseArgs.apply(void 0, values);\n return this._render(key, interpolateMode, parsedArgs.params, key)\n } else {\n return key\n }\n};\n\nVueI18n.prototype._isFallbackRoot = function _isFallbackRoot (val) {\n return !val && !isNull(this._root) && this._fallbackRoot\n};\n\nVueI18n.prototype._isSilentFallbackWarn = function _isSilentFallbackWarn (key) {\n return this._silentFallbackWarn instanceof RegExp\n ? this._silentFallbackWarn.test(key)\n : this._silentFallbackWarn\n};\n\nVueI18n.prototype._isSilentFallback = function _isSilentFallback (locale, key) {\n return this._isSilentFallbackWarn(key) && (this._isFallbackRoot() || locale !== this.fallbackLocale)\n};\n\nVueI18n.prototype._isSilentTranslationWarn = function _isSilentTranslationWarn (key) {\n return this._silentTranslationWarn instanceof RegExp\n ? this._silentTranslationWarn.test(key)\n : this._silentTranslationWarn\n};\n\nVueI18n.prototype._interpolate = function _interpolate (\n locale,\n message,\n key,\n host,\n interpolateMode,\n values,\n visitedLinkStack\n) {\n if (!message) { return null }\n\n var pathRet = this._path.getPathValue(message, key);\n if (isArray(pathRet) || isPlainObject(pathRet)) { return pathRet }\n\n var ret;\n if (isNull(pathRet)) {\n /* istanbul ignore else */\n if (isPlainObject(message)) {\n ret = message[key];\n if (!(isString(ret) || isFunction(ret))) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n warn((\"Value of key '\" + key + \"' is not a string or function !\"));\n }\n return null\n }\n } else {\n return null\n }\n } else {\n /* istanbul ignore else */\n if (isString(pathRet) || isFunction(pathRet)) {\n ret = pathRet;\n } else {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n warn((\"Value of key '\" + key + \"' is not a string or function!\"));\n }\n return null\n }\n }\n\n // Check for the existence of links within the translated string\n if (isString(ret) && (ret.indexOf('@:') >= 0 || ret.indexOf('@.') >= 0)) {\n ret = this._link(locale, message, ret, host, 'raw', values, visitedLinkStack);\n }\n\n return this._render(ret, interpolateMode, values, key)\n};\n\nVueI18n.prototype._link = function _link (\n locale,\n message,\n str,\n host,\n interpolateMode,\n values,\n visitedLinkStack\n) {\n var ret = str;\n\n // Match all the links within the local\n // We are going to replace each of\n // them with its translation\n var matches = ret.match(linkKeyMatcher);\n for (var idx in matches) {\n // ie compatible: filter custom array\n // prototype method\n if (!matches.hasOwnProperty(idx)) {\n continue\n }\n var link = matches[idx];\n var linkKeyPrefixMatches = link.match(linkKeyPrefixMatcher);\n var linkPrefix = linkKeyPrefixMatches[0];\n var formatterName = linkKeyPrefixMatches[1];\n\n // Remove the leading @:, @.case: and the brackets\n var linkPlaceholder = link.replace(linkPrefix, '').replace(bracketsMatcher, '');\n\n if (includes(visitedLinkStack, linkPlaceholder)) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Circular reference found. \\\"\" + link + \"\\\" is already visited in the chain of \" + (visitedLinkStack.reverse().join(' <- '))));\n }\n return ret\n }\n visitedLinkStack.push(linkPlaceholder);\n\n // Translate the link\n var translated = this._interpolate(\n locale, message, linkPlaceholder, host,\n interpolateMode === 'raw' ? 'string' : interpolateMode,\n interpolateMode === 'raw' ? undefined : values,\n visitedLinkStack\n );\n\n if (this._isFallbackRoot(translated)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(linkPlaceholder)) {\n warn((\"Fall back to translate the link placeholder '\" + linkPlaceholder + \"' with root locale.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n var root = this._root.$i18n;\n translated = root._translate(\n root._getMessages(), root.locale, root.fallbackLocale,\n linkPlaceholder, host, interpolateMode, values\n );\n }\n translated = this._warnDefault(\n locale, linkPlaceholder, translated, host,\n isArray(values) ? values : [values],\n interpolateMode\n );\n\n if (this._modifiers.hasOwnProperty(formatterName)) {\n translated = this._modifiers[formatterName](translated);\n } else if (defaultModifiers.hasOwnProperty(formatterName)) {\n translated = defaultModifiers[formatterName](translated);\n }\n\n visitedLinkStack.pop();\n\n // Replace the link with the translated\n ret = !translated ? ret : ret.replace(link, translated);\n }\n\n return ret\n};\n\nVueI18n.prototype._createMessageContext = function _createMessageContext (values) {\n var _list = isArray(values) ? values : [];\n var _named = isObject(values) ? values : {};\n var list = function (index) { return _list[index]; };\n var named = function (key) { return _named[key]; };\n return {\n list: list,\n named: named\n }\n};\n\nVueI18n.prototype._render = function _render (message, interpolateMode, values, path) {\n if (isFunction(message)) {\n return message(this._createMessageContext(values))\n }\n\n var ret = this._formatter.interpolate(message, values, path);\n\n // If the custom formatter refuses to work - apply the default one\n if (!ret) {\n ret = defaultFormatter.interpolate(message, values, path);\n }\n\n // if interpolateMode is **not** 'string' ('row'),\n // return the compiled data (e.g. ['foo', VNode, 'bar']) with formatter\n return interpolateMode === 'string' && !isString(ret) ? ret.join('') : ret\n};\n\nVueI18n.prototype._appendItemToChain = function _appendItemToChain (chain, item, blocks) {\n var follow = false;\n if (!includes(chain, item)) {\n follow = true;\n if (item) {\n follow = item[item.length - 1] !== '!';\n item = item.replace(/!/g, '');\n chain.push(item);\n if (blocks && blocks[item]) {\n follow = blocks[item];\n }\n }\n }\n return follow\n};\n\nVueI18n.prototype._appendLocaleToChain = function _appendLocaleToChain (chain, locale, blocks) {\n var follow;\n var tokens = locale.split('-');\n do {\n var item = tokens.join('-');\n follow = this._appendItemToChain(chain, item, blocks);\n tokens.splice(-1, 1);\n } while (tokens.length && (follow === true))\n return follow\n};\n\nVueI18n.prototype._appendBlockToChain = function _appendBlockToChain (chain, block, blocks) {\n var follow = true;\n for (var i = 0; (i < block.length) && (isBoolean(follow)); i++) {\n var locale = block[i];\n if (isString(locale)) {\n follow = this._appendLocaleToChain(chain, locale, blocks);\n }\n }\n return follow\n};\n\nVueI18n.prototype._getLocaleChain = function _getLocaleChain (start, fallbackLocale) {\n if (start === '') { return [] }\n\n if (!this._localeChainCache) {\n this._localeChainCache = {};\n }\n\n var chain = this._localeChainCache[start];\n if (!chain) {\n if (!fallbackLocale) {\n fallbackLocale = this.fallbackLocale;\n }\n chain = [];\n\n // first block defined by start\n var block = [start];\n\n // while any intervening block found\n while (isArray(block)) {\n block = this._appendBlockToChain(\n chain,\n block,\n fallbackLocale\n );\n }\n\n // last block defined by default\n var defaults;\n if (isArray(fallbackLocale)) {\n defaults = fallbackLocale;\n } else if (isObject(fallbackLocale)) {\n /* $FlowFixMe */\n if (fallbackLocale['default']) {\n defaults = fallbackLocale['default'];\n } else {\n defaults = null;\n }\n } else {\n defaults = fallbackLocale;\n }\n\n // convert defaults to array\n if (isString(defaults)) {\n block = [defaults];\n } else {\n block = defaults;\n }\n if (block) {\n this._appendBlockToChain(\n chain,\n block,\n null\n );\n }\n this._localeChainCache[start] = chain;\n }\n return chain\n};\n\nVueI18n.prototype._translate = function _translate (\n messages,\n locale,\n fallback,\n key,\n host,\n interpolateMode,\n args\n) {\n var chain = this._getLocaleChain(locale, fallback);\n var res;\n for (var i = 0; i < chain.length; i++) {\n var step = chain[i];\n res =\n this._interpolate(step, messages[step], key, host, interpolateMode, args, [key]);\n if (!isNull(res)) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to translate the keypath '\" + key + \"' with '\" + step + \"' locale.\"));\n }\n return res\n }\n }\n return null\n};\n\nVueI18n.prototype._t = function _t (key, _locale, messages, host) {\n var ref;\n\n var values = [], len = arguments.length - 4;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];\n if (!key) { return '' }\n\n var parsedArgs = parseArgs.apply(void 0, values);\n if(this._escapeParameterHtml) {\n parsedArgs.params = escapeParams(parsedArgs.params);\n }\n\n var locale = parsedArgs.locale || _locale;\n\n var ret = this._translate(\n messages, locale, this.fallbackLocale, key,\n host, 'string', parsedArgs.params\n );\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to translate the keypath '\" + key + \"' with root locale.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return (ref = this._root).$t.apply(ref, [ key ].concat( values ))\n } else {\n ret = this._warnDefault(locale, key, ret, host, values, 'string');\n if (this._postTranslation && ret !== null && ret !== undefined) {\n ret = this._postTranslation(ret, key);\n }\n return ret\n }\n};\n\nVueI18n.prototype.t = function t (key) {\n var ref;\n\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n return (ref = this)._t.apply(ref, [ key, this.locale, this._getMessages(), null ].concat( values ))\n};\n\nVueI18n.prototype._i = function _i (key, locale, messages, host, values) {\n var ret =\n this._translate(messages, locale, this.fallbackLocale, key, host, 'raw', values);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn((\"Fall back to interpolate the keypath '\" + key + \"' with root locale.\"));\n }\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.i(key, locale, values)\n } else {\n return this._warnDefault(locale, key, ret, host, [values], 'raw')\n }\n};\n\nVueI18n.prototype.i = function i (key, locale, values) {\n /* istanbul ignore if */\n if (!key) { return '' }\n\n if (!isString(locale)) {\n locale = this.locale;\n }\n\n return this._i(key, locale, this._getMessages(), null, values)\n};\n\nVueI18n.prototype._tc = function _tc (\n key,\n _locale,\n messages,\n host,\n choice\n) {\n var ref;\n\n var values = [], len = arguments.length - 5;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];\n if (!key) { return '' }\n if (choice === undefined) {\n choice = 1;\n }\n\n var predefined = { 'count': choice, 'n': choice };\n var parsedArgs = parseArgs.apply(void 0, values);\n parsedArgs.params = Object.assign(predefined, parsedArgs.params);\n values = parsedArgs.locale === null ? [parsedArgs.params] : [parsedArgs.locale, parsedArgs.params];\n return this.fetchChoice((ref = this)._t.apply(ref, [ key, _locale, messages, host ].concat( values )), choice)\n};\n\nVueI18n.prototype.fetchChoice = function fetchChoice (message, choice) {\n /* istanbul ignore if */\n if (!message || !isString(message)) { return null }\n var choices = message.split('|');\n\n choice = this.getChoiceIndex(choice, choices.length);\n if (!choices[choice]) { return message }\n return choices[choice].trim()\n};\n\nVueI18n.prototype.tc = function tc (key, choice) {\n var ref;\n\n var values = [], len = arguments.length - 2;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values ))\n};\n\nVueI18n.prototype._te = function _te (key, locale, messages) {\n var args = [], len = arguments.length - 3;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 3 ];\n\n var _locale = parseArgs.apply(void 0, args).locale || locale;\n return this._exist(messages[_locale], key)\n};\n\nVueI18n.prototype.te = function te (key, locale) {\n return this._te(key, this.locale, this._getMessages(), locale)\n};\n\nVueI18n.prototype.getLocaleMessage = function getLocaleMessage (locale) {\n return looseClone(this._vm.messages[locale] || {})\n};\n\nVueI18n.prototype.setLocaleMessage = function setLocaleMessage (locale, message) {\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n }\n this._vm.$set(this._vm.messages, locale, message);\n};\n\nVueI18n.prototype.mergeLocaleMessage = function mergeLocaleMessage (locale, message) {\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n }\n this._vm.$set(this._vm.messages, locale, merge(\n typeof this._vm.messages[locale] !== 'undefined' && Object.keys(this._vm.messages[locale]).length\n ? this._vm.messages[locale]\n : {},\n message\n ));\n};\n\nVueI18n.prototype.getDateTimeFormat = function getDateTimeFormat (locale) {\n return looseClone(this._vm.dateTimeFormats[locale] || {})\n};\n\nVueI18n.prototype.setDateTimeFormat = function setDateTimeFormat (locale, format) {\n this._vm.$set(this._vm.dateTimeFormats, locale, format);\n this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype.mergeDateTimeFormat = function mergeDateTimeFormat (locale, format) {\n this._vm.$set(this._vm.dateTimeFormats, locale, merge(this._vm.dateTimeFormats[locale] || {}, format));\n this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype._clearDateTimeFormat = function _clearDateTimeFormat (locale, format) {\n for (var key in format) {\n var id = locale + \"__\" + key;\n\n if (!this._dateTimeFormatters.hasOwnProperty(id)) {\n continue\n }\n\n delete this._dateTimeFormatters[id];\n }\n};\n\nVueI18n.prototype._localizeDateTime = function _localizeDateTime (\n value,\n locale,\n fallback,\n dateTimeFormats,\n key\n) {\n var _locale = locale;\n var formats = dateTimeFormats[_locale];\n\n var chain = this._getLocaleChain(locale, fallback);\n for (var i = 0; i < chain.length; i++) {\n var current = _locale;\n var step = chain[i];\n formats = dateTimeFormats[step];\n _locale = step;\n // fallback locale\n if (isNull(formats) || isNull(formats[key])) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to '\" + step + \"' datetime formats from '\" + current + \"' datetime formats.\"));\n }\n } else {\n break\n }\n }\n\n if (isNull(formats) || isNull(formats[key])) {\n return null\n } else {\n var format = formats[key];\n var id = _locale + \"__\" + key;\n var formatter = this._dateTimeFormatters[id];\n if (!formatter) {\n formatter = this._dateTimeFormatters[id] = new Intl.DateTimeFormat(_locale, format);\n }\n return formatter.format(value)\n }\n};\n\nVueI18n.prototype._d = function _d (value, locale, key) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !VueI18n.availabilities.dateTimeFormat) {\n warn('Cannot format a Date value due to not supported Intl.DateTimeFormat.');\n return ''\n }\n\n if (!key) {\n return new Intl.DateTimeFormat(locale).format(value)\n }\n\n var ret =\n this._localizeDateTime(value, locale, this.fallbackLocale, this._getDateTimeFormats(), key);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to datetime localization of root: key '\" + key + \"'.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.d(value, key, locale)\n } else {\n return ret || ''\n }\n};\n\nVueI18n.prototype.d = function d (value) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n var locale = this.locale;\n var key = null;\n\n if (args.length === 1) {\n if (isString(args[0])) {\n key = args[0];\n } else if (isObject(args[0])) {\n if (args[0].locale) {\n locale = args[0].locale;\n }\n if (args[0].key) {\n key = args[0].key;\n }\n }\n } else if (args.length === 2) {\n if (isString(args[0])) {\n key = args[0];\n }\n if (isString(args[1])) {\n locale = args[1];\n }\n }\n\n return this._d(value, locale, key)\n};\n\nVueI18n.prototype.getNumberFormat = function getNumberFormat (locale) {\n return looseClone(this._vm.numberFormats[locale] || {})\n};\n\nVueI18n.prototype.setNumberFormat = function setNumberFormat (locale, format) {\n this._vm.$set(this._vm.numberFormats, locale, format);\n this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype.mergeNumberFormat = function mergeNumberFormat (locale, format) {\n this._vm.$set(this._vm.numberFormats, locale, merge(this._vm.numberFormats[locale] || {}, format));\n this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype._clearNumberFormat = function _clearNumberFormat (locale, format) {\n for (var key in format) {\n var id = locale + \"__\" + key;\n\n if (!this._numberFormatters.hasOwnProperty(id)) {\n continue\n }\n\n delete this._numberFormatters[id];\n }\n};\n\nVueI18n.prototype._getNumberFormatter = function _getNumberFormatter (\n value,\n locale,\n fallback,\n numberFormats,\n key,\n options\n) {\n var _locale = locale;\n var formats = numberFormats[_locale];\n\n var chain = this._getLocaleChain(locale, fallback);\n for (var i = 0; i < chain.length; i++) {\n var current = _locale;\n var step = chain[i];\n formats = numberFormats[step];\n _locale = step;\n // fallback locale\n if (isNull(formats) || isNull(formats[key])) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to '\" + step + \"' number formats from '\" + current + \"' number formats.\"));\n }\n } else {\n break\n }\n }\n\n if (isNull(formats) || isNull(formats[key])) {\n return null\n } else {\n var format = formats[key];\n\n var formatter;\n if (options) {\n // If options specified - create one time number formatter\n formatter = new Intl.NumberFormat(_locale, Object.assign({}, format, options));\n } else {\n var id = _locale + \"__\" + key;\n formatter = this._numberFormatters[id];\n if (!formatter) {\n formatter = this._numberFormatters[id] = new Intl.NumberFormat(_locale, format);\n }\n }\n return formatter\n }\n};\n\nVueI18n.prototype._n = function _n (value, locale, key, options) {\n /* istanbul ignore if */\n if (!VueI18n.availabilities.numberFormat) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot format a Number value due to not supported Intl.NumberFormat.');\n }\n return ''\n }\n\n if (!key) {\n var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n return nf.format(value)\n }\n\n var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n var ret = formatter && formatter.format(value);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to number localization of root: key '\" + key + \"'.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.n(value, Object.assign({}, { key: key, locale: locale }, options))\n } else {\n return ret || ''\n }\n};\n\nVueI18n.prototype.n = function n (value) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n var locale = this.locale;\n var key = null;\n var options = null;\n\n if (args.length === 1) {\n if (isString(args[0])) {\n key = args[0];\n } else if (isObject(args[0])) {\n if (args[0].locale) {\n locale = args[0].locale;\n }\n if (args[0].key) {\n key = args[0].key;\n }\n\n // Filter out number format options only\n options = Object.keys(args[0]).reduce(function (acc, key) {\n var obj;\n\n if (includes(numberFormatKeys, key)) {\n return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))\n }\n return acc\n }, null);\n }\n } else if (args.length === 2) {\n if (isString(args[0])) {\n key = args[0];\n }\n if (isString(args[1])) {\n locale = args[1];\n }\n }\n\n return this._n(value, locale, key, options)\n};\n\nVueI18n.prototype._ntp = function _ntp (value, locale, key, options) {\n /* istanbul ignore if */\n if (!VueI18n.availabilities.numberFormat) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot format to parts a Number value due to not supported Intl.NumberFormat.');\n }\n return []\n }\n\n if (!key) {\n var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n return nf.formatToParts(value)\n }\n\n var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n var ret = formatter && formatter.formatToParts(value);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn((\"Fall back to format number to parts of root: key '\" + key + \"' .\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n._ntp(value, locale, key, options)\n } else {\n return ret || []\n }\n};\n\nObject.defineProperties( VueI18n.prototype, prototypeAccessors );\n\nvar availabilities;\n// $FlowFixMe\nObject.defineProperty(VueI18n, 'availabilities', {\n get: function get () {\n if (!availabilities) {\n var intlDefined = typeof Intl !== 'undefined';\n availabilities = {\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n };\n }\n\n return availabilities\n }\n});\n\nVueI18n.install = install;\nVueI18n.version = '8.23.0';\n\nexport default VueI18n;\n","import Vue from 'vue';\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill\nfunction assign (target, varArgs) {\n var arguments$1 = arguments;\n\n if (target === null || target === undefined) {\n throw new TypeError('Cannot convert undefined or null to object')\n }\n var to = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments$1[index];\n if (nextSource !== null && nextSource !== undefined) {\n for (var nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to\n}\n\nfunction isExist (obj) {\n return typeof obj !== 'undefined' && obj !== null\n}\n\nfunction isFunction (obj) {\n return typeof obj === 'function'\n}\n\nfunction isNumber (obj) {\n return typeof obj === 'number'\n}\n\nfunction isString (obj) {\n return typeof obj === 'string'\n}\n\nfunction isBoolean (obj) {\n return typeof obj === 'boolean'\n}\n\nfunction isPromiseSupported () {\n return typeof window !== 'undefined' && isExist(window.Promise)\n}\n\nfunction hasOwnProperty (o, k) {\n return Object.prototype.hasOwnProperty.call(o, k)\n}\n\nvar script = {\n props: {\n value: Number,\n indicators: {\n type: Boolean,\n default: true\n },\n controls: {\n type: Boolean,\n default: true\n },\n interval: {\n type: Number,\n default: 5000\n },\n iconControlLeft: {\n type: String,\n default: 'glyphicon glyphicon-chevron-left'\n },\n iconControlRight: {\n type: String,\n default: 'glyphicon glyphicon-chevron-right'\n }\n },\n data: function data () {\n return {\n slides: [],\n activeIndex: 0, // Make v-model not required\n timeoutId: 0,\n intervalId: 0\n }\n },\n watch: {\n interval: function interval () {\n this.startInterval();\n },\n value: function value (index, oldValue) {\n this.run(index, oldValue);\n this.activeIndex = index;\n }\n },\n mounted: function mounted () {\n if (isExist(this.value)) {\n this.activeIndex = this.value;\n }\n if (this.slides.length > 0) {\n this.$select(this.activeIndex);\n }\n this.startInterval();\n },\n beforeDestroy: function beforeDestroy () {\n this.stopInterval();\n },\n methods: {\n run: function run (newIndex, oldIndex) {\n var this$1 = this;\n\n var currentActiveIndex = oldIndex || 0;\n var direction;\n if (newIndex > currentActiveIndex) {\n direction = ['next', 'left'];\n } else {\n direction = ['prev', 'right'];\n }\n this.slides[newIndex].slideClass[direction[0]] = true;\n this.$nextTick(function () {\n this$1.slides[newIndex].$el.offsetHeight;\n this$1.slides.forEach(function (slide, i) {\n if (i === currentActiveIndex) {\n slide.slideClass.active = true;\n slide.slideClass[direction[1]] = true;\n } else if (i === newIndex) {\n slide.slideClass[direction[1]] = true;\n }\n });\n this$1.timeoutId = setTimeout(function () {\n this$1.$select(newIndex);\n this$1.$emit('change', newIndex);\n this$1.timeoutId = 0;\n }, 600);\n });\n },\n startInterval: function startInterval () {\n var this$1 = this;\n\n this.stopInterval();\n if (this.interval > 0) {\n this.intervalId = setInterval(function () {\n this$1.next();\n }, this.interval);\n }\n },\n stopInterval: function stopInterval () {\n clearInterval(this.intervalId);\n this.intervalId = 0;\n },\n resetAllSlideClass: function resetAllSlideClass () {\n this.slides.forEach(function (slide) {\n slide.slideClass.active = false;\n slide.slideClass.left = false;\n slide.slideClass.right = false;\n slide.slideClass.next = false;\n slide.slideClass.prev = false;\n });\n },\n $select: function $select (index) {\n this.resetAllSlideClass();\n this.slides[index].slideClass.active = true;\n },\n select: function select (index) {\n if (this.timeoutId !== 0 || index === this.activeIndex) {\n return\n }\n if (isExist(this.value)) {\n this.$emit('input', index);\n } else {\n this.run(index, this.activeIndex);\n this.activeIndex = index;\n }\n },\n prev: function prev () {\n this.select(this.activeIndex === 0 ? this.slides.length - 1 : this.activeIndex - 1);\n },\n next: function next () {\n this.select(this.activeIndex === this.slides.length - 1 ? 0 : this.activeIndex + 1);\n }\n }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n var options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n var hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n var originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n var existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\n/* script */\nvar __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n {\n staticClass: \"carousel slide\",\n attrs: { \"data-ride\": \"carousel\" },\n on: { mouseenter: _vm.stopInterval, mouseleave: _vm.startInterval }\n },\n [\n _vm.indicators\n ? _vm._t(\n \"indicators\",\n [\n _c(\n \"ol\",\n { staticClass: \"carousel-indicators\" },\n _vm._l(_vm.slides, function(slide, index) {\n return _c(\"li\", {\n class: { active: index === _vm.activeIndex },\n on: {\n click: function($event) {\n return _vm.select(index)\n }\n }\n })\n }),\n 0\n )\n ],\n { select: _vm.select, activeIndex: _vm.activeIndex }\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"carousel-inner\", attrs: { role: \"listbox\" } },\n [_vm._t(\"default\")],\n 2\n ),\n _vm._v(\" \"),\n _vm.controls\n ? _c(\n \"a\",\n {\n staticClass: \"left carousel-control\",\n attrs: { href: \"#\", role: \"button\" },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.prev()\n }\n }\n },\n [\n _c(\"span\", {\n class: _vm.iconControlLeft,\n attrs: { \"aria-hidden\": \"true\" }\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"sr-only\" }, [_vm._v(\"Previous\")])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.controls\n ? _c(\n \"a\",\n {\n staticClass: \"right carousel-control\",\n attrs: { href: \"#\", role: \"button\" },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.next()\n }\n }\n },\n [\n _c(\"span\", {\n class: _vm.iconControlRight,\n attrs: { \"aria-hidden\": \"true\" }\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"sr-only\" }, [_vm._v(\"Next\")])\n ]\n )\n : _vm._e()\n ],\n 2\n )\n};\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n\n /* style */\n var __vue_inject_styles__ = undefined;\n /* scoped */\n var __vue_scope_id__ = undefined;\n /* module identifier */\n var __vue_module_identifier__ = undefined;\n /* functional template */\n var __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__ = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nfunction spliceIfExist (arr, item) {\n if (Array.isArray(arr)) {\n var index = arr.indexOf(item);\n if (index >= 0) {\n arr.splice(index, 1);\n }\n }\n}\n\nfunction range (end, start, step) {\n if ( start === void 0 ) start = 0;\n if ( step === void 0 ) step = 1;\n\n var arr = [];\n for (var i = start; i < end; i += step) {\n arr.push(i);\n }\n return arr\n}\n\nfunction nodeListToArray (nodeList) {\n return Array.prototype.slice.call(nodeList || [])\n}\n\nfunction onlyUnique (value, index, self) {\n return self.indexOf(value) === index\n}\n\nvar script$1 = {\n data: function data () {\n return {\n slideClass: {\n active: false,\n prev: false,\n next: false,\n left: false,\n right: false\n }\n }\n },\n created: function created () {\n try {\n this.$parent.slides.push(this);\n } catch (e) {\n throw new Error('Slide parent must be Carousel.')\n }\n },\n beforeDestroy: function beforeDestroy () {\n var slides = this.$parent && this.$parent.slides;\n spliceIfExist(slides, this);\n }\n};\n\n/* script */\nvar __vue_script__$1 = script$1;\n\n/* template */\nvar __vue_render__$1 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n { staticClass: \"item\", class: _vm.slideClass },\n [_vm._t(\"default\")],\n 2\n )\n};\nvar __vue_staticRenderFns__$1 = [];\n__vue_render__$1._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$1 = undefined;\n /* scoped */\n var __vue_scope_id__$1 = undefined;\n /* module identifier */\n var __vue_module_identifier__$1 = undefined;\n /* functional template */\n var __vue_is_functional_template__$1 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$1 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 },\n __vue_inject_styles__$1,\n __vue_script__$1,\n __vue_scope_id__$1,\n __vue_is_functional_template__$1,\n __vue_module_identifier__$1,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar EVENTS = {\n MOUSE_ENTER: 'mouseenter',\n MOUSE_LEAVE: 'mouseleave',\n MOUSE_DOWN: 'mousedown',\n MOUSE_UP: 'mouseup',\n FOCUS: 'focus',\n BLUR: 'blur',\n CLICK: 'click',\n INPUT: 'input',\n KEY_DOWN: 'keydown',\n KEY_UP: 'keyup',\n KEY_PRESS: 'keypress',\n RESIZE: 'resize',\n SCROLL: 'scroll',\n TOUCH_START: 'touchstart',\n TOUCH_END: 'touchend'\n};\n\nvar TRIGGERS = {\n CLICK: 'click',\n HOVER: 'hover',\n FOCUS: 'focus',\n HOVER_FOCUS: 'hover-focus',\n OUTSIDE_CLICK: 'outside-click',\n MANUAL: 'manual'\n};\n\nvar PLACEMENTS = {\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n};\n\nfunction isIE11 () {\n /* istanbul ignore next */\n return !!window.MSInputMethodContext && !!document.documentMode\n}\n\nfunction isIE10 () {\n return window.navigator.appVersion.indexOf('MSIE 10') !== -1\n}\n\nfunction getComputedStyle (el) {\n return window.getComputedStyle(el)\n}\n\nfunction getViewportSize () {\n /* istanbul ignore next */\n var width = Math.max(document.documentElement.clientWidth, window.innerWidth) || 0;\n /* istanbul ignore next */\n var height = Math.max(document.documentElement.clientHeight, window.innerHeight) || 0;\n return { width: width, height: height }\n}\n\nvar scrollbarWidth = null;\nvar savedScreenSize = null;\n\nfunction getScrollbarWidth (recalculate) {\n if ( recalculate === void 0 ) recalculate = false;\n\n var screenSize = getViewportSize();\n // return directly when already calculated & not force recalculate & screen size not changed\n if (scrollbarWidth !== null && !recalculate &&\n screenSize.height === savedScreenSize.height && screenSize.width === savedScreenSize.width) {\n return scrollbarWidth\n }\n /* istanbul ignore next */\n if (document.readyState === 'loading') {\n return null\n }\n var div1 = document.createElement('div');\n var div2 = document.createElement('div');\n div1.style.width = div2.style.width = div1.style.height = div2.style.height = '100px';\n div1.style.overflow = 'scroll';\n div2.style.overflow = 'hidden';\n document.body.appendChild(div1);\n document.body.appendChild(div2);\n scrollbarWidth = Math.abs(div1.scrollHeight - div2.scrollHeight);\n document.body.removeChild(div1);\n document.body.removeChild(div2);\n // save new screen size\n savedScreenSize = screenSize;\n return scrollbarWidth\n}\n\nfunction on (element, event, handler) {\n /* istanbul ignore next */\n element.addEventListener(event, handler);\n}\n\nfunction off (element, event, handler) {\n /* istanbul ignore next */\n element.removeEventListener(event, handler);\n}\n\nfunction isElement (el) {\n return el && el.nodeType === Node.ELEMENT_NODE\n}\n\nfunction removeFromDom (el) {\n isElement(el) && isElement(el.parentNode) && el.parentNode.removeChild(el);\n}\n\nfunction ensureElementMatchesFunction () {\n /* istanbul ignore next */\n if (!Element.prototype.matches) {\n Element.prototype.matches =\n Element.prototype.matchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector ||\n Element.prototype.oMatchesSelector ||\n Element.prototype.webkitMatchesSelector ||\n function (s) {\n var matches = (this.document || this.ownerDocument).querySelectorAll(s);\n var i = matches.length;\n // eslint-disable-next-line no-empty\n while (--i >= 0 && matches.item(i) !== this) {}\n return i > -1\n };\n }\n}\n\nfunction addClass (el, className) {\n if (!isElement(el)) {\n return\n }\n if (el.className) {\n var classes = el.className.split(' ');\n if (classes.indexOf(className) < 0) {\n classes.push(className);\n el.className = classes.join(' ');\n }\n } else {\n el.className = className;\n }\n}\n\nfunction removeClass (el, className) {\n if (!isElement(el)) {\n return\n }\n if (el.className) {\n var classes = el.className.split(' ');\n var newClasses = [];\n for (var i = 0, l = classes.length; i < l; i++) {\n if (classes[i] !== className) {\n newClasses.push(classes[i]);\n }\n }\n el.className = newClasses.join(' ');\n }\n}\n\nfunction hasClass (el, className) {\n if (!isElement(el)) {\n return false\n }\n var classes = el.className.split(' ');\n for (var i = 0, l = classes.length; i < l; i++) {\n if (classes[i] === className) {\n return true\n }\n }\n return false\n}\n\nfunction setDropdownPosition (dropdown, trigger, options) {\n if ( options === void 0 ) options = {};\n\n var doc = document.documentElement;\n var containerScrollLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var containerScrollTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var rect = trigger.getBoundingClientRect();\n var dropdownRect = dropdown.getBoundingClientRect();\n dropdown.style.right = 'auto';\n dropdown.style.bottom = 'auto';\n if (options.menuRight) {\n dropdown.style.left = containerScrollLeft + rect.left + rect.width - dropdownRect.width + 'px';\n } else {\n dropdown.style.left = containerScrollLeft + rect.left + 'px';\n }\n if (options.dropup) {\n dropdown.style.top = containerScrollTop + rect.top - dropdownRect.height - 4 + 'px';\n } else {\n dropdown.style.top = containerScrollTop + rect.top + rect.height + 'px';\n }\n}\n\nfunction isAvailableAtPosition (trigger, popup, placement) {\n var triggerRect = trigger.getBoundingClientRect();\n var popupRect = popup.getBoundingClientRect();\n var viewPortSize = getViewportSize();\n var top = true;\n var right = true;\n var bottom = true;\n var left = true;\n switch (placement) {\n case PLACEMENTS.TOP:\n top = triggerRect.top >= popupRect.height;\n left = triggerRect.left + triggerRect.width / 2 >= popupRect.width / 2;\n right = triggerRect.right - triggerRect.width / 2 + popupRect.width / 2 <= viewPortSize.width;\n break\n case PLACEMENTS.BOTTOM:\n bottom = triggerRect.bottom + popupRect.height <= viewPortSize.height;\n left = triggerRect.left + triggerRect.width / 2 >= popupRect.width / 2;\n right = triggerRect.right - triggerRect.width / 2 + popupRect.width / 2 <= viewPortSize.width;\n break\n case PLACEMENTS.RIGHT:\n right = triggerRect.right + popupRect.width <= viewPortSize.width;\n top = triggerRect.top + triggerRect.height / 2 >= popupRect.height / 2;\n bottom = triggerRect.bottom - triggerRect.height / 2 + popupRect.height / 2 <= viewPortSize.height;\n break\n case PLACEMENTS.LEFT:\n left = triggerRect.left >= popupRect.width;\n top = triggerRect.top + triggerRect.height / 2 >= popupRect.height / 2;\n bottom = triggerRect.bottom - triggerRect.height / 2 + popupRect.height / 2 <= viewPortSize.height;\n break\n }\n return top && right && bottom && left\n}\n\nfunction setTooltipPosition (tooltip, trigger, placement, auto, appendTo, positionBy, viewport) {\n if (!isElement(tooltip) || !isElement(trigger)) {\n return\n }\n var isPopover = tooltip && tooltip.className && tooltip.className.indexOf('popover') >= 0;\n var containerScrollTop;\n var containerScrollLeft;\n if (!isExist(appendTo) || appendTo === 'body' || positionBy === 'body') {\n var doc = document.documentElement;\n containerScrollLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n containerScrollTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n } else {\n var container = getElementBySelectorOrRef(positionBy || appendTo);\n containerScrollLeft = container.scrollLeft;\n containerScrollTop = container.scrollTop;\n }\n // auto adjust placement\n if (auto) {\n // Try: right -> bottom -> left -> top\n // Cause the default placement is top\n var placements = [PLACEMENTS.RIGHT, PLACEMENTS.BOTTOM, PLACEMENTS.LEFT, PLACEMENTS.TOP];\n // The class switch helper function\n var changePlacementClass = function (placement) {\n // console.log(placement)\n placements.forEach(function (placement) {\n removeClass(tooltip, placement);\n });\n addClass(tooltip, placement);\n };\n // No need to adjust if the default placement fits\n if (!isAvailableAtPosition(trigger, tooltip, placement)) {\n for (var i = 0, l = placements.length; i < l; i++) {\n // Re-assign placement class\n changePlacementClass(placements[i]);\n // Break if new placement fits\n if (isAvailableAtPosition(trigger, tooltip, placements[i])) {\n placement = placements[i];\n break\n }\n }\n changePlacementClass(placement);\n }\n }\n // fix left and top for tooltip\n var rect = trigger.getBoundingClientRect();\n var tooltipRect = tooltip.getBoundingClientRect();\n var top;\n var left;\n if (placement === PLACEMENTS.BOTTOM) {\n top = containerScrollTop + rect.top + rect.height;\n left = containerScrollLeft + rect.left + rect.width / 2 - tooltipRect.width / 2;\n } else if (placement === PLACEMENTS.LEFT) {\n top = containerScrollTop + rect.top + rect.height / 2 - tooltipRect.height / 2;\n left = containerScrollLeft + rect.left - tooltipRect.width;\n } else if (placement === PLACEMENTS.RIGHT) {\n top = containerScrollTop + rect.top + rect.height / 2 - tooltipRect.height / 2;\n // https://github.com/uiv-lib/uiv/issues/272\n // add 1px to fix above issue\n left = containerScrollLeft + rect.left + rect.width + 1;\n } else {\n top = containerScrollTop + rect.top - tooltipRect.height;\n left = containerScrollLeft + rect.left + rect.width / 2 - tooltipRect.width / 2;\n }\n var viewportEl;\n // viewport option\n if (isString(viewport)) {\n viewportEl = document.querySelector(viewport);\n } else if (isFunction(viewport)) {\n viewportEl = viewport(trigger);\n }\n if (isElement(viewportEl)) {\n var popoverFix = isPopover ? 11 : 0;\n var viewportReact = viewportEl.getBoundingClientRect();\n var viewportTop = containerScrollTop + viewportReact.top;\n var viewportLeft = containerScrollLeft + viewportReact.left;\n var viewportBottom = viewportTop + viewportReact.height;\n var viewportRight = viewportLeft + viewportReact.width;\n // fix top\n if (top < viewportTop) {\n top = viewportTop;\n } else if (top + tooltipRect.height > viewportBottom) {\n top = viewportBottom - tooltipRect.height;\n }\n // fix left\n if (left < viewportLeft) {\n left = viewportLeft;\n } else if (left + tooltipRect.width > viewportRight) {\n left = viewportRight - tooltipRect.width;\n }\n // fix for popover pointer\n if (placement === PLACEMENTS.BOTTOM) {\n top -= popoverFix;\n } else if (placement === PLACEMENTS.LEFT) {\n left += popoverFix;\n } else if (placement === PLACEMENTS.RIGHT) {\n left -= popoverFix;\n } else {\n top += popoverFix;\n }\n }\n // set position finally\n tooltip.style.top = top + \"px\";\n tooltip.style.left = left + \"px\";\n}\n\nfunction hasScrollbar (el) {\n var SCROLL = 'scroll';\n var hasVScroll = el.scrollHeight > el.clientHeight;\n var style = getComputedStyle(el);\n return hasVScroll || style.overflow === SCROLL || style.overflowY === SCROLL\n}\n\nfunction toggleBodyOverflow (enable) {\n var MODAL_OPEN = 'modal-open';\n var FIXED_CONTENT = '.navbar-fixed-top, .navbar-fixed-bottom';\n var body = document.body;\n if (enable) {\n removeClass(body, MODAL_OPEN);\n body.style.paddingRight = null;\n nodeListToArray(document.querySelectorAll(FIXED_CONTENT)).forEach(function (node) {\n node.style.paddingRight = null;\n });\n } else {\n var browsersWithFloatingScrollbar = isIE10() || isIE11();\n var documentHasScrollbar = hasScrollbar(document.documentElement) || hasScrollbar(document.body);\n if (documentHasScrollbar && !browsersWithFloatingScrollbar) {\n var scrollbarWidth = getScrollbarWidth();\n body.style.paddingRight = scrollbarWidth + \"px\";\n nodeListToArray(document.querySelectorAll(FIXED_CONTENT)).forEach(function (node) {\n node.style.paddingRight = scrollbarWidth + \"px\";\n });\n }\n addClass(body, MODAL_OPEN);\n }\n}\n\nfunction getClosest (el, selector) {\n ensureElementMatchesFunction();\n var parent;\n var _el = el;\n while (_el) {\n parent = _el.parentElement;\n if (parent && parent.matches(selector)) {\n return parent\n }\n _el = parent;\n }\n return null\n}\n\nfunction getParents (el, selector, until) {\n if ( until === void 0 ) until = null;\n\n ensureElementMatchesFunction();\n var parents = [];\n var parent = el.parentElement;\n while (parent) {\n if (parent.matches(selector)) {\n parents.push(parent);\n } else if (until && (until === parent || parent.matches(until))) {\n break\n }\n parent = parent.parentElement;\n }\n return parents\n}\n\nfunction focus (el) {\n if (!isElement(el)) {\n return\n }\n el.getAttribute('tabindex') ? null : el.setAttribute('tabindex', '-1');\n el.focus();\n}\n\nvar MODAL_BACKDROP = 'modal-backdrop';\n\nfunction getOpenModals () {\n return document.querySelectorAll((\".\" + MODAL_BACKDROP))\n}\n\nfunction getOpenModalNum () {\n return getOpenModals().length\n}\n\nfunction getElementBySelectorOrRef (q) {\n if (isString(q)) { // is selector\n return document.querySelector(q)\n } else if (isElement(q)) { // is element\n return q\n } else if (isElement(q.$el)) { // is component\n return q.$el\n } else {\n return null\n }\n}\n\nvar COLLAPSE = 'collapse';\nvar IN = 'in';\nvar COLLAPSING = 'collapsing';\n\nvar Collapse = {\n render: function render (h) {\n return h(this.tag, {}, this.$slots.default)\n },\n props: {\n tag: {\n type: String,\n default: 'div'\n },\n value: {\n type: Boolean,\n default: false\n },\n transition: {\n type: Number,\n default: 350\n }\n },\n data: function data () {\n return {\n timeoutId: 0\n }\n },\n watch: {\n value: function value (show) {\n this.toggle(show);\n }\n },\n mounted: function mounted () {\n var el = this.$el;\n addClass(el, COLLAPSE);\n if (this.value) {\n addClass(el, IN);\n }\n },\n methods: {\n toggle: function toggle (show) {\n var this$1 = this;\n\n clearTimeout(this.timeoutId);\n var el = this.$el;\n if (show) {\n this.$emit('show');\n removeClass(el, COLLAPSE);\n el.style.height = 'auto';\n var height = window.getComputedStyle(el).height;\n el.style.height = null;\n addClass(el, COLLAPSING);\n el.offsetHeight; // force repaint\n el.style.height = height;\n this.timeoutId = setTimeout(function () {\n removeClass(el, COLLAPSING);\n addClass(el, COLLAPSE);\n addClass(el, IN);\n el.style.height = null;\n this$1.timeoutId = 0;\n this$1.$emit('shown');\n }, this.transition);\n } else {\n this.$emit('hide');\n el.style.height = window.getComputedStyle(el).height;\n removeClass(el, IN);\n removeClass(el, COLLAPSE);\n el.offsetHeight;\n el.style.height = null;\n addClass(el, COLLAPSING);\n this.timeoutId = setTimeout(function () {\n addClass(el, COLLAPSE);\n removeClass(el, COLLAPSING);\n el.style.height = null;\n this$1.timeoutId = 0;\n this$1.$emit('hidden');\n }, this.transition);\n }\n }\n }\n};\n\nvar DEFAULT_TAG = 'div';\n\nvar Dropdown = {\n render: function render (h) {\n return h(\n this.tag,\n {\n class: {\n 'btn-group': this.tag === DEFAULT_TAG,\n dropdown: !this.dropup,\n dropup: this.dropup,\n open: this.show\n }\n },\n [\n this.$slots.default,\n h(\n 'ul',\n {\n class: {\n 'dropdown-menu': true,\n 'dropdown-menu-right': this.menuRight\n },\n ref: 'dropdown'\n },\n [this.$slots.dropdown]\n )\n ]\n )\n },\n props: {\n tag: {\n type: String,\n default: DEFAULT_TAG\n },\n appendToBody: {\n type: Boolean,\n default: false\n },\n value: Boolean,\n dropup: {\n type: Boolean,\n default: false\n },\n menuRight: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n notCloseElements: Array,\n positionElement: null\n },\n data: function data () {\n return {\n show: false,\n triggerEl: undefined\n }\n },\n watch: {\n value: function value (v) {\n this.toggle(v);\n }\n },\n mounted: function mounted () {\n this.initTrigger();\n if (this.triggerEl) {\n on(this.triggerEl, EVENTS.CLICK, this.toggle);\n on(this.triggerEl, EVENTS.KEY_DOWN, this.onKeyPress);\n }\n on(this.$refs.dropdown, EVENTS.KEY_DOWN, this.onKeyPress);\n on(window, EVENTS.CLICK, this.windowClicked);\n on(window, EVENTS.TOUCH_END, this.windowClicked);\n if (this.value) {\n this.toggle(true);\n }\n },\n beforeDestroy: function beforeDestroy () {\n this.removeDropdownFromBody();\n if (this.triggerEl) {\n off(this.triggerEl, EVENTS.CLICK, this.toggle);\n off(this.triggerEl, EVENTS.KEY_DOWN, this.onKeyPress);\n }\n off(this.$refs.dropdown, EVENTS.KEY_DOWN, this.onKeyPress);\n off(window, EVENTS.CLICK, this.windowClicked);\n off(window, EVENTS.TOUCH_END, this.windowClicked);\n },\n methods: {\n getFocusItem: function getFocusItem () {\n var dropdownEl = this.$refs.dropdown;\n /* istanbul ignore next */\n return dropdownEl.querySelector('li > a:focus')\n },\n onKeyPress: function onKeyPress (event) {\n if (this.show) {\n var dropdownEl = this.$refs.dropdown;\n var keyCode = event.keyCode;\n if (keyCode === 27) {\n // esc\n this.toggle(false);\n this.triggerEl && this.triggerEl.focus();\n } else if (keyCode === 13) {\n // enter\n var currentFocus = this.getFocusItem();\n currentFocus && currentFocus.click();\n } else if (keyCode === 38 || keyCode === 40) {\n // up || down\n event.preventDefault();\n event.stopPropagation();\n var currentFocus$1 = this.getFocusItem();\n var items = dropdownEl.querySelectorAll('li:not(.disabled) > a');\n if (!currentFocus$1) {\n focus(items[0]);\n } else {\n for (var i = 0; i < items.length; i++) {\n if (currentFocus$1 === items[i]) {\n if (keyCode === 38 && i < items.length > 0) {\n focus(items[i - 1]);\n } else if (keyCode === 40 && i < items.length - 1) {\n focus(items[i + 1]);\n }\n break\n }\n }\n }\n }\n }\n },\n initTrigger: function initTrigger () {\n var trigger = this.$el.querySelector('[data-role=\"trigger\"]') || this.$el.querySelector('.dropdown-toggle') || this.$el.firstChild;\n this.triggerEl = trigger && trigger !== this.$refs.dropdown ? trigger : null;\n },\n toggle: function toggle (show) {\n if (this.disabled) {\n return\n }\n if (isBoolean(show)) {\n this.show = show;\n } else {\n this.show = !this.show;\n }\n if (this.appendToBody) {\n this.show ? this.appendDropdownToBody() : this.removeDropdownFromBody();\n }\n this.$emit('input', this.show);\n },\n windowClicked: function windowClicked (event) {\n var target = event.target;\n if (this.show && target) {\n var targetInNotCloseElements = false;\n if (this.notCloseElements) {\n for (var i = 0, l = this.notCloseElements.length; i < l; i++) {\n var isTargetInElement = this.notCloseElements[i].contains(target);\n var shouldBreak = isTargetInElement;\n /* istanbul ignore else */\n if (this.appendToBody) {\n var isTargetInDropdown = this.$refs.dropdown.contains(target);\n var isElInElements = this.notCloseElements.indexOf(this.$el) >= 0;\n shouldBreak = isTargetInElement || (isTargetInDropdown && isElInElements);\n }\n if (shouldBreak) {\n targetInNotCloseElements = true;\n break\n }\n }\n }\n var targetInDropdownBody = this.$refs.dropdown.contains(target);\n var targetInTrigger = this.$el.contains(target) && !targetInDropdownBody;\n // normally, a dropdown select event is handled by @click that trigger after @touchend\n // then @touchend event have to be ignore in this case\n var targetInDropdownAndIsTouchEvent = targetInDropdownBody && event.type === 'touchend';\n if (!targetInTrigger && !targetInNotCloseElements && !targetInDropdownAndIsTouchEvent) {\n this.toggle(false);\n }\n }\n },\n appendDropdownToBody: function appendDropdownToBody () {\n try {\n var el = this.$refs.dropdown;\n el.style.display = 'block';\n document.body.appendChild(el);\n var positionElement = this.positionElement || this.$el;\n setDropdownPosition(el, positionElement, this);\n } catch (e) {\n // Silent\n }\n },\n removeDropdownFromBody: function removeDropdownFromBody () {\n try {\n var el = this.$refs.dropdown;\n el.removeAttribute('style');\n this.$el.appendChild(el);\n } catch (e) {\n // Silent\n }\n }\n }\n};\n\nvar defaultLang = {\n uiv: {\n datePicker: {\n clear: 'Clear',\n today: 'Today',\n month: 'Month',\n month1: 'January',\n month2: 'February',\n month3: 'March',\n month4: 'April',\n month5: 'May',\n month6: 'June',\n month7: 'July',\n month8: 'August',\n month9: 'September',\n month10: 'October',\n month11: 'November',\n month12: 'December',\n year: 'Year',\n week1: 'Mon',\n week2: 'Tue',\n week3: 'Wed',\n week4: 'Thu',\n week5: 'Fri',\n week6: 'Sat',\n week7: 'Sun'\n },\n timePicker: {\n am: 'AM',\n pm: 'PM'\n },\n modal: {\n cancel: 'Cancel',\n ok: 'OK'\n },\n multiSelect: {\n placeholder: 'Select...',\n filterPlaceholder: 'Search...'\n }\n }\n};\n\n// https://github.com/ElemeFE/element/blob/dev/src/locale/index.js\n\nvar lang = defaultLang;\n\nvar i18nHandler = function () {\n var vuei18n = Object.getPrototypeOf(this).$t;\n /* istanbul ignore else */\n /* istanbul ignore next */\n if (isFunction(vuei18n)) {\n /* istanbul ignore next */\n try {\n return vuei18n.apply(this, arguments)\n } catch (err) {\n return this.$t.apply(this, arguments)\n }\n }\n};\n\nvar t = function (path, options) {\n options = options || {};\n var value;\n try {\n value = i18nHandler.apply(this, arguments);\n /* istanbul ignore next */\n if (isExist(value) && !options.$$locale) {\n return value\n }\n } catch (e) {\n // ignore\n }\n var array = path.split('.');\n var current = options.$$locale || lang;\n\n for (var i = 0, j = array.length; i < j; i++) {\n var property = array[i];\n value = current[property];\n if (i === j - 1) { return value }\n if (!value) { return '' }\n current = value;\n }\n /* istanbul ignore next */\n return ''\n};\n\nvar use = function (l) {\n lang = l || lang;\n};\n\nvar i18n = function (fn) {\n i18nHandler = fn || i18nHandler;\n};\n\nvar locale = { use: use, t: t, i18n: i18n };\n\nvar Local = {\n methods: {\n t: function t$1 () {\n var arguments$1 = arguments;\n\n var args = [];\n for (var i = 0; i < arguments.length; ++i) {\n args.push(arguments$1[i]);\n }\n args[1] = assign({}, { $$locale: this.locale }, args[1]);\n return t.apply(this, args)\n }\n },\n props: {\n locale: Object\n }\n};\n\nvar e=function(){return (e=Object.assign||function(e){for(var t,r=1,s=arguments.length;r props\n href: String,\n target: String,\n // props\n to: null,\n replace: {\n type: Boolean,\n default: false\n },\n append: {\n type: Boolean,\n default: false\n },\n exact: {\n type: Boolean,\n default: false\n }\n }\n};\n\nvar BtnGroup = {\n functional: true,\n render: function render (h, ref) {\n var obj;\n\n var props = ref.props;\n var children = ref.children;\n var data = ref.data;\n return h(\n 'div',\n a(data, {\n class: ( obj = {\n 'btn-group': !props.vertical,\n 'btn-group-vertical': props.vertical,\n 'btn-group-justified': props.justified\n }, obj[(\"btn-group-\" + (props.size))] = props.size, obj ),\n attrs: {\n role: 'group',\n 'data-toggle': 'buttons'\n }\n }),\n children\n )\n },\n props: {\n size: String,\n vertical: {\n type: Boolean,\n default: false\n },\n justified: {\n type: Boolean,\n default: false\n }\n }\n};\n\nvar INPUT_TYPE_CHECKBOX = 'checkbox';\nvar INPUT_TYPE_RADIO = 'radio';\n\nvar Btn = {\n functional: true,\n mixins: [linkMixin],\n render: function render (h, ref) {\n var children = ref.children;\n var props = ref.props;\n var data = ref.data;\n\n // event listeners\n var listeners = data.on || {};\n // checkbox: model contain inputValue\n // radio: model === inputValue\n var isInputActive = props.inputType === INPUT_TYPE_CHECKBOX ? props.value.indexOf(props.inputValue) >= 0 : props.value === props.inputValue;\n // button class\n var classes = {\n btn: true,\n active: props.inputType ? isInputActive : props.active,\n disabled: props.disabled,\n 'btn-block': props.block\n };\n classes[(\"btn-\" + (props.type))] = Boolean(props.type);\n classes[(\"btn-\" + (props.size))] = Boolean(props.size);\n // prevent event for disabled links\n var on = {\n click: function click (e) {\n if (props.disabled && e instanceof Event) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n };\n // render params\n var tag, options, slot;\n\n if (props.href) {\n // is native link\n tag = 'a';\n slot = children;\n options = a(data, {\n on: on,\n class: classes,\n attrs: {\n role: 'button',\n href: props.href,\n target: props.target\n }\n });\n } else if (props.to) {\n // is vue router link\n tag = 'router-link';\n slot = children;\n options = a(data, {\n nativeOn: on,\n class: classes,\n props: {\n event: props.disabled ? '' : 'click', // prevent nav while disabled\n to: props.to,\n replace: props.replace,\n append: props.append,\n exact: props.exact\n },\n attrs: {\n role: 'button'\n }\n });\n } else if (props.inputType) {\n // is input checkbox or radio\n tag = 'label';\n options = a(data, {\n on: on,\n class: classes\n });\n slot = [\n h('input', {\n attrs: {\n autocomplete: 'off',\n type: props.inputType,\n checked: isInputActive ? 'checked' : null,\n disabled: props.disabled\n },\n domProps: {\n checked: isInputActive // required\n },\n on: {\n input: function input (evt) {\n evt.stopPropagation();\n },\n change: function change () {\n if (props.inputType === INPUT_TYPE_CHECKBOX) {\n var valueCopied = props.value.slice();\n if (isInputActive) {\n valueCopied.splice(valueCopied.indexOf(props.inputValue), 1);\n } else {\n valueCopied.push(props.inputValue);\n }\n listeners.input(valueCopied);\n } else {\n listeners.input(props.inputValue);\n }\n }\n }\n }),\n children\n ];\n } else if (props.justified) {\n // is in justified btn-group\n tag = BtnGroup;\n options = {};\n slot = [\n h('button', a(data, {\n on: on,\n class: classes,\n attrs: {\n type: props.nativeType,\n disabled: props.disabled\n }\n }), children)\n ];\n } else {\n // is button\n tag = 'button';\n slot = children;\n options = a(data, {\n on: on,\n class: classes,\n attrs: {\n type: props.nativeType,\n disabled: props.disabled\n }\n });\n }\n\n return h(tag, options, slot)\n },\n props: {\n justified: {\n type: Boolean,\n default: false\n },\n type: {\n type: String,\n default: 'default'\n },\n nativeType: {\n type: String,\n default: 'button'\n },\n size: String,\n block: {\n type: Boolean,\n default: false\n },\n active: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n // props\n value: null,\n inputValue: null,\n inputType: {\n type: String,\n validator: function validator (value) {\n return value === INPUT_TYPE_CHECKBOX || value === INPUT_TYPE_RADIO\n }\n }\n }\n};\n\nvar IN$1 = 'in';\n\nvar script$2 = {\n mixins: [Local],\n components: { Btn: Btn },\n props: {\n value: {\n type: Boolean,\n default: false\n },\n title: String,\n size: String,\n backdrop: {\n type: Boolean,\n default: true\n },\n footer: {\n type: Boolean,\n default: true\n },\n header: {\n type: Boolean,\n default: true\n },\n cancelText: String,\n cancelType: {\n type: String,\n default: 'default'\n },\n okText: String,\n okType: {\n type: String,\n default: 'primary'\n },\n dismissBtn: {\n type: Boolean,\n default: true\n },\n transition: {\n type: Number,\n default: 150\n },\n autoFocus: {\n type: Boolean,\n default: false\n },\n keyboard: {\n type: Boolean,\n default: true\n },\n beforeClose: Function,\n zOffset: {\n type: Number,\n default: 20\n },\n appendToBody: {\n type: Boolean,\n default: false\n },\n displayStyle: {\n type: String,\n default: 'block'\n }\n },\n data: function data () {\n return {\n msg: ''\n }\n },\n computed: {\n modalSizeClass: function modalSizeClass () {\n var obj;\n\n return ( obj = {}, obj[(\"modal-\" + (this.size))] = Boolean(this.size), obj )\n }\n },\n watch: {\n value: function value (v) {\n this.$toggle(v);\n }\n },\n mounted: function mounted () {\n removeFromDom(this.$refs.backdrop);\n on(window, EVENTS.MOUSE_DOWN, this.suppressBackgroundClose);\n on(window, EVENTS.KEY_UP, this.onKeyPress);\n if (this.value) {\n this.$toggle(true);\n }\n },\n beforeDestroy: function beforeDestroy () {\n clearTimeout(this.timeoutId);\n removeFromDom(this.$refs.backdrop);\n removeFromDom(this.$el);\n if (getOpenModalNum() === 0) {\n toggleBodyOverflow(true);\n }\n off(window, EVENTS.MOUSE_DOWN, this.suppressBackgroundClose);\n off(window, EVENTS.MOUSE_UP, this.unsuppressBackgroundClose);\n off(window, EVENTS.KEY_UP, this.onKeyPress);\n },\n methods: {\n onKeyPress: function onKeyPress (event) {\n if (this.keyboard && this.value && event.keyCode === 27) {\n var thisModal = this.$refs.backdrop;\n var thisZIndex = thisModal.style.zIndex;\n thisZIndex = thisZIndex && thisZIndex !== 'auto' ? parseInt(thisZIndex) : 0;\n // Find out if this modal is the top most one.\n var modals = getOpenModals();\n var modalsLength = modals.length;\n for (var i = 0; i < modalsLength; i++) {\n if (modals[i] !== thisModal) {\n var zIndex = modals[i].style.zIndex;\n zIndex = zIndex && zIndex !== 'auto' ? parseInt(zIndex) : 0;\n // if any existing modal has higher zIndex, ignore\n if (zIndex > thisZIndex) {\n return\n }\n }\n }\n this.toggle(false);\n }\n },\n toggle: function toggle (show, msg) {\n var this$1 = this;\n\n var shouldClose = true;\n if (isFunction(this.beforeClose)) {\n shouldClose = this.beforeClose(msg);\n }\n\n if (isPromiseSupported()) {\n // Skip the hiding when beforeClose returning falsely value or returned Promise resolves to falsely value\n // Use Promise.resolve to accept both Boolean values and Promises\n Promise.resolve(shouldClose).then(function (shouldClose) {\n // Skip the hiding while show===false\n if (!show && shouldClose) {\n this$1.msg = msg;\n this$1.$emit('input', show);\n }\n });\n } else {\n // Fallback to old version if promise is not supported\n // skip the hiding while show===false & beforeClose returning falsely value\n if (!show && !shouldClose) {\n return\n }\n\n this.msg = msg;\n this.$emit('input', show);\n }\n },\n $toggle: function $toggle (show) {\n var this$1 = this;\n\n var modal = this.$el;\n var backdrop = this.$refs.backdrop;\n clearTimeout(this.timeoutId);\n if (show) {\n // If two modals share the same v-if condition the calculated z-index is incorrect,\n // resulting in popover misbehaviour.\n // solved by adding a nextTick.\n // https://github.com/uiv-lib/uiv/issues/342\n this.$nextTick(function () {\n var alreadyOpenModalNum = getOpenModalNum();\n document.body.appendChild(backdrop);\n if (this$1.appendToBody) {\n document.body.appendChild(modal);\n }\n modal.style.display = this$1.displayStyle;\n modal.scrollTop = 0;\n backdrop.offsetHeight; // force repaint\n toggleBodyOverflow(false);\n addClass(backdrop, IN$1);\n addClass(modal, IN$1);\n // fix z-index for nested modals\n // no need to calculate if no modal is already open\n if (alreadyOpenModalNum > 0) {\n var modalBaseZ = parseInt(getComputedStyle(modal).zIndex) || 1050; // 1050 is default modal z-Index\n var backdropBaseZ = parseInt(getComputedStyle(backdrop).zIndex) || 1040; // 1040 is default backdrop z-Index\n var offset = alreadyOpenModalNum * this$1.zOffset;\n modal.style.zIndex = \"\" + (modalBaseZ + offset);\n backdrop.style.zIndex = \"\" + (backdropBaseZ + offset);\n }\n // z-index fix end\n this$1.timeoutId = setTimeout(function () {\n if (this$1.autoFocus) {\n var btn = this$1.$el.querySelector('[data-action=\"auto-focus\"]');\n if (btn) {\n btn.focus();\n }\n }\n this$1.$emit('show');\n this$1.timeoutId = 0;\n }, this$1.transition);\n });\n } else {\n removeClass(backdrop, IN$1);\n removeClass(modal, IN$1);\n this.timeoutId = setTimeout(function () {\n modal.style.display = 'none';\n removeFromDom(backdrop);\n if (this$1.appendToBody) {\n removeFromDom(modal);\n }\n if (getOpenModalNum() === 0) {\n toggleBodyOverflow(true);\n }\n this$1.$emit('hide', this$1.msg || 'dismiss');\n this$1.msg = '';\n this$1.timeoutId = 0;\n // restore z-index for nested modals\n modal.style.zIndex = '';\n backdrop.style.zIndex = '';\n // z-index fix end\n }, this.transition);\n }\n },\n suppressBackgroundClose: function suppressBackgroundClose (event) {\n if (event && event.target === this.$el) {\n return\n }\n this.isCloseSuppressed = true;\n on(window, 'mouseup', this.unsuppressBackgroundClose);\n },\n unsuppressBackgroundClose: function unsuppressBackgroundClose () {\n var this$1 = this;\n\n if (this.isCloseSuppressed) {\n off(window, 'mouseup', this.unsuppressBackgroundClose);\n setTimeout(function () {\n this$1.isCloseSuppressed = false;\n }, 1);\n }\n },\n backdropClicked: function backdropClicked (event) {\n if (this.backdrop && !this.isCloseSuppressed) {\n this.toggle(false);\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$2 = script$2;\n\n/* template */\nvar __vue_render__$2 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n {\n staticClass: \"modal\",\n class: { fade: _vm.transition > 0 },\n attrs: { tabindex: \"-1\", role: \"dialog\" },\n on: {\n click: function($event) {\n if ($event.target !== $event.currentTarget) {\n return null\n }\n return _vm.backdropClicked($event)\n }\n }\n },\n [\n _c(\n \"div\",\n {\n ref: \"dialog\",\n staticClass: \"modal-dialog\",\n class: _vm.modalSizeClass,\n attrs: { role: \"document\" }\n },\n [\n _c(\"div\", { staticClass: \"modal-content\" }, [\n _vm.header\n ? _c(\n \"div\",\n { staticClass: \"modal-header\" },\n [\n _vm._t(\"header\", [\n _vm.dismissBtn\n ? _c(\n \"button\",\n {\n staticClass: \"close\",\n staticStyle: {\n position: \"relative\",\n \"z-index\": \"1060\"\n },\n attrs: { type: \"button\", \"aria-label\": \"Close\" },\n on: {\n click: function($event) {\n return _vm.toggle(false)\n }\n }\n },\n [\n _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n _vm._v(\"×\")\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"h4\",\n { staticClass: \"modal-title\" },\n [_vm._t(\"title\", [_vm._v(_vm._s(_vm.title))])],\n 2\n )\n ])\n ],\n 2\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"modal-body\" }, [_vm._t(\"default\")], 2),\n _vm._v(\" \"),\n _vm.footer\n ? _c(\n \"div\",\n { staticClass: \"modal-footer\" },\n [\n _vm._t(\"footer\", [\n _c(\n \"btn\",\n {\n attrs: { type: _vm.cancelType },\n on: {\n click: function($event) {\n return _vm.toggle(false, \"cancel\")\n }\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n _vm._s(\n _vm.cancelText || _vm.t(\"uiv.modal.cancel\")\n )\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"btn\",\n {\n attrs: {\n type: _vm.okType,\n \"data-action\": \"auto-focus\"\n },\n on: {\n click: function($event) {\n return _vm.toggle(false, \"ok\")\n }\n }\n },\n [\n _c(\"span\", [\n _vm._v(_vm._s(_vm.okText || _vm.t(\"uiv.modal.ok\")))\n ])\n ]\n )\n ])\n ],\n 2\n )\n : _vm._e()\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", {\n ref: \"backdrop\",\n staticClass: \"modal-backdrop\",\n class: { fade: _vm.transition > 0 }\n })\n ]\n )\n};\nvar __vue_staticRenderFns__$2 = [];\n__vue_render__$2._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$2 = undefined;\n /* scoped */\n var __vue_scope_id__$2 = undefined;\n /* module identifier */\n var __vue_module_identifier__$2 = undefined;\n /* functional template */\n var __vue_is_functional_template__$2 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$2 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$2, staticRenderFns: __vue_staticRenderFns__$2 },\n __vue_inject_styles__$2,\n __vue_script__$2,\n __vue_scope_id__$2,\n __vue_is_functional_template__$2,\n __vue_module_identifier__$2,\n false,\n undefined,\n undefined,\n undefined\n );\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; }\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") { return Array.from(iter); }\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar inBrowser = typeof window !== 'undefined';\nfunction freeze(item) {\n if (Array.isArray(item) || _typeof(item) === 'object') {\n return Object.freeze(item);\n }\n\n return item;\n}\nfunction combinePassengers(transports) {\n var slotProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return transports.reduce(function (passengers, transport) {\n var temp = transport.passengers[0];\n var newPassengers = typeof temp === 'function' ? temp(slotProps) : transport.passengers;\n return passengers.concat(newPassengers);\n }, []);\n}\nfunction stableSort(array, compareFn) {\n return array.map(function (v, idx) {\n return [idx, v];\n }).sort(function (a, b) {\n return compareFn(a[1], b[1]) || a[0] - b[0];\n }).map(function (c) {\n return c[1];\n });\n}\nfunction pick(obj, keys) {\n return keys.reduce(function (acc, key) {\n if (obj.hasOwnProperty(key)) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nvar transports = {};\nvar targets = {};\nvar sources = {};\nvar Wormhole = Vue.extend({\n data: function data() {\n return {\n transports: transports,\n targets: targets,\n sources: sources,\n trackInstances: inBrowser\n };\n },\n methods: {\n open: function open(transport) {\n if (!inBrowser) { return; }\n var to = transport.to,\n from = transport.from,\n passengers = transport.passengers,\n _transport$order = transport.order,\n order = _transport$order === void 0 ? Infinity : _transport$order;\n if (!to || !from || !passengers) { return; }\n var newTransport = {\n to: to,\n from: from,\n passengers: freeze(passengers),\n order: order\n };\n var keys = Object.keys(this.transports);\n\n if (keys.indexOf(to) === -1) {\n Vue.set(this.transports, to, []);\n }\n\n var currentIndex = this.$_getTransportIndex(newTransport); // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n\n var newTransports = this.transports[to].slice(0);\n\n if (currentIndex === -1) {\n newTransports.push(newTransport);\n } else {\n newTransports[currentIndex] = newTransport;\n }\n\n this.transports[to] = stableSort(newTransports, function (a, b) {\n return a.order - b.order;\n });\n },\n close: function close(transport) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var to = transport.to,\n from = transport.from;\n if (!to || !from && force === false) { return; }\n\n if (!this.transports[to]) {\n return;\n }\n\n if (force) {\n this.transports[to] = [];\n } else {\n var index = this.$_getTransportIndex(transport);\n\n if (index >= 0) {\n // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n var newTransports = this.transports[to].slice(0);\n newTransports.splice(index, 1);\n this.transports[to] = newTransports;\n }\n }\n },\n registerTarget: function registerTarget(target, vm, force) {\n if (!inBrowser) { return; }\n\n if (this.trackInstances && !force && this.targets[target]) {\n console.warn(\"[portal-vue]: Target \".concat(target, \" already exists\"));\n }\n\n this.$set(this.targets, target, Object.freeze([vm]));\n },\n unregisterTarget: function unregisterTarget(target) {\n this.$delete(this.targets, target);\n },\n registerSource: function registerSource(source, vm, force) {\n if (!inBrowser) { return; }\n\n if (this.trackInstances && !force && this.sources[source]) {\n console.warn(\"[portal-vue]: source \".concat(source, \" already exists\"));\n }\n\n this.$set(this.sources, source, Object.freeze([vm]));\n },\n unregisterSource: function unregisterSource(source) {\n this.$delete(this.sources, source);\n },\n hasTarget: function hasTarget(to) {\n return !!(this.targets[to] && this.targets[to][0]);\n },\n hasSource: function hasSource(to) {\n return !!(this.sources[to] && this.sources[to][0]);\n },\n hasContentFor: function hasContentFor(to) {\n return !!this.transports[to] && !!this.transports[to].length;\n },\n // Internal\n $_getTransportIndex: function $_getTransportIndex(_ref) {\n var to = _ref.to,\n from = _ref.from;\n\n for (var i in this.transports[to]) {\n if (this.transports[to][i].from === from) {\n return +i;\n }\n }\n\n return -1;\n }\n }\n});\nvar wormhole = new Wormhole(transports);\n\nvar _id = 1;\nvar Portal = Vue.extend({\n name: 'portal',\n props: {\n disabled: {\n type: Boolean\n },\n name: {\n type: String,\n default: function _default() {\n return String(_id++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n }\n },\n created: function created() {\n var _this = this;\n\n this.$nextTick(function () {\n wormhole.registerSource(_this.name, _this);\n });\n },\n mounted: function mounted() {\n if (!this.disabled) {\n this.sendUpdate();\n }\n },\n updated: function updated() {\n if (this.disabled) {\n this.clear();\n } else {\n this.sendUpdate();\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterSource(this.name);\n this.clear();\n },\n watch: {\n to: function to(newValue, oldValue) {\n oldValue && oldValue !== newValue && this.clear(oldValue);\n this.sendUpdate();\n }\n },\n methods: {\n clear: function clear(target) {\n var closer = {\n from: this.name,\n to: target || this.to\n };\n wormhole.close(closer);\n },\n normalizeSlots: function normalizeSlots() {\n return this.$scopedSlots.default ? [this.$scopedSlots.default] : this.$slots.default;\n },\n normalizeOwnChildren: function normalizeOwnChildren(children) {\n return typeof children === 'function' ? children(this.slotProps) : children;\n },\n sendUpdate: function sendUpdate() {\n var slotContent = this.normalizeSlots();\n\n if (slotContent) {\n var transport = {\n from: this.name,\n to: this.to,\n passengers: _toConsumableArray(slotContent),\n order: this.order\n };\n wormhole.open(transport);\n } else {\n this.clear();\n }\n }\n },\n render: function render(h) {\n var children = this.$slots.default || this.$scopedSlots.default || [];\n var Tag = this.tag;\n\n if (children && this.disabled) {\n return children.length <= 1 && this.slim ? this.normalizeOwnChildren(children)[0] : h(Tag, [this.normalizeOwnChildren(children)]);\n } else {\n return this.slim ? h() : h(Tag, {\n class: {\n 'v-portal': true\n },\n style: {\n display: 'none'\n },\n key: 'v-portal-placeholder'\n });\n }\n }\n});\n\nvar PortalTarget = Vue.extend({\n name: 'portalTarget',\n props: {\n multiple: {\n type: Boolean,\n default: false\n },\n name: {\n type: String,\n required: true\n },\n slim: {\n type: Boolean,\n default: false\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n data: function data() {\n return {\n transports: wormhole.transports,\n firstRender: true\n };\n },\n created: function created() {\n var _this = this;\n\n this.$nextTick(function () {\n wormhole.registerTarget(_this.name, _this);\n });\n },\n watch: {\n ownTransports: function ownTransports() {\n this.$emit('change', this.children().length > 0);\n },\n name: function name(newVal, oldVal) {\n /**\r\n * TODO\r\n * This should warn as well ...\r\n */\n wormhole.unregisterTarget(oldVal);\n wormhole.registerTarget(newVal, this);\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n if (this.transition) {\n this.$nextTick(function () {\n // only when we have a transition, because it causes a re-render\n _this2.firstRender = false;\n });\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterTarget(this.name);\n },\n computed: {\n ownTransports: function ownTransports() {\n var transports = this.transports[this.name] || [];\n\n if (this.multiple) {\n return transports;\n }\n\n return transports.length === 0 ? [] : [transports[transports.length - 1]];\n },\n passengers: function passengers() {\n return combinePassengers(this.ownTransports, this.slotProps);\n }\n },\n methods: {\n // can't be a computed prop because it has to \"react\" to $slot changes.\n children: function children() {\n return this.passengers.length !== 0 ? this.passengers : this.$scopedSlots.default ? this.$scopedSlots.default(this.slotProps) : this.$slots.default || [];\n },\n // can't be a computed prop because it has to \"react\" to this.children().\n noWrapper: function noWrapper() {\n var noWrapper = this.slim && !this.transition;\n\n if (noWrapper && this.children().length > 1) {\n console.warn('[portal-vue]: PortalTarget with `slim` option received more than one child element.');\n }\n\n return noWrapper;\n }\n },\n render: function render(h) {\n var noWrapper = this.noWrapper();\n var children = this.children();\n var Tag = this.transition || this.tag;\n return noWrapper ? children[0] : this.slim && !Tag ? h() : h(Tag, {\n props: {\n // if we have a transition component, pass the tag if it exists\n tag: this.transition && this.tag ? this.tag : undefined\n },\n class: {\n 'vue-portal-target': true\n }\n }, children);\n }\n});\n\nvar _id$1 = 0;\nvar portalProps = ['disabled', 'name', 'order', 'slim', 'slotProps', 'tag', 'to'];\nvar targetProps = ['multiple', 'transition'];\nVue.extend({\n name: 'MountingPortal',\n inheritAttrs: false,\n props: {\n append: {\n type: [Boolean, String]\n },\n bail: {\n type: Boolean\n },\n mountTo: {\n type: String,\n required: true\n },\n // Portal\n disabled: {\n type: Boolean\n },\n // name for the portal\n name: {\n type: String,\n default: function _default() {\n return 'mounted_' + String(_id$1++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n // name for the target\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n },\n // Target\n multiple: {\n type: Boolean,\n default: false\n },\n targetSlim: {\n type: Boolean\n },\n targetSlotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n targetTag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n created: function created() {\n if (typeof document === 'undefined') { return; }\n var el = document.querySelector(this.mountTo);\n\n if (!el) {\n console.error(\"[portal-vue]: Mount Point '\".concat(this.mountTo, \"' not found in document\"));\n return;\n }\n\n var props = this.$props; // Target already exists\n\n if (wormhole.targets[props.name]) {\n if (props.bail) {\n console.warn(\"[portal-vue]: Target \".concat(props.name, \" is already mounted.\\n Aborting because 'bail: true' is set\"));\n } else {\n this.portalTarget = wormhole.targets[props.name];\n }\n\n return;\n }\n\n var append = props.append;\n\n if (append) {\n var type = typeof append === 'string' ? append : 'DIV';\n var mountEl = document.createElement(type);\n el.appendChild(mountEl);\n el = mountEl;\n } // get props for target from $props\n // we have to rename a few of them\n\n\n var _props = pick(this.$props, targetProps);\n\n _props.slim = this.targetSlim;\n _props.tag = this.targetTag;\n _props.slotProps = this.targetSlotProps;\n _props.name = this.to;\n this.portalTarget = new PortalTarget({\n el: el,\n parent: this.$parent || this,\n propsData: _props\n });\n },\n beforeDestroy: function beforeDestroy() {\n var target = this.portalTarget;\n\n if (this.append) {\n var el = target.$el;\n el.parentNode.removeChild(el);\n }\n\n target.$destroy();\n },\n render: function render(h) {\n if (!this.portalTarget) {\n console.warn(\"[portal-vue] Target wasn't mounted\");\n return h();\n } // if there's no \"manual\" scoped slot, so we create a ourselves\n\n\n if (!this.$scopedSlots.manual) {\n var props = pick(this.$props, portalProps);\n return h(Portal, {\n props: props,\n attrs: this.$attrs,\n on: this.$listeners,\n scopedSlots: this.$scopedSlots\n }, this.$slots.default);\n } // else, we render the scoped slot\n\n\n var content = this.$scopedSlots.manual({\n to: this.to\n }); // if user used for the scoped slot\n // content will be an array\n\n if (Array.isArray(content)) {\n content = content[0];\n }\n\n if (!content) { return h(); }\n return content;\n }\n});\n\nvar ACTIVE_CLASS = 'active';\nvar IN_CLASS = 'in';\n\nvar script$3 = {\n components: { Portal: Portal },\n props: {\n title: {\n type: String,\n default: 'Tab Title'\n },\n disabled: {\n type: Boolean,\n default: false\n },\n tabClasses: {\n type: Object,\n default: function () { return {} }\n },\n group: String,\n pullRight: {\n type: Boolean,\n default: false\n },\n hidden: {\n type: Boolean,\n default: false\n }\n },\n data: function data () {\n return {\n active: true,\n transition: 150\n }\n },\n watch: {\n active: function active (active$1) {\n var this$1 = this;\n\n if (active$1) {\n setTimeout(function () {\n addClass(this$1.$el, ACTIVE_CLASS);\n this$1.$el.offsetHeight;\n addClass(this$1.$el, IN_CLASS);\n try {\n this$1.$parent.$emit('changed', this$1.$parent.activeIndex);\n } catch (e) {\n throw new Error(' parent must be .')\n }\n }, this.transition);\n } else {\n removeClass(this.$el, IN_CLASS);\n setTimeout(function () {\n removeClass(this$1.$el, ACTIVE_CLASS);\n }, this.transition);\n }\n }\n },\n created: function created () {\n try {\n this.$parent.tabs.push(this);\n } catch (e) {\n throw new Error(' parent must be .')\n }\n },\n beforeDestroy: function beforeDestroy () {\n var tabs = this.$parent && this.$parent.tabs;\n spliceIfExist(tabs, this);\n },\n methods: {\n show: function show () {\n var this$1 = this;\n\n this.$nextTick(function () {\n addClass(this$1.$el, ACTIVE_CLASS);\n addClass(this$1.$el, IN_CLASS);\n });\n }\n }\n};\n\n/* script */\nvar __vue_script__$3 = script$3;\n\n/* template */\nvar __vue_render__$3 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n {\n staticClass: \"tab-pane\",\n class: { fade: _vm.transition > 0 },\n attrs: { role: \"tabpanel\" }\n },\n [\n _vm._t(\"default\"),\n _vm._v(\" \"),\n _c(\"portal\", { attrs: { to: _vm._uid.toString() } }, [_vm._t(\"title\")], 2)\n ],\n 2\n )\n};\nvar __vue_staticRenderFns__$3 = [];\n__vue_render__$3._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$3 = undefined;\n /* scoped */\n var __vue_scope_id__$3 = undefined;\n /* module identifier */\n var __vue_module_identifier__$3 = undefined;\n /* functional template */\n var __vue_is_functional_template__$3 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$3 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$3, staticRenderFns: __vue_staticRenderFns__$3 },\n __vue_inject_styles__$3,\n __vue_script__$3,\n __vue_scope_id__$3,\n __vue_is_functional_template__$3,\n __vue_module_identifier__$3,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar BEFORE_CHANGE_EVENT = 'before-change';\n\nvar script$4 = {\n components: { Dropdown: Dropdown, PortalTarget: PortalTarget },\n props: {\n value: {\n type: Number,\n validator: function (v) { return v >= 0; }\n },\n transition: {\n type: Number,\n default: 150\n },\n justified: Boolean,\n pills: Boolean,\n stacked: Boolean,\n customNavClass: null,\n customContentClass: null\n },\n data: function data () {\n return {\n tabs: [],\n activeIndex: 0 // Make v-model not required\n }\n },\n watch: {\n value: {\n immediate: true,\n handler: function handler (value) {\n if (isNumber(value)) {\n this.activeIndex = value;\n this.selectCurrent();\n }\n }\n },\n tabs: function tabs (tabs$1) {\n var this$1 = this;\n\n tabs$1.forEach(function (tab, index) {\n tab.transition = this$1.transition;\n if (index === this$1.activeIndex) {\n tab.show();\n }\n });\n this.selectCurrent();\n }\n },\n computed: {\n navClasses: function navClasses () {\n var obj;\n\n var tabClasses = {\n nav: true,\n 'nav-justified': this.justified,\n 'nav-tabs': !this.pills,\n 'nav-pills': this.pills,\n 'nav-stacked': this.stacked && this.pills\n };\n var customNavClass = this.customNavClass;\n if (isExist(customNavClass)) {\n if (isString(customNavClass)) {\n return assign({}, tabClasses, ( obj = {}, obj[customNavClass] = true, obj ))\n } else {\n return assign({}, tabClasses, customNavClass)\n }\n } else {\n return tabClasses\n }\n },\n contentClasses: function contentClasses () {\n var obj;\n\n var contentClasses = {\n 'tab-content': true\n };\n var customContentClass = this.customContentClass;\n if (isExist(customContentClass)) {\n if (isString(customContentClass)) {\n return assign({}, contentClasses, ( obj = {}, obj[customContentClass] = true, obj ))\n } else {\n return assign({}, contentClasses, customContentClass)\n }\n } else {\n return contentClasses\n }\n },\n groupedTabs: function groupedTabs () {\n var tabs = [];\n var hash = {};\n this.tabs.forEach(function (tab) {\n if (tab.group) {\n if (hasOwnProperty(hash, tab.group)) {\n tabs[hash[tab.group]].tabs.push(tab);\n } else {\n tabs.push({\n tabs: [tab],\n group: tab.group\n });\n hash[tab.group] = tabs.length - 1;\n }\n if (tab.active) {\n tabs[hash[tab.group]].active = true;\n }\n if (tab.pullRight) {\n tabs[hash[tab.group]].pullRight = true;\n }\n } else {\n tabs.push(tab);\n }\n });\n tabs = tabs.map(function (tab) {\n if (Array.isArray(tab.tabs)) {\n tab.hidden = tab.tabs.filter(function (v) { return v.hidden; }).length === tab.tabs.length;\n }\n return tab\n });\n return tabs\n }\n },\n methods: {\n getTabClasses: function getTabClasses (tab, isSubTab) {\n if ( isSubTab === void 0 ) isSubTab = false;\n\n var defaultClasses = {\n active: tab.active,\n disabled: tab.disabled,\n 'pull-right': tab.pullRight && !isSubTab\n };\n\n // return with new classes added to tab\n return assign(defaultClasses, tab.tabClasses)\n },\n selectCurrent: function selectCurrent () {\n var this$1 = this;\n\n var found = false;\n this.tabs.forEach(function (tab, index) {\n if (index === this$1.activeIndex) {\n found = !tab.active;\n tab.active = true;\n } else {\n tab.active = false;\n }\n });\n if (found) {\n this.$emit('change', this.activeIndex);\n }\n },\n selectValidate: function selectValidate (index) {\n var this$1 = this;\n\n if (isFunction(this.$listeners[BEFORE_CHANGE_EVENT])) {\n this.$emit(BEFORE_CHANGE_EVENT, this.activeIndex, index, function (result) {\n if (!isExist(result)) {\n this$1.$select(index);\n }\n });\n } else {\n this.$select(index);\n }\n },\n select: function select (index) {\n if (!this.tabs[index].disabled && index !== this.activeIndex) {\n this.selectValidate(index);\n }\n },\n $select: function $select (index) {\n if (isNumber(this.value)) {\n this.$emit('input', index);\n } else {\n this.activeIndex = index;\n this.selectCurrent();\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$4 = script$4;\n\n/* template */\nvar __vue_render__$4 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"section\", [\n _c(\n \"ul\",\n { class: _vm.navClasses, attrs: { role: \"tablist\" } },\n [\n _vm._l(_vm.groupedTabs, function(tab, index) {\n return [\n tab.tabs\n ? _c(\n \"dropdown\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !tab.hidden,\n expression: \"!tab.hidden\"\n }\n ],\n class: _vm.getTabClasses(tab),\n attrs: { role: \"presentation\", tag: \"li\" }\n },\n [\n _c(\n \"a\",\n {\n staticClass: \"dropdown-toggle\",\n attrs: { role: \"tab\", href: \"#\" },\n on: {\n click: function($event) {\n $event.preventDefault();\n }\n }\n },\n [\n _vm._v(_vm._s(tab.group) + \" \"),\n _c(\"span\", { staticClass: \"caret\" })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"template\",\n { slot: \"dropdown\" },\n _vm._l(tab.tabs, function(subTab) {\n return _c(\n \"li\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !subTab.hidden,\n expression: \"!subTab.hidden\"\n }\n ],\n class: _vm.getTabClasses(subTab, true)\n },\n [\n _c(\n \"a\",\n {\n attrs: { href: \"#\" },\n on: {\n click: function($event) {\n $event.preventDefault();\n _vm.select(_vm.tabs.indexOf(subTab));\n }\n }\n },\n [_vm._v(_vm._s(subTab.title))]\n )\n ]\n )\n }),\n 0\n )\n ],\n 2\n )\n : _c(\n \"li\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !tab.hidden,\n expression: \"!tab.hidden\"\n }\n ],\n class: _vm.getTabClasses(tab),\n attrs: { role: \"presentation\" }\n },\n [\n tab.$slots.title\n ? _c(\n \"a\",\n {\n attrs: { role: \"tab\", href: \"#\" },\n on: {\n click: function($event) {\n $event.preventDefault();\n _vm.select(_vm.tabs.indexOf(tab));\n }\n }\n },\n [\n _c(\"portal-target\", {\n attrs: { name: tab._uid.toString() }\n })\n ],\n 1\n )\n : _c(\"a\", {\n attrs: { role: \"tab\", href: \"#\" },\n domProps: { textContent: _vm._s(tab.title) },\n on: {\n click: function($event) {\n $event.preventDefault();\n _vm.select(_vm.tabs.indexOf(tab));\n }\n }\n })\n ]\n )\n ]\n }),\n _vm._v(\" \"),\n !_vm.justified && _vm.$slots[\"nav-right\"]\n ? _c(\"li\", { staticClass: \"pull-right\" }, [_vm._t(\"nav-right\")], 2)\n : _vm._e()\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\"div\", { class: _vm.contentClasses }, [_vm._t(\"default\")], 2)\n ])\n};\nvar __vue_staticRenderFns__$4 = [];\n__vue_render__$4._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$4 = undefined;\n /* scoped */\n var __vue_scope_id__$4 = undefined;\n /* module identifier */\n var __vue_module_identifier__$4 = undefined;\n /* functional template */\n var __vue_is_functional_template__$4 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$4 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$4, staticRenderFns: __vue_staticRenderFns__$4 },\n __vue_inject_styles__$4,\n __vue_script__$4,\n __vue_scope_id__$4,\n __vue_is_functional_template__$4,\n __vue_module_identifier__$4,\n false,\n undefined,\n undefined,\n undefined\n );\n\nfunction pad (value, num) {\n value = value + '';\n for (var i = num - value.length; i > 0; i--) {\n value = '0' + value;\n }\n return value\n}\n\nvar monthNames = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n];\n\n/**\n * Get total days number in a month.\n * because we're using 0 as the day so that it returns the last day\n * of the last month, so you have to add 1 to the month number\n * so it returns the correct amount of days.\n * https://stackoverflow.com/questions/1184334/get-number-days-in-a-specified-month-using-javascript\n * @param month 0-based\n * @param year\n * @returns {number}\n */\nfunction daysInMonth (month, year) {\n return new Date(year, month + 1, 0).getDate()\n}\n\nfunction stringify (date, format) {\n try {\n var year = date.getFullYear();\n var month = date.getMonth() + 1;\n var day = date.getDate();\n var monthName = monthNames[month - 1];\n return format\n .replace(/yyyy/g, year)\n .replace(/MMMM/g, monthName)\n .replace(/MMM/g, monthName.substring(0, 3))\n .replace(/MM/g, pad(month, 2))\n .replace(/dd/g, pad(day, 2))\n .replace(/yy/g, year)\n .replace(/M(?!a)/g, month)\n .replace(/d/g, day)\n } catch (e) {\n return ''\n }\n}\n\nfunction convertDateToUTC (date) {\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds())\n}\n\n/**\n * https://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php\n * For a given date, get the ISO week number\n * Based on information at:\n * http://www.merlyn.demon.co.uk/weekcalc.htm#WNR\n *\n * Algorithm is to find nearest thursday, it's year\n * is the year of the week number. Then get weeks\n * between that date and the first day of that year.\n *\n * Note that dates in one year can be weeks of previous\n * or next year, overlap is up to 3 days.\n *\n * e.g. 2014/12/29 is Monday in week 1 of 2015\n * 2012/1/1 is Sunday in week 52 of 2011\n *\n * @param {number} d.year year of date\n * @param {number} d.month month of date\n * @param {number} d.date date of date\n * @returns {number}\n */\nfunction getWeekNumber (d) {\n // Copy date so don't modify original\n var _d = new Date(Date.UTC(d.year, d.month, d.date));\n // Set to nearest Thursday: current date + 4 - current day number\n // Make Sunday's day number 7\n _d.setUTCDate(_d.getUTCDate() + 4 - (_d.getUTCDay() || 7));\n // Get first day of year\n var yearStart = new Date(Date.UTC(_d.getUTCFullYear(), 0, 1));\n // Calculate full weeks to nearest Thursday\n return Math.ceil((((_d - yearStart) / 86400000) + 1) / 7)\n}\n\nvar script$5 = {\n mixins: [Local],\n props: {\n month: Number,\n year: Number,\n date: Date,\n today: Date,\n limit: Object,\n weekStartsWith: Number,\n iconControlLeft: String,\n iconControlRight: String,\n dateClass: Function,\n yearMonthFormatter: Function,\n weekNumbers: Boolean\n },\n components: { Btn: Btn },\n computed: {\n weekDays: function weekDays () {\n var days = [];\n var firstDay = this.weekStartsWith;\n while (days.length < 7) {\n days.push(firstDay++);\n if (firstDay > 6) {\n firstDay = 0;\n }\n }\n return days\n },\n yearMonthStr: function yearMonthStr () {\n if (this.yearMonthFormatter) {\n return this.yearMonthFormatter(this.year, this.month)\n } else {\n return isExist(this.month) ? ((this.year) + \" \" + (this.t((\"uiv.datePicker.month\" + (this.month + 1))))) : this.year\n }\n },\n monthDayRows: function monthDayRows () {\n var rows = [];\n var firstDay = new Date(this.year, this.month, 1);\n var prevMonthLastDate = new Date(this.year, this.month, 0).getDate();\n var startIndex = firstDay.getDay();\n // console.log(startIndex)\n var daysNum = daysInMonth(this.month, this.year);\n var weekOffset = 0;\n if (this.weekStartsWith > startIndex) {\n weekOffset = 7 - this.weekStartsWith;\n } else {\n weekOffset = 0 - this.weekStartsWith;\n }\n // console.log(prevMonthLastDate, startIndex, daysNum)\n for (var i = 0; i < 6; i++) {\n rows.push([]);\n for (var j = 0 - weekOffset; j < 7 - weekOffset; j++) {\n var currentIndex = i * 7 + j;\n var date = { year: this.year, disabled: false };\n // date in and not in current month\n if (currentIndex < startIndex) {\n date.date = prevMonthLastDate - startIndex + currentIndex + 1;\n if (this.month > 0) {\n date.month = this.month - 1;\n } else {\n date.month = 11;\n date.year--;\n }\n } else if (currentIndex < startIndex + daysNum) {\n date.date = currentIndex - startIndex + 1;\n date.month = this.month;\n } else {\n date.date = currentIndex - startIndex - daysNum + 1;\n if (this.month < 11) {\n date.month = this.month + 1;\n } else {\n date.month = 0;\n date.year++;\n }\n }\n // process limit dates\n var dateObj = new Date(date.year, date.month, date.date);\n var afterFrom = true;\n var beforeTo = true;\n if (this.limit && this.limit.from) {\n afterFrom = dateObj >= this.limit.from;\n }\n if (this.limit && this.limit.to) {\n beforeTo = dateObj < this.limit.to;\n }\n date.disabled = !afterFrom || !beforeTo;\n if (isFunction(this.dateClass)) {\n date.classes = this.dateClass(dateObj, {\n currentMonth: this.month,\n currentYear: this.year\n });\n } else {\n date.classes = '';\n }\n rows[i].push(date);\n }\n }\n return rows\n }\n },\n methods: {\n getWeekNumber: getWeekNumber,\n tWeekName: function tWeekName (index) {\n return this.t((\"uiv.datePicker.week\" + index))\n },\n getBtnType: function getBtnType (date) {\n if (this.date &&\n date.date === this.date.getDate() &&\n date.month === this.date.getMonth() &&\n date.year === this.date.getFullYear()) {\n return 'primary'\n } else if (date.date === this.today.getDate() &&\n date.month === this.today.getMonth() &&\n date.year === this.today.getFullYear()) {\n return 'info'\n } else {\n return 'default'\n }\n },\n select: function select (date) {\n this.$emit('date-change', date);\n },\n goPrevMonth: function goPrevMonth () {\n var month = this.month;\n var year = this.year;\n if (this.month > 0) {\n month--;\n } else {\n month = 11;\n year--;\n this.$emit('year-change', year);\n }\n this.$emit('month-change', month);\n },\n goNextMonth: function goNextMonth () {\n var month = this.month;\n var year = this.year;\n if (this.month < 11) {\n month++;\n } else {\n month = 0;\n year++;\n this.$emit('year-change', year);\n }\n this.$emit('month-change', month);\n },\n changeView: function changeView () {\n this.$emit('view-change', 'm');\n }\n }\n};\n\n/* script */\nvar __vue_script__$5 = script$5;\n\n/* template */\nvar __vue_render__$5 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"table\",\n { staticStyle: { width: \"100%\" }, attrs: { role: \"grid\" } },\n [\n _c(\"thead\", [\n _c(\"tr\", [\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-pager-prev\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" },\n on: { click: _vm.goPrevMonth }\n },\n [_c(\"i\", { class: _vm.iconControlLeft })]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"td\",\n { attrs: { colspan: _vm.weekNumbers ? 6 : 5 } },\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-title\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" },\n on: { click: _vm.changeView }\n },\n [_c(\"b\", [_vm._v(_vm._s(_vm.yearMonthStr))])]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-pager-next\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" },\n on: { click: _vm.goNextMonth }\n },\n [_c(\"i\", { class: _vm.iconControlRight })]\n )\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"tr\",\n { attrs: { align: \"center\" } },\n [\n _vm.weekNumbers ? _c(\"td\") : _vm._e(),\n _vm._v(\" \"),\n _vm._l(_vm.weekDays, function(day) {\n return _c(\"td\", { attrs: { width: \"14.2857142857%\" } }, [\n _c(\"small\", { staticClass: \"uiv-datepicker-week\" }, [\n _vm._v(_vm._s(_vm.tWeekName(day === 0 ? 7 : day)))\n ])\n ])\n })\n ],\n 2\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"tbody\",\n _vm._l(_vm.monthDayRows, function(row) {\n return _c(\n \"tr\",\n [\n _vm.weekNumbers\n ? _c(\n \"td\",\n {\n staticClass: \"text-center\",\n staticStyle: { \"border-right\": \"1px solid #eee\" }\n },\n [\n _c(\"small\", { staticClass: \"text-muted\" }, [\n _vm._v(\n _vm._s(_vm.getWeekNumber(row[_vm.weekStartsWith]))\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm._l(row, function(date) {\n return _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n class: date.classes,\n staticStyle: { border: \"none\" },\n attrs: {\n block: \"\",\n size: \"sm\",\n \"data-action\": \"select\",\n type: _vm.getBtnType(date),\n disabled: date.disabled\n },\n on: {\n click: function($event) {\n return _vm.select(date)\n }\n }\n },\n [\n _c(\n \"span\",\n {\n class: { \"text-muted\": _vm.month !== date.month },\n attrs: { \"data-action\": \"select\" }\n },\n [_vm._v(_vm._s(date.date))]\n )\n ]\n )\n ],\n 1\n )\n })\n ],\n 2\n )\n }),\n 0\n )\n ]\n )\n};\nvar __vue_staticRenderFns__$5 = [];\n__vue_render__$5._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$5 = undefined;\n /* scoped */\n var __vue_scope_id__$5 = undefined;\n /* module identifier */\n var __vue_module_identifier__$5 = undefined;\n /* functional template */\n var __vue_is_functional_template__$5 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$5 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$5, staticRenderFns: __vue_staticRenderFns__$5 },\n __vue_inject_styles__$5,\n __vue_script__$5,\n __vue_scope_id__$5,\n __vue_is_functional_template__$5,\n __vue_module_identifier__$5,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$6 = {\n components: { Btn: Btn },\n mixins: [Local],\n props: {\n month: Number,\n year: Number,\n iconControlLeft: String,\n iconControlRight: String\n },\n data: function data () {\n return {\n rows: []\n }\n },\n mounted: function mounted () {\n for (var i = 0; i < 4; i++) {\n this.rows.push([]);\n for (var j = 0; j < 3; j++) {\n this.rows[i].push(i * 3 + j + 1);\n }\n }\n },\n methods: {\n tCell: function tCell (cell) {\n return this.t((\"uiv.datePicker.month\" + cell))\n },\n getBtnClass: function getBtnClass (month) {\n if (month === this.month) {\n return 'primary'\n } else {\n return 'default'\n }\n },\n goPrevYear: function goPrevYear () {\n this.$emit('year-change', this.year - 1);\n },\n goNextYear: function goNextYear () {\n this.$emit('year-change', this.year + 1);\n },\n changeView: function changeView (monthIndex) {\n if (isExist(monthIndex)) {\n this.$emit('month-change', monthIndex);\n this.$emit('view-change', 'd');\n } else {\n this.$emit('view-change', 'y');\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$6 = script$6;\n\n/* template */\nvar __vue_render__$6 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"table\",\n { staticStyle: { width: \"100%\" }, attrs: { role: \"grid\" } },\n [\n _c(\"thead\", [\n _c(\"tr\", [\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-pager-prev\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" },\n on: { click: _vm.goPrevYear }\n },\n [_c(\"i\", { class: _vm.iconControlLeft })]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"td\",\n { attrs: { colspan: \"4\" } },\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-title\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" },\n on: {\n click: function($event) {\n return _vm.changeView()\n }\n }\n },\n [_c(\"b\", [_vm._v(_vm._s(_vm.year))])]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-pager-next\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" },\n on: { click: _vm.goNextYear }\n },\n [_c(\"i\", { class: _vm.iconControlRight })]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\n \"tbody\",\n _vm._l(_vm.rows, function(row, i) {\n return _c(\n \"tr\",\n _vm._l(row, function(month, j) {\n return _c(\n \"td\",\n { attrs: { colspan: \"2\", width: \"33.333333%\" } },\n [\n _c(\n \"btn\",\n {\n staticStyle: { border: \"none\" },\n attrs: {\n block: \"\",\n size: \"sm\",\n type: _vm.getBtnClass(i * 3 + j)\n },\n on: {\n click: function($event) {\n return _vm.changeView(i * 3 + j)\n }\n }\n },\n [_c(\"span\", [_vm._v(_vm._s(_vm.tCell(month)))])]\n )\n ],\n 1\n )\n }),\n 0\n )\n }),\n 0\n )\n ]\n )\n};\nvar __vue_staticRenderFns__$6 = [];\n__vue_render__$6._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$6 = undefined;\n /* scoped */\n var __vue_scope_id__$6 = undefined;\n /* module identifier */\n var __vue_module_identifier__$6 = undefined;\n /* functional template */\n var __vue_is_functional_template__$6 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$6 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$6, staticRenderFns: __vue_staticRenderFns__$6 },\n __vue_inject_styles__$6,\n __vue_script__$6,\n __vue_scope_id__$6,\n __vue_is_functional_template__$6,\n __vue_module_identifier__$6,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$7 = {\n components: { Btn: Btn },\n props: {\n year: Number,\n iconControlLeft: String,\n iconControlRight: String\n },\n computed: {\n rows: function rows () {\n var rows = [];\n var yearGroupStart = this.year - this.year % 20;\n for (var i = 0; i < 4; i++) {\n rows.push([]);\n for (var j = 0; j < 5; j++) {\n rows[i].push(yearGroupStart + i * 5 + j);\n }\n }\n return rows\n },\n yearStr: function yearStr () {\n var start = this.year - this.year % 20;\n return (start + \" ~ \" + (start + 19))\n }\n },\n methods: {\n getBtnClass: function getBtnClass (year) {\n if (year === this.year) {\n return 'primary'\n } else {\n return 'default'\n }\n },\n goPrevYear: function goPrevYear () {\n this.$emit('year-change', this.year - 20);\n },\n goNextYear: function goNextYear () {\n this.$emit('year-change', this.year + 20);\n },\n changeView: function changeView (year) {\n this.$emit('year-change', year);\n this.$emit('view-change', 'm');\n }\n }\n};\n\n/* script */\nvar __vue_script__$7 = script$7;\n\n/* template */\nvar __vue_render__$7 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"table\",\n { staticStyle: { width: \"100%\" }, attrs: { role: \"grid\" } },\n [\n _c(\"thead\", [\n _c(\"tr\", [\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-pager-prev\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" },\n on: { click: _vm.goPrevYear }\n },\n [_c(\"i\", { class: _vm.iconControlLeft })]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"td\",\n { attrs: { colspan: \"3\" } },\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-title\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" }\n },\n [_c(\"b\", [_vm._v(_vm._s(_vm.yearStr))])]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n staticClass: \"uiv-datepicker-pager-next\",\n staticStyle: { border: \"none\" },\n attrs: { block: \"\", size: \"sm\" },\n on: { click: _vm.goNextYear }\n },\n [_c(\"i\", { class: _vm.iconControlRight })]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\n \"tbody\",\n _vm._l(_vm.rows, function(row) {\n return _c(\n \"tr\",\n _vm._l(row, function(year) {\n return _c(\n \"td\",\n { attrs: { width: \"20%\" } },\n [\n _c(\n \"btn\",\n {\n staticStyle: { border: \"none\" },\n attrs: {\n block: \"\",\n size: \"sm\",\n type: _vm.getBtnClass(year)\n },\n on: {\n click: function($event) {\n return _vm.changeView(year)\n }\n }\n },\n [_c(\"span\", [_vm._v(_vm._s(year))])]\n )\n ],\n 1\n )\n }),\n 0\n )\n }),\n 0\n )\n ]\n )\n};\nvar __vue_staticRenderFns__$7 = [];\n__vue_render__$7._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$7 = undefined;\n /* scoped */\n var __vue_scope_id__$7 = undefined;\n /* module identifier */\n var __vue_module_identifier__$7 = undefined;\n /* functional template */\n var __vue_is_functional_template__$7 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$7 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$7, staticRenderFns: __vue_staticRenderFns__$7 },\n __vue_inject_styles__$7,\n __vue_script__$7,\n __vue_scope_id__$7,\n __vue_is_functional_template__$7,\n __vue_module_identifier__$7,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$8 = {\n mixins: [Local],\n components: { DateView: __vue_component__$5, MonthView: __vue_component__$6, YearView: __vue_component__$7, Btn: Btn },\n props: {\n value: null,\n width: {\n type: Number,\n default: 270\n },\n todayBtn: {\n type: Boolean,\n default: true\n },\n clearBtn: {\n type: Boolean,\n default: true\n },\n closeOnSelected: {\n type: Boolean,\n default: true\n },\n limitFrom: null,\n limitTo: null,\n format: {\n type: String,\n default: 'yyyy-MM-dd'\n },\n initialView: {\n type: String,\n default: 'd'\n },\n dateParser: {\n type: Function,\n default: Date.parse\n },\n dateClass: Function,\n yearMonthFormatter: Function,\n weekStartsWith: {\n type: Number,\n default: 0,\n validator: function validator (value) {\n return value >= 0 && value <= 6\n }\n },\n weekNumbers: Boolean,\n iconControlLeft: {\n type: String,\n default: 'glyphicon glyphicon-chevron-left'\n },\n iconControlRight: {\n type: String,\n default: 'glyphicon glyphicon-chevron-right'\n }\n },\n data: function data () {\n return {\n show: false,\n now: new Date(),\n currentMonth: 0,\n currentYear: 0,\n view: 'd'\n }\n },\n computed: {\n valueDateObj: function valueDateObj () {\n var ts = this.dateParser(this.value);\n if (isNaN(ts)) {\n return null\n } else {\n var date = new Date(ts);\n if (date.getHours() !== 0) {\n date = new Date(ts + date.getTimezoneOffset() * 60 * 1000);\n }\n return date\n }\n },\n pickerStyle: function pickerStyle () {\n return {\n width: this.width + 'px'\n }\n },\n pickerClass: function pickerClass () {\n return {\n 'uiv-datepicker': true,\n 'uiv-datepicker-date': this.view === 'd',\n 'uiv-datepicker-month': this.view === 'm',\n 'uiv-datepicker-year': this.view === 'y'\n }\n },\n limit: function limit () {\n var limit = {};\n if (this.limitFrom) {\n var limitFrom = this.dateParser(this.limitFrom);\n if (!isNaN(limitFrom)) {\n limitFrom = convertDateToUTC(new Date(limitFrom));\n limitFrom.setHours(0, 0, 0, 0);\n limit.from = limitFrom;\n }\n }\n if (this.limitTo) {\n var limitTo = this.dateParser(this.limitTo);\n if (!isNaN(limitTo)) {\n limitTo = convertDateToUTC(new Date(limitTo));\n limitTo.setHours(0, 0, 0, 0);\n limit.to = limitTo;\n }\n }\n return limit\n }\n },\n mounted: function mounted () {\n if (this.value) {\n this.setMonthAndYearByValue(this.value);\n } else {\n this.currentMonth = this.now.getMonth();\n this.currentYear = this.now.getFullYear();\n this.view = this.initialView;\n }\n },\n watch: {\n value: function value (val, oldVal) {\n this.setMonthAndYearByValue(val, oldVal);\n }\n },\n methods: {\n setMonthAndYearByValue: function setMonthAndYearByValue (val, oldVal) {\n var ts = this.dateParser(val);\n if (!isNaN(ts)) {\n var date = new Date(ts);\n if (date.getHours() !== 0) {\n date = new Date(ts + date.getTimezoneOffset() * 60 * 1000);\n }\n if (this.limit && ((this.limit.from && date < this.limit.from) || (this.limit.to && date >= this.limit.to))) {\n this.$emit('input', oldVal || '');\n } else {\n this.currentMonth = date.getMonth();\n this.currentYear = date.getFullYear();\n }\n }\n },\n onMonthChange: function onMonthChange (month) {\n this.currentMonth = month;\n },\n onYearChange: function onYearChange (year) {\n this.currentYear = year;\n this.currentMonth = undefined;\n },\n onDateChange: function onDateChange (date) {\n if (date && isNumber(date.date) && isNumber(date.month) && isNumber(date.year)) {\n var _date = new Date(date.year, date.month, date.date);\n this.$emit('input', this.format ? stringify(_date, this.format) : _date);\n // if the input event trigger nothing (same value)\n // manually correct\n this.currentMonth = date.month;\n this.currentYear = date.year;\n } else {\n this.$emit('input', '');\n }\n },\n onViewChange: function onViewChange (view) {\n this.view = view;\n },\n selectToday: function selectToday () {\n this.view = 'd';\n this.onDateChange({\n date: this.now.getDate(),\n month: this.now.getMonth(),\n year: this.now.getFullYear()\n });\n },\n clearSelect: function clearSelect () {\n this.currentMonth = this.now.getMonth();\n this.currentYear = this.now.getFullYear();\n this.view = this.initialView;\n this.onDateChange();\n },\n onPickerClick: function onPickerClick (event) {\n if (event.target.getAttribute('data-action') !== 'select' || !this.closeOnSelected) {\n event.stopPropagation();\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$8 = script$8;\n\n/* template */\nvar __vue_render__$8 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n {\n class: _vm.pickerClass,\n style: _vm.pickerStyle,\n attrs: { \"data-role\": \"date-picker\" },\n on: { click: _vm.onPickerClick }\n },\n [\n _c(\"date-view\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.view === \"d\",\n expression: \"view==='d'\"\n }\n ],\n attrs: {\n month: _vm.currentMonth,\n year: _vm.currentYear,\n date: _vm.valueDateObj,\n today: _vm.now,\n limit: _vm.limit,\n \"week-starts-with\": _vm.weekStartsWith,\n \"icon-control-left\": _vm.iconControlLeft,\n \"icon-control-right\": _vm.iconControlRight,\n \"date-class\": _vm.dateClass,\n \"year-month-formatter\": _vm.yearMonthFormatter,\n \"week-numbers\": _vm.weekNumbers,\n locale: _vm.locale\n },\n on: {\n \"month-change\": _vm.onMonthChange,\n \"year-change\": _vm.onYearChange,\n \"date-change\": _vm.onDateChange,\n \"view-change\": _vm.onViewChange\n }\n }),\n _vm._v(\" \"),\n _c(\"month-view\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.view === \"m\",\n expression: \"view==='m'\"\n }\n ],\n attrs: {\n month: _vm.currentMonth,\n year: _vm.currentYear,\n \"icon-control-left\": _vm.iconControlLeft,\n \"icon-control-right\": _vm.iconControlRight,\n locale: _vm.locale\n },\n on: {\n \"month-change\": _vm.onMonthChange,\n \"year-change\": _vm.onYearChange,\n \"view-change\": _vm.onViewChange\n }\n }),\n _vm._v(\" \"),\n _c(\"year-view\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.view === \"y\",\n expression: \"view==='y'\"\n }\n ],\n attrs: {\n year: _vm.currentYear,\n \"icon-control-left\": _vm.iconControlLeft,\n \"icon-control-right\": _vm.iconControlRight\n },\n on: { \"year-change\": _vm.onYearChange, \"view-change\": _vm.onViewChange }\n }),\n _vm._v(\" \"),\n _vm.todayBtn || _vm.clearBtn\n ? _c(\"div\", [\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"text-center\" },\n [\n _vm.todayBtn\n ? _c(\"btn\", {\n attrs: {\n \"data-action\": \"select\",\n type: \"info\",\n size: \"sm\"\n },\n domProps: {\n textContent: _vm._s(_vm.t(\"uiv.datePicker.today\"))\n },\n on: { click: _vm.selectToday }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.clearBtn\n ? _c(\"btn\", {\n attrs: { \"data-action\": \"select\", size: \"sm\" },\n domProps: {\n textContent: _vm._s(_vm.t(\"uiv.datePicker.clear\"))\n },\n on: { click: _vm.clearSelect }\n })\n : _vm._e()\n ],\n 1\n )\n ])\n : _vm._e()\n ],\n 1\n )\n};\nvar __vue_staticRenderFns__$8 = [];\n__vue_render__$8._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$8 = undefined;\n /* scoped */\n var __vue_scope_id__$8 = undefined;\n /* module identifier */\n var __vue_module_identifier__$8 = undefined;\n /* functional template */\n var __vue_is_functional_template__$8 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$8 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$8, staticRenderFns: __vue_staticRenderFns__$8 },\n __vue_inject_styles__$8,\n __vue_script__$8,\n __vue_scope_id__$8,\n __vue_is_functional_template__$8,\n __vue_module_identifier__$8,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar HANDLER = '_uiv_scroll_handler';\nvar events = [EVENTS.RESIZE, EVENTS.SCROLL];\n\nvar bind = function (el, binding) {\n var callback = binding.value;\n if (!isFunction(callback)) {\n return\n }\n unbind(el);\n el[HANDLER] = callback;\n events.forEach(function (event) {\n on(window, event, el[HANDLER]);\n });\n};\n\nvar unbind = function (el) {\n events.forEach(function (event) {\n off(window, event, el[HANDLER]);\n });\n delete el[HANDLER];\n};\n\nvar update = function (el, binding) {\n if (binding.value !== binding.oldValue) {\n bind(el, binding);\n }\n};\n\nvar scroll = { bind: bind, unbind: unbind, update: update };\n\nvar script$9 = {\n directives: {\n scroll: scroll\n },\n props: {\n offset: {\n type: Number,\n default: 0\n }\n },\n data: function data () {\n return {\n affixed: false\n }\n },\n computed: {\n classes: function classes () {\n return {\n affix: this.affixed\n }\n },\n styles: function styles () {\n return {\n top: this.affixed ? this.offset + 'px' : null\n }\n }\n },\n methods: {\n // from https://github.com/ant-design/ant-design/blob/master/components/affix/index.jsx#L20\n onScroll: function onScroll () {\n var this$1 = this;\n\n // if is hidden don't calculate anything\n if (!(this.$el.offsetWidth || this.$el.offsetHeight || this.$el.getClientRects().length)) {\n return\n }\n // get window scroll and element position to detect if have to be normal or affixed\n var scroll = {};\n var element = {};\n var rect = this.$el.getBoundingClientRect();\n var body = document.body;\n var types = ['Top', 'Left'];\n types.forEach(function (type) {\n var t = type.toLowerCase();\n scroll[t] = window['page' + (type === 'Top' ? 'Y' : 'X') + 'Offset'];\n element[t] = scroll[t] + rect[t] - (this$1.$el['client' + type] || body['client' + type] || 0);\n });\n var fix = scroll.top > element.top - this.offset;\n if (this.affixed !== fix) {\n this.affixed = fix;\n this.$emit(this.affixed ? 'affix' : 'unfix');\n this.$nextTick(function () {\n this$1.$emit(this$1.affixed ? 'affixed' : 'unfixed');\n });\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$9 = script$9;\n\n/* template */\nvar __vue_render__$9 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"div\", { staticClass: \"hidden-print\" }, [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"scroll\",\n rawName: \"v-scroll\",\n value: _vm.onScroll,\n expression: \"onScroll\"\n }\n ],\n class: _vm.classes,\n style: _vm.styles\n },\n [_vm._t(\"default\")],\n 2\n )\n ])\n};\nvar __vue_staticRenderFns__$9 = [];\n__vue_render__$9._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$9 = undefined;\n /* scoped */\n var __vue_scope_id__$9 = undefined;\n /* module identifier */\n var __vue_module_identifier__$9 = undefined;\n /* functional template */\n var __vue_is_functional_template__$9 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$9 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$9, staticRenderFns: __vue_staticRenderFns__$9 },\n __vue_inject_styles__$9,\n __vue_script__$9,\n __vue_scope_id__$9,\n __vue_is_functional_template__$9,\n __vue_module_identifier__$9,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$a = {\n props: {\n dismissible: {\n type: Boolean,\n default: false\n },\n duration: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: 'info'\n }\n },\n data: function data () {\n return {\n timeout: 0\n }\n },\n computed: {\n alertClass: function alertClass () {\n var obj;\n\n return ( obj = {\n alert: true\n }, obj[(\"alert-\" + (this.type))] = Boolean(this.type), obj['alert-dismissible'] = this.dismissible, obj )\n }\n },\n methods: {\n closeAlert: function closeAlert () {\n clearTimeout(this.timeout);\n this.$emit('dismissed');\n }\n },\n mounted: function mounted () {\n if (this.duration > 0) {\n this.timeout = setTimeout(this.closeAlert, this.duration);\n }\n },\n destroyed: function destroyed () {\n clearTimeout(this.timeout);\n }\n};\n\n/* script */\nvar __vue_script__$a = script$a;\n\n/* template */\nvar __vue_render__$a = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n { class: _vm.alertClass, attrs: { role: \"alert\" } },\n [\n _vm.dismissible\n ? _c(\n \"button\",\n {\n staticClass: \"close\",\n attrs: { type: \"button\", \"aria-label\": \"Close\" },\n on: { click: _vm.closeAlert }\n },\n [_c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [_vm._v(\"×\")])]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm._t(\"default\")\n ],\n 2\n )\n};\nvar __vue_staticRenderFns__$a = [];\n__vue_render__$a._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$a = undefined;\n /* scoped */\n var __vue_scope_id__$a = undefined;\n /* module identifier */\n var __vue_module_identifier__$a = undefined;\n /* functional template */\n var __vue_is_functional_template__$a = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$a = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$a, staticRenderFns: __vue_staticRenderFns__$a },\n __vue_inject_styles__$a,\n __vue_script__$a,\n __vue_scope_id__$a,\n __vue_is_functional_template__$a,\n __vue_module_identifier__$a,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$b = {\n props: {\n value: {\n type: Number,\n required: true,\n validator: function (v) { return v >= 1; }\n },\n boundaryLinks: {\n type: Boolean,\n default: false\n },\n directionLinks: {\n type: Boolean,\n default: true\n },\n size: String,\n align: String,\n totalPage: {\n type: Number,\n required: true,\n validator: function (v) { return v >= 0; }\n },\n maxSize: {\n type: Number,\n default: 5,\n validator: function (v) { return v >= 0; }\n },\n disabled: Boolean\n },\n data: function data () {\n return {\n sliceStart: 0\n }\n },\n computed: {\n navClasses: function navClasses () {\n var obj;\n\n return ( obj = {}, obj[(\"text-\" + (this.align))] = Boolean(this.align), obj )\n },\n classes: function classes () {\n var obj;\n\n return ( obj = {}, obj[(\"pagination-\" + (this.size))] = Boolean(this.size), obj )\n },\n sliceArray: function sliceArray () {\n return range(this.totalPage).slice(this.sliceStart, this.sliceStart + this.maxSize)\n }\n },\n methods: {\n calculateSliceStart: function calculateSliceStart () {\n var currentPage = this.value;\n var chunkSize = this.maxSize;\n var currentChunkStart = this.sliceStart;\n var currentChunkEnd = currentChunkStart + chunkSize;\n if (currentPage > currentChunkEnd) {\n var lastChunkStart = this.totalPage - chunkSize;\n if (currentPage > lastChunkStart) {\n this.sliceStart = lastChunkStart;\n } else {\n this.sliceStart = currentPage - 1;\n }\n } else if (currentPage < currentChunkStart + 1) {\n if (currentPage > chunkSize) {\n this.sliceStart = currentPage - chunkSize;\n } else {\n this.sliceStart = 0;\n }\n }\n },\n onPageChange: function onPageChange (page) {\n if (!this.disabled && page > 0 && page <= this.totalPage && page !== this.value) {\n this.$emit('input', page);\n this.$emit('change', page);\n }\n },\n toPage: function toPage (pre) {\n if (this.disabled) {\n return\n }\n var chunkSize = this.maxSize;\n var currentChunkStart = this.sliceStart;\n var lastChunkStart = this.totalPage - chunkSize;\n var start = pre ? currentChunkStart - chunkSize : currentChunkStart + chunkSize;\n if (start < 0) {\n this.sliceStart = 0;\n } else if (start > lastChunkStart) {\n this.sliceStart = lastChunkStart;\n } else {\n this.sliceStart = start;\n }\n }\n },\n created: function created () {\n this.$watch(function (vm) { return [vm.value, vm.maxSize, vm.totalPage].join(); }, this.calculateSliceStart, {\n immediate: true\n });\n }\n};\n\n/* script */\nvar __vue_script__$b = script$b;\n\n/* template */\nvar __vue_render__$b = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"nav\",\n { class: _vm.navClasses, attrs: { \"aria-label\": \"Page navigation\" } },\n [\n _c(\n \"ul\",\n { staticClass: \"pagination\", class: _vm.classes },\n [\n _vm.boundaryLinks\n ? _c(\n \"li\",\n { class: { disabled: _vm.value <= 1 || _vm.disabled } },\n [\n _c(\n \"a\",\n {\n attrs: {\n href: \"#\",\n role: \"button\",\n \"aria-label\": \"First\"\n },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.onPageChange(1)\n }\n }\n },\n [\n _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n _vm._v(\"«\")\n ])\n ]\n )\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.directionLinks\n ? _c(\n \"li\",\n { class: { disabled: _vm.value <= 1 || _vm.disabled } },\n [\n _c(\n \"a\",\n {\n attrs: {\n href: \"#\",\n role: \"button\",\n \"aria-label\": \"Previous\"\n },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.onPageChange(_vm.value - 1)\n }\n }\n },\n [\n _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n _vm._v(\"‹\")\n ])\n ]\n )\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.sliceStart > 0\n ? _c(\"li\", { class: { disabled: _vm.disabled } }, [\n _c(\n \"a\",\n {\n attrs: {\n href: \"#\",\n role: \"button\",\n \"aria-label\": \"Previous group\"\n },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.toPage(1)\n }\n }\n },\n [\n _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n _vm._v(\"…\")\n ])\n ]\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm._l(_vm.sliceArray, function(item) {\n return _c(\n \"li\",\n {\n key: item,\n class: {\n active: _vm.value === item + 1,\n disabled: _vm.disabled\n }\n },\n [\n _c(\n \"a\",\n {\n attrs: { href: \"#\", role: \"button\" },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.onPageChange(item + 1)\n }\n }\n },\n [_vm._v(_vm._s(item + 1))]\n )\n ]\n )\n }),\n _vm._v(\" \"),\n _vm.sliceStart < _vm.totalPage - _vm.maxSize\n ? _c(\"li\", { class: { disabled: _vm.disabled } }, [\n _c(\n \"a\",\n {\n attrs: {\n href: \"#\",\n role: \"button\",\n \"aria-label\": \"Next group\"\n },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.toPage(0)\n }\n }\n },\n [\n _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n _vm._v(\"…\")\n ])\n ]\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.directionLinks\n ? _c(\n \"li\",\n {\n class: {\n disabled: _vm.value >= _vm.totalPage || _vm.disabled\n }\n },\n [\n _c(\n \"a\",\n {\n attrs: {\n href: \"#\",\n role: \"button\",\n \"aria-label\": \"Next\"\n },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.onPageChange(_vm.value + 1)\n }\n }\n },\n [\n _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n _vm._v(\"›\")\n ])\n ]\n )\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.boundaryLinks\n ? _c(\n \"li\",\n {\n class: {\n disabled: _vm.value >= _vm.totalPage || _vm.disabled\n }\n },\n [\n _c(\n \"a\",\n {\n attrs: {\n href: \"#\",\n role: \"button\",\n \"aria-label\": \"Last\"\n },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.onPageChange(_vm.totalPage)\n }\n }\n },\n [\n _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n _vm._v(\"»\")\n ])\n ]\n )\n ]\n )\n : _vm._e()\n ],\n 2\n )\n ]\n )\n};\nvar __vue_staticRenderFns__$b = [];\n__vue_render__$b._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$b = undefined;\n /* scoped */\n var __vue_scope_id__$b = undefined;\n /* module identifier */\n var __vue_module_identifier__$b = undefined;\n /* functional template */\n var __vue_is_functional_template__$b = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$b = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$b, staticRenderFns: __vue_staticRenderFns__$b },\n __vue_inject_styles__$b,\n __vue_script__$b,\n __vue_scope_id__$b,\n __vue_is_functional_template__$b,\n __vue_module_identifier__$b,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar SHOW_CLASS = 'in';\n\nvar popupMixin = {\n props: {\n value: {\n type: Boolean,\n default: false\n },\n tag: {\n type: String,\n default: 'span'\n },\n placement: {\n type: String,\n default: PLACEMENTS.TOP\n },\n autoPlacement: {\n type: Boolean,\n default: true\n },\n appendTo: {\n type: null,\n default: 'body'\n },\n positionBy: {\n type: null,\n default: null\n },\n transition: {\n type: Number,\n default: 150\n },\n hideDelay: {\n type: Number,\n default: 0\n },\n showDelay: {\n type: Number,\n default: 0\n },\n enable: {\n type: Boolean,\n default: true\n },\n enterable: {\n type: Boolean,\n default: true\n },\n target: null,\n viewport: null,\n customClass: String\n },\n data: function data () {\n return {\n triggerEl: null,\n hideTimeoutId: 0,\n showTimeoutId: 0,\n transitionTimeoutId: 0,\n autoTimeoutId: 0\n }\n },\n watch: {\n value: function value (v) {\n v ? this.show() : this.hide();\n },\n trigger: function trigger () {\n this.clearListeners();\n this.initListeners();\n },\n target: function target (value) {\n this.clearListeners();\n this.initTriggerElByTarget(value);\n this.initListeners();\n },\n allContent: function allContent (value) {\n var this$1 = this;\n\n // can not use value because it can not detect slot changes\n if (this.isNotEmpty()) {\n // reset position while content changed & is shown\n // nextTick is required\n this.$nextTick(function () {\n /* istanbul ignore else */\n if (this$1.isShown()) {\n this$1.resetPosition();\n }\n });\n } else {\n this.hide();\n }\n },\n enable: function enable (value) {\n // hide if enable changed to false\n /* istanbul ignore else */\n if (!value) {\n this.hide();\n }\n }\n },\n mounted: function mounted () {\n var this$1 = this;\n\n ensureElementMatchesFunction();\n removeFromDom(this.$refs.popup);\n this.$nextTick(function () {\n this$1.initTriggerElByTarget(this$1.target);\n this$1.initListeners();\n if (this$1.value) {\n this$1.show();\n }\n });\n },\n beforeDestroy: function beforeDestroy () {\n this.clearListeners();\n removeFromDom(this.$refs.popup);\n },\n methods: {\n initTriggerElByTarget: function initTriggerElByTarget (target) {\n if (target) {\n // target exist\n this.triggerEl = getElementBySelectorOrRef(target);\n } else {\n // find special element\n var trigger = this.$el.querySelector('[data-role=\"trigger\"]');\n if (trigger) {\n this.triggerEl = trigger;\n } else {\n // use the first child\n var firstChild = this.$el.firstChild;\n this.triggerEl = firstChild === this.$refs.popup ? null : firstChild;\n }\n }\n },\n initListeners: function initListeners () {\n if (this.triggerEl) {\n if (this.trigger === TRIGGERS.HOVER) {\n on(this.triggerEl, EVENTS.MOUSE_ENTER, this.show);\n on(this.triggerEl, EVENTS.MOUSE_LEAVE, this.hide);\n } else if (this.trigger === TRIGGERS.FOCUS) {\n on(this.triggerEl, EVENTS.FOCUS, this.show);\n on(this.triggerEl, EVENTS.BLUR, this.hide);\n } else if (this.trigger === TRIGGERS.HOVER_FOCUS) {\n on(this.triggerEl, EVENTS.MOUSE_ENTER, this.handleAuto);\n on(this.triggerEl, EVENTS.MOUSE_LEAVE, this.handleAuto);\n on(this.triggerEl, EVENTS.FOCUS, this.handleAuto);\n on(this.triggerEl, EVENTS.BLUR, this.handleAuto);\n } else if (this.trigger === TRIGGERS.CLICK || this.trigger === TRIGGERS.OUTSIDE_CLICK) {\n on(this.triggerEl, EVENTS.CLICK, this.toggle);\n }\n }\n on(window, EVENTS.CLICK, this.windowClicked);\n },\n clearListeners: function clearListeners () {\n if (this.triggerEl) {\n off(this.triggerEl, EVENTS.FOCUS, this.show);\n off(this.triggerEl, EVENTS.BLUR, this.hide);\n off(this.triggerEl, EVENTS.MOUSE_ENTER, this.show);\n off(this.triggerEl, EVENTS.MOUSE_LEAVE, this.hide);\n off(this.triggerEl, EVENTS.CLICK, this.toggle);\n off(this.triggerEl, EVENTS.MOUSE_ENTER, this.handleAuto);\n off(this.triggerEl, EVENTS.MOUSE_LEAVE, this.handleAuto);\n off(this.triggerEl, EVENTS.FOCUS, this.handleAuto);\n off(this.triggerEl, EVENTS.BLUR, this.handleAuto);\n }\n off(window, EVENTS.CLICK, this.windowClicked);\n this.clearTimeouts();\n },\n clearTimeouts: function clearTimeouts () {\n if (this.hideTimeoutId) {\n clearTimeout(this.hideTimeoutId);\n this.hideTimeoutId = 0;\n }\n if (this.showTimeoutId) {\n clearTimeout(this.showTimeoutId);\n this.showTimeoutId = 0;\n }\n if (this.transitionTimeoutId) {\n clearTimeout(this.transitionTimeoutId);\n this.transitionTimeoutId = 0;\n }\n if (this.autoTimeoutId) {\n clearTimeout(this.autoTimeoutId);\n this.autoTimeoutId = 0;\n }\n },\n resetPosition: function resetPosition () {\n var popup = this.$refs.popup;\n /* istanbul ignore else */\n if (popup) {\n setTooltipPosition(popup, this.triggerEl, this.placement, this.autoPlacement, this.appendTo, this.positionBy, this.viewport);\n popup.offsetHeight;\n }\n },\n hideOnLeave: function hideOnLeave () {\n if (this.trigger === TRIGGERS.HOVER || (this.trigger === TRIGGERS.HOVER_FOCUS && !this.triggerEl.matches(':focus'))) {\n this.$hide();\n }\n },\n toggle: function toggle () {\n if (this.isShown()) {\n this.hide();\n } else {\n this.show();\n }\n },\n show: function show () {\n var this$1 = this;\n\n if (this.enable && this.triggerEl && this.isNotEmpty() && !this.isShown()) {\n var popUpAppendedContainer = this.hideTimeoutId > 0; // weird condition\n if (popUpAppendedContainer) {\n clearTimeout(this.hideTimeoutId);\n this.hideTimeoutId = 0;\n }\n if (this.transitionTimeoutId > 0) {\n clearTimeout(this.transitionTimeoutId);\n this.transitionTimeoutId = 0;\n }\n clearTimeout(this.showTimeoutId);\n this.showTimeoutId = setTimeout(function () {\n this$1.showTimeoutId = 0;\n var popup = this$1.$refs.popup;\n if (popup) {\n var alreadyOpenModalNum = getOpenModalNum();\n if (alreadyOpenModalNum > 1) {\n var defaultZ = this$1.name === 'popover' ? 1060 : 1070;\n var offset = (alreadyOpenModalNum - 1) * 20;\n popup.style.zIndex = \"\" + (defaultZ + offset);\n }\n // add to dom\n if (!popUpAppendedContainer) {\n popup.className = (this$1.name) + \" \" + (this$1.placement) + \" \" + (this$1.customClass ? this$1.customClass : '') + \" fade\";\n var container = getElementBySelectorOrRef(this$1.appendTo);\n container.appendChild(popup);\n this$1.resetPosition();\n }\n addClass(popup, SHOW_CLASS);\n this$1.$emit('input', true);\n this$1.$emit('show');\n }\n }, this.showDelay);\n }\n },\n hide: function hide () {\n var this$1 = this;\n\n if (this.showTimeoutId > 0) {\n clearTimeout(this.showTimeoutId);\n this.showTimeoutId = 0;\n }\n\n if (!this.isShown()) {\n return\n }\n if (this.enterable && (this.trigger === TRIGGERS.HOVER || this.trigger === TRIGGERS.HOVER_FOCUS)) {\n clearTimeout(this.hideTimeoutId);\n this.hideTimeoutId = setTimeout(function () {\n this$1.hideTimeoutId = 0;\n var popup = this$1.$refs.popup;\n if (popup && !popup.matches(':hover')) {\n this$1.$hide();\n }\n }, 100);\n } else {\n this.$hide();\n }\n },\n $hide: function $hide () {\n var this$1 = this;\n\n if (this.isShown()) {\n clearTimeout(this.hideTimeoutId);\n this.hideTimeoutId = setTimeout(function () {\n this$1.hideTimeoutId = 0;\n removeClass(this$1.$refs.popup, SHOW_CLASS);\n // gives fade out time\n this$1.transitionTimeoutId = setTimeout(function () {\n this$1.transitionTimeoutId = 0;\n removeFromDom(this$1.$refs.popup);\n this$1.$emit('input', false);\n this$1.$emit('hide');\n }, this$1.transition);\n }, this.hideDelay);\n }\n },\n isShown: function isShown () {\n return hasClass(this.$refs.popup, SHOW_CLASS)\n },\n windowClicked: function windowClicked (event) {\n if (this.triggerEl && isFunction(this.triggerEl.contains) && !this.triggerEl.contains(event.target) &&\n this.trigger === TRIGGERS.OUTSIDE_CLICK && !(this.$refs.popup && this.$refs.popup.contains(event.target)) &&\n this.isShown()) {\n this.hide();\n }\n },\n handleAuto: function handleAuto () {\n var this$1 = this;\n\n clearTimeout(this.autoTimeoutId);\n this.autoTimeoutId = setTimeout(function () {\n this$1.autoTimeoutId = 0;\n if (this$1.triggerEl.matches(':hover, :focus')) {\n this$1.show();\n } else {\n this$1.hide();\n }\n }, 20); // 20ms make firefox happy\n }\n }\n};\n\nvar Tooltip = {\n mixins: [popupMixin],\n data: function data () {\n return {\n name: 'tooltip'\n }\n },\n render: function render (h) {\n return h(\n this.tag,\n [\n this.$slots.default,\n h('div',\n {\n ref: 'popup',\n attrs: {\n role: 'tooltip'\n },\n on: {\n mouseleave: this.hideOnLeave\n }\n },\n [\n h('div', { class: 'tooltip-arrow' }),\n h('div', {\n class: 'tooltip-inner',\n domProps: { innerHTML: this.text }\n })\n ]\n )\n ]\n )\n },\n props: {\n text: {\n type: String,\n default: ''\n },\n trigger: {\n type: String,\n default: TRIGGERS.HOVER_FOCUS\n }\n },\n computed: {\n allContent: function allContent () {\n return this.text\n }\n },\n methods: {\n isNotEmpty: function isNotEmpty () {\n return this.text\n }\n }\n};\n\nvar Popover = {\n mixins: [popupMixin],\n data: function data () {\n return {\n name: 'popover'\n }\n },\n render: function render (h) {\n return h(this.tag,\n [\n this.$slots.default,\n h('div',\n {\n style: {\n display: 'block'\n },\n ref: 'popup',\n on: {\n mouseleave: this.hideOnLeave\n }\n },\n [\n h('div', { class: 'arrow' }),\n h('h3', {\n class: 'popover-title',\n directives: [\n { name: 'show', value: this.title }\n ]\n }, this.title),\n h('div', { class: 'popover-content' }, [this.content || this.$slots.popover])\n ]\n )\n ]\n )\n },\n props: {\n title: {\n type: String,\n default: ''\n },\n content: {\n type: String,\n default: ''\n },\n trigger: {\n type: String,\n default: TRIGGERS.OUTSIDE_CLICK\n }\n },\n computed: {\n allContent: function allContent () {\n return this.title + this.content\n }\n },\n methods: {\n isNotEmpty: function isNotEmpty () {\n return this.title || this.content || this.$slots.popover\n }\n }\n};\n\nvar maxHours = 23;\nvar zero = 0;\nvar maxMinutes = 59;\nvar cutUpAmAndPm = 12;\n\nvar script$c = {\n components: { Btn: Btn },\n mixins: [Local],\n props: {\n value: {\n type: Date,\n required: true\n },\n showMeridian: {\n type: Boolean,\n default: true\n },\n min: Date,\n max: Date,\n hourStep: {\n type: Number,\n default: 1\n },\n minStep: {\n type: Number,\n default: 1\n },\n readonly: {\n type: Boolean,\n default: false\n },\n controls: {\n type: Boolean,\n default: true\n },\n iconControlUp: {\n type: String,\n default: 'glyphicon glyphicon-chevron-up'\n },\n iconControlDown: {\n type: String,\n default: 'glyphicon glyphicon-chevron-down'\n },\n inputWidth: {\n type: Number,\n default: 50\n }\n },\n data: function data () {\n return {\n hours: 0,\n minutes: 0,\n meridian: true,\n hoursText: '',\n minutesText: ''\n }\n },\n mounted: function mounted () {\n this.updateByValue(this.value);\n },\n computed: {\n inputStyles: function inputStyles () {\n return {\n width: ((this.inputWidth) + \"px\")\n }\n }\n },\n watch: {\n value: function value (value$1) {\n this.updateByValue(value$1);\n },\n showMeridian: function showMeridian (value) {\n this.setTime();\n },\n hoursText: function hoursText (value) {\n if (this.hours === 0 && value === '') {\n // Prevent a runtime reset from being overwritten\n return\n }\n var hour = parseInt(value);\n if (this.showMeridian) {\n if (hour >= 1 && hour <= cutUpAmAndPm) {\n if (this.meridian) {\n this.hours = hour === cutUpAmAndPm ? 0 : hour;\n } else {\n this.hours = hour === cutUpAmAndPm ? cutUpAmAndPm : hour + cutUpAmAndPm;\n }\n }\n } else if (hour >= zero && hour <= maxHours) {\n this.hours = hour;\n }\n this.setTime();\n },\n minutesText: function minutesText (value) {\n if (this.minutes === 0 && value === '') {\n // Prevent a runtime reset from being overwritten\n return\n }\n var minutesStr = parseInt(value);\n if (minutesStr >= zero && minutesStr <= maxMinutes) {\n this.minutes = minutesStr;\n }\n this.setTime();\n }\n },\n methods: {\n updateByValue: function updateByValue (value) {\n if (isNaN(value.getTime())) {\n this.hours = 0;\n this.minutes = 0;\n this.hoursText = '';\n this.minutesText = '';\n this.meridian = true;\n return\n }\n this.hours = value.getHours();\n this.minutes = value.getMinutes();\n if (!this.showMeridian) {\n this.hoursText = pad(this.hours, 2);\n } else {\n if (this.hours >= cutUpAmAndPm) {\n if (this.hours === cutUpAmAndPm) {\n this.hoursText = this.hours + '';\n } else {\n this.hoursText = pad(this.hours - cutUpAmAndPm, 2);\n }\n this.meridian = false;\n } else {\n if (this.hours === zero) {\n this.hoursText = cutUpAmAndPm.toString();\n } else {\n this.hoursText = pad(this.hours, 2);\n }\n this.meridian = true;\n }\n }\n this.minutesText = pad(this.minutes, 2);\n // lazy model won't update when using keyboard up/down\n this.$refs.hoursInput.value = this.hoursText;\n this.$refs.minutesInput.value = this.minutesText;\n },\n addHour: function addHour (step) {\n step = step || this.hourStep;\n this.hours = this.hours >= maxHours ? zero : this.hours + step;\n },\n reduceHour: function reduceHour (step) {\n step = step || this.hourStep;\n this.hours = this.hours <= zero ? maxHours : this.hours - step;\n },\n addMinute: function addMinute () {\n if (this.minutes >= maxMinutes) {\n this.minutes = zero;\n this.addHour(1);\n } else {\n this.minutes += this.minStep;\n }\n },\n reduceMinute: function reduceMinute () {\n if (this.minutes <= zero) {\n this.minutes = maxMinutes + 1 - this.minStep;\n this.reduceHour(1);\n } else {\n this.minutes -= this.minStep;\n }\n },\n changeTime: function changeTime (isHour, isPlus) {\n if (!this.readonly) {\n if (isHour && isPlus) {\n this.addHour();\n } else if (isHour && !isPlus) {\n this.reduceHour();\n } else if (!isHour && isPlus) {\n this.addMinute();\n } else {\n this.reduceMinute();\n }\n this.setTime();\n }\n },\n toggleMeridian: function toggleMeridian () {\n this.meridian = !this.meridian;\n if (this.meridian) {\n this.hours -= cutUpAmAndPm;\n } else {\n this.hours += cutUpAmAndPm;\n }\n this.setTime();\n },\n onWheel: function onWheel (e, isHour) {\n if (!this.readonly) {\n e.preventDefault();\n this.changeTime(isHour, e.deltaY < 0);\n }\n },\n setTime: function setTime () {\n var time = this.value;\n if (isNaN(time.getTime())) {\n time = new Date();\n time.setHours(0);\n time.setMinutes(0);\n }\n time.setHours(this.hours);\n time.setMinutes(this.minutes);\n if (this.max) {\n var max = new Date(time);\n max.setHours(this.max.getHours());\n max.setMinutes(this.max.getMinutes());\n time = time > max ? max : time;\n }\n if (this.min) {\n var min = new Date(time);\n min.setHours(this.min.getHours());\n min.setMinutes(this.min.getMinutes());\n time = time < min ? min : time;\n }\n this.$emit('input', new Date(time));\n },\n selectInputValue: function selectInputValue (e) {\n // mouseup should be prevented!\n // See various comments in https://stackoverflow.com/questions/3272089/programmatically-selecting-text-in-an-input-field-on-ios-devices-mobile-safari\n e.target.setSelectionRange(0, 2);\n }\n }\n};\n\n/* script */\nvar __vue_script__$c = script$c;\n\n/* template */\nvar __vue_render__$c = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"section\",\n {\n on: {\n click: function($event) {\n $event.stopPropagation();\n }\n }\n },\n [\n _c(\"table\", [\n _c(\"tbody\", [\n _vm.controls\n ? _c(\"tr\", { staticClass: \"text-center\" }, [\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n attrs: {\n type: \"link\",\n size: \"sm\",\n disabled: _vm.readonly\n },\n on: {\n click: function($event) {\n return _vm.changeTime(1, 1)\n }\n }\n },\n [_c(\"i\", { class: _vm.iconControlUp })]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n attrs: {\n type: \"link\",\n size: \"sm\",\n disabled: _vm.readonly\n },\n on: {\n click: function($event) {\n return _vm.changeTime(0, 1)\n }\n }\n },\n [_c(\"i\", { class: _vm.iconControlUp })]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.showMeridian ? _c(\"td\") : _vm._e()\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"tr\", [\n _c(\"td\", { staticClass: \"form-group\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model.lazy\",\n value: _vm.hoursText,\n expression: \"hoursText\",\n modifiers: { lazy: true }\n }\n ],\n ref: \"hoursInput\",\n staticClass: \"form-control text-center\",\n style: _vm.inputStyles,\n attrs: {\n type: \"tel\",\n pattern: \"\\\\d*\",\n placeholder: \"HH\",\n readonly: _vm.readonly,\n maxlength: \"2\",\n size: \"2\"\n },\n domProps: { value: _vm.hoursText },\n on: {\n mouseup: _vm.selectInputValue,\n keydown: [\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n return _vm.changeTime(1, 1)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n return _vm.changeTime(1, 0)\n }\n ],\n wheel: function($event) {\n return _vm.onWheel($event, true)\n },\n change: function($event) {\n _vm.hoursText = $event.target.value;\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"td\", { staticClass: \"form-group\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model.lazy\",\n value: _vm.minutesText,\n expression: \"minutesText\",\n modifiers: { lazy: true }\n }\n ],\n ref: \"minutesInput\",\n staticClass: \"form-control text-center\",\n style: _vm.inputStyles,\n attrs: {\n type: \"tel\",\n pattern: \"\\\\d*\",\n placeholder: \"MM\",\n readonly: _vm.readonly,\n maxlength: \"2\",\n size: \"2\"\n },\n domProps: { value: _vm.minutesText },\n on: {\n mouseup: _vm.selectInputValue,\n keydown: [\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n return _vm.changeTime(0, 1)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n return _vm.changeTime(0, 0)\n }\n ],\n wheel: function($event) {\n return _vm.onWheel($event, false)\n },\n change: function($event) {\n _vm.minutesText = $event.target.value;\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _vm.showMeridian\n ? _c(\n \"td\",\n [\n _vm._v(\"\\n \\n \"),\n _c(\"btn\", {\n attrs: {\n \"data-action\": \"toggleMeridian\",\n disabled: _vm.readonly\n },\n domProps: {\n textContent: _vm._s(\n _vm.meridian\n ? _vm.t(\"uiv.timePicker.am\")\n : _vm.t(\"uiv.timePicker.pm\")\n )\n },\n on: { click: _vm.toggleMeridian }\n })\n ],\n 1\n )\n : _vm._e()\n ]),\n _vm._v(\" \"),\n _vm.controls\n ? _c(\"tr\", { staticClass: \"text-center\" }, [\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n attrs: {\n type: \"link\",\n size: \"sm\",\n disabled: _vm.readonly\n },\n on: {\n click: function($event) {\n return _vm.changeTime(1, 0)\n }\n }\n },\n [_c(\"i\", { class: _vm.iconControlDown })]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\n \"td\",\n [\n _c(\n \"btn\",\n {\n attrs: {\n type: \"link\",\n size: \"sm\",\n disabled: _vm.readonly\n },\n on: {\n click: function($event) {\n return _vm.changeTime(0, 0)\n }\n }\n },\n [_c(\"i\", { class: _vm.iconControlDown })]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.showMeridian ? _c(\"td\") : _vm._e()\n ])\n : _vm._e()\n ])\n ])\n ]\n )\n};\nvar __vue_staticRenderFns__$c = [\n function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"td\", [_vm._v(\" \"), _c(\"b\", [_vm._v(\":\")]), _vm._v(\" \")])\n }\n];\n__vue_render__$c._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$c = undefined;\n /* scoped */\n var __vue_scope_id__$c = undefined;\n /* module identifier */\n var __vue_module_identifier__$c = undefined;\n /* functional template */\n var __vue_is_functional_template__$c = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$c = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$c, staticRenderFns: __vue_staticRenderFns__$c },\n __vue_inject_styles__$c,\n __vue_script__$c,\n __vue_scope_id__$c,\n __vue_is_functional_template__$c,\n __vue_module_identifier__$c,\n false,\n undefined,\n undefined,\n undefined\n );\n\nfunction request (url, method) {\n if ( method === void 0 ) method = 'GET';\n\n var request = new window.XMLHttpRequest();\n var data = {};\n var p = {\n then: function (fn1, fn2) { return p.done(fn1).fail(fn2); },\n catch: function (fn) { return p.fail(fn); },\n always: function (fn) { return p.done(fn).fail(fn); }\n };\n var statuses = ['done', 'fail'];\n statuses.forEach(function (name) {\n data[name] = [];\n p[name] = function (fn) {\n if (fn instanceof Function) { data[name].push(fn); }\n return p\n };\n });\n p.done(JSON.parse);\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n var e = { status: request.status };\n if (request.status === 200) {\n var response = request.responseText;\n for (var i in data.done) {\n /* istanbul ignore else */\n if (hasOwnProperty(data.done, i) && isFunction(data.done[i])) {\n var value = data.done[i](response);\n if (isExist(value)) {\n response = value;\n }\n }\n }\n } else {\n data.fail.forEach(function (fail) { return fail(e); });\n }\n }\n };\n request.open(method, url);\n request.setRequestHeader('Accept', 'application/json');\n request.send();\n return p\n}\n\nvar script$d = {\n components: { Dropdown: Dropdown },\n props: {\n value: {\n required: true\n },\n data: Array,\n itemKey: String,\n appendToBody: {\n type: Boolean,\n default: false\n },\n ignoreCase: {\n type: Boolean,\n default: true\n },\n matchStart: {\n type: Boolean,\n default: false\n },\n forceSelect: {\n type: Boolean,\n default: false\n },\n forceClear: {\n type: Boolean,\n default: false\n },\n limit: {\n type: Number,\n default: 10\n },\n asyncSrc: String,\n asyncKey: String,\n asyncFunction: Function,\n debounce: {\n type: Number,\n default: 200\n },\n openOnFocus: {\n type: Boolean,\n default: true\n },\n openOnEmpty: {\n type: Boolean,\n default: false\n },\n target: {\n required: true\n },\n preselect: {\n type: Boolean,\n default: true\n }\n },\n data: function data () {\n return {\n inputEl: null,\n items: [],\n activeIndex: 0,\n timeoutID: 0,\n elements: [],\n open: false,\n dropdownMenuEl: null\n }\n },\n computed: {\n regexOptions: function regexOptions () {\n var options = '';\n if (this.ignoreCase) {\n options += 'i';\n }\n if (!this.matchStart) {\n options += 'g';\n }\n return options\n }\n },\n mounted: function mounted () {\n var this$1 = this;\n\n ensureElementMatchesFunction();\n this.$nextTick(function () {\n this$1.initInputElByTarget(this$1.target);\n this$1.initListeners();\n this$1.dropdownMenuEl = this$1.$refs.dropdown.$el.querySelector('.dropdown-menu');\n // set input text if v-model not empty\n if (this$1.value) {\n this$1.setInputTextByValue(this$1.value);\n }\n });\n },\n beforeDestroy: function beforeDestroy () {\n this.removeListeners();\n },\n watch: {\n target: function target (el) {\n this.removeListeners();\n this.initInputElByTarget(el);\n this.initListeners();\n },\n value: function value (value$1) {\n this.setInputTextByValue(value$1);\n }\n },\n methods: {\n setInputTextByValue: function setInputTextByValue (value) {\n if (isString(value)) {\n // direct\n this.inputEl.value = value;\n } else if (value) {\n // is object\n this.inputEl.value = this.itemKey ? value[this.itemKey] : value;\n } else if (value === null) {\n // is null or undefined or something else not valid\n this.inputEl.value = '';\n }\n },\n hasEmptySlot: function hasEmptySlot () {\n return !!this.$slots.empty || !!this.$scopedSlots.empty\n },\n initInputElByTarget: function initInputElByTarget (target) {\n if (!target) {\n return\n }\n this.inputEl = getElementBySelectorOrRef(target);\n },\n initListeners: function initListeners () {\n if (this.inputEl) {\n this.elements = [this.inputEl];\n on(this.inputEl, EVENTS.FOCUS, this.inputFocused);\n on(this.inputEl, EVENTS.BLUR, this.inputBlured);\n on(this.inputEl, EVENTS.INPUT, this.inputChanged);\n on(this.inputEl, EVENTS.KEY_DOWN, this.inputKeyPressed);\n }\n },\n removeListeners: function removeListeners () {\n this.elements = [];\n if (this.inputEl) {\n off(this.inputEl, EVENTS.FOCUS, this.inputFocused);\n off(this.inputEl, EVENTS.BLUR, this.inputBlured);\n off(this.inputEl, EVENTS.INPUT, this.inputChanged);\n off(this.inputEl, EVENTS.KEY_DOWN, this.inputKeyPressed);\n }\n },\n prepareItems: function prepareItems (data, disableFilters) {\n if ( disableFilters === void 0 ) disableFilters = false;\n\n if (disableFilters) {\n this.items = data.slice(0, this.limit);\n return\n }\n this.items = [];\n this.activeIndex = this.preselect ? 0 : -1;\n for (var i = 0, l = data.length; i < l; i++) {\n var item = data[i];\n var key = this.itemKey ? item[this.itemKey] : item;\n key = key.toString();\n var index = -1;\n if (this.ignoreCase) {\n index = key.toLowerCase().indexOf(this.inputEl.value.toLowerCase());\n } else {\n index = key.indexOf(this.inputEl.value);\n }\n if (this.matchStart ? index === 0 : index >= 0) {\n this.items.push(item);\n }\n if (this.items.length >= this.limit) {\n break\n }\n }\n },\n fetchItems: function fetchItems (value, debounce) {\n var this$1 = this;\n\n clearTimeout(this.timeoutID);\n if (value === '' && !this.openOnEmpty) {\n this.open = false;\n } else if (this.data) {\n this.prepareItems(this.data);\n this.open = this.hasEmptySlot() || Boolean(this.items.length);\n } else if (this.asyncSrc) {\n this.timeoutID = setTimeout(function () {\n this$1.$emit('loading');\n request(this$1.asyncSrc + encodeURIComponent(value))\n .then(function (data) {\n if (this$1.inputEl.matches(':focus')) {\n this$1.prepareItems(this$1.asyncKey ? data[this$1.asyncKey] : data, true);\n this$1.open = this$1.hasEmptySlot() || Boolean(this$1.items.length);\n }\n this$1.$emit('loaded');\n })\n .catch(function (err) {\n console.error(err);\n this$1.$emit('loaded-error');\n });\n }, debounce);\n } else if (this.asyncFunction) {\n var cb = function (data) {\n if (this$1.inputEl.matches(':focus')) {\n this$1.prepareItems(data, true);\n this$1.open = this$1.hasEmptySlot() || Boolean(this$1.items.length);\n }\n this$1.$emit('loaded');\n };\n this.timeoutID = setTimeout(function () {\n this$1.$emit('loading');\n this$1.asyncFunction(value, cb);\n }, debounce);\n }\n },\n inputChanged: function inputChanged () {\n var value = this.inputEl.value;\n this.fetchItems(value, this.debounce);\n this.$emit('input', this.forceSelect ? undefined : value);\n },\n inputFocused: function inputFocused () {\n if (this.openOnFocus) {\n var value = this.inputEl.value;\n this.fetchItems(value, 0);\n }\n },\n inputBlured: function inputBlured () {\n var this$1 = this;\n\n if (!this.dropdownMenuEl.matches(':hover')) {\n this.open = false;\n }\n if (this.inputEl && this.forceClear) {\n this.$nextTick(function () {\n if (typeof this$1.value === 'undefined') {\n this$1.inputEl.value = '';\n }\n });\n }\n },\n inputKeyPressed: function inputKeyPressed (event) {\n event.stopPropagation();\n if (this.open) {\n switch (event.keyCode) {\n case 13:\n if (this.activeIndex >= 0) {\n this.selectItem(this.items[this.activeIndex]);\n } else {\n this.open = false;\n }\n event.preventDefault();\n break\n case 27:\n this.open = false;\n break\n case 38:\n this.activeIndex = this.activeIndex > 0 ? this.activeIndex - 1 : 0;\n break\n case 40: {\n var maxIndex = this.items.length - 1;\n this.activeIndex = this.activeIndex < maxIndex ? this.activeIndex + 1 : maxIndex;\n break\n }\n }\n }\n },\n selectItem: function selectItem (item) {\n this.$emit('input', item);\n this.open = false;\n },\n highlight: function highlight (item) {\n var value = this.itemKey ? item[this.itemKey] : item;\n var inputValue = this.inputEl.value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n return value.replace(new RegExp((\"\" + inputValue), this.regexOptions), '$& ')\n }\n }\n};\n\n/* script */\nvar __vue_script__$d = script$d;\n\n/* template */\nvar __vue_render__$d = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"dropdown\",\n {\n ref: \"dropdown\",\n attrs: {\n tag: \"section\",\n \"append-to-body\": _vm.appendToBody,\n \"not-close-elements\": _vm.elements,\n \"position-element\": _vm.inputEl\n },\n model: {\n value: _vm.open,\n callback: function($$v) {\n _vm.open = $$v;\n },\n expression: \"open\"\n }\n },\n [\n _c(\n \"template\",\n { slot: \"dropdown\" },\n [\n _vm._t(\n \"item\",\n _vm._l(_vm.items, function(item, index) {\n return _c(\n \"li\",\n { class: { active: _vm.activeIndex === index } },\n [\n _c(\n \"a\",\n {\n attrs: { href: \"#\" },\n on: {\n click: function($event) {\n $event.preventDefault();\n return _vm.selectItem(item)\n }\n }\n },\n [\n _c(\"span\", {\n domProps: { innerHTML: _vm._s(_vm.highlight(item)) }\n })\n ]\n )\n ]\n )\n }),\n {\n items: _vm.items,\n activeIndex: _vm.activeIndex,\n select: _vm.selectItem,\n highlight: _vm.highlight\n }\n ),\n _vm._v(\" \"),\n !_vm.items || _vm.items.length === 0 ? _vm._t(\"empty\") : _vm._e()\n ],\n 2\n )\n ],\n 2\n )\n};\nvar __vue_staticRenderFns__$d = [];\n__vue_render__$d._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$d = undefined;\n /* scoped */\n var __vue_scope_id__$d = undefined;\n /* module identifier */\n var __vue_module_identifier__$d = undefined;\n /* functional template */\n var __vue_is_functional_template__$d = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$d = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$d, staticRenderFns: __vue_staticRenderFns__$d },\n __vue_inject_styles__$d,\n __vue_script__$d,\n __vue_scope_id__$d,\n __vue_is_functional_template__$d,\n __vue_module_identifier__$d,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar ProgressBarStack = {\n functional: true,\n render: function render (h, ref) {\n var obj;\n\n var props = ref.props;\n var data = ref.data;\n return h(\n 'div',\n a(data, {\n class: ( obj = {\n 'progress-bar': true,\n 'progress-bar-striped': props.striped,\n active: props.striped && props.active\n }, obj[(\"progress-bar-\" + (props.type))] = Boolean(props.type), obj ),\n style: {\n minWidth: props.minWidth ? '2em' : null,\n width: ((props.value) + \"%\")\n },\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuenow': props.value,\n 'aria-valuemax': 100\n }\n }),\n props.label ? (props.labelText ? props.labelText : ((props.value) + \"%\")) : null\n )\n },\n props: {\n value: {\n type: Number,\n required: true,\n validator: function validator (value) {\n return value >= 0 && value <= 100\n }\n },\n labelText: String,\n type: String,\n label: {\n type: Boolean,\n default: false\n },\n minWidth: {\n type: Boolean,\n default: false\n },\n striped: {\n type: Boolean,\n default: false\n },\n active: {\n type: Boolean,\n default: false\n }\n }\n};\n\nvar ProgressBar = {\n functional: true,\n render: function render (h, ref) {\n var props = ref.props;\n var data = ref.data;\n var children = ref.children;\n\n return h(\n 'div',\n a(data, { class: 'progress' }),\n children && children.length ? children : [h(ProgressBarStack, { props: props })]\n )\n }\n};\n\nvar BreadcrumbItem = {\n functional: true,\n mixins: [linkMixin],\n render: function render (h, ref) {\n var props = ref.props;\n var data = ref.data;\n var children = ref.children;\n\n var slot;\n if (props.active) {\n slot = children;\n } else if (props.to) {\n slot = [\n h('router-link', {\n props: {\n to: props.to,\n replace: props.replace,\n append: props.append,\n exact: props.exact\n }\n }, children)\n ];\n } else {\n slot = [\n h('a', {\n attrs: {\n href: props.href,\n target: props.target\n }\n }, children)\n ];\n }\n return h('li', a(data, { class: { active: props.active } }), slot)\n },\n props: {\n active: {\n type: Boolean,\n default: false\n }\n }\n};\n\nvar Breadcrumbs = {\n functional: true,\n render: function render (h, ref) {\n var props = ref.props;\n var data = ref.data;\n var children = ref.children;\n\n var slot = [];\n if (children && children.length) {\n slot = children;\n } else if (props.items) {\n slot = props.items.map(function (item, index) {\n return h(\n BreadcrumbItem,\n {\n key: hasOwnProperty(item, 'key') ? item.key : index,\n props: {\n active: hasOwnProperty(item, 'active') ? item.active : index === props.items.length - 1,\n href: item.href,\n target: item.target,\n to: item.to,\n replace: item.replace,\n append: item.append,\n exact: item.exact\n }\n },\n item.text\n )\n });\n }\n return h('ol', a(data, { class: 'breadcrumb' }), slot)\n },\n props: {\n items: Array\n }\n};\n\nvar BtnToolbar = {\n functional: true,\n render: function render (h, ref) {\n var children = ref.children;\n var data = ref.data;\n\n return h(\n 'div',\n a(data, {\n class: {\n 'btn-toolbar': true\n },\n attrs: {\n role: 'toolbar'\n }\n }),\n children\n )\n }\n};\n\nvar script$e = {\n mixins: [Local],\n components: { Dropdown: Dropdown },\n props: {\n value: {\n type: Array,\n required: true\n },\n options: {\n type: Array,\n required: true\n },\n labelKey: {\n type: String,\n default: 'label'\n },\n valueKey: {\n type: String,\n default: 'value'\n },\n limit: {\n type: Number,\n default: 0\n },\n size: String,\n placeholder: String,\n split: {\n type: String,\n default: ', '\n },\n disabled: {\n type: Boolean,\n default: false\n },\n appendToBody: {\n type: Boolean,\n default: false\n },\n block: {\n type: Boolean,\n default: false\n },\n collapseSelected: {\n type: Boolean,\n default: false\n },\n filterable: {\n type: Boolean,\n default: false\n },\n filterAutoFocus: {\n type: Boolean,\n default: true\n },\n filterFunction: Function,\n filterPlaceholder: String,\n selectedIcon: {\n type: String,\n default: 'glyphicon glyphicon-ok'\n },\n itemSelectedClass: String\n },\n data: function data () {\n return {\n showDropdown: false,\n els: [],\n filterInput: '',\n currentActive: -1\n }\n },\n computed: {\n containerStyles: function containerStyles () {\n return {\n width: this.block ? '100%' : ''\n }\n },\n filteredOptions: function filteredOptions () {\n var this$1 = this;\n\n if (this.filterable && this.filterInput) {\n if (this.filterFunction) {\n return this.filterFunction(this.filterInput)\n } else {\n var filterInput = this.filterInput.toLowerCase();\n return this.options.filter(function (v) { return (\n v[this$1.valueKey].toString().toLowerCase().indexOf(filterInput) >= 0 ||\n v[this$1.labelKey].toString().toLowerCase().indexOf(filterInput) >= 0\n ); })\n }\n } else {\n return this.options\n }\n },\n groupedOptions: function groupedOptions () {\n var this$1 = this;\n\n return this.filteredOptions\n .map(function (v) { return v.group; })\n .filter(onlyUnique)\n .map(function (v) { return ({\n options: this$1.filteredOptions.filter(function (option) { return option.group === v; }),\n $group: v\n }); })\n },\n flattenGroupedOptions: function flattenGroupedOptions () {\n var ref;\n\n return (ref = []).concat.apply(ref, this.groupedOptions.map(function (v) { return v.options; }))\n },\n selectClasses: function selectClasses () {\n var obj;\n\n return ( obj = {}, obj[(\"input-\" + (this.size))] = this.size, obj )\n },\n selectedIconClasses: function selectedIconClasses () {\n var obj;\n\n return ( obj = {}, obj[this.selectedIcon] = true, obj['pull-right'] = true, obj )\n },\n selectTextClasses: function selectTextClasses () {\n return {\n 'text-muted': this.value.length === 0\n }\n },\n labelValue: function labelValue () {\n var this$1 = this;\n\n var optionsByValue = this.options.map(function (v) { return v[this$1.valueKey]; });\n return this.value.map(function (v) {\n var index = optionsByValue.indexOf(v);\n return index >= 0 ? this$1.options[index][this$1.labelKey] : v\n })\n },\n selectedText: function selectedText () {\n if (this.value.length) {\n var labelValue = this.labelValue;\n if (this.collapseSelected) {\n var str = labelValue[0];\n str += labelValue.length > 1 ? ((this.split) + \"+\" + (labelValue.length - 1)) : '';\n return str\n } else {\n return labelValue.join(this.split)\n }\n } else {\n return this.placeholder || this.t('uiv.multiSelect.placeholder')\n }\n },\n customOptionsVisible: function customOptionsVisible () {\n return !!this.$slots.option || !!this.$scopedSlots.option\n }\n },\n watch: {\n showDropdown: function showDropdown (v) {\n var this$1 = this;\n\n // clear filter input when dropdown toggles\n this.filterInput = '';\n this.currentActive = -1;\n this.$emit('visible-change', v);\n if (v && this.filterable && this.filterAutoFocus) {\n this.$nextTick(function () {\n this$1.$refs.filterInput.focus();\n });\n }\n }\n },\n mounted: function mounted () {\n this.els = [this.$el];\n },\n methods: {\n goPrevOption: function goPrevOption () {\n if (!this.showDropdown) {\n return\n }\n this.currentActive > 0 ? this.currentActive-- : this.currentActive = this.flattenGroupedOptions.length - 1;\n },\n goNextOption: function goNextOption () {\n if (!this.showDropdown) {\n return\n }\n this.currentActive < this.flattenGroupedOptions.length - 1 ? this.currentActive++ : this.currentActive = 0;\n },\n selectOption: function selectOption () {\n var index = this.currentActive;\n var options = this.flattenGroupedOptions;\n if (!this.showDropdown) {\n this.showDropdown = true;\n } else if (index >= 0 && index < options.length) {\n this.toggle(options[index]);\n }\n },\n itemClasses: function itemClasses (item) {\n var result = {\n disabled: item.disabled,\n active: this.currentActive === this.flattenGroupedOptions.indexOf(item)\n };\n if (this.itemSelectedClass) {\n result[this.itemSelectedClass] = this.isItemSelected(item);\n }\n return result\n },\n isItemSelected: function isItemSelected (item) {\n return this.value.indexOf(item[this.valueKey]) >= 0\n },\n toggle: function toggle (item) {\n if (item.disabled) {\n return\n }\n var value = item[this.valueKey];\n var index = this.value.indexOf(value);\n if (this.limit === 1) {\n var newValue = index >= 0 ? [] : [value];\n this.$emit('input', newValue);\n this.$emit('change', newValue);\n } else {\n if (index >= 0) {\n var newVal = this.value.slice();\n newVal.splice(index, 1);\n this.$emit('input', newVal);\n this.$emit('change', newVal);\n } else if (this.limit === 0 || this.value.length < this.limit) {\n var newVal$1 = this.value.slice();\n newVal$1.push(value);\n this.$emit('input', newVal$1);\n this.$emit('change', newVal$1);\n } else {\n this.$emit('limit-exceed');\n }\n }\n },\n searchClicked: function searchClicked () {\n this.$emit('search', this.filterInput);\n }\n }\n};\n\n/* script */\nvar __vue_script__$e = script$e;\n\n/* template */\nvar __vue_render__$e = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"dropdown\",\n {\n ref: \"dropdown\",\n style: _vm.containerStyles,\n attrs: {\n \"not-close-elements\": _vm.els,\n \"append-to-body\": _vm.appendToBody,\n disabled: _vm.disabled\n },\n nativeOn: {\n keydown: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])\n ) {\n return null\n }\n _vm.showDropdown = false;\n }\n },\n model: {\n value: _vm.showDropdown,\n callback: function($$v) {\n _vm.showDropdown = $$v;\n },\n expression: \"showDropdown\"\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"form-control dropdown-toggle clearfix\",\n class: _vm.selectClasses,\n attrs: {\n disabled: _vm.disabled,\n tabindex: \"0\",\n \"data-role\": \"trigger\"\n },\n on: {\n focus: function($event) {\n return _vm.$emit(\"focus\", $event)\n },\n blur: function($event) {\n return _vm.$emit(\"blur\", $event)\n },\n keydown: [\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.goNextOption($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.goPrevOption($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.selectOption($event)\n }\n ]\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"pull-right\",\n staticStyle: {\n display: \"inline-block\",\n \"vertical-align\": \"middle\"\n }\n },\n [\n _c(\"span\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"caret\" })\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", {\n class: _vm.selectTextClasses,\n staticStyle: {\n \"overflow-x\": \"hidden\",\n \"text-overflow\": \"ellipsis\",\n \"white-space\": \"nowrap\"\n },\n domProps: { textContent: _vm._s(_vm.selectedText) }\n })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"template\",\n { slot: \"dropdown\" },\n [\n _vm.filterable\n ? _c(\"li\", { staticStyle: { padding: \"4px 8px\" } }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.filterInput,\n expression: \"filterInput\"\n }\n ],\n ref: \"filterInput\",\n staticClass: \"form-control input-sm\",\n attrs: {\n \"aria-label\": \"Filter...\",\n type: \"text\",\n placeholder:\n _vm.filterPlaceholder ||\n _vm.t(\"uiv.multiSelect.filterPlaceholder\")\n },\n domProps: { value: _vm.filterInput },\n on: {\n keyup: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.searchClicked($event)\n },\n keydown: [\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.goNextOption($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.goPrevOption($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.selectOption($event)\n }\n ],\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.filterInput = $event.target.value;\n }\n }\n })\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm._l(_vm.groupedOptions, function(item) {\n return [\n item.$group\n ? _c(\"li\", {\n staticClass: \"dropdown-header\",\n domProps: { textContent: _vm._s(item.$group) }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm._l(item.options, function(_item) {\n return [\n _c(\n \"li\",\n {\n class: _vm.itemClasses(_item),\n staticStyle: { outline: \"0\" },\n on: {\n keydown: [\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.goNextOption($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\n \"Up\",\n \"ArrowUp\"\n ])\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.goPrevOption($event)\n },\n function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.selectOption($event)\n }\n ],\n click: function($event) {\n $event.stopPropagation();\n return _vm.toggle(_item)\n },\n mouseenter: function($event) {\n _vm.currentActive = -1;\n }\n }\n },\n [\n _vm.customOptionsVisible\n ? _c(\n \"a\",\n {\n staticStyle: { outline: \"0\" },\n attrs: { role: \"button\" }\n },\n [\n _vm._t(\"option\", null, { item: _item }),\n _vm._v(\" \"),\n _vm.selectedIcon && _vm.isItemSelected(_item)\n ? _c(\"span\", { class: _vm.selectedIconClasses })\n : _vm._e()\n ],\n 2\n )\n : _vm.isItemSelected(_item)\n ? _c(\n \"a\",\n {\n staticStyle: { outline: \"0\" },\n attrs: { role: \"button\" }\n },\n [\n _c(\"b\", [_vm._v(_vm._s(_item[_vm.labelKey]))]),\n _vm._v(\" \"),\n _vm.selectedIcon\n ? _c(\"span\", { class: _vm.selectedIconClasses })\n : _vm._e()\n ]\n )\n : _c(\n \"a\",\n {\n staticStyle: { outline: \"0\" },\n attrs: { role: \"button\" }\n },\n [_c(\"span\", [_vm._v(_vm._s(_item[_vm.labelKey]))])]\n )\n ]\n )\n ]\n })\n ]\n })\n ],\n 2\n )\n ],\n 2\n )\n};\nvar __vue_staticRenderFns__$e = [];\n__vue_render__$e._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$e = undefined;\n /* scoped */\n var __vue_scope_id__$e = undefined;\n /* module identifier */\n var __vue_module_identifier__$e = undefined;\n /* functional template */\n var __vue_is_functional_template__$e = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$e = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$e, staticRenderFns: __vue_staticRenderFns__$e },\n __vue_inject_styles__$e,\n __vue_script__$e,\n __vue_scope_id__$e,\n __vue_is_functional_template__$e,\n __vue_module_identifier__$e,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$f = {\n components: { Collapse: Collapse },\n props: {\n value: Boolean,\n fluid: {\n type: Boolean,\n default: true\n },\n fixedTop: Boolean,\n fixedBottom: Boolean,\n staticTop: Boolean,\n inverse: Boolean\n },\n data: function data () {\n return {\n show: false\n }\n },\n computed: {\n navClasses: function navClasses () {\n return {\n navbar: true,\n 'navbar-default': !this.inverse,\n 'navbar-inverse': this.inverse,\n 'navbar-static-top': this.staticTop,\n 'navbar-fixed-bottom': this.fixedBottom,\n 'navbar-fixed-top': this.fixedTop\n }\n }\n },\n mounted: function mounted () {\n this.show = !!this.value;\n },\n watch: {\n value: function value (v) {\n this.show = v;\n }\n },\n methods: {\n toggle: function toggle () {\n this.show = !this.show;\n this.$emit('input', this.show);\n }\n }\n};\n\n/* script */\nvar __vue_script__$f = script$f;\n\n/* template */\nvar __vue_render__$f = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"nav\", { class: _vm.navClasses }, [\n _c(\n \"div\",\n { class: _vm.fluid ? \"container-fluid\" : \"container\" },\n [\n _c(\n \"div\",\n { staticClass: \"navbar-header\" },\n [\n _vm._t(\"collapse-btn\", [\n _c(\n \"button\",\n {\n staticClass: \"navbar-toggle collapsed\",\n attrs: { type: \"button\" },\n on: { click: _vm.toggle }\n },\n [\n _c(\"span\", { staticClass: \"sr-only\" }, [\n _vm._v(\"Toggle navigation\")\n ]),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"icon-bar\" }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"icon-bar\" }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"icon-bar\" })\n ]\n )\n ]),\n _vm._v(\" \"),\n _vm._t(\"brand\")\n ],\n 2\n ),\n _vm._v(\" \"),\n _vm._t(\"default\"),\n _vm._v(\" \"),\n _c(\n \"collapse\",\n {\n staticClass: \"navbar-collapse\",\n model: {\n value: _vm.show,\n callback: function($$v) {\n _vm.show = $$v;\n },\n expression: \"show\"\n }\n },\n [_vm._t(\"collapse\")],\n 2\n )\n ],\n 2\n )\n ])\n};\nvar __vue_staticRenderFns__$f = [];\n__vue_render__$f._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$f = undefined;\n /* scoped */\n var __vue_scope_id__$f = undefined;\n /* module identifier */\n var __vue_module_identifier__$f = undefined;\n /* functional template */\n var __vue_is_functional_template__$f = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$f = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$f, staticRenderFns: __vue_staticRenderFns__$f },\n __vue_inject_styles__$f,\n __vue_script__$f,\n __vue_scope_id__$f,\n __vue_is_functional_template__$f,\n __vue_module_identifier__$f,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar NavbarNav = {\n functional: true,\n render: function render (h, ref) {\n var children = ref.children;\n var data = ref.data;\n var props = ref.props;\n\n return h(\n 'ul',\n a(data, {\n class: {\n nav: true,\n 'navbar-nav': true,\n 'navbar-left': props.left,\n 'navbar-right': props.right\n }\n }),\n children\n )\n },\n props: {\n left: Boolean,\n right: Boolean\n }\n};\n\nvar NavbarForm = {\n functional: true,\n render: function render (h, ref) {\n var children = ref.children;\n var data = ref.data;\n var props = ref.props;\n\n return h(\n 'form',\n a(data, {\n class: {\n 'navbar-form': true,\n 'navbar-left': props.left,\n 'navbar-right': props.right\n }\n }),\n children\n )\n },\n props: {\n left: Boolean,\n right: Boolean\n }\n};\n\nvar NavbarText = {\n functional: true,\n render: function render (h, ref) {\n var children = ref.children;\n var data = ref.data;\n var props = ref.props;\n\n return h(\n 'p',\n a(data, {\n class: {\n 'navbar-text': true,\n 'navbar-left': props.left,\n 'navbar-right': props.right\n }\n }),\n children\n )\n },\n props: {\n left: Boolean,\n right: Boolean\n }\n};\n\nvar components = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Carousel: __vue_component__,\n Slide: __vue_component__$1,\n Collapse: Collapse,\n Dropdown: Dropdown,\n Modal: __vue_component__$2,\n Tab: __vue_component__$3,\n Tabs: __vue_component__$4,\n DatePicker: __vue_component__$8,\n Affix: __vue_component__$9,\n Alert: __vue_component__$a,\n Pagination: __vue_component__$b,\n Tooltip: Tooltip,\n Popover: Popover,\n TimePicker: __vue_component__$c,\n Typeahead: __vue_component__$d,\n ProgressBar: ProgressBar,\n ProgressBarStack: ProgressBarStack,\n Breadcrumbs: Breadcrumbs,\n BreadcrumbItem: BreadcrumbItem,\n Btn: Btn,\n BtnGroup: BtnGroup,\n BtnToolbar: BtnToolbar,\n MultiSelect: __vue_component__$e,\n Navbar: __vue_component__$f,\n NavbarNav: NavbarNav,\n NavbarForm: NavbarForm,\n NavbarText: NavbarText\n});\n\nvar INSTANCE = '_uiv_tooltip_instance';\n\nvar bind$1 = function (el, binding) {\n // console.log('bind')\n unbind$1(el);\n var Constructor = Vue.extend(Tooltip);\n var vm = new Constructor({\n propsData: {\n target: el,\n appendTo: binding.arg && '#' + binding.arg,\n text: typeof binding.value === 'string' ? (binding.value && binding.value.toString()) : (binding.value && binding.value.text && binding.value.text.toString()),\n positionBy: binding.value && binding.value.positionBy && binding.value.positionBy.toString(),\n viewport: binding.value && binding.value.viewport && binding.value.viewport.toString(),\n customClass: binding.value && binding.value.customClass && binding.value.customClass.toString(),\n showDelay: binding.value && binding.value.showDelay,\n hideDelay: binding.value && binding.value.hideDelay\n }\n });\n var options = [];\n for (var key in binding.modifiers) {\n if (hasOwnProperty(binding.modifiers, key) && binding.modifiers[key]) {\n options.push(key);\n }\n }\n options.forEach(function (option) {\n if (/(top)|(left)|(right)|(bottom)/.test(option)) {\n vm.placement = option;\n } else if (/(hover)|(focus)|(click)/.test(option)) {\n vm.trigger = option;\n } else if (/unenterable/.test(option)) {\n vm.enterable = false;\n }\n });\n vm.$mount();\n el[INSTANCE] = vm;\n};\n\nvar unbind$1 = function (el) {\n // console.log('unbind')\n var vm = el[INSTANCE];\n if (vm) {\n vm.$destroy();\n }\n delete el[INSTANCE];\n};\n\nvar update$1 = function (el, binding) {\n // console.log('update')\n if (binding.value !== binding.oldValue) {\n bind$1(el, binding);\n }\n};\n\nvar tooltip = { bind: bind$1, unbind: unbind$1, update: update$1 };\n\nvar INSTANCE$1 = '_uiv_popover_instance';\n\nvar bind$2 = function (el, binding) {\n // console.log('bind')\n unbind$2(el);\n var Constructor = Vue.extend(Popover);\n var vm = new Constructor({\n propsData: {\n target: el,\n appendTo: binding.arg && '#' + binding.arg,\n title: binding.value && binding.value.title && binding.value.title.toString(),\n positionBy: binding.value && binding.value.positionBy && binding.value.positionBy.toString(),\n content: binding.value && binding.value.content && binding.value.content.toString(),\n viewport: binding.value && binding.value.viewport && binding.value.viewport.toString(),\n customClass: binding.value && binding.value.customClass && binding.value.customClass.toString()\n }\n });\n var options = [];\n for (var key in binding.modifiers) {\n if (hasOwnProperty(binding.modifiers, key) && binding.modifiers[key]) {\n options.push(key);\n }\n }\n options.forEach(function (option) {\n if (/(top)|(left)|(right)|(bottom)/.test(option)) {\n vm.placement = option;\n } else if (/(hover)|(focus)|(click)/.test(option)) {\n vm.trigger = option;\n } else if (/unenterable/.test(option)) {\n vm.enterable = false;\n }\n });\n vm.$mount();\n el[INSTANCE$1] = vm;\n};\n\nvar unbind$2 = function (el) {\n // console.log('unbind')\n var vm = el[INSTANCE$1];\n if (vm) {\n vm.$destroy();\n }\n delete el[INSTANCE$1];\n};\n\nvar update$2 = function (el, binding) {\n // console.log('update')\n if (binding.value !== binding.oldValue) {\n bind$2(el, binding);\n }\n};\n\nvar popover = { bind: bind$2, unbind: unbind$2, update: update$2 };\n\nfunction ScrollSpy (element, target, options) {\n if ( target === void 0 ) target = 'body';\n if ( options === void 0 ) options = {};\n\n this.el = element;\n this.opts = assign({}, ScrollSpy.DEFAULTS, options);\n this.opts.target = target;\n if (target === 'body') {\n this.scrollElement = window;\n } else {\n this.scrollElement = document.querySelector((\"[id=\" + target + \"]\"));\n }\n this.selector = 'li > a';\n this.offsets = [];\n this.targets = [];\n this.activeTarget = null;\n this.scrollHeight = 0;\n if (this.scrollElement) {\n this.refresh();\n this.process();\n }\n}\n\nScrollSpy.DEFAULTS = {\n offset: 10,\n callback: function (ele) { return 0; }\n};\n\nScrollSpy.prototype.getScrollHeight = function () {\n return this.scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)\n};\n\nScrollSpy.prototype.refresh = function () {\n var this$1 = this;\n\n this.offsets = [];\n this.targets = [];\n this.scrollHeight = this.getScrollHeight();\n var list = nodeListToArray(this.el.querySelectorAll(this.selector));\n var isWindow = this.scrollElement === window;\n list\n .map(function (ele) {\n var href = ele.getAttribute('href');\n if (/^#./.test(href)) {\n var rootEl = isWindow ? document : this$1.scrollElement;\n var hrefEl = rootEl.querySelector((\"[id='\" + (href.slice(1)) + \"']\"));\n var offset = isWindow ? hrefEl.getBoundingClientRect().top : hrefEl.offsetTop;\n return [offset, href]\n } else {\n return null\n }\n })\n .filter(function (item) { return item; })\n .sort(function (a, b) { return a[0] - b[0]; })\n .forEach(function (item) {\n this$1.offsets.push(item[0]);\n this$1.targets.push(item[1]);\n });\n // console.log(this.offsets, this.targets)\n};\n\nScrollSpy.prototype.process = function () {\n var isWindow = this.scrollElement === window;\n var scrollTop = (isWindow ? window.pageYOffset : this.scrollElement.scrollTop) + this.opts.offset;\n var scrollHeight = this.getScrollHeight();\n var scrollElementHeight = isWindow ? getViewportSize().height : this.scrollElement.getBoundingClientRect().height;\n var maxScroll = this.opts.offset + scrollHeight - scrollElementHeight;\n var offsets = this.offsets;\n var targets = this.targets;\n var activeTarget = this.activeTarget;\n var i;\n if (this.scrollHeight !== scrollHeight) {\n this.refresh();\n }\n if (scrollTop >= maxScroll) {\n return activeTarget !== (i = targets[targets.length - 1]) && this.activate(i)\n }\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null;\n return this.clear()\n }\n for (i = offsets.length; i--;) {\n activeTarget !== targets[i] &&\n scrollTop >= offsets[i] &&\n (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) &&\n this.activate(targets[i]);\n }\n};\n\nScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target;\n this.clear();\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]';\n var activeCallback = this.opts.callback;\n var active = nodeListToArray(this.el.querySelectorAll(selector));\n active.forEach(function (ele) {\n getParents(ele, 'li')\n .forEach(function (item) {\n addClass(item, 'active');\n activeCallback(item);\n });\n if (getParents(ele, '.dropdown-menu').length) {\n addClass(getClosest(ele, 'li.dropdown'), 'active');\n }\n });\n};\n\nScrollSpy.prototype.clear = function () {\n var this$1 = this;\n\n var list = nodeListToArray(this.el.querySelectorAll(this.selector));\n list.forEach(function (ele) {\n getParents(ele, '.active', this$1.opts.target).forEach(function (item) {\n removeClass(item, 'active');\n });\n });\n};\n\nvar INSTANCE$2 = '_uiv_scrollspy_instance';\nvar events$1 = [EVENTS.RESIZE, EVENTS.SCROLL];\n\nvar bind$3 = function (el, binding) {\n // console.log('bind')\n unbind$3(el);\n};\n\nvar inserted = function (el, binding) {\n // console.log('inserted')\n var scrollSpy = new ScrollSpy(el, binding.arg, binding.value);\n if (scrollSpy.scrollElement) {\n scrollSpy.handler = function () {\n scrollSpy.process();\n };\n events$1.forEach(function (event) {\n on(scrollSpy.scrollElement, event, scrollSpy.handler);\n });\n }\n el[INSTANCE$2] = scrollSpy;\n};\n\nvar unbind$3 = function (el) {\n // console.log('unbind')\n var instance = el[INSTANCE$2];\n if (instance && instance.scrollElement) {\n events$1.forEach(function (event) {\n off(instance.scrollElement, event, instance.handler);\n });\n delete el[INSTANCE$2];\n }\n};\n\nvar update$3 = function (el, binding) {\n // console.log('update')\n var isArgUpdated = binding.arg !== binding.oldArg;\n var isValueUpdated = binding.value !== binding.oldValue;\n if (isArgUpdated || isValueUpdated) {\n bind$3(el);\n inserted(el, binding);\n }\n};\n\nvar scrollspy = { bind: bind$3, unbind: unbind$3, update: update$3, inserted: inserted };\n\nvar directives = /*#__PURE__*/Object.freeze({\n __proto__: null,\n tooltip: tooltip,\n popover: popover,\n scrollspy: scrollspy\n});\n\nvar TYPES = {\n ALERT: 0,\n CONFIRM: 1,\n PROMPT: 2\n};\n\nvar script$g = {\n mixins: [Local],\n components: { Modal: __vue_component__$2, Btn: Btn },\n props: {\n backdrop: null,\n title: String,\n content: String,\n html: {\n type: Boolean,\n default: false\n },\n okText: String,\n okType: {\n type: String,\n default: 'primary'\n },\n cancelText: String,\n cancelType: {\n type: String,\n default: 'default'\n },\n type: {\n type: Number,\n default: TYPES.ALERT\n },\n size: {\n type: String,\n default: 'sm'\n },\n cb: {\n type: Function,\n required: true\n },\n validator: {\n type: Function,\n default: function () { return null; }\n },\n customClass: null,\n defaultValue: String,\n inputType: {\n type: String,\n default: 'text'\n },\n autoFocus: {\n type: String,\n default: 'ok'\n },\n reverseButtons: {\n type: Boolean,\n default: false\n }\n },\n data: function data () {\n return {\n TYPES: TYPES,\n show: false,\n input: '',\n dirty: false\n }\n },\n mounted: function mounted () {\n if (this.defaultValue) {\n this.input = this.defaultValue;\n }\n },\n computed: {\n closeOnBackdropClick: function closeOnBackdropClick () {\n // use backdrop prop if exist\n // otherwise, only not available if render as alert\n return isExist(this.backdrop) ? Boolean(this.backdrop) : (this.type !== TYPES.ALERT)\n },\n inputError: function inputError () {\n return this.validator(this.input)\n },\n inputNotValid: function inputNotValid () {\n return this.dirty && this.inputError\n },\n okBtnText: function okBtnText () {\n return this.okText || this.t('uiv.modal.ok')\n },\n cancelBtnText: function cancelBtnText () {\n return this.cancelText || this.t('uiv.modal.cancel')\n }\n },\n methods: {\n toggle: function toggle (show, msg) {\n this.$refs.modal.toggle(show, msg);\n },\n validate: function validate () {\n this.dirty = true;\n if (!isExist(this.inputError)) {\n this.toggle(false, { value: this.input });\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$g = script$g;\n\n/* template */\nvar __vue_render__$g = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"modal\",\n {\n ref: \"modal\",\n class: _vm.customClass,\n attrs: {\n \"auto-focus\": \"\",\n size: _vm.size,\n title: _vm.title,\n header: !!_vm.title,\n backdrop: _vm.closeOnBackdropClick,\n \"cancel-text\": _vm.cancelText,\n \"ok-text\": _vm.okText\n },\n on: { hide: _vm.cb },\n model: {\n value: _vm.show,\n callback: function($$v) {\n _vm.show = $$v;\n },\n expression: \"show\"\n }\n },\n [\n _vm.html\n ? _c(\"div\", { domProps: { innerHTML: _vm._s(_vm.content) } })\n : _c(\"p\", [_vm._v(_vm._s(_vm.content))]),\n _vm._v(\" \"),\n _vm.type === _vm.TYPES.PROMPT\n ? _c(\"div\", [\n _c(\n \"div\",\n {\n staticClass: \"form-group\",\n class: { \"has-error\": _vm.inputNotValid }\n },\n [\n _vm.inputType === \"checkbox\"\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.input,\n expression: \"input\"\n }\n ],\n ref: \"input\",\n staticClass: \"form-control\",\n attrs: {\n required: \"\",\n \"data-action\": \"auto-focus\",\n type: \"checkbox\"\n },\n domProps: {\n checked: Array.isArray(_vm.input)\n ? _vm._i(_vm.input, null) > -1\n : _vm.input\n },\n on: {\n change: [\n function($event) {\n var $$a = _vm.input,\n $$el = $event.target,\n $$c = $$el.checked ? true : false;\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v);\n if ($$el.checked) {\n $$i < 0 && (_vm.input = $$a.concat([$$v]));\n } else {\n $$i > -1 &&\n (_vm.input = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)));\n }\n } else {\n _vm.input = $$c;\n }\n },\n function($event) {\n _vm.dirty = true;\n }\n ],\n keyup: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n return _vm.validate($event)\n }\n }\n })\n : _vm.inputType === \"radio\"\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.input,\n expression: \"input\"\n }\n ],\n ref: \"input\",\n staticClass: \"form-control\",\n attrs: {\n required: \"\",\n \"data-action\": \"auto-focus\",\n type: \"radio\"\n },\n domProps: { checked: _vm._q(_vm.input, null) },\n on: {\n change: [\n function($event) {\n _vm.input = null;\n },\n function($event) {\n _vm.dirty = true;\n }\n ],\n keyup: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n return _vm.validate($event)\n }\n }\n })\n : _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.input,\n expression: \"input\"\n }\n ],\n ref: \"input\",\n staticClass: \"form-control\",\n attrs: {\n required: \"\",\n \"data-action\": \"auto-focus\",\n type: _vm.inputType\n },\n domProps: { value: _vm.input },\n on: {\n change: function($event) {\n _vm.dirty = true;\n },\n keyup: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n return _vm.validate($event)\n },\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.input = $event.target.value;\n }\n }\n }),\n _vm._v(\" \"),\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.inputNotValid,\n expression: \"inputNotValid\"\n }\n ],\n staticClass: \"help-block\"\n },\n [_vm._v(_vm._s(_vm.inputError))]\n )\n ]\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.type === _vm.TYPES.ALERT\n ? _c(\n \"template\",\n { slot: \"footer\" },\n [\n _c(\"btn\", {\n attrs: {\n type: _vm.okType,\n \"data-action\": _vm.autoFocus === \"ok\" ? \"auto-focus\" : \"\"\n },\n domProps: { textContent: _vm._s(_vm.okBtnText) },\n on: {\n click: function($event) {\n return _vm.toggle(false, \"ok\")\n }\n }\n })\n ],\n 1\n )\n : _c(\n \"template\",\n { slot: \"footer\" },\n [\n _vm.reverseButtons\n ? [\n _vm.type === _vm.TYPES.CONFIRM\n ? _c(\"btn\", {\n attrs: {\n type: _vm.okType,\n \"data-action\":\n _vm.autoFocus === \"ok\" ? \"auto-focus\" : \"\"\n },\n domProps: { textContent: _vm._s(_vm.okBtnText) },\n on: {\n click: function($event) {\n return _vm.toggle(false, \"ok\")\n }\n }\n })\n : _c(\"btn\", {\n attrs: { type: _vm.okType },\n domProps: { textContent: _vm._s(_vm.okBtnText) },\n on: { click: _vm.validate }\n }),\n _vm._v(\" \"),\n _c(\"btn\", {\n attrs: {\n type: _vm.cancelType,\n \"data-action\":\n _vm.autoFocus === \"cancel\" ? \"auto-focus\" : \"\"\n },\n domProps: { textContent: _vm._s(_vm.cancelBtnText) },\n on: {\n click: function($event) {\n return _vm.toggle(false, \"cancel\")\n }\n }\n })\n ]\n : [\n _c(\"btn\", {\n attrs: {\n type: _vm.cancelType,\n \"data-action\":\n _vm.autoFocus === \"cancel\" ? \"auto-focus\" : \"\"\n },\n domProps: { textContent: _vm._s(_vm.cancelBtnText) },\n on: {\n click: function($event) {\n return _vm.toggle(false, \"cancel\")\n }\n }\n }),\n _vm._v(\" \"),\n _vm.type === _vm.TYPES.CONFIRM\n ? _c(\"btn\", {\n attrs: {\n type: _vm.okType,\n \"data-action\":\n _vm.autoFocus === \"ok\" ? \"auto-focus\" : \"\"\n },\n domProps: { textContent: _vm._s(_vm.okBtnText) },\n on: {\n click: function($event) {\n return _vm.toggle(false, \"ok\")\n }\n }\n })\n : _c(\"btn\", {\n attrs: { type: _vm.okType },\n domProps: { textContent: _vm._s(_vm.okBtnText) },\n on: { click: _vm.validate }\n })\n ]\n ],\n 2\n )\n ],\n 2\n )\n};\nvar __vue_staticRenderFns__$g = [];\n__vue_render__$g._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$g = undefined;\n /* scoped */\n var __vue_scope_id__$g = undefined;\n /* module identifier */\n var __vue_module_identifier__$g = undefined;\n /* functional template */\n var __vue_is_functional_template__$g = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$g = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$g, staticRenderFns: __vue_staticRenderFns__$g },\n __vue_inject_styles__$g,\n __vue_script__$g,\n __vue_scope_id__$g,\n __vue_is_functional_template__$g,\n __vue_module_identifier__$g,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar queue = [];\n\nvar destroy = function (instance) {\n // console.log('destroyModal')\n removeFromDom(instance.$el);\n instance.$destroy();\n spliceIfExist(queue, instance);\n};\n\n// handel cancel or ok for confirm & prompt\nvar shallResolve = function (type, msg) {\n if (type === TYPES.CONFIRM) {\n // is confirm\n return msg === 'ok'\n } else {\n // is prompt\n return isExist(msg) && isString(msg.value)\n }\n};\n\nvar init = function (type, options, cb, resolve, reject) {\n if ( resolve === void 0 ) resolve = null;\n if ( reject === void 0 ) reject = null;\n\n var i18n = this.$i18n;\n var instance = new Vue({\n extends: __vue_component__$g,\n i18n: i18n,\n propsData: assign({}, { type: type }, options, {\n cb: function cb$1 (msg) {\n destroy(instance);\n if (isFunction(cb)) {\n if (type === TYPES.CONFIRM) {\n shallResolve(type, msg) ? cb(null, msg) : cb(msg);\n } else if (type === TYPES.PROMPT) {\n shallResolve(type, msg) ? cb(null, msg.value) : cb(msg);\n } else {\n cb(msg);\n }\n } else if (resolve && reject) {\n if (type === TYPES.CONFIRM) {\n shallResolve(type, msg) ? resolve(msg) : reject(msg);\n } else if (type === TYPES.PROMPT) {\n shallResolve(type, msg) ? resolve(msg.value) : reject(msg);\n } else {\n resolve(msg);\n }\n }\n }\n })\n });\n instance.$mount();\n document.body.appendChild(instance.$el);\n instance.show = true;\n queue.push(instance);\n};\n\n// eslint-disable-next-line default-param-last\nvar initModal = function (type, options, cb) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n if (isPromiseSupported()) {\n return new Promise(function (resolve, reject) {\n init.apply(this$1, [type, options, cb, resolve, reject]);\n })\n } else {\n init.apply(this, [type, options, cb]);\n }\n};\n\nvar alert = function (options, cb) {\n return initModal.apply(this, [TYPES.ALERT, options, cb])\n};\n\nvar confirm = function (options, cb) {\n return initModal.apply(this, [TYPES.CONFIRM, options, cb])\n};\n\nvar prompt = function (options, cb) {\n return initModal.apply(this, [TYPES.PROMPT, options, cb])\n};\n\nvar MessageBox = { alert: alert, confirm: confirm, prompt: prompt };\n\nvar TYPES$1 = {\n SUCCESS: 'success',\n INFO: 'info',\n DANGER: 'danger',\n WARNING: 'warning'\n};\n\nvar PLACEMENTS$1 = {\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right',\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right'\n};\n\nvar IN_CLASS$1 = 'in';\nvar ICON = 'glyphicon';\nvar WIDTH = 300;\nvar TRANSITION_DURATION = 300;\n\nvar script$h = {\n components: { Alert: __vue_component__$a },\n props: {\n title: String,\n content: String,\n html: {\n type: Boolean,\n default: false\n },\n duration: {\n type: Number,\n default: 5000\n },\n dismissible: {\n type: Boolean,\n default: true\n },\n type: String,\n placement: String,\n icon: String,\n customClass: null,\n cb: {\n type: Function,\n required: true\n },\n queue: {\n type: Array,\n required: true\n },\n offsetY: {\n type: Number,\n default: 15\n },\n offsetX: {\n type: Number,\n default: 15\n },\n offset: {\n type: Number,\n default: 15\n }\n },\n data: function data () {\n return {\n height: 0,\n top: 0,\n horizontal: this.placement === PLACEMENTS$1.TOP_LEFT || this.placement === PLACEMENTS$1.BOTTOM_LEFT ? 'left' : 'right',\n vertical: this.placement === PLACEMENTS$1.TOP_LEFT || this.placement === PLACEMENTS$1.TOP_RIGHT ? 'top' : 'bottom'\n }\n },\n created: function created () {\n // get prev notifications total height in the queue\n this.top = this.getTotalHeightOfQueue(this.queue);\n },\n mounted: function mounted () {\n var this$1 = this;\n\n var el = this.$el;\n el.style[this.vertical] = this.top + 'px';\n this.$nextTick(function () {\n el.style[this$1.horizontal] = \"-\" + WIDTH + \"px\";\n this$1.height = el.offsetHeight;\n el.style[this$1.horizontal] = (this$1.offsetX) + \"px\";\n addClass(el, IN_CLASS$1);\n });\n },\n computed: {\n styles: function styles () {\n var obj;\n\n var queue = this.queue;\n var thisIndex = queue.indexOf(this);\n return ( obj = {\n position: 'fixed'\n }, obj[this.vertical] = ((this.getTotalHeightOfQueue(queue, thisIndex)) + \"px\"), obj.width = (WIDTH + \"px\"), obj.transition = (\"all \" + (TRANSITION_DURATION / 1000) + \"s ease-in-out\"), obj )\n },\n icons: function icons () {\n if (isString(this.icon)) {\n return this.icon\n }\n switch (this.type) {\n case TYPES$1.INFO:\n case TYPES$1.WARNING:\n return (ICON + \" \" + ICON + \"-info-sign\")\n case TYPES$1.SUCCESS:\n return (ICON + \" \" + ICON + \"-ok-sign\")\n case TYPES$1.DANGER:\n return (ICON + \" \" + ICON + \"-remove-sign\")\n default:\n return null\n }\n }\n },\n methods: {\n getTotalHeightOfQueue: function getTotalHeightOfQueue (queue, lastIndex) {\n if ( lastIndex === void 0 ) lastIndex = queue.length;\n\n var totalHeight = this.offsetY;\n for (var i = 0; i < lastIndex; i++) {\n totalHeight += queue[i].height + this.offset;\n }\n return totalHeight\n },\n onDismissed: function onDismissed () {\n removeClass(this.$el, IN_CLASS$1);\n setTimeout(this.cb, TRANSITION_DURATION);\n }\n }\n};\n\n/* script */\nvar __vue_script__$h = script$h;\n\n/* template */\nvar __vue_render__$h = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"alert\",\n {\n staticClass: \"fade\",\n class: _vm.customClass,\n style: _vm.styles,\n attrs: {\n type: _vm.type,\n duration: _vm.duration,\n dismissible: _vm.dismissible\n },\n on: { dismissed: _vm.onDismissed }\n },\n [\n _c(\"div\", { staticClass: \"media\", staticStyle: { margin: \"0\" } }, [\n _vm.icons\n ? _c(\"div\", { staticClass: \"media-left\" }, [\n _c(\"span\", {\n class: _vm.icons,\n staticStyle: { \"font-size\": \"1.5em\" }\n })\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"media-body\" }, [\n _vm.title\n ? _c(\"div\", { staticClass: \"media-heading\" }, [\n _c(\"b\", [_vm._v(_vm._s(_vm.title))])\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.html\n ? _c(\"div\", { domProps: { innerHTML: _vm._s(_vm.content) } })\n : _c(\"div\", [_vm._v(_vm._s(_vm.content))])\n ])\n ])\n ]\n )\n};\nvar __vue_staticRenderFns__$h = [];\n__vue_render__$h._withStripped = true;\n\n /* style */\n var __vue_inject_styles__$h = undefined;\n /* scoped */\n var __vue_scope_id__$h = undefined;\n /* module identifier */\n var __vue_module_identifier__$h = undefined;\n /* functional template */\n var __vue_is_functional_template__$h = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__$h = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$h, staticRenderFns: __vue_staticRenderFns__$h },\n __vue_inject_styles__$h,\n __vue_script__$h,\n __vue_scope_id__$h,\n __vue_is_functional_template__$h,\n __vue_module_identifier__$h,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar queues = {};\nqueues[PLACEMENTS$1.TOP_LEFT] = [];\nqueues[PLACEMENTS$1.TOP_RIGHT] = [];\nqueues[PLACEMENTS$1.BOTTOM_LEFT] = [];\nqueues[PLACEMENTS$1.BOTTOM_RIGHT] = [];\n\nvar destroy$1 = function (queue, instance) {\n // console.log('destroyNotification')\n removeFromDom(instance.$el);\n instance.$destroy();\n spliceIfExist(queue, instance);\n};\n\nvar init$1 = function (options, cb, resolve, reject) {\n if ( resolve === void 0 ) resolve = null;\n if ( reject === void 0 ) reject = null;\n\n var placement = options.placement;\n var queue = queues[placement];\n // check if placement is valid\n if (!isExist(queue)) {\n return\n }\n /* istanbul ignore else */\n // `error` alias of `danger`\n if (options.type === 'error') {\n options.type = 'danger';\n }\n var instance = new Vue({\n extends: __vue_component__$h,\n propsData: assign({}, { queue: queue, placement: placement }, options, {\n cb: function cb$1 (msg) {\n destroy$1(queue, instance);\n if (isFunction(cb)) {\n cb(msg);\n } else if (resolve && reject) {\n resolve(msg);\n }\n }\n })\n });\n instance.$mount();\n document.body.appendChild(instance.$el);\n queue.push(instance);\n};\n\n// eslint-disable-next-line default-param-last\nvar _notify = function (options, cb) {\n if ( options === void 0 ) options = {};\n\n // simplify usage: pass string as option.content\n if (isString(options)) {\n options = {\n content: options\n };\n }\n // set default placement as top-right\n if (!isExist(options.placement)) {\n options.placement = PLACEMENTS$1.TOP_RIGHT;\n }\n if (isPromiseSupported()) {\n return new Promise(function (resolve, reject) {\n init$1(options, cb, resolve, reject);\n })\n } else {\n init$1(options, cb);\n }\n};\n\nfunction _notify2 (type, args) {\n if (isString(args)) {\n _notify({\n content: args,\n type: type\n });\n } else {\n _notify(assign({}, args, {\n type: type\n }));\n }\n}\n\nvar notify = Object.defineProperties(_notify, {\n success: {\n configurable: false,\n writable: false,\n value: function value (args) {\n _notify2('success', args);\n }\n },\n info: {\n configurable: false,\n writable: false,\n value: function value (args) {\n _notify2('info', args);\n }\n },\n warning: {\n configurable: false,\n writable: false,\n value: function value (args) {\n _notify2('warning', args);\n }\n },\n danger: {\n configurable: false,\n writable: false,\n value: function value (args) {\n _notify2('danger', args);\n }\n },\n error: {\n configurable: false,\n writable: false,\n value: function value (args) {\n _notify2('danger', args);\n }\n },\n dismissAll: {\n configurable: false,\n writable: false,\n value: function value () {\n for (var key in queues) {\n /* istanbul ignore else */\n if (hasOwnProperty(queues, key)) {\n queues[key].forEach(function (instance) {\n instance.onDismissed();\n });\n }\n }\n }\n }\n});\n\nvar Notification = { notify: notify };\n\nvar services = /*#__PURE__*/Object.freeze({\n __proto__: null,\n MessageBox: MessageBox,\n Notification: Notification\n});\n\nvar install = function (Vue, options) {\n if ( options === void 0 ) options = {};\n\n // Setup language, en-US for default\n locale.use(options.locale);\n locale.i18n(options.i18n);\n // Register components\n Object.keys(components).forEach(function (key) {\n var _key = options.prefix ? options.prefix + key : key;\n Vue.component(_key, components[key]);\n });\n // Register directives\n Object.keys(directives).forEach(function (key) {\n var _key = options.prefix ? options.prefix + '-' + key : key;\n Vue.directive(_key, directives[key]);\n });\n // Register services\n Object.keys(services).forEach(function (key) {\n var service = services[key];\n Object.keys(service).forEach(function (serviceKey) {\n var _key = options.prefix ? options.prefix + '_' + serviceKey : serviceKey;\n Vue.prototype['$' + _key] = service[serviceKey];\n });\n });\n};\n\nexport { __vue_component__$9 as Affix, __vue_component__$a as Alert, BreadcrumbItem, Breadcrumbs, Btn, BtnGroup, BtnToolbar, __vue_component__ as Carousel, Collapse, __vue_component__$8 as DatePicker, Dropdown, MessageBox, __vue_component__$2 as Modal, __vue_component__$e as MultiSelect, __vue_component__$f as Navbar, NavbarForm, NavbarNav, NavbarText, Notification, __vue_component__$b as Pagination, Popover, ProgressBar, ProgressBarStack, __vue_component__$1 as Slide, __vue_component__$3 as Tab, __vue_component__$4 as Tabs, __vue_component__$c as TimePicker, Tooltip, __vue_component__$d as Typeahead, install, popover, scrollspy, tooltip };\n//# sourceMappingURL=uiv.esm.js.map\n","/*\n * bootstrap.js\n * Copyright (c) 2020 james@firefly-iii.org\n *\n * This file is part of Firefly III (https://github.com/firefly-iii).\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 .\n */\n\n// // imports\nimport Vue from 'vue';\nimport VueI18n from 'vue-i18n'\nimport * as uiv from 'uiv';\n\n// export jquery for others scripts to use\nwindow.$ = window.jQuery = require('jquery');\n\n// axios\nwindow.axios = require('axios');\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n\n// CSRF\nlet token = document.head.querySelector('meta[name=\"csrf-token\"]');\n\nif (token) {\n window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;\n} else {\n console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');\n}\n\n// locale\nlet localeToken = document.head.querySelector('meta[name=\"locale\"]');\n\nif (localeToken) {\n localStorage.locale = localeToken.content;\n} else {\n localStorage.locale = 'en_US';\n}\n\n// admin stuff\nrequire('jquery-ui');\nrequire('bootstrap'); // bootstrap CSS?\n\nrequire('./dist/js/adminlte');\nrequire('overlayscrollbars');\n\n\n// vue\nwindow.vuei18n = VueI18n;\nwindow.uiv = uiv;\nVue.use(vuei18n);\nVue.use(uiv);\nwindow.Vue = Vue;","/*\n * create.js\n * Copyright (c) 2020 james@firefly-iii.org\n *\n * This file is part of Firefly III (https://github.com/firefly-iii).\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 .\n */\n\nconst lodashClonedeep = require('lodash.clonedeep');\n\n// initial state\nconst state = () => ({\n transactionType: 'any',\n date: new Date,\n time: new Date,\n groupTitle: '',\n transactions: [],\n allowedOpposingTypes: {},\n accountToTransaction: {},\n sourceAllowedTypes: ['Asset account', 'Loan', 'Debt', 'Mortgage', 'Revenue account'],\n destinationAllowedTypes: ['Asset account', 'Loan', 'Debt', 'Mortgage', 'Expense account'],\n customDateFields: {\n interest_date: false,\n book_date: false,\n process_date: false,\n due_date: false,\n payment_date: false,\n invoice_date: false,\n },\n defaultErrors: {\n description: [],\n amount: [],\n source: [],\n destination: [],\n currency: [],\n foreign_currency: [],\n foreign_amount: [],\n date: [],\n custom_dates: [],\n budget: [],\n category: [],\n bill: [],\n tags: [],\n piggy_bank: [],\n internal_reference: [],\n external_url: [],\n notes: [],\n location: []\n },\n defaultTransaction: {\n // basic\n description: '',\n transaction_journal_id: 0,\n // accounts:\n source_account_id: null,\n source_account_name: null,\n source_account_type: null,\n\n source_account_currency_id: null,\n source_account_currency_code: null,\n source_account_currency_symbol: null,\n\n destination_account_id: null,\n destination_account_name: null,\n destination_account_type: null,\n\n destination_account_currency_id: null,\n destination_account_currency_code: null,\n destination_account_currency_symbol: null,\n\n source_account: {\n id: 0,\n name: \"\",\n name_with_balance: \"\",\n type: \"\",\n currency_id: 0,\n currency_name: '',\n currency_code: '',\n currency_decimal_places: 2\n },\n destination_account: {\n id: 0,\n name: \"\",\n type: \"\",\n currency_id: 0,\n currency_name: '',\n currency_code: '',\n currency_decimal_places: 2\n },\n\n // amount:\n amount: '',\n currency_id: 0,\n foreign_amount: '',\n foreign_currency_id: 0,\n\n // meta data\n category: null,\n budget_id: 0,\n bill_id: 0,\n piggy_bank_id: 0,\n tags: [],\n\n // optional date fields (6x):\n interest_date: null,\n book_date: null,\n process_date: null,\n due_date: null,\n payment_date: null,\n invoice_date: null,\n\n // optional other fields:\n internal_reference: null,\n external_url: null,\n external_id: null,\n notes: null,\n\n // transaction links:\n links: [],\n attachments: [],\n // location:\n zoom_level: null,\n longitude: null,\n latitude: null,\n\n // error handling\n errors: {},\n },\n }\n)\n\n\n// getters\nconst getters = {\n transactions: state => {\n return state.transactions;\n },\n date: state => {\n return state.date;\n },\n time: state => {\n return state.time;\n },\n groupTitle: state => {\n return state.groupTitle;\n },\n transactionType: state => {\n return state.transactionType;\n },\n accountToTransaction: state => {\n // TODO better architecture here, does not need the store.\n // possible API point!!\n return state.accountToTransaction;\n },\n defaultTransaction: state => {\n return state.defaultTransaction;\n },\n sourceAllowedTypes: state => {\n return state.sourceAllowedTypes;\n },\n destinationAllowedTypes: state => {\n return state.destinationAllowedTypes;\n },\n allowedOpposingTypes: state => {\n return state.allowedOpposingTypes;\n },\n customDateFields: state => {\n return state.customDateFields;\n }\n // // `getters` is localized to this module's getters\n // // you can use rootGetters via 4th argument of getters\n // someGetter (state, getters, rootState, rootGetters) {\n // getters.someOtherGetter // -> 'foo/someOtherGetter'\n // rootGetters.someOtherGetter // -> 'someOtherGetter'\n // rootGetters['bar/someOtherGetter'] // -> 'bar/someOtherGetter'\n // },\n\n}\n\n// actions\nconst actions = {\n\n}\n\n// mutations\nconst mutations = {\n addTransaction(state) {\n let newTransaction = lodashClonedeep(state.defaultTransaction);\n newTransaction.errors = lodashClonedeep(state.defaultErrors);\n state.transactions.push(newTransaction);\n },\n resetErrors(state, payload) {\n //console.log('resetErrors for index ' + payload.index);\n state.transactions[payload.index].errors = lodashClonedeep(state.defaultErrors);\n },\n resetTransactions(state) {\n state.transactions = [];\n },\n setDate(state, payload) {\n state.date = payload.date;\n },\n setTime(state, payload) {\n state.time = payload.time;\n },\n setGroupTitle(state, payload) {\n state.groupTitle = payload.groupTitle;\n },\n setCustomDateFields(state, payload) {\n state.customDateFields = payload;\n },\n deleteTransaction(state, payload) {\n state.transactions.splice(payload.index, 1);\n // console.log('Deleted transaction ' + payload.index);\n // console.log(state.transactions);\n if(0===state.transactions.length) {\n // console.log('array is empty!');\n }\n },\n setTransactionType(state, transactionType) {\n state.transactionType = transactionType;\n },\n setAllowedOpposingTypes(state, allowedOpposingTypes) {\n state.allowedOpposingTypes = allowedOpposingTypes;\n },\n setAccountToTransaction(state, payload) {\n state.accountToTransaction = payload;\n },\n updateField(state, payload) {\n state.transactions[payload.index][payload.field] = payload.value;\n },\n setTransactionError(state, payload) {\n //console.log('Will set transactions[' + payload.index + '][errors][' + payload.field + '] to ');\n //console.log(payload.errors);\n state.transactions[payload.index].errors[payload.field] = payload.errors;\n },\n setDestinationAllowedTypes(state, payload) {\n // console.log('Destination allowed types was changed!');\n state.destinationAllowedTypes = payload;\n },\n setSourceAllowedTypes(state, payload) {\n state.sourceAllowedTypes = payload;\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n}\n","/*\n * edit.js\n * Copyright (c) 2021 james@firefly-iii.org\n *\n * This file is part of Firefly III (https://github.com/firefly-iii).\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 .\n */\n\n// initial state\nconst state = () => ({});\n\n\n// getters\nconst getters = {\n};\n\n// actions\nconst actions = {\n};\n\n// mutations\nconst mutations = {\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n}\n","/*\n * index.js\n * Copyright (c) 2020 james@firefly-iii.org\n *\n * This file is part of Firefly III (https://github.com/firefly-iii).\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 .\n */\n\n// initial state\nconst state = () => (\n {\n viewRange: 'default',\n start: null,\n end: null,\n // default range:\n defaultStart: null,\n defaultEnd: null,\n }\n)\n\n\n// getters\nconst getters = {\n start: state => {\n return state.start;\n },\n end: state => {\n return state.end;\n },\n defaultStart: state => {\n return state.defaultStart;\n },\n defaultEnd: state => {\n return state.defaultEnd;\n },\n viewRange: state => {\n return state.viewRange;\n }\n}\n\n// actions\nconst actions = {\n initialiseStore(context) {\n if ('default' === context.state.viewRange) {\n axios.get('./api/v1/preferences/viewRange')\n .then(response => {\n let viewRange = response.data.data.attributes.data;\n context.commit('setViewRange', viewRange);\n // call another action:\n context.dispatch('setDatesFromViewRange');\n }\n ).catch(error => {\n // console.log(error);\n context.commit('setViewRange', '1M');\n // call another action:\n context.dispatch('setDatesFromViewRange');\n });\n }\n },\n setDatesFromViewRange(context) {\n // console.log('Must set dates from viewRange \"' + context.state.viewRange + '\"');\n // check local storage first?\n if (localStorage.viewRangeStart) {\n // console.log('view range start set from local storage.');\n context.commit('setStart', new Date(localStorage.viewRangeStart));\n }\n if (localStorage.viewRangeEnd) {\n // console.log('view range end set from local storage.');\n context.commit('setEnd', new Date(localStorage.viewRangeEnd));\n }\n // also set default:\n if(localStorage.viewRangeDefaultStart) {\n // console.log('view range default start set from local storage.');\n // console.log(localStorage.viewRangeDefaultStart);\n context.commit('setDefaultStart', new Date(localStorage.viewRangeDefaultStart));\n }\n if(localStorage.viewRangeDefaultEnd) {\n // console.log('view range default end set from local storage.');\n // console.log(localStorage.viewRangeDefaultEnd);\n context.commit('setDefaultEnd', new Date(localStorage.viewRangeDefaultEnd));\n }\n\n if (null !== context.getters.end && null !== context.getters.start) {\n return;\n }\n let start;\n let end;\n let viewRange = context.getters.viewRange;\n // console.log('Will recreate view range on ' + viewRange);\n switch (viewRange) {\n case '1D':\n // one day:\n start = new Date;\n end = new Date(start.getTime());\n start.setHours(0, 0, 0, 0);\n end.setHours(23, 59, 59, 999);\n break;\n case '1W':\n // this week:\n start = new Date;\n end = new Date(start.getTime());\n // start of week\n let diff = start.getDate() - start.getDay() + (start.getDay() === 0 ? -6 : 1);\n start.setDate(diff);\n start.setHours(0, 0, 0, 0);\n\n // end of week\n let lastday = end.getDate() - (end.getDay() - 1) + 6;\n end.setDate(lastday);\n end.setHours(23, 59, 59, 999);\n break;\n case '1M':\n // this month:\n start = new Date;\n start = new Date(start.getFullYear(), start.getMonth(), 1);\n start.setHours(0, 0, 0, 0);\n end = new Date(start.getFullYear(), start.getMonth() + 1, 0);\n end.setHours(23, 59, 59, 999);\n break;\n case '3M':\n // this quarter\n start = new Date;\n end = new Date;\n let quarter = Math.floor((start.getMonth() + 3) / 3) - 1;\n // start and end months? I'm sure this could be better:\n let startMonths = [0, 3, 6, 9];\n let endMonths = [2, 5, 8, 11];\n // set start to the correct month, day one:\n start = new Date(start.getFullYear(), startMonths[quarter], 1);\n start.setHours(0, 0, 0, 0);\n\n // set end to the correct month, day one\n end = new Date(end.getFullYear(), endMonths[quarter], 1);\n // then to the last day of the month:\n end = new Date(end.getFullYear(), end.getMonth() + 1, 0);\n end.setHours(23, 59, 59, 999);\n break;\n case '6M':\n // this half-year\n start = new Date;\n end = new Date;\n let half = start.getMonth() <= 5 ? 0 : 1;\n\n let startHalf = [0, 6];\n let endHalf = [5, 11];\n // set start to the correct month, day one:\n start = new Date(start.getFullYear(), startHalf[half], 1);\n start.setHours(0, 0, 0, 0);\n\n // set end to the correct month, day one\n end = new Date(end.getFullYear(), endHalf[half], 1);\n // then to the last day of the month:\n end = new Date(end.getFullYear(), end.getMonth() + 1, 0);\n end.setHours(23, 59, 59, 999);\n break;\n case '1Y':\n // this year\n start = new Date;\n end = new Date;\n start = new Date(start.getFullYear(), 0, 1);\n\n end = new Date(end.getFullYear(), 11, 31);\n start.setHours(0, 0, 0, 0);\n end.setHours(23, 59, 59, 999);\n break;\n }\n // console.log('Range is ' + viewRange);\n // console.log('Start is ' + start);\n // console.log('End is ' + end);\n context.commit('setStart', start);\n context.commit('setEnd', end);\n context.commit('setDefaultStart', start);\n context.commit('setDefaultEnd', end);\n }\n}\n\n// mutations\nconst mutations = {\n setStart(state, value) {\n state.start = value;\n window.localStorage.setItem('viewRangeStart', value);\n },\n setEnd(state, value) {\n state.end = value;\n window.localStorage.setItem('viewRangeEnd', value);\n },\n setDefaultStart(state, value) {\n state.defaultStart = value;\n window.localStorage.setItem('viewRangeDefaultStart', value);\n },\n setDefaultEnd(state, value) {\n state.defaultEnd = value;\n window.localStorage.setItem('viewRangeDefaultEnd', value);\n },\n setViewRange(state, range) {\n state.viewRange = range;\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n}\n","/*\n * index.js\n * Copyright (c) 2020 james@firefly-iii.org\n *\n * This file is part of Firefly III (https://github.com/firefly-iii).\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 .\n */\n\nimport Vue from 'vue'\nimport Vuex, {createLogger} from 'vuex'\nimport transactions_create from './modules/transactions/create';\nimport transactions_edit from './modules/transactions/edit';\nimport dashboard_index from './modules/dashboard/index';\n\nVue.use(Vuex)\nconst debug = process.env.NODE_ENV !== 'production'\n\nexport default new Vuex.Store(\n {\n modules: {\n transactions: {\n namespaced: true,\n modules: {\n create: transactions_create,\n edit: transactions_edit\n }\n },\n dashboard: {\n namespaced: true,\n modules: {\n index: dashboard_index\n }\n }\n },\n strict: debug,\n plugins: debug ? [createLogger()] : [],\n state: {\n currencyPreference: {},\n locale: 'en-US'\n },\n mutations: {\n setCurrencyPreference(state, payload) {\n //console.log('setCurrencyPreference', payload);\n state.currencyPreference = payload.payload;\n },\n initialiseStore(state) {\n // if locale in local storage:\n if (localStorage.locale) {\n state.locale = localStorage.locale;\n return;\n }\n // set locale from HTML:\n let localeToken = document.head.querySelector('meta[name=\"locale\"]');\n if (localeToken) {\n state.locale = localeToken.content;\n localStorage.locale = localeToken.content;\n }\n }\n },\n getters: {\n currencyCode: state => {\n return state.currencyPreference.code;\n },\n currencyPreference: state => {\n return state.currencyPreference;\n },\n currencyId: state => {\n return state.currencyPreference.id;\n },\n locale: state => {\n return state.locale;\n }\n },\n actions: {\n updateCurrencyPreference(context) {\n if (localStorage.currencyPreference) {\n //console.log('set from local storage.');\n //console.log(localStorage.currencyPreference);\n //console.log({payload: JSON.parse(localStorage.currencyPreference)});\n context.commit('setCurrencyPreference', {payload: JSON.parse(localStorage.currencyPreference)});\n return;\n }\n axios.get('./api/v1/currencies/default')\n .then(response => {\n let currencyResponse = {\n id: parseInt(response.data.data.id),\n name: response.data.data.attributes.name,\n symbol: response.data.data.attributes.symbol,\n code: response.data.data.attributes.code,\n decimal_places: parseInt(response.data.data.attributes.decimal_places),\n };\n localStorage.currencyPreference = JSON.stringify(currencyResponse);\n //console.log('getCurrencyPreference from server')\n //console.log(JSON.stringify(currencyResponse));\n context.commit('setCurrencyPreference', {payload: currencyResponse});\n }).catch(err => {\n // console.log('Got error response.');\n console.error(err);\n context.commit('setCurrencyPreference', {\n payload: {\n id: 1,\n name: 'Euro',\n symbol: '€',\n code: 'EUR',\n decimal_places: 2\n }\n });\n });\n\n }\n }\n }\n);","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/*\n * i18n.js\n * Copyright (c) 2020 james@firefly-iii.org\n *\n * This file is part of Firefly III (https://github.com/firefly-iii).\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 .\n */\n\n// Create VueI18n instance with options\nmodule.exports = new vuei18n({\n locale: document.documentElement.lang, // set locale\n fallbackLocale: 'en',\n messages: {\n 'bg': require('./locales/bg.json'),\n 'cs': require('./locales/cs.json'),\n 'de': require('./locales/de.json'),\n 'en': require('./locales/en.json'),\n 'en-us': require('./locales/en.json'),\n 'en-gb': require('./locales/en-gb.json'),\n 'es': require('./locales/es.json'),\n 'el': require('./locales/el.json'),\n 'fr': require('./locales/fr.json'),\n 'hu': require('./locales/hu.json'),\n //'id': require('./locales/id.json'),\n 'it': require('./locales/it.json'),\n 'nl': require('./locales/nl.json'),\n 'nb': require('./locales/nb.json'),\n 'pl': require('./locales/pl.json'),\n 'fi': require('./locales/fi.json'),\n 'pt-br': require('./locales/pt-br.json'),\n 'pt-pt': require('./locales/pt.json'),\n 'ro': require('./locales/ro.json'),\n 'ru': require('./locales/ru.json'),\n //'zh': require('./locales/zh.json'),\n 'zh-tw': require('./locales/zh-tw.json'),\n 'zh-cn': require('./locales/zh-cn.json'),\n 'sk': require('./locales/sk.json'),\n 'sv': require('./locales/sv.json'),\n 'vi': require('./locales/vi.json'),\n }\n});\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target, parent) {\n if (parent){\n return parent.querySelector(target);\n }\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target, parent) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target, parent);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of