define("imageButton",["lodash","core","santaProps","utils","imageClientApi","image"],function(a,b,c,d,e,f){"use strict";var g=b.compMixins;function h(a){a.component.setState({$prepare:a.preTransitionClass});d.animationFrame.request(function(){if(a.component.isMounted()){a.component.setState(a.state)}})}function i(a){if(a.state.$pressed){return}h({component:a,preTransitionClass:"prepare_dah",state:{$pressed:"pressed"}})}function j(a){if(!a.state.$pressed){return}h({component:a,preTransitionClass:"prepare_adh",state:{$pressed:"",$hovered:""}})}function k(a){if(a.state.$hovered){return}h({component:a,preTransitionClass:"prepare_dha",state:{$hovered:"hovered"}})}function l(a){if(a.state.$pressed){j(a);return}if(!a.state.$hovered){return}h({component:a,preTransitionClass:"prepare_hda",state:{$hovered:""}})}function m(a){if(a.state.$pressed){return}h({component:a,preTransitionClass:"prepare_had",state:{$pressed:"pressed"}})}function n(a){if(!a.state.$pressed){return}h({component:a,preTransitionClass:"prepare_ahd",state:{$pressed:""}})}function o(b,c){var d=b.props.compData[c];if(!d){return{}}d=a.assign({alt:b.props.compData.alt},d);var f={ref:c,skinPart:c,imageData:d,containerWidth:b.props.style.width,containerHeight:b.props.style.height,displayMode:e.fittingTypes.LEGACY_FULL};return b.createChildComponent(d,"core.components.Image",c,f)}function p(a,b){var c={};if(b.linkRef){c=b.linkRef;c=d.linkRenderer.renderLink(c,b.linkRenderInfo,b.rootNavigationInfo)}c.title=b.title;c.style={width:a.props.style.width,height:a.props.style.height};return c}var q={displayName:"ImageButton",mixins:[g.timeoutsMixin,g.skinBasedComp],propTypes:a.assign({compData:c.Types.Component.compData,compProp:c.Types.Component.compProp,linkRenderInfo:c.Types.Link.linkRenderInfo,rootNavigationInfo:c.Types.Component.rootNavigationInfo,style:c.Types.Component.style,windowFocusEvents:c.Types.SiteAspects.windowFocusEvents},c.santaTypesUtils.getSantaTypesByDefinition(f)),statics:{useSantaTypes:true},getInitialState:function(){this.blurEventAspect=this.props.windowFocusEvents;this.blurEventAspect.registerToFocusEvent("blur",this);return{$opacity:"supports_opacity",$transition:"transition_"+this.props.compProp.transition,$prepare:"",$hovered:"",$pressed:""}},getSkinProperties:function(){var a=this,b={onMouseEnter:function(){k(a)},onMouseLeave:function(){l(a)},onMouseDown:function(){m(a)},onMouseUp:function(){n(a)},onDragStart:function(a){a.preventDefault()},onTouchStart:function(){i(a)},onTouchEnd:function(){j(a)},onTouchMove:function(){if(!a.state.$pressed){return}a.setTimeout(b.onTouchEnd,500)},onTouchCancel:function(){j(a)},onClick:function(){j(a)},onPointerDown:function(){i(a)},onPointerOut:function(){j(a)}};return{"":b,defaultImage:o(a,"defaultImage"),hoverImage:o(a,"hoverImage"),activeImage:o(a,"activeImage"),link:p(a,{linkRef:a.props.compData.link,title:a.props.compData.alt,linkRenderInfo:a.props.linkRenderInfo,rootNavigationInfo:a.props.rootNavigationInfo})}},onBlur:function(){l(this)},componentWillUnmount:function(){this.blurEventAspect.unregisterFromFocusEvent("blur",this)}};return q});