mw.loader.implement("jquery.autoEllipsis",function($,jQuery){(function($){var cache={},matchTextCache={};$.fn.autoEllipsis=function(options){options=$.extend({position:'center',tooltip:false,restoreText:false,hasSpan:false,matchText:null},options);return this.each(function(){var $trimmableText,text,trimmableText,w,pw,l,r,i,side,m,$container=$(this);if(options.restoreText){if(!$container.data('autoEllipsis.originalText')){$container.data('autoEllipsis.originalText',$container.text());}else{$container.text($container.data('autoEllipsis.originalText'));}}if(options.hasSpan){$trimmableText=$container.children(options.selector);}else{$trimmableText=$('').css('whiteSpace','nowrap').text($container.text());$container.empty().append($trimmableText);}text=$container.text();trimmableText=$trimmableText.text();w=$container.width();pw=0;if(options.matchText){if(!(text in matchTextCache)){matchTextCache[text]={};}if(!(options.matchText in matchTextCache[text])){matchTextCache[text][options. matchText]={};}if(!(w in matchTextCache[text][options.matchText])){matchTextCache[text][options.matchText][w]={};}if(options.position in matchTextCache[text][options.matchText][w]){$container.html(matchTextCache[text][options.matchText][w][options.position]);if(options.tooltip){$container.attr('title',text);}return;}}else{if(!(text in cache)){cache[text]={};}if(!(w in cache[text])){cache[text][w]={};}if(options.position in cache[text][w]){$container.html(cache[text][w][options.position]);if(options.tooltip){$container.attr('title',text);}return;}}if($trimmableText.width()+pw>w){switch(options.position){case'right':l=0;r=trimmableText.length;do{m=Math.ceil((l+r)/2);$trimmableText.text(trimmableText.slice(0,m)+'...');if($trimmableText.width()+pw>w){r=m-1;}else{l=m;}}while(lw&&i[0]>0){$trimmableText .text(trimmableText.slice(0,i[0])+'...'+trimmableText.slice(i[1]));if(side===0){i[0]--;side=1;}else{i[1]++;side=0;}}break;case'left':r=0;while($trimmableText.outerWidth()+pw>w&&r').text(mw.msg('powersearch-togglelabel'))).append($('').attr('id','mw-search-toggleall').prop('value',mw.msg( 'powersearch-toggleall')).click(function(){$checkboxes.prop('checked',true);})).append($('').attr('id','mw-search-togglenone').prop('value',mw.msg('powersearch-togglenone')).click(function(){$checkboxes.prop('checked',false);}));$headerLinks=$('.search-types a');OO.ui.infuse('searchText').on('change',function(searchterm){$headerLinks.each(function(){var parts=$(this).attr('href').split('search='),lastpart='',prefix='search=';if(parts.length>1&&parts[1].indexOf('&')!==-1){lastpart=parts[1].slice(parts[1].indexOf('&'));}else{prefix='&search=';}this.href=parts[0]+prefix+encodeURIComponent(searchterm)+lastpart;});});$('#mw-search-powersearch-remember').change(function(){this.form.method=this.checked?'post':'get';}).trigger('change');});}(mediaWiki,jQuery));},{"css":[ ".searchresult{display:inline !ie}.searchresults{}.searchresults p{margin-left:0.4em;margin-top:1em;margin-bottom:1.2em}div.searchresult{font-size:95%;width:38em}.mw-search-results{margin-left:0.4em}.mw-search-results li{padding-bottom:1.2em;list-style:none;list-style-image:none}.mw-search-results li a{font-size:108%}.mw-search-result-data{color:green;font-size:97%}.mw-search-profile-tabs{background-color:#f3f3f3;margin-top:1em;border:1px solid silver}.mw-search-profile-tabs div.search-types{float:left;padding-left:0.25em}.mw-search-profile-tabs div.search-types ul{margin:0 !important;padding:0 !important;list-style:none !important}.mw-search-profile-tabs div.search-types ul li{float:left;margin:0;padding:0}.mw-search-profile-tabs div.search-types ul li a{display:block;padding:0.5em}.mw-search-profile-tabs div.search-types ul li.current a{color:#333333;cursor:default}.mw-search-profile-tabs div.search-types ul li.current a:hover{text-decoration:none}#mw-search-top-table div.results-info{float:right;padding:0.5em;padding-right:0.75em;color:#666;font-size:95%}fieldset#mw-searchoptions{margin:0;padding:0.5em 0.75em 0.75em 0.75em !important;border:none;background-color:#f9f9f9;border:1px solid silver !important;border-top-width:0 !important}fieldset#mw-searchoptions legend{display:none}fieldset#mw-searchoptions h4{padding:0;margin:0;float:left}fieldset#mw-searchoptions div#mw-search-togglebox{float:right}fieldset#mw-searchoptions div#mw-search-togglebox label{margin-right:0.25em}fieldset#mw-searchoptions div#mw-search-togglebox input{margin-left:0.25em}fieldset#mw-searchoptions table{float:left;margin-right:3em;border-collapse:collapse}fieldset#mw-searchoptions table td{padding:0 1em 0 0;white-space:nowrap}fieldset#mw-searchoptions div.divider{clear:both;border-bottom:1px solid #DDDDDD;padding-top:0.5em;margin-bottom:0.5em}td#mw-search-menu{padding-left:6em;font-size:85%}div#mw-search-interwiki{float:right;width:18em;border:1px solid #AAAAAA;margin-top:2ex}div#mw-search-interwiki li{font-size:95%}.mw-search-interwiki-more{float:right;font-size:90%}div#mw-search-interwiki-caption{text-align:center;font-weight:bold;font-size:95%}.mw-search-interwiki-project{font-size:97%;text-align:left;padding:0.15em 0.15em 0.2em 0.2em;background-color:#ececec;border-top:1px solid #BBBBBB}span.searchalttitle{font-size:95%}div.searchdidyoumean{font-size:127%;margin-top:0.8em; color:#c00}div.searchdidyoumean em{font-weight:bold}.searchmatch{font-weight:bold} td#mw-search-togglebox{text-align:right}table#mw-search-powertable{width:100%}form#powersearch{clear:both}#searchText{display:inline-block}\n/* cache key: global:resourceloader:filter:minify-css:7:70abc20d73ea1f7c6c90e869d105b2d9 */" ]},{"powersearch-toggleall":"V\u0161echno","powersearch-togglelabel":"Za\u0161krtnout:","powersearch-togglenone":"Nic"});mw.loader.implement("mediawiki.widgets",function($,jQuery){mediaWiki.widgets={};(function($,mw){mw.widgets.TitleInputWidget=function MwWidgetsTitleInputWidget(config){var widget=this;config=config||{};OO.ui.TextInputWidget.call(this,$.extend({},config,{autocomplete:false}));OO.ui.mixin.LookupElement.call(this,config);this.limit=config.limit||10;this.namespace=config.namespace||null;this.relative=config.relative!==undefined?config.relative:true;this.showRedirectTargets=config.showRedirectTargets!==false;this.showRedlink=!!config.showRedlink;this.showImages=!!config.showImages;this.showDescriptions=!!config.showDescriptions;this.cache=config.cache;this.$element.addClass('mw-widget-titleInputWidget');this.lookupMenu.$element.addClass('mw-widget-titleInputWidget-menu');if(this.showImages){this.lookupMenu.$element.addClass('mw-widget-titleInputWidget-menu-withImages');}if (this.showDescriptions){this.lookupMenu.$element.addClass('mw-widget-titleInputWidget-menu-withDescriptions');}this.interwikiPrefixes=[];this.interwikiPrefixesPromise=new mw.Api().get({action:'query',meta:'siteinfo',siprop:'interwikimap'}).done(function(data){$.each(data.query.interwikimap,function(index,interwiki){widget.interwikiPrefixes.push(interwiki.prefix);});});};OO.inheritClass(mw.widgets.TitleInputWidget,OO.ui.TextInputWidget);OO.mixinClass(mw.widgets.TitleInputWidget,OO.ui.mixin.LookupElement);mw.widgets.TitleInputWidget.prototype.onLookupMenuItemChoose=function(item){this.closeLookupMenu();this.setLookupsDisabled(true);this.setValue(item.getData());this.setLookupsDisabled(false);};mw.widgets.TitleInputWidget.prototype.focus=function(){var retval;this.setLookupsDisabled(true);retval=OO.ui.TextInputWidget.prototype.focus.apply(this,arguments);this.setLookupsDisabled(false);return retval;};mw.widgets.TitleInputWidget.prototype.getLookupRequest=function(){var req,widget=this, promiseAbortObject={abort:function(){}};if(mw.Title.newFromText(this.value)){return this.interwikiPrefixesPromise.then(function(){var params,props,interwiki=widget.value.substring(0,widget.value.indexOf(':'));if(interwiki&&interwiki!==''&&widget.interwikiPrefixes.indexOf(interwiki)!==-1){return $.Deferred().resolve({query:{pages:[{title:widget.value}]}}).promise(promiseAbortObject);}else{params={action:'query',generator:'prefixsearch',gpssearch:widget.value,gpsnamespace:widget.namespace!==null?widget.namespace:undefined,gpslimit:widget.limit,ppprop:'disambiguation'};props=['info','pageprops'];if(widget.showRedirectTargets){params.redirects='1';}if(widget.showImages){props.push('pageimages');params.pithumbsize=80;params.pilimit=widget.limit;}if(widget.showDescriptions){props.push('pageterms');params.wbptterms='description';}params.prop=props.join('|');req=new mw.Api().get(params);promiseAbortObject.abort=req.abort.bind(req);return req;}}).promise(promiseAbortObject);}else{return $. Deferred().resolve({}).promise(promiseAbortObject);}};mw.widgets.TitleInputWidget.prototype.getLookupCacheDataFromResponse=function(data){return data.query||{};};mw.widgets.TitleInputWidget.prototype.getLookupMenuOptionsFromData=function(data){var i,len,index,pageExists,pageExistsExact,suggestionPage,page,redirect,redirects,items=[],titles=[],titleObj=mw.Title.newFromText(this.value),redirectsTo={},pageData={};if(data.redirects){for(i=0,len=data.redirects.length;i');this.$link=this.$label.parent();this.$link.attr('href',config.href);this.$element.addClass('mw-widget-titleOptionWidget');this.$label.autoEllipsis({hasSpan:false,tooltip:true,matchText:config.query});if(config.missing){this.$link.addClass('new');}if(config.imageUrl){this.$icon.addClass('mw-widget-titleOptionWidget-hasImage').css('background-image','url('+config.imageUrl+')');}if(config.description){this.$element.append($('').addClass('mw-widget-titleOptionWidget-description').text(config.description));}};OO.inheritClass(mw.widgets.TitleOptionWidget,OO.ui.MenuOptionWidget);}(jQuery,mediaWiki));jQuery.extend(OO.ui,mediaWiki.widgets);},{"css":[ ".mw-widget-titleInputWidget-menu-withImages .mw-widget-titleOptionWidget{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;min-height:3.75em;margin-left:3.75em}.mw-widget-titleInputWidget-menu-withImages .mw-widget-titleOptionWidget:not(:last-child){margin-bottom:1px}.mw-widget-titleInputWidget-menu-withImages .oo-ui-iconElement .oo-ui-iconElement-icon{display:block;width:3.75em;height:3.75em;left:-3.75em;background-color:#ccc;opacity:0.4}.mw-widget-titleInputWidget-menu-withImages .oo-ui-iconElement .mw-widget-titleOptionWidget-hasImage{border:0;background-size:cover;opacity:1}.mw-widget-titleInputWidget-menu-withImages .mw-widget-titleOptionWidget .oo-ui-labelElement-label{line-height:2.8em}.mw-widget-titleOptionWidget-description{display:none}.mw-widget-titleInputWidget-menu-withDescriptions .mw-widget-titleOptionWidget .oo-ui-labelElement-label{line-height:1.5em}.mw-widget-titleInputWidget-menu-withDescriptions .mw-widget-titleOptionWidget-description{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.oo-ui-menuOptionWidget:not(.oo-ui-optionWidget-selected) .mw-widget-titleOptionWidget-description,.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted .mw-widget-titleOptionWidget-description{color:#888}\n/* cache key: global:resourceloader:filter:minify-css:7:70555a0ebf52ae7cb6e2aa204a3fa903 */" ]},{"mw-widgets-titleinput-description-new-page":"str\u00e1nka zat\u00edm neexistuje","mw-widgets-titleinput-description-redirect":"p\u0159esm\u011brov\u00e1n\u00ed na $1"});mw.loader.implement("oojs-ui",function($,jQuery){(function(OO){'use strict';OO.ui={};OO.ui.bind=$.proxy;OO.ui.Keys={UNDEFINED:0,BACKSPACE:8,DELETE:46,LEFT:37,RIGHT:39,UP:38,DOWN:40,ENTER:13,END:35,HOME:36,TAB:9,PAGEUP:33,PAGEDOWN:34,ESCAPE:27,SHIFT:16,SPACE:32};OO.ui.elementId=0;OO.ui.generateElementId=function(){OO.ui.elementId+=1;return'oojsui-'+OO.ui.elementId;};OO.ui.isFocusableElement=function($element){var node=$element[0],nodeName=node.nodeName.toLowerCase(),isInElementGroup=/^(input|select|textarea|button|object)$/.test(nodeName),isOtherElement=((nodeName==='a'&&node.href)||!isNaN($element.attr('tabindex'))),isVisible=($.expr.filters.visible(node)&&!$element.parents().addBack().filter(function(){return $.css(this,'visibility')==='hidden';}).length);return((isInElementGroup?!node.disabled:isOtherElement)&& isVisible);};OO.ui.getUserLanguages=function(){return['en'];};OO.ui.getLocalValue=function(obj,lang,fallback){var i,len,langs;if(obj[lang]){return obj[lang];}langs=OO.ui.getUserLanguages();for(i=0,len=langs.length;i=0;i--){if((matchContainers&&contained===containers[i])||$.contains(containers[i],contained)){return true;}}return false;};OO.ui.debounce=function(func,wait,immediate){var timeout;return function(){var context=this,args=arguments,later=function(){timeout=null;if(!immediate){func.apply(context,args);}};if(immediate&&!timeout){func.apply(context,args);}clearTimeout(timeout);timeout=setTimeout(later,wait);};};OO.ui.infuse=function(idOrNode){return OO.ui.Element.static.infuse( idOrNode);};(function(){var messages={'ooui-outline-control-move-down':'Move item down','ooui-outline-control-move-up':'Move item up','ooui-outline-control-remove':'Remove item','ooui-toolbar-more':'More','ooui-toolgroup-expand':'More','ooui-toolgroup-collapse':'Fewer','ooui-dialog-message-accept':'OK','ooui-dialog-message-reject':'Cancel','ooui-dialog-process-error':'Something went wrong','ooui-dialog-process-dismiss':'Dismiss','ooui-dialog-process-retry':'Try again','ooui-dialog-process-continue':'Continue','ooui-selectfile-not-supported':'File selection is not supported','ooui-selectfile-placeholder':'No file is selected','ooui-semicolon-separator':'; '};OO.ui.msg=function(key){var message=messages[key],params=Array.prototype.slice.call(arguments,1);if(typeof message==='string'){message=message.replace(/\$(\d+)/g,function(unused,n){var i=parseInt(n,10);return params[i-1]!==undefined?params[i-1]:'$'+n;});}else{message='['+key+']';}return message;};OO.ui.deferMsg=function(){var args= arguments;return function(){return OO.ui.msg.apply(OO.ui,args);};};OO.ui.resolveMsg=function(msg){if($.isFunction(msg)){return msg();}return msg;};})();OO.ui.mixin={};OO.ui.mixin.PendingElement=function OoUiMixinPendingElement(config){config=config||{};this.pending=0;this.$pending=null;this.setPendingElement(config.$pending||this.$element);};OO.initClass(OO.ui.mixin.PendingElement);OO.ui.mixin.PendingElement.prototype.setPendingElement=function($pending){if(this.$pending){this.$pending.removeClass('oo-ui-pendingElement-pending');}this.$pending=$pending;if(this.pending>0){this.$pending.addClass('oo-ui-pendingElement-pending');}};OO.ui.mixin.PendingElement.prototype.isPending=function(){return!!this.pending;};OO.ui.mixin.PendingElement.prototype.pushPending=function(){if(this.pending===0){this.$pending.addClass('oo-ui-pendingElement-pending');this.updateThemeClasses();}this.pending++;return this;};OO.ui.mixin.PendingElement.prototype.popPending=function(){if(this.pending===1){this. $pending.removeClass('oo-ui-pendingElement-pending');this.updateThemeClasses();}this.pending=Math.max(0,this.pending-1);return this;};OO.ui.ActionSet=function OoUiActionSet(config){config=config||{};OO.EventEmitter.call(this);this.list=[];this.categories={actions:'getAction',flags:'getFlags',modes:'getModes'};this.categorized={};this.special={};this.others=[];this.organized=false;this.changing=false;this.changed=false;};OO.mixinClass(OO.ui.ActionSet,OO.EventEmitter);OO.ui.ActionSet.static.specialFlags=['safe','primary'];OO.ui.ActionSet.prototype.onActionChange=function(){this.organized=false;if(this.changing){this.changed=true;}else{this.emit('change');}};OO.ui.ActionSet.prototype.isSpecial=function(action){var flag;for(flag in this.special){if(action===this.special[flag]){return true;}}return false;};OO.ui.ActionSet.prototype.get=function(filters){var i,len,list,category,actions,index,match,matches;if(filters){this.organize();matches=[];for(category in this.categorized){list=filters[ category];if(list){if(!Array.isArray(list)){list=[list];}for(i=0,len=list.length;i0&&rel.bottom<0){anim.scrollTop=scd.scroll.top+Math.min(rel.top,-rel.bottom);}}if(!config.direction||config.direction==='x'){if(rel.left<0){anim.scrollLeft=scd.scroll.left+rel.left;}else if(rel.left>0&&rel.right<0){anim.scrollLeft=scd.scroll.left+Math.min(rel.left,-rel.right);}}if(!$.isEmptyObject(anim)){$sc.stop(true).animate(anim,config.duration||'fast');if(callback){$sc.queue(function(next){callback();next();});}}else{if(callback){callback();}}};OO.ui.Element.static.reconsiderScrollbars=function(el){var i,len,scrollLeft,scrollTop,nodes=[];scrollLeft=el.scrollLeft;scrollTop=el.scrollTop;while(el.firstChild){nodes.push(el.firstChild);el.removeChild(el.firstChild);}void el.offsetHeight;for(i=0,len=nodes.length;i< len;i++){el.appendChild(nodes[i]);}el.scrollLeft=scrollLeft;el.scrollTop=scrollTop;};OO.ui.Element.prototype.toggle=function(show){show=show===undefined?!this.visible:!!show;if(show!==this.isVisible()){this.visible=show;this.$element.toggleClass('oo-ui-element-hidden',!this.visible);this.emit('toggle',show);}return this;};OO.ui.Element.prototype.isVisible=function(){return this.visible;};OO.ui.Element.prototype.getData=function(){return this.data;};OO.ui.Element.prototype.setData=function(data){this.data=data;return this;};OO.ui.Element.prototype.supports=function(methods){var i,len,support=0;methods=Array.isArray(methods)?methods:[methods];for(i=0,len=methods.length;i');this.$overlay=$('
');this.$content=$('
');this.$overlay.addClass('oo-ui-window-overlay');this.$content.addClass('oo-ui-window-content').attr('tabindex',0);this.$frame.addClass('oo-ui-window-frame').append(this.$content);this.$element.addClass('oo-ui-window').append(this.$frame,this.$overlay);this.visible=false;this.$element.addClass('oo-ui-element-hidden');};OO.inheritClass(OO.ui.Window,OO.ui.Element);OO.mixinClass(OO.ui.Window,OO.EventEmitter);OO.ui.Window.static.size='medium';OO.ui.Window.prototype.onMouseDown=function(e){if(e. target===this.$element[0]){return false;}};OO.ui.Window.prototype.isInitialized=function(){return!!this.manager;};OO.ui.Window.prototype.isVisible=function(){return this.visible;};OO.ui.Window.prototype.isOpening=function(){return this.manager.isOpening(this);};OO.ui.Window.prototype.isClosing=function(){return this.manager.isClosing(this);};OO.ui.Window.prototype.isOpened=function(){return this.manager.isOpened(this);};OO.ui.Window.prototype.getManager=function(){return this.manager;};OO.ui.Window.prototype.getSize=function(){return this.size;};OO.ui.Window.prototype.withoutSizeTransitions=function(callback){var oldTransition,styleObj=this.$frame[0].style;oldTransition=styleObj.transition||styleObj.OTransition||styleObj.MsTransition||styleObj.MozTransition||styleObj.WebkitTransition;styleObj.transition=styleObj.OTransition=styleObj.MsTransition=styleObj.MozTransition=styleObj.WebkitTransition='none';callback();this.$frame.height();styleObj.transition=styleObj.OTransition=styleObj. MsTransition=styleObj.MozTransition=styleObj.WebkitTransition=oldTransition;};OO.ui.Window.prototype.getContentHeight=function(){var bodyHeight,win=this,bodyStyleObj=this.$body[0].style,frameStyleObj=this.$frame[0].style;this.withoutSizeTransitions(function(){var oldHeight=frameStyleObj.height,oldPosition=bodyStyleObj.position;frameStyleObj.height='1px';bodyStyleObj.position='relative';bodyHeight=win.getBodyHeight();frameStyleObj.height=oldHeight;bodyStyleObj.position=oldPosition;});return((this.$frame.outerHeight()-this.$frame.innerHeight())+(this.$head.outerHeight(true)+bodyHeight+this.$foot.outerHeight(true)));};OO.ui.Window.prototype.getBodyHeight=function(){return this.$body[0].scrollHeight;};OO.ui.Window.prototype.getDir=function(){return this.dir;};OO.ui.Window.prototype.getSetupProcess=function(){return new OO.ui.Process();};OO.ui.Window.prototype.getReadyProcess=function(){return new OO.ui.Process();};OO.ui.Window.prototype.getHoldProcess=function(){return new OO.ui.Process(); };OO.ui.Window.prototype.getTeardownProcess=function(){return new OO.ui.Process();};OO.ui.Window.prototype.setManager=function(manager){if(this.manager){throw new Error('Cannot set window manager, window already has a manager');}this.manager=manager;this.initialize();return this;};OO.ui.Window.prototype.setSize=function(size){this.size=size;this.updateSize();return this;};OO.ui.Window.prototype.updateSize=function(){if(!this.manager){throw new Error('Cannot update window size, must be attached to a manager');}this.manager.updateWindowSize(this);return this;};OO.ui.Window.prototype.setDimensions=function(dim){var height,win=this,styleObj=this.$frame[0].style;if(dim.height===undefined){this.withoutSizeTransitions(function(){var oldWidth=styleObj.width;win.$frame.css('width',dim.width||'');height=win.getContentHeight();styleObj.width=oldWidth;});}else{height=dim.height;}this.$frame.css({width:dim.width||'',minWidth:dim.minWidth||'',maxWidth:dim.maxWidth||'',height:height||'',minHeight:dim .minHeight||'',maxHeight:dim.maxHeight||''});return this;};OO.ui.Window.prototype.initialize=function(){if(!this.manager){throw new Error('Cannot initialize window, must be attached to a manager');}this.$head=$('
');this.$body=$('
');this.$foot=$('
');this.dir=OO.ui.Element.static.getDir(this.$content)||'ltr';this.$document=$(this.getElementDocument());this.$element.on('mousedown',this.onMouseDown.bind(this));this.$head.addClass('oo-ui-window-head');this.$body.addClass('oo-ui-window-body');this.$foot.addClass('oo-ui-window-foot');this.$content.append(this.$head,this.$body,this.$foot);return this;};OO.ui.Window.prototype.open=function(data){if(!this.manager){throw new Error('Cannot open window, must be attached to a manager');}return this.manager.openWindow(this,data);};OO.ui.Window.prototype.close=function(data){if(!this.manager){throw new Error('Cannot close window, must be attached to a manager');}return this.manager.closeWindow(this,data);};OO.ui.Window.prototype.setup= function(data){var win=this,deferred=$.Deferred();this.toggle(true);this.getSetupProcess(data).execute().done(function(){win.$element.addClass('oo-ui-window-active oo-ui-window-setup').width();win.$content.addClass('oo-ui-window-content-setup').width();deferred.resolve();});return deferred.promise();};OO.ui.Window.prototype.ready=function(data){var win=this,deferred=$.Deferred();this.$content.focus();this.getReadyProcess(data).execute().done(function(){win.$element.addClass('oo-ui-window-ready').width();win.$content.addClass('oo-ui-window-content-ready').width();deferred.resolve();});return deferred.promise();};OO.ui.Window.prototype.hold=function(data){var win=this,deferred=$.Deferred();this.getHoldProcess(data).execute().done(function(){var $focus=win.$content.find(OO.ui.Element.static.getDocument(win.$content).activeElement);if($focus.length){$focus[0].blur();}win.$element.removeClass('oo-ui-window-ready').width();win.$content.removeClass('oo-ui-window-content-ready').width(); deferred.resolve();});return deferred.promise();};OO.ui.Window.prototype.teardown=function(data){var win=this;return this.getTeardownProcess(data).execute().done(function(){win.$element.removeClass('oo-ui-window-active oo-ui-window-setup').width();win.$content.removeClass('oo-ui-window-content-setup').width();win.toggle(false);});};OO.ui.Dialog=function OoUiDialog(config){OO.ui.Dialog.parent.call(this,config);OO.ui.mixin.PendingElement.call(this);this.actions=new OO.ui.ActionSet();this.attachedActions=[];this.currentAction=null;this.onDocumentKeyDownHandler=this.onDocumentKeyDown.bind(this);this.actions.connect(this,{click:'onActionClick',resize:'onActionResize',change:'onActionsChange'});this.$element.addClass('oo-ui-dialog').attr('role','dialog');};OO.inheritClass(OO.ui.Dialog,OO.ui.Window);OO.mixinClass(OO.ui.Dialog,OO.ui.mixin.PendingElement);OO.ui.Dialog.static.name='';OO.ui.Dialog.static.title='';OO.ui.Dialog.static.actions=[];OO.ui.Dialog.static.escapable=true;OO.ui.Dialog. prototype.onDocumentKeyDown=function(e){if(e.which===OO.ui.Keys.ESCAPE){this.close();e.preventDefault();e.stopPropagation();}};OO.ui.Dialog.prototype.onActionResize=function(){};OO.ui.Dialog.prototype.onActionClick=function(action){if(!this.isPending()){this.executeAction(action.getAction());}};OO.ui.Dialog.prototype.onActionsChange=function(){this.detachActions();if(!this.isClosing()){this.attachActions();}};OO.ui.Dialog.prototype.getActions=function(){return this.actions;};OO.ui.Dialog.prototype.getActionProcess=function(action){return new OO.ui.Process().next(function(){if(!action){this.close();}},this);};OO.ui.Dialog.prototype.getSetupProcess=function(data){data=data||{};return OO.ui.Dialog.parent.prototype.getSetupProcess.call(this,data).next(function(){var config=this.constructor.static,actions=data.actions!==undefined?data.actions:config.actions;this.title.setLabel(data.title!==undefined?data.title:this.constructor.static.title);this.actions.add(this.getActionWidgets(actions)); if(this.constructor.static.escapable){this.$document.on('keydown',this.onDocumentKeyDownHandler);}},this);};OO.ui.Dialog.prototype.getTeardownProcess=function(data){return OO.ui.Dialog.parent.prototype.getTeardownProcess.call(this,data).first(function(){if(this.constructor.static.escapable){this.$document.off('keydown',this.onDocumentKeyDownHandler);}this.actions.clear();this.currentAction=null;},this);};OO.ui.Dialog.prototype.initialize=function(){OO.ui.Dialog.parent.prototype.initialize.call(this);var titleId=OO.ui.generateElementId();this.title=new OO.ui.LabelWidget({id:titleId});this.$content.addClass('oo-ui-dialog-content');this.$element.attr('aria-labelledby',titleId);this.setPendingElement(this.$head);};OO.ui.Dialog.prototype.getActionWidgets=function(actions){var i,len,widgets=[];for(i=0,len=actions.length;i').text(this.message).contents();};OO.ui.Error.prototype.getMessageText=function(){return this.message instanceof jQuery?this.message.text():this.message;};OO.ui.HtmlSnippet=function OoUiHtmlSnippet(content){this.content=content;};OO.initClass(OO.ui.HtmlSnippet);OO.ui.HtmlSnippet.prototype.toString=function(){return this.content;};OO.ui.Process=function(step,context){this.steps=[];if(step!==undefined){this.next(step,context);}};OO.initClass(OO.ui.Process);OO.ui.Process.prototype.execute=function(){var i,len,promise;function proceed(step){return function(){var deferred,result=step.callback.call(step.context);if(result===false){return $.Deferred().reject([]).promise();}if(typeof result==='number'){if(result<0){throw new Error( 'Cannot go back in time: flux capacitor is out of service');}deferred=$.Deferred();setTimeout(deferred.resolve,result);return deferred.promise();}if(result instanceof OO.ui.Error){return $.Deferred().reject([result]).promise();}if(Array.isArray(result)&&result.length&&result[0]instanceof OO.ui.Error){return $.Deferred().reject(result).promise();}if(result&&$.isFunction(result.promise)){return result.promise();}return $.Deferred().resolve().promise();};}if(this.steps.length){promise=proceed(this.steps[0])();for(i=1,len=this.steps.length;i'));};OO.initClass(OO.ui.mixin.ButtonElement);OO.ui.mixin.ButtonElement.static.cancelButtonMouseDownEvents=true;OO.ui.mixin.ButtonElement.prototype.setButtonElement=function($button){if(this.$button){this.$button.removeClass('oo-ui-buttonElement-button').removeAttr('role accesskey').off({mousedown:this.onMouseDownHandler,keydown:this.onKeyDownHandler,click:this.onClickHandler,keypress:this.onKeyPressHandler});}this.$button=$button.addClass('oo-ui-buttonElement-button').attr({role:'button',accesskey:this.accessKey}).on({mousedown:this.onMouseDownHandler,keydown:this.onKeyDownHandler,click:this.onClickHandler,keypress:this.onKeyPressHandler});};OO.ui.mixin.ButtonElement.prototype.onMouseDown=function(e){if(this.isDisabled()||e.which!==1){return;}this.$element.addClass('oo-ui-buttonElement-pressed');this.getElementDocument(). addEventListener('mouseup',this.onMouseUpHandler,true);if(this.constructor.static.cancelButtonMouseDownEvents){return false;}};OO.ui.mixin.ButtonElement.prototype.onMouseUp=function(e){if(this.isDisabled()||e.which!==1){return;}this.$element.removeClass('oo-ui-buttonElement-pressed');this.getElementDocument().removeEventListener('mouseup',this.onMouseUpHandler,true);};OO.ui.mixin.ButtonElement.prototype.onClick=function(e){if(!this.isDisabled()&&e.which===1){if(this.emit('click')){return false;}}};OO.ui.mixin.ButtonElement.prototype.onKeyDown=function(e){if(this.isDisabled()||(e.which!==OO.ui.Keys.SPACE&&e.which!==OO.ui.Keys.ENTER)){return;}this.$element.addClass('oo-ui-buttonElement-pressed');this.getElementDocument().addEventListener('keyup',this.onKeyUpHandler,true);};OO.ui.mixin.ButtonElement.prototype.onKeyUp=function(e){if(this.isDisabled()||(e.which!==OO.ui.Keys.SPACE&&e.which!==OO.ui.Keys.ENTER)){return;}this.$element.removeClass('oo-ui-buttonElement-pressed');this. getElementDocument().removeEventListener('keyup',this.onKeyUpHandler,true);};OO.ui.mixin.ButtonElement.prototype.onKeyPress=function(e){if(!this.isDisabled()&&(e.which===OO.ui.Keys.SPACE||e.which===OO.ui.Keys.ENTER)){if(this.emit('click')){return false;}}};OO.ui.mixin.ButtonElement.prototype.isFramed=function(){return this.framed;};OO.ui.mixin.ButtonElement.prototype.toggleFramed=function(framed){framed=framed===undefined?!this.framed:!!framed;if(framed!==this.framed){this.framed=framed;this.$element.toggleClass('oo-ui-buttonElement-frameless',!framed).toggleClass('oo-ui-buttonElement-framed',framed);this.updateThemeClasses();}return this;};OO.ui.mixin.ButtonElement.prototype.setAccessKey=function(accessKey){accessKey=typeof accessKey==='string'&&accessKey.length?accessKey:null;if(this.accessKey!==accessKey){if(this.$button){if(accessKey!==null){this.$button.attr('accesskey',accessKey);}else{this.$button.removeAttr('accesskey');}}this.accessKey=accessKey;}return this;};OO.ui.mixin. ButtonElement.prototype.setActive=function(value){this.$element.toggleClass('oo-ui-buttonElement-active',!!value);return this;};OO.ui.mixin.GroupElement=function OoUiMixinGroupElement(config){config=config||{};this.$group=null;this.items=[];this.aggregateItemEvents={};this.setGroupElement(config.$group||$('
'));};OO.ui.mixin.GroupElement.prototype.setGroupElement=function($group){var i,len;this.$group=$group;for(i=0,len=this.items.length;i=0){this.removeItems([item]);if(currentIndex=this.items.length){this.$group.append(itemElements);this.items.push.apply(this.items,items);}else if(index===0){this.$group.prepend(itemElements);this.items.unshift.apply(this.items,items);}else{this.items[index].$element.before(itemElements);this.items.splice.apply(this.items,[index,0].concat(items));}return this;};OO.ui.mixin.GroupElement.prototype.removeItems=function(items){var i,len,item,index,remove,itemEvent;for(i=0,len=items. length;i').addClass('oo-ui-draggableGroupElement-placeholder');this.$element.addClass( 'oo-ui-draggableGroupElement').append(this.$status).toggleClass('oo-ui-draggableGroupElement-horizontal',this.orientation==='horizontal').prepend(this.$placeholder);};OO.mixinClass(OO.ui.mixin.DraggableGroupElement,OO.ui.mixin.GroupElement);OO.ui.mixin.DraggableGroupElement.prototype.onItemDragStart=function(item){var i,len;for(i=0,len=this.items.length;i'));};OO.initClass(OO.ui.mixin.IconElement);OO.ui.mixin.IconElement.static.icon=null;OO.ui.mixin.IconElement.static.iconTitle=null;OO.ui.mixin.IconElement.prototype.setIconElement=function($icon){if(this.$icon){this.$icon.removeClass('oo-ui-iconElement-icon oo-ui-icon-'+this.icon).removeAttr('title');}this.$icon=$icon.addClass('oo-ui-iconElement-icon').toggleClass('oo-ui-icon-'+this.icon,!!this.icon);if(this.iconTitle!==null){this.$icon.attr('title',this.iconTitle);}};OO.ui.mixin.IconElement.prototype.setIcon=function(icon){icon=OO.isPlainObject(icon)?OO.ui.getLocalValue(icon,null,'default'):icon;icon=typeof icon==='string'&&icon.trim().length? icon.trim():null;if(this.icon!==icon){if(this.$icon){if(this.icon!==null){this.$icon.removeClass('oo-ui-icon-'+this.icon);}if(icon!==null){this.$icon.addClass('oo-ui-icon-'+icon);}}this.icon=icon;}this.$element.toggleClass('oo-ui-iconElement',!!this.icon);this.updateThemeClasses();return this;};OO.ui.mixin.IconElement.prototype.setIconTitle=function(iconTitle){iconTitle=typeof iconTitle==='function'||(typeof iconTitle==='string'&&iconTitle.length)?OO.ui.resolveMsg(iconTitle):null;if(this.iconTitle!==iconTitle){this.iconTitle=iconTitle;if(this.$icon){if(this.iconTitle!==null){this.$icon.attr('title',iconTitle);}else{this.$icon.removeAttr('title');}}}return this;};OO.ui.mixin.IconElement.prototype.getIcon=function(){return this.icon;};OO.ui.mixin.IconElement.prototype.getIconTitle=function(){return this.iconTitle;};OO.ui.mixin.IndicatorElement=function OoUiMixinIndicatorElement(config){config=config||{};this.$indicator=null;this.indicator=null;this.indicatorTitle=null;this.setIndicator( config.indicator||this.constructor.static.indicator);this.setIndicatorTitle(config.indicatorTitle||this.constructor.static.indicatorTitle);this.setIndicatorElement(config.$indicator||$(''));};OO.initClass(OO.ui.mixin.IndicatorElement);OO.ui.mixin.IndicatorElement.static.indicator=null;OO.ui.mixin.IndicatorElement.static.indicatorTitle=null;OO.ui.mixin.IndicatorElement.prototype.setIndicatorElement=function($indicator){if(this.$indicator){this.$indicator.removeClass('oo-ui-indicatorElement-indicator oo-ui-indicator-'+this.indicator).removeAttr('title');}this.$indicator=$indicator.addClass('oo-ui-indicatorElement-indicator').toggleClass('oo-ui-indicator-'+this.indicator,!!this.indicator);if(this.indicatorTitle!==null){this.$indicator.attr('title',this.indicatorTitle);}};OO.ui.mixin.IndicatorElement.prototype.setIndicator=function(indicator){indicator=typeof indicator==='string'&&indicator.length?indicator.trim():null;if(this.indicator!==indicator){if(this.$indicator){if(this. indicator!==null){this.$indicator.removeClass('oo-ui-indicator-'+this.indicator);}if(indicator!==null){this.$indicator.addClass('oo-ui-indicator-'+indicator);}}this.indicator=indicator;}this.$element.toggleClass('oo-ui-indicatorElement',!!this.indicator);this.updateThemeClasses();return this;};OO.ui.mixin.IndicatorElement.prototype.setIndicatorTitle=function(indicatorTitle){indicatorTitle=typeof indicatorTitle==='function'||(typeof indicatorTitle==='string'&&indicatorTitle.length)?OO.ui.resolveMsg(indicatorTitle):null;if(this.indicatorTitle!==indicatorTitle){this.indicatorTitle=indicatorTitle;if(this.$indicator){if(this.indicatorTitle!==null){this.$indicator.attr('title',indicatorTitle);}else{this.$indicator.removeAttr('title');}}}return this;};OO.ui.mixin.IndicatorElement.prototype.getIndicator=function(){return this.indicator;};OO.ui.mixin.IndicatorElement.prototype.getIndicatorTitle=function(){return this.indicatorTitle;};OO.ui.mixin.LabelElement=function OoUiMixinLabelElement( config){config=config||{};this.$label=null;this.label=null;this.autoFitLabel=config.autoFitLabel===undefined||!!config.autoFitLabel;this.setLabel(config.label||this.constructor.static.label);this.setLabelElement(config.$label||$(''));};OO.initClass(OO.ui.mixin.LabelElement);OO.ui.mixin.LabelElement.static.label=null;OO.ui.mixin.LabelElement.prototype.setLabelElement=function($label){if(this.$label){this.$label.removeClass('oo-ui-labelElement-label').empty();}this.$label=$label.addClass('oo-ui-labelElement-label');this.setLabelContent(this.label);};OO.ui.mixin.LabelElement.prototype.setLabel=function(label){label=typeof label==='function'?OO.ui.resolveMsg(label):label;label=((typeof label==='string'&&label.length)||label instanceof jQuery||label instanceof OO.ui.HtmlSnippet)?label:null;this.$element.toggleClass('oo-ui-labelElement',!!label);if(this.label!==label){if(this.$label){this.setLabelContent(label);}this.label=label;this.emit('labelChange');}return this;};OO.ui.mixin. LabelElement.prototype.getLabel=function(){return this.label;};OO.ui.mixin.LabelElement.prototype.fitLabel=function(){if(this.$label&&this.$label.autoEllipsis&&this.autoFitLabel){this.$label.autoEllipsis({hasSpan:false,tooltip:true});}return this;};OO.ui.mixin.LabelElement.prototype.setLabelContent=function(label){if(typeof label==='string'){if(label.match(/^\s*$/)){this.$label.html(' ');}else{this.$label.text(label);}}else if(label instanceof OO.ui.HtmlSnippet){this.$label.html(label.toString());}else if(label instanceof jQuery){this.$label.empty().append(label);}else{this.$label.empty();}};OO.ui.mixin.LookupElement=function OoUiMixinLookupElement(config){config=config||{};this.$overlay=config.$overlay||this.$element;this.lookupMenu=new OO.ui.TextInputMenuSelectWidget(this,{widget:this,input:this,$container:config.$container});this.allowSuggestionsWhenEmpty=config.allowSuggestionsWhenEmpty||false;this.lookupCache={};this.lookupQuery=null;this.lookupRequest=null;this. lookupsDisabled=false;this.lookupInputFocused=false;this.$input.on({focus:this.onLookupInputFocus.bind(this),blur:this.onLookupInputBlur.bind(this),mousedown:this.onLookupInputMouseDown.bind(this)});this.connect(this,{change:'onLookupInputChange'});this.lookupMenu.connect(this,{toggle:'onLookupMenuToggle',choose:'onLookupMenuItemChoose'});this.$element.addClass('oo-ui-lookupElement');this.lookupMenu.$element.addClass('oo-ui-lookupElement-menu');this.$overlay.append(this.lookupMenu.$element);};OO.ui.mixin.LookupElement.prototype.onLookupInputFocus=function(){this.lookupInputFocused=true;this.populateLookupMenu();};OO.ui.mixin.LookupElement.prototype.onLookupInputBlur=function(){this.closeLookupMenu();this.lookupInputFocused=false;};OO.ui.mixin.LookupElement.prototype.onLookupInputMouseDown=function(){if(this.lookupInputFocused&&!this.lookupMenu.isVisible()){this.populateLookupMenu();}};OO.ui.mixin.LookupElement.prototype.onLookupInputChange=function(){if(this.lookupInputFocused){this. populateLookupMenu();}};OO.ui.mixin.LookupElement.prototype.onLookupMenuToggle=function(visible){if(!visible){this.abortLookupRequest();this.lookupMenu.clearItems();}};OO.ui.mixin.LookupElement.prototype.onLookupMenuItemChoose=function(item){this.setValue(item.getData());};OO.ui.mixin.LookupElement.prototype.getLookupMenu=function(){return this.lookupMenu;};OO.ui.mixin.LookupElement.prototype.setLookupsDisabled=function(disabled){this.lookupsDisabled=!!disabled;};OO.ui.mixin.LookupElement.prototype.openLookupMenu=function(){if(!this.lookupMenu.isEmpty()){this.lookupMenu.toggle(true);}return this;};OO.ui.mixin.LookupElement.prototype.closeLookupMenu=function(){this.lookupMenu.toggle(false);this.abortLookupRequest();this.lookupMenu.clearItems();return this;};OO.ui.mixin.LookupElement.prototype.populateLookupMenu=function(){var widget=this,value=this.getValue();if(this.lookupsDisabled){return;}if(!this.allowSuggestionsWhenEmpty&&value===''){this.closeLookupMenu();}else if(value!==this. lookupQuery){this.getLookupMenuItems().done(function(items){widget.lookupMenu.clearItems();if(items.length){widget.lookupMenu.addItems(items).toggle(true);widget.initializeLookupMenuSelection();}else{widget.lookupMenu.toggle(false);}}).fail(function(){widget.lookupMenu.clearItems();});}return this;};OO.ui.mixin.LookupElement.prototype.initializeLookupMenuSelection=function(){if(!this.lookupMenu.getSelectedItem()){this.lookupMenu.highlightItem(this.lookupMenu.getFirstSelectableItem());}};OO.ui.mixin.LookupElement.prototype.getLookupMenuItems=function(){var widget=this,value=this.getValue(),deferred=$.Deferred(),ourRequest;this.abortLookupRequest();if(Object.prototype.hasOwnProperty.call(this.lookupCache,value)){deferred.resolve(this.getLookupMenuOptionsFromData(this.lookupCache[value]));}else{this.pushPending();this.lookupQuery=value;ourRequest=this.lookupRequest=this.getLookupRequest();ourRequest.always(function(){widget.popPending();}).done(function(response){if(ourRequest===widget. lookupRequest){widget.lookupQuery=null;widget.lookupRequest=null;widget.lookupCache[value]=widget.getLookupCacheDataFromResponse(response);deferred.resolve(widget.getLookupMenuOptionsFromData(widget.lookupCache[value]));}}).fail(function(){if(ourRequest===widget.lookupRequest){widget.lookupQuery=null;widget.lookupRequest=null;deferred.reject();}});}return deferred.promise();};OO.ui.mixin.LookupElement.prototype.abortLookupRequest=function(){var oldRequest=this.lookupRequest;if(oldRequest){this.lookupRequest=null;this.lookupQuery=null;oldRequest.abort();}};OO.ui.mixin.LookupElement.prototype.getLookupRequest=function(){return null;};OO.ui.mixin.LookupElement.prototype.getLookupCacheDataFromResponse=function(){return[];};OO.ui.mixin.LookupElement.prototype.getLookupMenuOptionsFromData=function(){return[];};OO.ui.mixin.PopupElement=function OoUiMixinPopupElement(config){config=config||{};this.popup=new OO.ui.PopupWidget($.extend({autoClose:true},config.popup,{$autoCloseIgnore:this. $element}));};OO.ui.mixin.PopupElement.prototype.getPopup=function(){return this.popup;};OO.ui.mixin.FlaggedElement=function OoUiMixinFlaggedElement(config){config=config||{};this.flags={};this.$flagged=null;this.setFlags(config.flags);this.setFlaggedElement(config.$flagged||this.$element);};OO.ui.mixin.FlaggedElement.prototype.setFlaggedElement=function($flagged){var classNames=Object.keys(this.flags).map(function(flag){return'oo-ui-flaggedElement-'+flag;}).join(' ');if(this.$flagged){this.$flagged.removeClass(classNames);}this.$flagged=$flagged.addClass(classNames);};OO.ui.mixin.FlaggedElement.prototype.hasFlag=function(flag){return flag in this.flags;};OO.ui.mixin.FlaggedElement.prototype.getFlags=function(){return Object.keys(this.flags);};OO.ui.mixin.FlaggedElement.prototype.clearFlags=function(){var flag,className,changes={},remove=[],classPrefix='oo-ui-flaggedElement-';for(flag in this.flags){className=classPrefix+flag;changes[flag]=false;delete this.flags[flag];remove.push( className);}if(this.$flagged){this.$flagged.removeClass(remove.join(' '));}this.updateThemeClasses();this.emit('flag',changes);return this;};OO.ui.mixin.FlaggedElement.prototype.setFlags=function(flags){var i,len,flag,className,changes={},add=[],remove=[],classPrefix='oo-ui-flaggedElement-';if(typeof flags==='string'){className=classPrefix+flags;if(!this.flags[flags]){this.flags[flags]=true;add.push(className);}}else if(Array.isArray(flags)){for(i=0,len=flags.length;i');this.$accel=$('');this.$link=$('');this.title=null;OO.ui.mixin.IconElement.call(this,config);OO.ui.mixin.FlaggedElement.call(this,config);OO.ui.mixin.TabIndexedElement.call(this,$.extend({},config,{$tabIndexed:this.$link}));this.toolbar.connect(this,{updateState:'onUpdateState'});this.$title.addClass('oo-ui-tool-title');this.$accel.addClass('oo-ui-tool-accel').prop({dir:'ltr',lang:'en'});this.$link.addClass('oo-ui-tool-link').append(this.$icon,this.$title,this.$accel).attr('role','button');this.$element.data('oo-ui-tool',this).addClass('oo-ui-tool '+'oo-ui-tool-name-'+this.constructor.static.name.replace(/^([^\/]+)\/([^\/]+).*$/,'$1-$2')).toggleClass('oo-ui-tool-with-label',this.constructor.static.displayBothIconAndLabel).append(this.$link);this.setTitle(config.title||this.constructor.static.title);};OO.inheritClass(OO.ui.Tool,OO.ui.Widget);OO.mixinClass(OO.ui.Tool,OO.ui.mixin.IconElement);OO.mixinClass(OO.ui.Tool,OO.ui. mixin.FlaggedElement);OO.mixinClass(OO.ui.Tool,OO.ui.mixin.TabIndexedElement);OO.ui.Tool.static.tagName='span';OO.ui.Tool.static.name='';OO.ui.Tool.static.group='';OO.ui.Tool.static.title='';OO.ui.Tool.static.displayBothIconAndLabel=false;OO.ui.Tool.static.autoAddToCatchall=true;OO.ui.Tool.static.autoAddToGroup=true;OO.ui.Tool.static.isCompatibleWith=function(){return false;};OO.ui.Tool.prototype.onUpdateState=function(){throw new Error('OO.ui.Tool.onUpdateState not implemented in this subclass:'+this.constructor);};OO.ui.Tool.prototype.onSelect=function(){throw new Error('OO.ui.Tool.onSelect not implemented in this subclass:'+this.constructor);};OO.ui.Tool.prototype.isActive=function(){return this.active;};OO.ui.Tool.prototype.setActive=function(state){this.active=!!state;if(this.active){this.$element.addClass('oo-ui-tool-active');}else{this.$element.removeClass('oo-ui-tool-active');}};OO.ui.Tool.prototype.setTitle=function(title){this.title=OO.ui.resolveMsg(title);this.updateTitle(); return this;};OO.ui.Tool.prototype.getTitle=function(){return this.title;};OO.ui.Tool.prototype.getName=function(){return this.constructor.static.name;};OO.ui.Tool.prototype.updateTitle=function(){var titleTooltips=this.toolGroup.constructor.static.titleTooltips,accelTooltips=this.toolGroup.constructor.static.accelTooltips,accel=this.toolbar.getToolAccelerator(this.constructor.static.name),tooltipParts=[];this.$title.text(this.title);this.$accel.text(accel);if(titleTooltips&&typeof this.title==='string'&&this.title.length){tooltipParts.push(this.title);}if(accelTooltips&&typeof accel==='string'&&accel.length){tooltipParts.push(accel);}if(tooltipParts.length){this.$link.attr('title',tooltipParts.join(' '));}else{this.$link.removeAttr('title');}};OO.ui.Tool.prototype.destroy=function(){this.toolbar.disconnect(this);this.$element.remove();};OO.ui.Toolbar=function OoUiToolbar(toolFactory,toolGroupFactory,config){if(OO.isPlainObject(toolFactory)&&config===undefined){config=toolFactory; toolFactory=config.toolFactory;toolGroupFactory=config.toolGroupFactory;}config=config||{};OO.ui.Toolbar.parent.call(this,config);OO.EventEmitter.call(this);OO.ui.mixin.GroupElement.call(this,config);this.toolFactory=toolFactory;this.toolGroupFactory=toolGroupFactory;this.groups=[];this.tools={};this.$bar=$('
');this.$actions=$('
');this.initialized=false;this.onWindowResizeHandler=this.onWindowResize.bind(this);this.$element.add(this.$bar).add(this.$group).add(this.$actions).on('mousedown keydown',this.onPointerDown.bind(this));this.$group.addClass('oo-ui-toolbar-tools');if(config.actions){this.$bar.append(this.$actions.addClass('oo-ui-toolbar-actions'));}this.$bar.addClass('oo-ui-toolbar-bar').append(this.$group,'
');if(config.shadow){this.$bar.append('
');}this.$element.addClass('oo-ui-toolbar').append(this.$bar);};OO.inheritClass(OO.ui.Toolbar,OO.ui.Element);OO.mixinClass(OO.ui.Toolbar,OO.EventEmitter);OO. mixinClass(OO.ui.Toolbar,OO.ui.mixin.GroupElement);OO.ui.Toolbar.prototype.getToolFactory=function(){return this.toolFactory;};OO.ui.Toolbar.prototype.getToolGroupFactory=function(){return this.toolGroupFactory;};OO.ui.Toolbar.prototype.onPointerDown=function(e){var $closestWidgetToEvent=$(e.target).closest('.oo-ui-widget'),$closestWidgetToToolbar=this.$element.closest('.oo-ui-widget');if(!$closestWidgetToEvent.length||$closestWidgetToEvent[0]===$closestWidgetToToolbar[0]){return false;}};OO.ui.Toolbar.prototype.onWindowResize=function(){this.$element.toggleClass('oo-ui-toolbar-narrow',this.$bar.width()<=this.narrowThreshold);};OO.ui.Toolbar.prototype.initialize=function(){this.initialized=true;this.narrowThreshold=this.$group.width()+this.$actions.width();$(this.getElementWindow()).on('resize',this.onWindowResizeHandler);this.onWindowResize();};OO.ui.Toolbar.prototype.setup=function(groups){var i,len,type,group,items=[],defaultType='bar';this.reset();for(i=0,len=groups.length;i=0;i--){item=this.items[i];if(!item.isDisabled()){allDisabled=false;break;}}this.autoDisabled=allDisabled;}OO.ui.ToolGroup.parent.prototype.updateDisabled.apply(this,arguments);};OO.ui.ToolGroup.prototype.onMouseKeyDown=function(e){if(!this.isDisabled()&&(e.which===1||e.which===OO.ui.Keys.SPACE||e.which===OO.ui.Keys.ENTER)){this.pressed=this.getTargetTool(e);if(this.pressed ){this.pressed.setActive(true);this.getElementDocument().addEventListener('mouseup',this.onCapturedMouseKeyUpHandler,true);this.getElementDocument().addEventListener('keyup',this.onCapturedMouseKeyUpHandler,true);}return false;}};OO.ui.ToolGroup.prototype.onCapturedMouseKeyUp=function(e){this.getElementDocument().removeEventListener('mouseup',this.onCapturedMouseKeyUpHandler,true);this.getElementDocument().removeEventListener('keyup',this.onCapturedMouseKeyUpHandler,true);this.onMouseKeyUp(e);};OO.ui.ToolGroup.prototype.onMouseKeyUp=function(e){var tool=this.getTargetTool(e);if(!this.isDisabled()&&this.pressed&&this.pressed===tool&&(e.which===1||e.which===OO.ui.Keys.SPACE||e.which===OO.ui.Keys.ENTER)){this.pressed.onSelect();this.pressed=null;return false;}this.pressed=null;};OO.ui.ToolGroup.prototype.onMouseOverFocus=function(e){var tool=this.getTargetTool(e);if(this.pressed&&this.pressed===tool){this.pressed.setActive(true);}};OO.ui.ToolGroup.prototype.onMouseOutBlur=function(e){var tool=this.getTargetTool(e);if(this.pressed&&this.pressed===tool){this.pressed.setActive(false);}};OO.ui.ToolGroup.prototype.getTargetTool=function(e){var tool,$item=$(e.target).closest('.oo-ui-tool-link');if($item.length){tool=$item.parent().data('oo-ui-tool');}return tool&&!tool.isDisabled()?tool:null;};OO.ui.ToolGroup.prototype.onToolFactoryRegister=function(){this.populate();};OO.ui.ToolGroup.prototype.getToolbar=function(){return this.toolbar;};OO.ui.ToolGroup.prototype.populate=function(){var i,len,name,tool,toolFactory=this.toolbar.getToolFactory(),names={},add=[],remove=[],list=this.toolbar.getToolFactory().getTools(this.include,this.exclude,this.promote,this.demote);for(i=0,len=list.length;i');this.container=new OO.ui.PanelLayout({scrollable:true,classes:['oo-ui-messageDialog-container']});this.text=new OO.ui.PanelLayout({padded:true,expanded:false,classes:['oo-ui-messageDialog-text']});this.message=new OO.ui. LabelWidget({classes:['oo-ui-messageDialog-message']});this.title.$element.addClass('oo-ui-messageDialog-title');this.$content.addClass('oo-ui-messageDialog-content');this.container.$element.append(this.text.$element);this.text.$element.append(this.title.$element,this.message.$element);this.$body.append(this.container.$element);this.$actions.addClass('oo-ui-messageDialog-actions');this.$foot.append(this.$actions);};OO.ui.MessageDialog.prototype.attachActions=function(){var i,len,other,special,others;OO.ui.MessageDialog.parent.prototype.attachActions.call(this);special=this.actions.getSpecial();others=this.actions.getOthers();if(special.safe){this.$actions.append(special.safe.$element);special.safe.toggleFramed(false);}if(others.length){for(i=0,len=others.length;i');this.$location=$('
');this.$safeActions=$('
');this.$primaryActions=$('
');this.$otherActions=$('
');this.dismissButton=new OO.ui.ButtonWidget({label:OO.ui.msg('ooui-dialog-process-dismiss')});this.retryButton=new OO.ui.ButtonWidget();this.$errors=$('
');this.$errorsTitle=$('
');this.dismissButton.connect(this,{click:'onDismissErrorButtonClick'});this.retryButton.connect(this,{click:'onRetryButtonClick'});this.title.$element.addClass('oo-ui-processDialog-title');this.$location.append(this.title.$element).addClass('oo-ui-processDialog-location');this.$safeActions.addClass('oo-ui-processDialog-actions-safe');this.$primaryActions.addClass('oo-ui-processDialog-actions-primary');this.$otherActions.addClass('oo-ui-processDialog-actions-other');this.$errorsTitle. addClass('oo-ui-processDialog-errors-title').text(OO.ui.msg('ooui-dialog-process-error'));this.$errors.addClass('oo-ui-processDialog-errors oo-ui-element-hidden').append(this.$errorsTitle,this.dismissButton.$element,this.retryButton.$element);this.$content.addClass('oo-ui-processDialog-content').append(this.$errors);this.$navigation.addClass('oo-ui-processDialog-navigation').append(this.$safeActions,this.$location,this.$primaryActions);this.$head.append(this.$navigation);this.$foot.append(this.$otherActions);};OO.ui.ProcessDialog.prototype.getActionWidgets=function(actions){var i,len,widgets=[];for(i=0,len=actions.length;i').addClass('oo-ui-processDialog-error').append(errors[i].getMessage());items.push($item[0]);}this.$errorItems=$(items);if(recoverable){abilities[this.currentAction]=true;actions=this.actions.get({actions:this.currentAction});if(actions.length){this.retryButton.clearFlags().setFlags(actions[0].getFlags());}}else{abilities[this.currentAction]=false;this.actions.setAbilities(abilities);}if(warning){this.retryButton.setLabel(OO.ui.msg('ooui-dialog-process-continue'));} else{this.retryButton.setLabel(OO.ui.msg('ooui-dialog-process-retry'));}this.retryButton.toggle(recoverable);this.$errorsTitle.after(this.$errorItems);this.$errors.removeClass('oo-ui-element-hidden').scrollTop(0);};OO.ui.ProcessDialog.prototype.hideErrors=function(){this.$errors.addClass('oo-ui-element-hidden');if(this.$errorItems){this.$errorItems.remove();this.$errorItems=null;}};OO.ui.ProcessDialog.prototype.getTeardownProcess=function(data){return OO.ui.ProcessDialog.parent.prototype.getTeardownProcess.call(this,data).first(function(){this.hideErrors();},this);};OO.ui.FieldLayout=function OoUiFieldLayout(fieldWidget,config){if(OO.isPlainObject(fieldWidget)&&config===undefined){config=fieldWidget;fieldWidget=config.fieldWidget;}var hasInputWidget=fieldWidget.constructor.static.supportsSimpleLabel;config=$.extend({align:'left'},config);OO.ui.FieldLayout.parent.call(this,config);OO.ui.mixin.LabelElement.call(this,config);this.fieldWidget=fieldWidget;this.$field=$('
');this.$body=$ ('<'+(hasInputWidget?'label':'div')+'>');this.align=null;if(config.help){this.popupButtonWidget=new OO.ui.PopupButtonWidget({classes:['oo-ui-fieldLayout-help'],framed:false,icon:'info'});this.popupButtonWidget.getPopup().$body.append($('
').text(config.help).addClass('oo-ui-fieldLayout-help-content'));this.$help=this.popupButtonWidget.$element;}else{this.$help=$([]);}if(hasInputWidget){this.$label.on('click',this.onLabelClick.bind(this));}this.fieldWidget.connect(this,{disable:'onFieldDisable'});this.$element.addClass('oo-ui-fieldLayout').append(this.$help,this.$body);this.$body.addClass('oo-ui-fieldLayout-body');this.$field.addClass('oo-ui-fieldLayout-field').toggleClass('oo-ui-fieldLayout-disable',this.fieldWidget.isDisabled()).append(this.fieldWidget.$element);this.setAlignment(config.align);};OO.inheritClass(OO.ui.FieldLayout,OO.ui.Layout);OO.mixinClass(OO.ui.FieldLayout,OO.ui.mixin.LabelElement);OO.ui.FieldLayout.prototype.onFieldDisable=function(value){this.$element. toggleClass('oo-ui-fieldLayout-disabled',value);};OO.ui.FieldLayout.prototype.onLabelClick=function(){this.fieldWidget.simulateLabelClick();return false;};OO.ui.FieldLayout.prototype.getField=function(){return this.fieldWidget;};OO.ui.FieldLayout.prototype.setAlignment=function(value){if(value!==this.align){if(['left','right','top','inline'].indexOf(value)===-1){value='left';}if(value==='inline'){this.$body.append(this.$field,this.$label);}else{this.$body.append(this.$label,this.$field);}if(this.align){this.$element.removeClass('oo-ui-fieldLayout-align-'+this.align);}this.$element.addClass('oo-ui-fieldLayout-align-'+value);this.align=value;}return this;};OO.ui.ActionFieldLayout=function OoUiActionFieldLayout(fieldWidget,buttonWidget,config){if(OO.isPlainObject(fieldWidget)&&config===undefined){config=fieldWidget;fieldWidget=config.fieldWidget;buttonWidget=config.buttonWidget;}OO.ui.ActionFieldLayout.parent.call(this,fieldWidget,config);this.buttonWidget=buttonWidget;this.$button=$( '
');this.$input=$('
');this.$element.addClass('oo-ui-actionFieldLayout');this.$button.addClass('oo-ui-actionFieldLayout-button').append(this.buttonWidget.$element);this.$input.addClass('oo-ui-actionFieldLayout-input').append(this.fieldWidget.$element);this.$field.append(this.$input,this.$button);};OO.inheritClass(OO.ui.ActionFieldLayout,OO.ui.FieldLayout);OO.ui.FieldsetLayout=function OoUiFieldsetLayout(config){config=config||{};OO.ui.FieldsetLayout.parent.call(this,config);OO.ui.mixin.IconElement.call(this,config);OO.ui.mixin.LabelElement.call(this,config);OO.ui.mixin.GroupElement.call(this,config);if(config.help){this.popupButtonWidget=new OO.ui.PopupButtonWidget({classes:['oo-ui-fieldsetLayout-help'],framed:false,icon:'info'});this.popupButtonWidget.getPopup().$body.append($('
').text(config.help).addClass('oo-ui-fieldsetLayout-help-content'));this.$help=this.popupButtonWidget.$element;}else{this.$help=$([]);}this.$element.addClass('oo-ui-fieldsetLayout').prepend(this. $help,this.$icon,this.$label,this.$group);if(Array.isArray(config.items)){this.addItems(config.items);}};OO.inheritClass(OO.ui.FieldsetLayout,OO.ui.Layout);OO.mixinClass(OO.ui.FieldsetLayout,OO.ui.mixin.IconElement);OO.mixinClass(OO.ui.FieldsetLayout,OO.ui.mixin.LabelElement);OO.mixinClass(OO.ui.FieldsetLayout,OO.ui.mixin.GroupElement);OO.ui.FormLayout=function OoUiFormLayout(config){config=config||{};OO.ui.FormLayout.parent.call(this,config);OO.ui.mixin.GroupElement.call(this,$.extend({},config,{$group:this.$element}));this.$element.on('submit',this.onFormSubmit.bind(this));this.$element.addClass('oo-ui-formLayout').attr({method:config.method,action:config.action,enctype:config.enctype});if(Array.isArray(config.items)){this.addItems(config.items);}};OO.inheritClass(OO.ui.FormLayout,OO.ui.Layout);OO.mixinClass(OO.ui.FormLayout,OO.ui.mixin.GroupElement);OO.ui.FormLayout.static.tagName='form';OO.ui.FormLayout.prototype.onFormSubmit=function(){if(this.emit('submit')){return false;}};OO.ui .MenuLayout=function OoUiMenuLayout(config){config=$.extend({showMenu:true,menuPosition:'before'},config);OO.ui.MenuLayout.parent.call(this,config);this.$menu=$('
');this.$content=$('
');this.$menu.addClass('oo-ui-menuLayout-menu');this.$content.addClass('oo-ui-menuLayout-content');this.$element.addClass('oo-ui-menuLayout').append(this.$content,this.$menu);this.setMenuPosition(config.menuPosition);this.toggleMenu(config.showMenu);};OO.inheritClass(OO.ui.MenuLayout,OO.ui.Layout);OO.ui.MenuLayout.prototype.toggleMenu=function(showMenu){showMenu=showMenu===undefined?!this.showMenu:!!showMenu;if(this.showMenu!==showMenu){this.showMenu=showMenu;this.$element.toggleClass('oo-ui-menuLayout-showMenu',this.showMenu).toggleClass('oo-ui-menuLayout-hideMenu',!this.showMenu);}return this;};OO.ui.MenuLayout.prototype.isMenuVisible=function(){return this.showMenu;};OO.ui.MenuLayout.prototype.setMenuPosition=function(position){this.$element.removeClass('oo-ui-menuLayout-'+this.menuPosition); this.menuPosition=position;this.$element.addClass('oo-ui-menuLayout-'+position);return this;};OO.ui.MenuLayout.prototype.getMenuPosition=function(){return this.menuPosition;};OO.ui.BookletLayout=function OoUiBookletLayout(config){config=config||{};OO.ui.BookletLayout.parent.call(this,config);this.currentPageName=null;this.pages={};this.ignoreFocus=false;this.stackLayout=new OO.ui.StackLayout({continuous:!!config.continuous});this.$content.append(this.stackLayout.$element);this.autoFocus=config.autoFocus===undefined||!!config.autoFocus;this.outlineVisible=false;this.outlined=!!config.outlined;if(this.outlined){this.editable=!!config.editable;this.outlineControlsWidget=null;this.outlineSelectWidget=new OO.ui.OutlineSelectWidget();this.outlinePanel=new OO.ui.PanelLayout({scrollable:true});this.$menu.append(this.outlinePanel.$element);this.outlineVisible=true;if(this.editable){this.outlineControlsWidget=new OO.ui.OutlineControlsWidget(this.outlineSelectWidget);}}this.toggleMenu(this. outlined);this.stackLayout.connect(this,{set:'onStackLayoutSet'});if(this.outlined){this.outlineSelectWidget.connect(this,{select:'onOutlineSelectWidgetSelect'});}if(this.autoFocus){this.stackLayout.$element.on('focusin',this.onStackLayoutFocus.bind(this));}this.$element.addClass('oo-ui-bookletLayout');this.stackLayout.$element.addClass('oo-ui-bookletLayout-stackLayout');if(this.outlined){this.outlinePanel.$element.addClass('oo-ui-bookletLayout-outlinePanel').append(this.outlineSelectWidget.$element);if(this.editable){this.outlinePanel.$element.addClass('oo-ui-bookletLayout-outlinePanel-editable').append(this.outlineControlsWidget.$element);}}};OO.inheritClass(OO.ui.BookletLayout,OO.ui.MenuLayout);OO.ui.BookletLayout.prototype.onStackLayoutFocus=function(e){var name,$target;$target=$(e.target).closest('.oo-ui-pageLayout');for(name in this.pages){if(this.pages[name].$element[0]===$target[0]&&name!==this.currentPageName){this.setPage(name);break;}}};OO.ui.BookletLayout.prototype. onStackLayoutSet=function(page){var layout=this;if(page){page.scrollElementIntoView({complete:function(){if(layout.autoFocus){layout.focus();}}});}};OO.ui.BookletLayout.prototype.focus=function(itemIndex){var $input,page,items=this.stackLayout.getItems();if(itemIndex!==undefined&&items[itemIndex]){page=items[itemIndex];}else{page=this.stackLayout.getCurrentItem();}if(!page&&this.outlined){this.selectFirstSelectablePage();page=this.stackLayout.getCurrentItem();}if(!page){return;}if(!page.$element.find(':focus').length){$input=page.$element.find(':input:first');if($input.length){$input[0].focus();}}};OO.ui.BookletLayout.prototype.focusFirstFocusable=function(){var i,len,found=false,items=this.stackLayout.getItems(),checkAndFocus=function(){if(OO.ui.isFocusableElement($(this))){$(this).focus();found=true;return false;}};for(i=0,len=items.length;i');OO.ui.mixin.IconElement.call(this,config);OO.ui.mixin.IndicatorElement.call(this,config);OO.ui.mixin.LabelElement.call(this,config);OO.ui.mixin.TitledElement.call(this,config);OO.ui.mixin.ClippableElement.call(this,$.extend({},config,{$clippable:this.$group}));OO.ui.mixin.TabIndexedElement.call(this,$.extend({},config,{$tabIndexed:this.$handle}));this.$handle.on({keydown:this.onHandleMouseKeyDown.bind(this),keyup:this.onHandleMouseKeyUp.bind(this),mousedown:this.onHandleMouseKeyDown.bind(this),mouseup:this.onHandleMouseKeyUp.bind(this)});this.$handle.addClass('oo-ui-popupToolGroup-handle').append(this.$icon,this.$label,this.$indicator);if(config.header!==undefined){this.$group.prepend($('').addClass('oo-ui-popupToolGroup-header').text(config.header));}this.$element.addClass('oo-ui-popupToolGroup').prepend(this.$handle);}; OO.inheritClass(OO.ui.PopupToolGroup,OO.ui.ToolGroup);OO.mixinClass(OO.ui.PopupToolGroup,OO.ui.mixin.IconElement);OO.mixinClass(OO.ui.PopupToolGroup,OO.ui.mixin.IndicatorElement);OO.mixinClass(OO.ui.PopupToolGroup,OO.ui.mixin.LabelElement);OO.mixinClass(OO.ui.PopupToolGroup,OO.ui.mixin.TitledElement);OO.mixinClass(OO.ui.PopupToolGroup,OO.ui.mixin.ClippableElement);OO.mixinClass(OO.ui.PopupToolGroup,OO.ui.mixin.TabIndexedElement);OO.ui.PopupToolGroup.prototype.setDisabled=function(){OO.ui.PopupToolGroup.parent.prototype.setDisabled.apply(this,arguments);if(this.isDisabled()&&this.isElementAttached()){this.setActive(false);}};OO.ui.PopupToolGroup.prototype.onBlur=function(e){if($(e.target).closest('.oo-ui-popupToolGroup')[0]!==this.$element[0]){this.setActive(false);}};OO.ui.PopupToolGroup.prototype.onMouseKeyUp=function(e){if(!this.isDisabled()&&this.pressed&&this.pressed===this.getTargetTool(e)&&(e.which===1||e.which===OO.ui.Keys.SPACE||e.which===OO.ui.Keys.ENTER)){this.setActive(false );}return OO.ui.PopupToolGroup.parent.prototype.onMouseKeyUp.call(this,e);};OO.ui.PopupToolGroup.prototype.onHandleMouseKeyUp=function(e){if(!this.isDisabled()&&(e.which===1||e.which===OO.ui.Keys.SPACE||e.which===OO.ui.Keys.ENTER)){return false;}};OO.ui.PopupToolGroup.prototype.onHandleMouseKeyDown=function(e){if(!this.isDisabled()&&(e.which===1||e.which===OO.ui.Keys.SPACE||e.which===OO.ui.Keys.ENTER)){this.setActive(!this.active);return false;}};OO.ui.PopupToolGroup.prototype.setActive=function(value){value=!!value;if(this.active!==value){this.active=value;if(value){this.getElementDocument().addEventListener('mouseup',this.onBlurHandler,true);this.getElementDocument().addEventListener('keyup',this.onBlurHandler,true);this.$element.addClass('oo-ui-popupToolGroup-active oo-ui-popupToolGroup-left');this.toggleClipping(true);if(this.isClippedHorizontally()){this.toggleClipping(false);this.$element.removeClass('oo-ui-popupToolGroup-left').addClass('oo-ui-popupToolGroup-right');this. toggleClipping(true);}}else{this.getElementDocument().removeEventListener('mouseup',this.onBlurHandler,true);this.getElementDocument().removeEventListener('keyup',this.onBlurHandler,true);this.$element.removeClass('oo-ui-popupToolGroup-active oo-ui-popupToolGroup-left oo-ui-popupToolGroup-right');this.toggleClipping(false);}}};OO.ui.ListToolGroup=function OoUiListToolGroup(toolbar,config){if(OO.isPlainObject(toolbar)&&config===undefined){config=toolbar;toolbar=config.toolbar;}config=config||{};this.allowCollapse=config.allowCollapse;this.forceExpand=config.forceExpand;this.expanded=config.expanded!==undefined?config.expanded:false;this.collapsibleTools=[];OO.ui.ListToolGroup.parent.call(this,toolbar,config);this.$element.addClass('oo-ui-listToolGroup');};OO.inheritClass(OO.ui.ListToolGroup,OO.ui.PopupToolGroup);OO.ui.ListToolGroup.static.name='list';OO.ui.ListToolGroup.prototype.populate=function(){var i,len,allowCollapse=[];OO.ui.ListToolGroup.parent.prototype.populate.call(this);if( this.allowCollapse!==undefined){allowCollapse=this.allowCollapse;}else if(this.forceExpand!==undefined){allowCollapse=OO.simpleArrayDifference(Object.keys(this.tools),this.forceExpand);}this.collapsibleTools=[];for(i=0,len=allowCollapse.length;i');this.upButton=new OO.ui.ButtonWidget({framed:false,icon:'collapse',title:OO.ui.msg('ooui-outline-control-move-up')});this.downButton=new OO.ui.ButtonWidget({framed:false,icon:'expand',title:OO.ui.msg('ooui-outline-control-move-down')});this.removeButton=new OO.ui.ButtonWidget({framed:false,icon:'remove',title:OO.ui.msg('ooui-outline-control-remove')});this.abilities={move:true,remove:true};outline.connect(this,{select:'onOutlineChange',add:'onOutlineChange',remove:'onOutlineChange'});this.upButton.connect(this,{click:['emit','move',-1]});this.downButton.connect(this,{click:['emit','move',1]});this.removeButton.connect(this,{click:['emit','remove']});this.$element.addClass( 'oo-ui-outlineControlsWidget');this.$group.addClass('oo-ui-outlineControlsWidget-items');this.$movers.addClass('oo-ui-outlineControlsWidget-movers').append(this.removeButton.$element,this.upButton.$element,this.downButton.$element);this.$element.append(this.$icon,this.$group,this.$movers);this.setAbilities(config.abilities||{});};OO.inheritClass(OO.ui.OutlineControlsWidget,OO.ui.Widget);OO.mixinClass(OO.ui.OutlineControlsWidget,OO.ui.mixin.GroupElement);OO.mixinClass(OO.ui.OutlineControlsWidget,OO.ui.mixin.IconElement);OO.ui.OutlineControlsWidget.prototype.setAbilities=function(abilities){var ability;for(ability in this.abilities){if(abilities[ability]!==undefined){this.abilities[ability]=!!abilities[ability];}}this.onOutlineChange();};OO.ui.OutlineControlsWidget.prototype.onOutlineChange=function(){var i,len,firstMovable,lastMovable,items=this.outline.getItems(),selectedItem=this.outline.getSelectedItem(),movable=this.abilities.move&&selectedItem&&selectedItem.isMovable(),removable= this.abilities.remove&&selectedItem&&selectedItem.isRemovable();if(movable){i=-1;len=items.length;while(++i');OO.ui.mixin.IconElement.call(this,config);OO.ui.mixin.IndicatorElement.call(this,config);OO.ui.mixin.LabelElement.call(this,config);OO.ui.mixin.TitledElement.call(this,$.extend({},config,{$titled:this.$label}));OO.ui.mixin.TabIndexedElement.call(this,$.extend({},config,{$tabIndexed:this.$handle}));this.menu=new OO.ui.MenuSelectWidget($.extend({widget:this},config.menu));this.$handle.on({click:this.onClick.bind(this),keypress:this.onKeyPress. bind(this)});this.menu.connect(this,{select:'onMenuSelect'});this.$handle.addClass('oo-ui-dropdownWidget-handle').append(this.$icon,this.$label,this.$indicator);this.$element.addClass('oo-ui-dropdownWidget').append(this.$handle,this.menu.$element);};OO.inheritClass(OO.ui.DropdownWidget,OO.ui.Widget);OO.mixinClass(OO.ui.DropdownWidget,OO.ui.mixin.IconElement);OO.mixinClass(OO.ui.DropdownWidget,OO.ui.mixin.IndicatorElement);OO.mixinClass(OO.ui.DropdownWidget,OO.ui.mixin.LabelElement);OO.mixinClass(OO.ui.DropdownWidget,OO.ui.mixin.TitledElement);OO.mixinClass(OO.ui.DropdownWidget,OO.ui.mixin.TabIndexedElement);OO.ui.DropdownWidget.prototype.getMenu=function(){return this.menu;};OO.ui.DropdownWidget.prototype.onMenuSelect=function(item){var selectedLabel;if(!item){this.setLabel(null);return;}selectedLabel=item.getLabel();if(selectedLabel instanceof jQuery){selectedLabel=selectedLabel.clone();}this.setLabel(selectedLabel);};OO.ui.DropdownWidget.prototype.onClick=function(e){if(!this. isDisabled()&&e.which===1){this.menu.toggle();}return false;};OO.ui.DropdownWidget.prototype.onKeyPress=function(e){if(!this.isDisabled()&&((e.which===OO.ui.Keys.SPACE&&!this.menu.isVisible())||e.which===OO.ui.Keys.ENTER)){this.menu.toggle();return false;}};OO.ui.SelectFileWidget=function OoUiSelectFileWidget(config){var dragHandler;config=$.extend({accept:null,placeholder:OO.ui.msg('ooui-selectfile-placeholder'),notsupported:OO.ui.msg('ooui-selectfile-not-supported'),droppable:true},config);OO.ui.SelectFileWidget.parent.call(this,config);this.$handle=$('');OO.ui.mixin.IconElement.call(this,config);OO.ui.mixin.IndicatorElement.call(this,config);OO.ui.mixin.PendingElement.call(this,config);OO.ui.mixin.LabelElement.call(this,$.extend(config,{autoFitLabel:true}));OO.ui.mixin.TabIndexedElement.call(this,$.extend({},config,{$tabIndexed:this.$handle}));this.isSupported=this.constructor.static.isSupported();this.currentFile=null;if(Array.isArray(config.accept)){this.accept=config.accept ;}else{this.accept=null;}this.placeholder=config.placeholder;this.notsupported=config.notsupported;this.onFileSelectedHandler=this.onFileSelected.bind(this);this.clearButton=new OO.ui.ButtonWidget({classes:['oo-ui-selectFileWidget-clearButton'],framed:false,icon:'remove',disabled:this.disabled});this.$handle.on({keypress:this.onKeyPress.bind(this)});this.clearButton.connect(this,{click:'onClearClick'});if(config.droppable){dragHandler=this.onDragEnterOrOver.bind(this);this.$handle.on({dragenter:dragHandler,dragover:dragHandler,dragleave:this.onDragLeave.bind(this),drop:this.onDrop.bind(this)});}this.addInput();this.updateUI();this.$label.addClass('oo-ui-selectFileWidget-label');this.$handle.addClass('oo-ui-selectFileWidget-handle').append(this.$icon,this.$label,this.clearButton.$element,this.$indicator);this.$element.addClass('oo-ui-selectFileWidget').append(this.$handle);if(config.droppable){this.$element.addClass('oo-ui-selectFileWidget-droppable');}};OO.inheritClass(OO.ui. SelectFileWidget,OO.ui.Widget);OO.mixinClass(OO.ui.SelectFileWidget,OO.ui.mixin.IconElement);OO.mixinClass(OO.ui.SelectFileWidget,OO.ui.mixin.IndicatorElement);OO.mixinClass(OO.ui.SelectFileWidget,OO.ui.mixin.PendingElement);OO.mixinClass(OO.ui.SelectFileWidget,OO.ui.mixin.LabelElement);OO.mixinClass(OO.ui.SelectFileWidget,OO.ui.mixin.TabIndexedElement);OO.ui.SelectFileWidget.static.isSupported=function(){var $input;if(OO.ui.SelectFileWidget.static.isSupportedCache===null){$input=$('');OO.ui.SelectFileWidget.static.isSupportedCache=$input[0].files!==undefined;}return OO.ui.SelectFileWidget.static.isSupportedCache;};OO.ui.SelectFileWidget.static.isSupportedCache=null;OO.ui.SelectFileWidget.prototype.getValue=function(){return this.currentFile;};OO.ui.SelectFileWidget.prototype.setValue=function(file){if(this.currentFile!==file){this.currentFile=file;this.updateUI();this.emit('change',this.currentFile);}};OO.ui.SelectFileWidget.prototype.updateUI=function(){if(!this. isSupported){this.$element.addClass('oo-ui-selectFileWidget-notsupported');this.$element.removeClass('oo-ui-selectFileWidget-empty');this.setLabel(this.notsupported);}else if(this.currentFile){this.$element.removeClass('oo-ui-selectFileWidget-empty');this.setLabel(this.currentFile.name+(this.currentFile.type!==''?OO.ui.msg('ooui-semicolon-separator')+this.currentFile.type:''));}else{this.$element.addClass('oo-ui-selectFileWidget-empty');this.setLabel(this.placeholder);}if(this.$input){this.$input.attr('title',this.getLabel());}};OO.ui.SelectFileWidget.prototype.addInput=function(){if(this.$input){this.$input.remove();}if(!this.isSupported){this.$input=null;return;}this.$input=$('');this.$input.on('change',this.onFileSelectedHandler);this.$input.attr({tabindex:-1,title:this.getLabel()});if(this.accept){this.$input.attr('accept',this.accept.join(', '));}this.$handle.append(this.$input);};OO.ui.SelectFileWidget.prototype.isFileAcceptable=function(file){var i,mime, mimeTest;if(!this.accept||file.type===''){return true;}mime=file.type;for(i=0;i')) ;this.setValue(config.value);};OO.inheritClass(OO.ui.InputWidget,OO.ui.Widget);OO.mixinClass(OO.ui.InputWidget,OO.ui.mixin.FlaggedElement);OO.mixinClass(OO.ui.InputWidget,OO.ui.mixin.TabIndexedElement);OO.ui.InputWidget.static.supportsSimpleLabel=true;OO.ui.InputWidget.prototype.getInputElement=function(){return $('');};OO.ui.InputWidget.prototype.onEdit=function(){var widget=this;if(!this.isDisabled()){setTimeout(function(){widget.setValue(widget.$input.val());});}};OO.ui.InputWidget.prototype.getValue=function(){var value=this.$input.val();if(this.value!==value){this.setValue(value);}return this.value;};OO.ui.InputWidget.prototype.setRTL=function(isRTL){this.$input.prop('dir',isRTL?'rtl':'ltr');};OO.ui.InputWidget.prototype.setValue=function(value){value=this.cleanUpValue(value);if(this.$input.val()!==value){this.$input.val(value);}if(this.value!==value){this.value=value;this.emit('change',this.value);}return this;};OO.ui.InputWidget.prototype.cleanUpValue=function(value){if( value===undefined||value===null){return'';}else if(this.inputFilter){return this.inputFilter(String(value));}else{return String(value);}};OO.ui.InputWidget.prototype.simulateLabelClick=function(){if(!this.isDisabled()){if(this.$input.is(':checkbox, :radio')){this.$input.click();}if(this.$input.is(':input')){this.$input[0].focus();}}};OO.ui.InputWidget.prototype.setDisabled=function(state){OO.ui.InputWidget.parent.prototype.setDisabled.call(this,state);if(this.$input){this.$input.prop('disabled',this.isDisabled());}return this;};OO.ui.InputWidget.prototype.focus=function(){this.$input[0].focus();return this;};OO.ui.InputWidget.prototype.blur=function(){this.$input[0].blur();return this;};OO.ui.ButtonInputWidget=function OoUiButtonInputWidget(config){config=$.extend({type:'button',useInputTag:false},config);this.useInputTag=config.useInputTag;OO.ui.ButtonInputWidget.parent.call(this,config);OO.ui.mixin.ButtonElement.call(this,$.extend({},config,{$button:this.$input}));OO.ui.mixin. IconElement.call(this,config);OO.ui.mixin.IndicatorElement.call(this,config);OO.ui.mixin.LabelElement.call(this,config);OO.ui.mixin.TitledElement.call(this,$.extend({},config,{$titled:this.$input}));if(!config.useInputTag){this.$input.append(this.$icon,this.$label,this.$indicator);}this.$element.addClass('oo-ui-buttonInputWidget');};OO.inheritClass(OO.ui.ButtonInputWidget,OO.ui.InputWidget);OO.mixinClass(OO.ui.ButtonInputWidget,OO.ui.mixin.ButtonElement);OO.mixinClass(OO.ui.ButtonInputWidget,OO.ui.mixin.IconElement);OO.mixinClass(OO.ui.ButtonInputWidget,OO.ui.mixin.IndicatorElement);OO.mixinClass(OO.ui.ButtonInputWidget,OO.ui.mixin.LabelElement);OO.mixinClass(OO.ui.ButtonInputWidget,OO.ui.mixin.TitledElement);OO.ui.ButtonInputWidget.prototype.getInputElement=function(config){var type=['button','submit','reset'].indexOf(config.type)!==-1?config.type:'button';return $('<'+(config.useInputTag?'input':'button')+' type="'+type+'">');};OO.ui.ButtonInputWidget.prototype.setLabel=function( label){OO.ui.mixin.LabelElement.prototype.setLabel.call(this,label);if(this.useInputTag){if(typeof label==='function'){label=OO.ui.resolveMsg(label);}if(label instanceof jQuery){label=label.text();}if(!label){label='';}this.$input.val(label);}return this;};OO.ui.ButtonInputWidget.prototype.setValue=function(value){if(!this.useInputTag){OO.ui.ButtonInputWidget.parent.prototype.setValue.call(this,value);}return this;};OO.ui.CheckboxInputWidget=function OoUiCheckboxInputWidget(config){config=config||{};OO.ui.CheckboxInputWidget.parent.call(this,config);this.$element.addClass('oo-ui-checkboxInputWidget');this.setSelected(config.selected!==undefined?config.selected:false);};OO.inheritClass(OO.ui.CheckboxInputWidget,OO.ui.InputWidget);OO.ui.CheckboxInputWidget.prototype.getInputElement=function(){return $('');};OO.ui.CheckboxInputWidget.prototype.onEdit=function(){var widget=this;if(!this.isDisabled()){setTimeout(function(){widget.setSelected(widget.$input.prop( 'checked'));});}};OO.ui.CheckboxInputWidget.prototype.setSelected=function(state){state=!!state;if(this.selected!==state){this.selected=state;this.$input.prop('checked',this.selected);this.emit('change',this.selected);}return this;};OO.ui.CheckboxInputWidget.prototype.isSelected=function(){var selected=this.$input.prop('checked');if(this.selected!==selected){this.setSelected(selected);}return this.selected;};OO.ui.DropdownInputWidget=function OoUiDropdownInputWidget(config){config=config||{};this.dropdownWidget=new OO.ui.DropdownWidget();OO.ui.DropdownInputWidget.parent.call(this,config);this.dropdownWidget.getMenu().connect(this,{select:'onMenuSelect'});this.setOptions(config.options||[]);this.$element.addClass('oo-ui-dropdownInputWidget').append(this.dropdownWidget.$element);};OO.inheritClass(OO.ui.DropdownInputWidget,OO.ui.InputWidget);OO.ui.DropdownInputWidget.prototype.getInputElement=function(){return $('');};OO.ui.DropdownInputWidget.prototype.onMenuSelect= function(item){this.setValue(item.getData());};OO.ui.DropdownInputWidget.prototype.setValue=function(value){value=this.cleanUpValue(value);this.dropdownWidget.getMenu().selectItemByData(value);OO.ui.DropdownInputWidget.parent.prototype.setValue.call(this,value);return this;};OO.ui.DropdownInputWidget.prototype.setDisabled=function(state){this.dropdownWidget.setDisabled(state);OO.ui.DropdownInputWidget.parent.prototype.setDisabled.call(this,state);return this;};OO.ui.DropdownInputWidget.prototype.setOptions=function(options){var value=this.getValue(),widget=this;this.dropdownWidget.getMenu().clearItems().addItems(options.map(function(opt){var optValue=widget.cleanUpValue(opt.data);return new OO.ui.MenuOptionWidget({data:optValue,label:opt.label!==undefined?opt.label:optValue});}));if(this.dropdownWidget.getMenu().getItemFromData(value)){this.setValue(value);}else{if(options.length){this.setValue(options[0].data);}}return this;};OO.ui.DropdownInputWidget.prototype.focus=function(){this. dropdownWidget.getMenu().toggle(true);return this;};OO.ui.DropdownInputWidget.prototype.blur=function(){this.dropdownWidget.getMenu().toggle(false);return this;};OO.ui.RadioInputWidget=function OoUiRadioInputWidget(config){config=config||{};OO.ui.RadioInputWidget.parent.call(this,config);this.$element.addClass('oo-ui-radioInputWidget');this.setSelected(config.selected!==undefined?config.selected:false);};OO.inheritClass(OO.ui.RadioInputWidget,OO.ui.InputWidget);OO.ui.RadioInputWidget.prototype.getInputElement=function(){return $('');};OO.ui.RadioInputWidget.prototype.onEdit=function(){};OO.ui.RadioInputWidget.prototype.setSelected=function(state){this.$input.prop('checked',state);return this;};OO.ui.RadioInputWidget.prototype.isSelected=function(){return this.$input.prop('checked');};OO.ui.RadioSelectInputWidget=function OoUiRadioSelectInputWidget(config){config=config||{};this.radioSelectWidget=new OO.ui.RadioSelectWidget();OO.ui.RadioSelectInputWidget.parent. call(this,config);this.radioSelectWidget.connect(this,{select:'onMenuSelect'});this.setOptions(config.options||[]);this.$element.addClass('oo-ui-radioSelectInputWidget').append(this.radioSelectWidget.$element);};OO.inheritClass(OO.ui.RadioSelectInputWidget,OO.ui.InputWidget);OO.ui.RadioSelectInputWidget.static.supportsSimpleLabel=false;OO.ui.RadioSelectInputWidget.prototype.getInputElement=function(){return $('');};OO.ui.RadioSelectInputWidget.prototype.onMenuSelect=function(item){this.setValue(item.getData());};OO.ui.RadioSelectInputWidget.prototype.setValue=function(value){value=this.cleanUpValue(value);this.radioSelectWidget.selectItemByData(value);OO.ui.RadioSelectInputWidget.parent.prototype.setValue.call(this,value);return this;};OO.ui.RadioSelectInputWidget.prototype.setDisabled=function(state){this.radioSelectWidget.setDisabled(state);OO.ui.RadioSelectInputWidget.parent.prototype.setDisabled.call(this,state);return this;};OO.ui.RadioSelectInputWidget. prototype.setOptions=function(options){var value=this.getValue(),widget=this;this.radioSelectWidget.clearItems().addItems(options.map(function(opt){var optValue=widget.cleanUpValue(opt.data);return new OO.ui.RadioOptionWidget({data:optValue,label:opt.label!==undefined?opt.label:optValue});}));if(this.radioSelectWidget.getItemFromData(value)){this.setValue(value);}else{if(options.length){this.setValue(options[0].data);}}return this;};OO.ui.TextInputWidget=function OoUiTextInputWidget(config){config=$.extend({type:'text',labelPosition:'after'},config);OO.ui.TextInputWidget.parent.call(this,config);OO.ui.mixin.IconElement.call(this,config);OO.ui.mixin.IndicatorElement.call(this,config);OO.ui.mixin.PendingElement.call(this,config);OO.ui.mixin.LabelElement.call(this,config);this.readOnly=false;this.multiline=!!config.multiline;this.autosize=!!config.autosize;this.minRows=config.rows!==undefined?config.rows:'';this.maxRows=config.maxRows||Math.max(2*(this.minRows||0),10);this.validate=null; if(this.autosize){this.$clone=this.$input.clone().insertAfter(this.$input).attr('aria-hidden','true').addClass('oo-ui-element-hidden');}this.setValidation(config.validate);this.setLabelPosition(config.labelPosition);this.$input.on({keypress:this.onKeyPress.bind(this),blur:this.onBlur.bind(this)});this.$input.one({focus:this.onElementAttach.bind(this)});this.$icon.on('mousedown',this.onIconMouseDown.bind(this));this.$indicator.on('mousedown',this.onIndicatorMouseDown.bind(this));this.on('labelChange',this.updatePosition.bind(this));this.connect(this,{change:'onChange'});this.$element.addClass('oo-ui-textInputWidget').append(this.$icon,this.$indicator);this.setReadOnly(!!config.readOnly);if(config.placeholder){this.$input.attr('placeholder',config.placeholder);}if(config.maxLength!==undefined){this.$input.attr('maxlength',config.maxLength);}if(config.autofocus){this.$input.attr('autofocus','autofocus');}if(config.required){this.$input.attr('required','required');this.$input.attr( 'aria-required','true');}if(config.autocomplete===false){this.$input.attr('autocomplete','off');}if(this.multiline&&config.rows){this.$input.attr('rows',config.rows);}if(this.label||config.autosize){this.installParentChangeDetector();}};OO.inheritClass(OO.ui.TextInputWidget,OO.ui.InputWidget);OO.mixinClass(OO.ui.TextInputWidget,OO.ui.mixin.IconElement);OO.mixinClass(OO.ui.TextInputWidget,OO.ui.mixin.IndicatorElement);OO.mixinClass(OO.ui.TextInputWidget,OO.ui.mixin.PendingElement);OO.mixinClass(OO.ui.TextInputWidget,OO.ui.mixin.LabelElement);OO.ui.TextInputWidget.static.validationPatterns={'non-empty':/.+/,integer:/^\d+$/};OO.ui.TextInputWidget.prototype.onIconMouseDown=function(e){if(e.which===1){this.$input[0].focus();return false;}};OO.ui.TextInputWidget.prototype.onIndicatorMouseDown=function(e){if(e.which===1){this.$input[0].focus();return false;}};OO.ui.TextInputWidget.prototype.onKeyPress=function(e){if(e.which===OO.ui.Keys.ENTER&&!this.multiline){this.emit('enter',e);}};OO.ui. TextInputWidget.prototype.onBlur=function(){this.setValidityFlag();};OO.ui.TextInputWidget.prototype.onElementAttach=function(){this.valCache=null;this.adjustSize();this.positionLabel();};OO.ui.TextInputWidget.prototype.onChange=function(){this.setValidityFlag();this.adjustSize();};OO.ui.TextInputWidget.prototype.isReadOnly=function(){return this.readOnly;};OO.ui.TextInputWidget.prototype.setReadOnly=function(state){this.readOnly=!!state;this.$input.prop('readOnly',this.readOnly);return this;};OO.ui.TextInputWidget.prototype.installParentChangeDetector=function(){var mutationObserver,onRemove,topmostNode,fakeParentNode,MutationObserver=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,widget=this;if(MutationObserver){if(this.$element.closest('html').length){return;}topmostNode=this.$element[0];while(topmostNode.parentNode){topmostNode=topmostNode.parentNode;}mutationObserver=new MutationObserver(function(mutations){var i,j,removedNodes;for(i=0;i< mutations.length;i++){removedNodes=mutations[i].removedNodes;for(j=0;j').append(this.$element)[0];mutationObserver.observe(fakeParentNode,{childList:true});}else{this.$element.on('DOMNodeInsertedIntoDocument',this.onElementAttach.bind(this));}};OO.ui.TextInputWidget.prototype.adjustSize=function(){var scrollHeight,innerHeight,outerHeight,maxInnerHeight,measurementError,idealHeight;if(this.multiline&&this.autosize&&this.$input.val()!==this.valCache){this.$clone.val(this.$input.val()).attr('rows',this.minRows).css('height',0);this.$clone.removeClass('oo-ui-element-hidden');this.valCache=this.$input.val();scrollHeight=this.$clone[0].scrollHeight;this.$clone.css('height','');innerHeight=this.$clone.innerHeight(); outerHeight=this.$clone.outerHeight();this.$clone.attr('rows',this.maxRows).css('height','auto').val('');maxInnerHeight=this.$clone.innerHeight();measurementError=maxInnerHeight-this.$clone[0].scrollHeight;idealHeight=Math.min(maxInnerHeight,scrollHeight+measurementError);this.$clone.addClass('oo-ui-element-hidden');if(idealHeight>innerHeight){this.$input.css('height',idealHeight+(outerHeight-innerHeight));}else{this.$input.css('height','');}}return this;};OO.ui.TextInputWidget.prototype.getInputElement=function(config){var type=['text','password','search','email','url'].indexOf(config.type)!==-1?config.type:'text';return config.multiline?$('