"),this.initialized=!1,this.narrowThreshold=null,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"),e.actions&&this.$bar.append(this.$actions.addClass("oo-ui-toolbar-actions")),this.$bar.addClass("oo-ui-toolbar-bar").append(this.$group,'
'),this.$element.addClass("oo-ui-toolbar oo-ui-toolbar-position-"+this.position).append(this.$bar)},o.inheritClass(o.ui.Toolbar,o.ui.Element),o.mixinClass(o.ui.Toolbar,o.EventEmitter),o.mixinClass(o.ui.Toolbar,o.ui.mixin.GroupElement),o.ui.Toolbar.prototype.getToolFactory=function(){return this.toolFactory},o.ui.Toolbar.prototype.getToolGroupFactory=function(){return this.toolGroupFactory},o.ui.Toolbar.prototype.onPointerDown=function(o){var t=$(o.target).closest(".oo-ui-widget"),i=this.$element.closest(".oo-ui-widget");if(!t.length||t[0]===i[0])return!1},o.ui.Toolbar.prototype.onWindowResize=function(){this.$element.toggleClass("oo-ui-toolbar-narrow",this.$bar.width()<=this.getNarrowThreshold())},o.ui.Toolbar.prototype.getNarrowThreshold=function(){return null===this.narrowThreshold&&(this.narrowThreshold=this.$group.width()+this.$actions.width()),this.narrowThreshold},o.ui.Toolbar.prototype.initialize=function(){this.initialized||(this.initialized=!0,$(this.getElementWindow()).on("resize",this.onWindowResizeHandler),this.onWindowResize())},o.ui.Toolbar.prototype.setup=function(t){var i,e,s,l,n=[];for(this.reset(),i=0,e=t.length;i
"),this.$accel=$(""),this.$link=$(""),this.title=null,o.ui.mixin.IconElement.call(this,i),o.ui.mixin.FlaggedElement.call(this,i),o.ui.mixin.TabIndexedElement.call(this,$.extend({},i,{$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").addClass("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(i.title||this.constructor.static.title)},o.inheritClass(o.ui.Tool,o.ui.Widget),o.mixinClass(o.ui.Tool,o.ui.mixin.IconElement),o.mixinClass(o.ui.Tool,o.ui.mixin.FlaggedElement),o.mixinClass(o.ui.Tool,o.ui.mixin.TabIndexedElement),o.ui.Tool.static.tagName="span",o.ui.Tool.static.name="",o.ui.Tool.static.group="",o.ui.Tool.static.title="",o.ui.Tool.static.displayBothIconAndLabel=!1,o.ui.Tool.static.autoAddToCatchall=!0,o.ui.Tool.static.autoAddToGroup=!0,o.ui.Tool.static.isCompatibleWith=function(){return!1},o.ui.Tool.prototype.onUpdateState=null,o.ui.Tool.prototype.onSelect=null,o.ui.Tool.prototype.isActive=function(){return this.active},o.ui.Tool.prototype.setActive=function(o){this.active=!!o,this.active?(this.$element.addClass("oo-ui-tool-active"),this.setFlags({progressive:!0})):(this.$element.removeClass("oo-ui-tool-active"),this.setFlags({progressive:!1}))},o.ui.Tool.prototype.setTitle=function(t){return this.title=o.ui.resolveMsg(t),this.updateTitle(),this},o.ui.Tool.prototype.getTitle=function(){return this.title},o.ui.Tool.prototype.getName=function(){return this.constructor.static.name},o.ui.Tool.prototype.updateTitle=function(){var o=this.toolGroup.constructor.static.titleTooltips,t=this.toolGroup.constructor.static.accelTooltips,i=this.toolbar.getToolAccelerator(this.constructor.static.name),e=[];this.$title.text(this.title),this.$accel.text(i),o&&"string"==typeof this.title&&this.title.length&&e.push(this.title),t&&"string"==typeof i&&i.length&&e.push(i),e.length?this.$link.attr("title",e.join(" ")):this.$link.removeAttr("title")},o.ui.Tool.prototype.destroy=function(){this.toolbar.disconnect(this),this.$element.remove()},o.ui.ToolGroup=function(t,i){o.isPlainObject(t)&&void 0===i&&(t=(i=t).toolbar),i=i||{},o.ui.ToolGroup.parent.call(this,i),o.ui.mixin.GroupElement.call(this,i),this.toolbar=t,this.tools={},this.pressed=null,this.autoDisabled=!1,this.include=i.include||[],this.exclude=i.exclude||[],this.promote=i.promote||[],this.demote=i.demote||[],this.onCapturedMouseKeyUpHandler=this.onCapturedMouseKeyUp.bind(this),this.$element.on({mousedown:this.onMouseKeyDown.bind(this),mouseup:this.onMouseKeyUp.bind(this),keydown:this.onMouseKeyDown.bind(this),keyup:this.onMouseKeyUp.bind(this),focus:this.onMouseOverFocus.bind(this),blur:this.onMouseOutBlur.bind(this),mouseover:this.onMouseOverFocus.bind(this),mouseout:this.onMouseOutBlur.bind(this)}),this.toolbar.getToolFactory().connect(this,{register:"onToolFactoryRegister"}),this.aggregate({disable:"itemDisable"}),this.connect(this,{itemDisable:"updateDisabled"}),this.$group.addClass("oo-ui-toolGroup-tools"),this.$element.addClass("oo-ui-toolGroup").append(this.$group),this.populate()},o.inheritClass(o.ui.ToolGroup,o.ui.Widget),o.mixinClass(o.ui.ToolGroup,o.ui.mixin.GroupElement),o.ui.ToolGroup.static.titleTooltips=!1,o.ui.ToolGroup.static.accelTooltips=!1,o.ui.ToolGroup.static.autoDisable=!0,o.ui.ToolGroup.static.name=null,o.ui.ToolGroup.prototype.isDisabled=function(){return this.autoDisabled||o.ui.ToolGroup.parent.prototype.isDisabled.apply(this,arguments)},o.ui.ToolGroup.prototype.updateDisabled=function(){var t,i=!0;if(this.constructor.static.autoDisable){for(t=this.items.length-1;t>=0;t--)if(!this.items[t].isDisabled()){i=!1;break}this.autoDisabled=i}o.ui.ToolGroup.parent.prototype.updateDisabled.apply(this,arguments)},o.ui.ToolGroup.prototype.onMouseKeyDown=function(t){if(!this.isDisabled()&&(t.which===o.ui.MouseButtons.LEFT||t.which===o.ui.Keys.SPACE||t.which===o.ui.Keys.ENTER)&&(this.pressed=this.findTargetTool(t),this.pressed))return this.pressed.setActive(!0),this.getElementDocument().addEventListener("mouseup",this.onCapturedMouseKeyUpHandler,!0),this.getElementDocument().addEventListener("keyup",this.onCapturedMouseKeyUpHandler,!0),!1},o.ui.ToolGroup.prototype.onCapturedMouseKeyUp=function(o){this.getElementDocument().removeEventListener("mouseup",this.onCapturedMouseKeyUpHandler,!0),this.getElementDocument().removeEventListener("keyup",this.onCapturedMouseKeyUpHandler,!0),this.onMouseKeyUp(o)},o.ui.ToolGroup.prototype.onMouseKeyUp=function(t){var i=this.findTargetTool(t);this.isDisabled()||!this.pressed||this.pressed!==i||t.which!==o.ui.MouseButtons.LEFT&&t.which!==o.ui.Keys.SPACE&&t.which!==o.ui.Keys.ENTER||(this.pressed.onSelect(),this.pressed=null,t.preventDefault(),t.stopPropagation()),this.pressed=null},o.ui.ToolGroup.prototype.onMouseOverFocus=function(o){var t=this.findTargetTool(o);this.pressed&&this.pressed===t&&this.pressed.setActive(!0)},o.ui.ToolGroup.prototype.onMouseOutBlur=function(o){var t=this.findTargetTool(o);this.pressed&&this.pressed===t&&this.pressed.setActive(!1)},o.ui.ToolGroup.prototype.findTargetTool=function(o){var t,i=$(o.target).closest(".oo-ui-tool-link");return i.length&&(t=i.parent().data("oo-ui-tool")),t&&!t.isDisabled()?t:null},o.ui.ToolGroup.prototype.onToolFactoryRegister=function(){this.populate()},o.ui.ToolGroup.prototype.getToolbar=function(){return this.toolbar},o.ui.ToolGroup.prototype.populate=function(){var o,t,i,e,s=this.toolbar.getToolFactory(),l={},n=[],u=[],r=this.toolbar.getToolFactory().getTools(this.include,this.exclude,this.promote,this.demote);for(o=0,t=r.length;o"),o.ui.mixin.IconElement.call(this,i),o.ui.mixin.IndicatorElement.call(this,i),o.ui.mixin.LabelElement.call(this,i),o.ui.mixin.TitledElement.call(this,i),o.ui.mixin.FlaggedElement.call(this,i),o.ui.mixin.ClippableElement.call(this,$.extend({},i,{$clippable:this.$group})),o.ui.mixin.TabIndexedElement.call(this,$.extend({},i,{$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").attr("role","button").append(this.$icon,this.$label,this.$indicator),void 0!==i.header&&this.$group.prepend($("").addClass("oo-ui-popupToolGroup-header").text(i.header)),this.$element.addClass("oo-ui-popupToolGroup").prepend(this.$handle)},o.inheritClass(o.ui.PopupToolGroup,o.ui.ToolGroup),o.mixinClass(o.ui.PopupToolGroup,o.ui.mixin.IconElement),o.mixinClass(o.ui.PopupToolGroup,o.ui.mixin.IndicatorElement),o.mixinClass(o.ui.PopupToolGroup,o.ui.mixin.LabelElement),o.mixinClass(o.ui.PopupToolGroup,o.ui.mixin.TitledElement),o.mixinClass(o.ui.PopupToolGroup,o.ui.mixin.FlaggedElement),o.mixinClass(o.ui.PopupToolGroup,o.ui.mixin.ClippableElement),o.mixinClass(o.ui.PopupToolGroup,o.ui.mixin.TabIndexedElement),o.ui.PopupToolGroup.prototype.getHorizontalAnchorEdge=function(){var o;return o=this.$element.hasClass("oo-ui-popupToolGroup-right")?"right":"left","rtl"===this.$element.css("direction")&&(o="left"===o?"right":"left"),o},o.ui.PopupToolGroup.prototype.getVerticalAnchorEdge=function(){return"bottom"===this.toolbar.position?"bottom":"top"},o.ui.PopupToolGroup.prototype.setDisabled=function(){o.ui.PopupToolGroup.parent.prototype.setDisabled.apply(this,arguments),this.isDisabled()&&this.isElementAttached()&&this.setActive(!1)},o.ui.PopupToolGroup.prototype.onBlur=function(o){$(o.target).closest(".oo-ui-popupToolGroup")[0]!==this.$element[0]&&this.setActive(!1)},o.ui.PopupToolGroup.prototype.onMouseKeyUp=function(t){return this.isDisabled()||!this.pressed||this.pressed!==this.findTargetTool(t)||t.which!==o.ui.MouseButtons.LEFT&&t.which!==o.ui.Keys.SPACE&&t.which!==o.ui.Keys.ENTER||this.setActive(!1),o.ui.PopupToolGroup.parent.prototype.onMouseKeyUp.call(this,t)},o.ui.PopupToolGroup.prototype.onHandleMouseKeyUp=function(t){if(!this.isDisabled()&&(t.which===o.ui.MouseButtons.LEFT||t.which===o.ui.Keys.SPACE||t.which===o.ui.Keys.ENTER))return!1},o.ui.PopupToolGroup.prototype.onHandleMouseKeyDown=function(t){if(!this.isDisabled()&&(t.which===o.ui.MouseButtons.LEFT||t.which===o.ui.Keys.SPACE||t.which===o.ui.Keys.ENTER))return this.setActive(!this.active),!1},o.ui.PopupToolGroup.prototype.setActive=function(o){var t,i;o=!!o,this.active!==o&&(this.active=o,o?(this.getElementDocument().addEventListener("mouseup",this.onBlurHandler,!0),this.getElementDocument().addEventListener("keyup",this.onBlurHandler,!0),this.$clippable.css("left",""),this.$element.addClass("oo-ui-popupToolGroup-active oo-ui-popupToolGroup-left"),this.setFlags({progressive:!0}),this.toggleClipping(!0),this.isClippedHorizontally()&&(this.toggleClipping(!1),this.$element.removeClass("oo-ui-popupToolGroup-left").addClass("oo-ui-popupToolGroup-right"),this.toggleClipping(!0)),this.isClippedHorizontally()&&(t=this.$clippableScrollableContainer.width(),i=this.$clippableScrollableContainer[0]===document.documentElement?0:this.$clippableScrollableContainer.offset().left,this.toggleClipping(!1),this.$element.removeClass("oo-ui-popupToolGroup-right"),this.$clippable.css({left:-(this.$element.offset().left-i),width:t}))):(this.getElementDocument().removeEventListener("mouseup",this.onBlurHandler,!0),this.getElementDocument().removeEventListener("keyup",this.onBlurHandler,!0),this.$element.removeClass("oo-ui-popupToolGroup-active oo-ui-popupToolGroup-left oo-ui-popupToolGroup-right"),this.setFlags({progressive:!1}),this.toggleClipping(!1)))},o.ui.ListToolGroup=function(t,i){o.isPlainObject(t)&&void 0===i&&(t=(i=t).toolbar),i=i||{},this.allowCollapse=i.allowCollapse,this.forceExpand=i.forceExpand,this.expanded=void 0!==i.expanded&&i.expanded,this.collapsibleTools=[],o.ui.ListToolGroup.parent.call(this,t,i),this.$element.addClass("oo-ui-listToolGroup")},o.inheritClass(o.ui.ListToolGroup,o.ui.PopupToolGroup),o.ui.ListToolGroup.static.name="list",o.ui.ListToolGroup.prototype.populate=function(){var t,i,e=[];for(o.ui.ListToolGroup.parent.prototype.populate.call(this),void 0!==this.allowCollapse?e=this.allowCollapse:void 0!==this.forceExpand&&(e=o.simpleArrayDifference(Object.keys(this.tools),this.forceExpand)),this.collapsibleTools=[],t=0,i=e.length;t