|
|
10 |
__coverage__['build/widget-position-align/widget-position-align.js'] = {"path":"build/widget-position-align/widget-position-align.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0,0,0,0,0,0,0,0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0,0,0,0,0,0,0,0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":33},"end":{"line":1,"column":52}}},"2":{"name":"PositionAlign","line":38,"loc":{"start":{"line":38,"column":0},"end":{"line":38,"column":32}}},"3":{"name":"(anonymous_3)","line":236,"loc":{"start":{"line":236,"column":16},"end":{"line":236,"column":28}}},"4":{"name":"(anonymous_4)","line":250,"loc":{"start":{"line":250,"column":21},"end":{"line":250,"column":33}}},"5":{"name":"(anonymous_5)","line":265,"loc":{"start":{"line":265,"column":21},"end":{"line":265,"column":33}}},"6":{"name":"(anonymous_6)","line":298,"loc":{"start":{"line":298,"column":11},"end":{"line":298,"column":35}}},"7":{"name":"(anonymous_7)","line":323,"loc":{"start":{"line":323,"column":14},"end":{"line":323,"column":30}}},"8":{"name":"(anonymous_8)","line":338,"loc":{"start":{"line":338,"column":21},"end":{"line":338,"column":36}}},"9":{"name":"(anonymous_9)","line":361,"loc":{"start":{"line":361,"column":17},"end":{"line":361,"column":41}}},"10":{"name":"(anonymous_10)","line":450,"loc":{"start":{"line":450,"column":27},"end":{"line":450,"column":46}}},"11":{"name":"(anonymous_11)","line":464,"loc":{"start":{"line":464,"column":30},"end":{"line":464,"column":42}}},"12":{"name":"(anonymous_12)","line":474,"loc":{"start":{"line":474,"column":41},"end":{"line":474,"column":54}}},"13":{"name":"(anonymous_13)","line":492,"loc":{"start":{"line":492,"column":30},"end":{"line":492,"column":42}}},"14":{"name":"(anonymous_14)","line":513,"loc":{"start":{"line":513,"column":14},"end":{"line":513,"column":43}}},"15":{"name":"(anonymous_15)","line":597,"loc":{"start":{"line":597,"column":16},"end":{"line":597,"column":32}}},"16":{"name":"(anonymous_16)","line":622,"loc":{"start":{"line":622,"column":23},"end":{"line":622,"column":36}}},"17":{"name":"(anonymous_17)","line":637,"loc":{"start":{"line":637,"column":25},"end":{"line":637,"column":37}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":649,"column":48}},"2":{"start":{"line":13,"column":0},"end":{"line":24,"column":39}},"3":{"start":{"line":38,"column":0},"end":{"line":46,"column":1}},"4":{"start":{"line":39,"column":4},"end":{"line":42,"column":5}},"5":{"start":{"line":40,"column":8},"end":{"line":41,"column":51}},"6":{"start":{"line":44,"column":4},"end":{"line":44,"column":50}},"7":{"start":{"line":45,"column":4},"end":{"line":45,"column":50}},"8":{"start":{"line":48,"column":0},"end":{"line":129,"column":2}},"9":{"start":{"line":139,"column":0},"end":{"line":139,"column":24}},"10":{"start":{"line":149,"column":0},"end":{"line":149,"column":24}},"11":{"start":{"line":159,"column":0},"end":{"line":159,"column":24}},"12":{"start":{"line":169,"column":0},"end":{"line":169,"column":24}},"13":{"start":{"line":179,"column":0},"end":{"line":179,"column":24}},"14":{"start":{"line":189,"column":0},"end":{"line":189,"column":24}},"15":{"start":{"line":199,"column":0},"end":{"line":199,"column":24}},"16":{"start":{"line":209,"column":0},"end":{"line":209,"column":24}},"17":{"start":{"line":219,"column":0},"end":{"line":219,"column":24}},"18":{"start":{"line":221,"column":0},"end":{"line":644,"column":2}},"19":{"start":{"line":237,"column":8},"end":{"line":237,"column":40}},"20":{"start":{"line":251,"column":8},"end":{"line":251,"column":58}},"21":{"start":{"line":252,"column":8},"end":{"line":252,"column":62}},"22":{"start":{"line":253,"column":8},"end":{"line":253,"column":58}},"23":{"start":{"line":266,"column":8},"end":{"line":266,"column":36}},"24":{"start":{"line":268,"column":8},"end":{"line":268,"column":54}},"25":{"start":{"line":270,"column":8},"end":{"line":272,"column":9}},"26":{"start":{"line":271,"column":12},"end":{"line":271,"column":55}},"27":{"start":{"line":299,"column":8},"end":{"line":308,"column":9}},"28":{"start":{"line":301,"column":12},"end":{"line":304,"column":15}},"29":{"start":{"line":307,"column":12},"end":{"line":307,"column":35}},"30":{"start":{"line":310,"column":8},"end":{"line":310,"column":20}},"31":{"start":{"line":324,"column":8},"end":{"line":324,"column":70}},"32":{"start":{"line":339,"column":8},"end":{"line":344,"column":9}},"33":{"start":{"line":340,"column":12},"end":{"line":343,"column":15}},"34":{"start":{"line":346,"column":8},"end":{"line":346,"column":19}},"35":{"start":{"line":362,"column":8},"end":{"line":365,"column":9}},"36":{"start":{"line":363,"column":12},"end":{"line":363,"column":55}},"37":{"start":{"line":364,"column":12},"end":{"line":364,"column":19}},"38":{"start":{"line":367,"column":8},"end":{"line":368,"column":39}},"39":{"start":{"line":370,"column":8},"end":{"line":373,"column":9}},"40":{"start":{"line":372,"column":12},"end":{"line":372,"column":19}},"41":{"start":{"line":375,"column":8},"end":{"line":375,"column":32}},"42":{"start":{"line":376,"column":8},"end":{"line":376,"column":32}},"43":{"start":{"line":379,"column":8},"end":{"line":434,"column":9}},"44":{"start":{"line":381,"column":12},"end":{"line":381,"column":51}},"45":{"start":{"line":382,"column":12},"end":{"line":382,"column":18}},"46":{"start":{"line":385,"column":12},"end":{"line":385,"column":52}},"47":{"start":{"line":386,"column":12},"end":{"line":386,"column":18}},"48":{"start":{"line":389,"column":12},"end":{"line":389,"column":54}},"49":{"start":{"line":390,"column":12},"end":{"line":390,"column":18}},"50":{"start":{"line":393,"column":12},"end":{"line":393,"column":55}},"51":{"start":{"line":394,"column":12},"end":{"line":394,"column":18}},"52":{"start":{"line":397,"column":12},"end":{"line":400,"column":14}},"53":{"start":{"line":401,"column":12},"end":{"line":401,"column":18}},"54":{"start":{"line":404,"column":12},"end":{"line":407,"column":14}},"55":{"start":{"line":408,"column":12},"end":{"line":408,"column":18}},"56":{"start":{"line":411,"column":12},"end":{"line":414,"column":14}},"57":{"start":{"line":415,"column":12},"end":{"line":415,"column":18}},"58":{"start":{"line":418,"column":12},"end":{"line":421,"column":14}},"59":{"start":{"line":422,"column":12},"end":{"line":422,"column":18}},"60":{"start":{"line":425,"column":12},"end":{"line":428,"column":14}},"61":{"start":{"line":429,"column":12},"end":{"line":429,"column":18}},"62":{"start":{"line":432,"column":12},"end":{"line":432,"column":18}},"63":{"start":{"line":436,"column":8},"end":{"line":438,"column":9}},"64":{"start":{"line":437,"column":12},"end":{"line":437,"column":53}},"65":{"start":{"line":451,"column":8},"end":{"line":455,"column":9}},"66":{"start":{"line":452,"column":12},"end":{"line":452,"column":44}},"67":{"start":{"line":454,"column":12},"end":{"line":454,"column":44}},"68":{"start":{"line":465,"column":8},"end":{"line":468,"column":9}},"69":{"start":{"line":467,"column":12},"end":{"line":467,"column":19}},"70":{"start":{"line":470,"column":8},"end":{"line":472,"column":27}},"71":{"start":{"line":474,"column":8},"end":{"line":481,"column":11}},"72":{"start":{"line":475,"column":12},"end":{"line":476,"column":44}},"73":{"start":{"line":478,"column":12},"end":{"line":480,"column":13}},"74":{"start":{"line":479,"column":16},"end":{"line":479,"column":56}},"75":{"start":{"line":483,"column":8},"end":{"line":483,"column":42}},"76":{"start":{"line":493,"column":8},"end":{"line":493,"column":46}},"77":{"start":{"line":494,"column":8},"end":{"line":497,"column":9}},"78":{"start":{"line":495,"column":12},"end":{"line":495,"column":48}},"79":{"start":{"line":496,"column":12},"end":{"line":496,"column":43}},"80":{"start":{"line":514,"column":8},"end":{"line":515,"column":15}},"81":{"start":{"line":517,"column":8},"end":{"line":581,"column":9}},"82":{"start":{"line":519,"column":12},"end":{"line":519,"column":24}},"83":{"start":{"line":520,"column":12},"end":{"line":520,"column":18}},"84":{"start":{"line":523,"column":12},"end":{"line":526,"column":14}},"85":{"start":{"line":527,"column":12},"end":{"line":527,"column":18}},"86":{"start":{"line":530,"column":12},"end":{"line":533,"column":14}},"87":{"start":{"line":534,"column":12},"end":{"line":534,"column":18}},"88":{"start":{"line":537,"column":12},"end":{"line":540,"column":14}},"89":{"start":{"line":541,"column":12},"end":{"line":541,"column":18}},"90":{"start":{"line":544,"column":12},"end":{"line":547,"column":14}},"91":{"start":{"line":548,"column":12},"end":{"line":548,"column":18}},"92":{"start":{"line":551,"column":12},"end":{"line":554,"column":14}},"93":{"start":{"line":555,"column":12},"end":{"line":555,"column":18}},"94":{"start":{"line":558,"column":12},"end":{"line":561,"column":14}},"95":{"start":{"line":562,"column":12},"end":{"line":562,"column":18}},"96":{"start":{"line":565,"column":12},"end":{"line":568,"column":14}},"97":{"start":{"line":569,"column":12},"end":{"line":569,"column":18}},"98":{"start":{"line":572,"column":12},"end":{"line":575,"column":14}},"99":{"start":{"line":576,"column":12},"end":{"line":576,"column":18}},"100":{"start":{"line":579,"column":12},"end":{"line":579,"column":18}},"101":{"start":{"line":583,"column":8},"end":{"line":585,"column":9}},"102":{"start":{"line":584,"column":12},"end":{"line":584,"column":26}},"103":{"start":{"line":598,"column":8},"end":{"line":598,"column":23}},"104":{"start":{"line":600,"column":8},"end":{"line":607,"column":9}},"105":{"start":{"line":601,"column":12},"end":{"line":601,"column":60}},"106":{"start":{"line":603,"column":12},"end":{"line":603,"column":36}},"107":{"start":{"line":604,"column":12},"end":{"line":606,"column":13}},"108":{"start":{"line":605,"column":16},"end":{"line":605,"column":46}},"109":{"start":{"line":609,"column":8},"end":{"line":609,"column":26}},"110":{"start":{"line":623,"column":8},"end":{"line":623,"column":29}},"111":{"start":{"line":624,"column":8},"end":{"line":626,"column":9}},"112":{"start":{"line":625,"column":12},"end":{"line":625,"column":55}},"113":{"start":{"line":638,"column":8},"end":{"line":638,"column":40}},"114":{"start":{"line":640,"column":8},"end":{"line":642,"column":9}},"115":{"start":{"line":641,"column":12},"end":{"line":641,"column":44}},"116":{"start":{"line":646,"column":0},"end":{"line":646,"column":38}}},"branchMap":{"1":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":39,"column":4}},{"start":{"line":39,"column":4},"end":{"line":39,"column":4}}]},"2":{"line":270,"type":"if","locations":[{"start":{"line":270,"column":8},"end":{"line":270,"column":8}},{"start":{"line":270,"column":8},"end":{"line":270,"column":8}}]},"3":{"line":299,"type":"if","locations":[{"start":{"line":299,"column":8},"end":{"line":299,"column":8}},{"start":{"line":299,"column":8},"end":{"line":299,"column":8}}]},"4":{"line":339,"type":"if","locations":[{"start":{"line":339,"column":8},"end":{"line":339,"column":8}},{"start":{"line":339,"column":8},"end":{"line":339,"column":8}}]},"5":{"line":341,"type":"cond-expr","locations":[{"start":{"line":341,"column":39},"end":{"line":341,"column":43}},{"start":{"line":341,"column":46},"end":{"line":341,"column":49}}]},"6":{"line":362,"type":"if","locations":[{"start":{"line":362,"column":8},"end":{"line":362,"column":8}},{"start":{"line":362,"column":8},"end":{"line":362,"column":8}}]},"7":{"line":362,"type":"binary-expr","locations":[{"start":{"line":362,"column":13},"end":{"line":362,"column":35}},{"start":{"line":362,"column":39},"end":{"line":362,"column":58}}]},"8":{"line":370,"type":"if","locations":[{"start":{"line":370,"column":8},"end":{"line":370,"column":8}},{"start":{"line":370,"column":8},"end":{"line":370,"column":8}}]},"9":{"line":379,"type":"switch","locations":[{"start":{"line":380,"column":8},"end":{"line":382,"column":18}},{"start":{"line":384,"column":8},"end":{"line":386,"column":18}},{"start":{"line":388,"column":8},"end":{"line":390,"column":18}},{"start":{"line":392,"column":8},"end":{"line":394,"column":18}},{"start":{"line":396,"column":8},"end":{"line":401,"column":18}},{"start":{"line":403,"column":8},"end":{"line":408,"column":18}},{"start":{"line":410,"column":8},"end":{"line":415,"column":18}},{"start":{"line":417,"column":8},"end":{"line":422,"column":18}},{"start":{"line":424,"column":8},"end":{"line":429,"column":18}},{"start":{"line":431,"column":8},"end":{"line":432,"column":18}}]},"10":{"line":436,"type":"if","locations":[{"start":{"line":436,"column":8},"end":{"line":436,"column":8}},{"start":{"line":436,"column":8},"end":{"line":436,"column":8}}]},"11":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":8},"end":{"line":451,"column":8}},{"start":{"line":451,"column":8},"end":{"line":451,"column":8}}]},"12":{"line":465,"type":"if","locations":[{"start":{"line":465,"column":8},"end":{"line":465,"column":8}},{"start":{"line":465,"column":8},"end":{"line":465,"column":8}}]},"13":{"line":476,"type":"binary-expr","locations":[{"start":{"line":476,"column":24},"end":{"line":476,"column":37}},{"start":{"line":476,"column":41},"end":{"line":476,"column":43}}]},"14":{"line":478,"type":"if","locations":[{"start":{"line":478,"column":12},"end":{"line":478,"column":12}},{"start":{"line":478,"column":12},"end":{"line":478,"column":12}}]},"15":{"line":494,"type":"if","locations":[{"start":{"line":494,"column":8},"end":{"line":494,"column":8}},{"start":{"line":494,"column":8},"end":{"line":494,"column":8}}]},"16":{"line":517,"type":"switch","locations":[{"start":{"line":518,"column":8},"end":{"line":520,"column":18}},{"start":{"line":522,"column":8},"end":{"line":527,"column":18}},{"start":{"line":529,"column":8},"end":{"line":534,"column":18}},{"start":{"line":536,"column":8},"end":{"line":541,"column":18}},{"start":{"line":543,"column":8},"end":{"line":548,"column":18}},{"start":{"line":550,"column":8},"end":{"line":555,"column":18}},{"start":{"line":557,"column":8},"end":{"line":562,"column":18}},{"start":{"line":564,"column":8},"end":{"line":569,"column":18}},{"start":{"line":571,"column":8},"end":{"line":576,"column":18}},{"start":{"line":578,"column":8},"end":{"line":579,"column":18}}]},"17":{"line":583,"type":"if","locations":[{"start":{"line":583,"column":8},"end":{"line":583,"column":8}},{"start":{"line":583,"column":8},"end":{"line":583,"column":8}}]},"18":{"line":600,"type":"if","locations":[{"start":{"line":600,"column":8},"end":{"line":600,"column":8}},{"start":{"line":600,"column":8},"end":{"line":600,"column":8}}]},"19":{"line":604,"type":"if","locations":[{"start":{"line":604,"column":12},"end":{"line":604,"column":12}},{"start":{"line":604,"column":12},"end":{"line":604,"column":12}}]},"20":{"line":624,"type":"if","locations":[{"start":{"line":624,"column":8},"end":{"line":624,"column":8}},{"start":{"line":624,"column":8},"end":{"line":624,"column":8}}]},"21":{"line":640,"type":"if","locations":[{"start":{"line":640,"column":8},"end":{"line":640,"column":8}},{"start":{"line":640,"column":8},"end":{"line":640,"column":8}}]}},"code":["(function () { YUI.add('widget-position-align', function (Y, NAME) {","","/**","Provides extended/advanced XY positioning support for Widgets, through an","extension.","","It builds on top of the `widget-position` module, to provide alignment and","centering support. Future releases aim to add constrained and fixed positioning","support.","","@module widget-position-align","**/","var Lang = Y.Lang,",""," ALIGN = 'align',"," ALIGN_ON = 'alignOn',",""," VISIBLE = 'visible',"," BOUNDING_BOX = 'boundingBox',",""," OFFSET_WIDTH = 'offsetWidth',"," OFFSET_HEIGHT = 'offsetHeight',"," REGION = 'region',"," VIEWPORT_REGION = 'viewportRegion';","","/**","Widget extension, which can be used to add extended XY positioning support to","the base Widget class, through the `Base.create` method.","","**Note:** This extension requires that the `WidgetPosition` extension be added","to the Widget (before `WidgetPositionAlign`, if part of the same extension list","passed to `Base.build`).","","@class WidgetPositionAlign","@param {Object} config User configuration object.","@constructor","**/","function PositionAlign (config) {"," if ( ! this._posNode) {"," Y.error('WidgetPosition needs to be added to the Widget, ' + "," 'before WidgetPositionAlign is added'); "," }",""," Y.after(this._bindUIPosAlign, this, 'bindUI');"," Y.after(this._syncUIPosAlign, this, 'syncUI');","}","","PositionAlign.ATTRS = {",""," /**"," The alignment configuration for this widget.",""," The `align` attribute is used to align a reference point on the widget, with"," the reference point on another `Node`, or the viewport. The object which"," `align` expects has the following properties:",""," * __`node`__: The `Node` to which the widget is to be aligned. If set to"," `null`, or not provided, the widget is aligned to the viewport."," "," * __`points`__: A two element Array, defining the two points on the widget"," and `Node`/viewport which are to be aligned. The first element is the"," point on the widget, and the second element is the point on the"," `Node`/viewport. Supported alignment points are defined as static"," properties on `WidgetPositionAlign`."," "," @example Aligns the top-right corner of the widget with the top-left corner "," of the viewport:",""," myWidget.set('align', {"," points: [Y.WidgetPositionAlign.TR, Y.WidgetPositionAlign.TL]"," });"," "," @attribute align"," @type Object"," @default null"," **/"," align: {"," value: null"," },",""," /**"," A convenience Attribute, which can be used as a shortcut for the `align` "," Attribute."," "," If set to `true`, the widget is centered in the viewport. If set to a `Node` "," reference or valid selector String, the widget will be centered within the "," `Node`. If set to `false`, no center positioning is applied.",""," @attribute centered"," @type Boolean|Node"," @default false"," **/"," centered: {"," setter : '_setAlignCenter',"," lazyAdd:false,"," value :false"," },",""," /**"," An Array of Objects corresponding to the `Node`s and events that will cause"," the alignment of this widget to be synced to the DOM.",""," The `alignOn` Attribute is expected to be an Array of Objects with the "," following properties:",""," * __`eventName`__: The String event name to listen for.",""," * __`node`__: The optional `Node` that will fire the event, it can be a "," `Node` reference or a selector String. This will default to the widget's "," `boundingBox`.",""," @example Sync this widget's alignment on window resize:",""," myWidget.set('alignOn', ["," {"," node : Y.one('win'),"," eventName: 'resize'"," }"," ]);",""," @attribute alignOn"," @type Array"," @default []"," **/"," alignOn: {"," value : [],"," validator: Y.Lang.isArray"," }","};","","/**","Constant used to specify the top-left corner for alignment","","@property TL","@type String","@value 'tl'","@static","**/","PositionAlign.TL = 'tl';","","/**","Constant used to specify the top-right corner for alignment"," ","@property TR","@type String","@value 'tr'","@static","**/","PositionAlign.TR = 'tr';","","/**","Constant used to specify the bottom-left corner for alignment"," ","@property BL","@type String","@value 'bl'","@static","**/","PositionAlign.BL = 'bl';","","/**","Constant used to specify the bottom-right corner for alignment","","@property BR","@type String","@value 'br'","@static","**/","PositionAlign.BR = 'br';","","/**","Constant used to specify the top edge-center point for alignment","","@property TC","@type String","@value 'tc'","@static","**/","PositionAlign.TC = 'tc';","","/**","Constant used to specify the right edge, center point for alignment"," ","@property RC","@type String","@value 'rc'","@static","**/","PositionAlign.RC = 'rc';","","/**","Constant used to specify the bottom edge, center point for alignment"," ","@property BC","@type String","@value 'bc'","@static","**/","PositionAlign.BC = 'bc';","","/**","Constant used to specify the left edge, center point for alignment"," ","@property LC","@type String","@value 'lc'","@static","**/","PositionAlign.LC = 'lc';","","/**","Constant used to specify the center of widget/node/viewport for alignment","","@property CC","@type String","@value 'cc'","@static","*/","PositionAlign.CC = 'cc';","","PositionAlign.prototype = {"," // -- Protected Properties -------------------------------------------------",""," /**"," Holds the alignment-syncing event handles.",""," @property _posAlignUIHandles"," @type Array"," @default null"," @protected"," **/"," _posAlignUIHandles: null,",""," // -- Lifecycle Methods ----------------------------------------------------",""," destructor: function () {"," this._detachPosAlignUIHandles();"," },",""," /**"," Bind event listeners responsible for updating the UI state in response to"," the widget's position-align related state changes.",""," This method is invoked after `bindUI` has been invoked for the `Widget`"," class using the AOP infrastructure.",""," @method _bindUIPosAlign"," @protected"," **/"," _bindUIPosAlign: function () {"," this.after('alignChange', this._afterAlignChange);"," this.after('alignOnChange', this._afterAlignOnChange);"," this.after('visibleChange', this._syncUIPosAlign);"," },",""," /**"," Synchronizes the current `align` Attribute value to the DOM.",""," This method is invoked after `syncUI` has been invoked for the `Widget`"," class using the AOP infrastructure.",""," @method _syncUIPosAlign"," @protected"," **/"," _syncUIPosAlign: function () {"," var align = this.get(ALIGN);",""," this._uiSetVisiblePosAlign(this.get(VISIBLE));",""," if (align) {"," this._uiSetAlign(align.node, align.points);"," }"," },",""," // -- Public Methods -------------------------------------------------------",""," /**"," Aligns this widget to the provided `Node` (or viewport) using the provided"," points. This method can be invoked with no arguments which will cause the "," widget's current `align` Attribute value to be synced to the DOM.",""," @example Aligning to the top-left corner of the `<body>`:",""," myWidget.align('body',"," [Y.WidgetPositionAlign.TL, Y.WidgetPositionAlign.TR]);",""," @method align"," @param {Node|String|null} [node] A reference (or selector String) for the"," `Node` which with the widget is to be aligned. If null is passed in, the"," widget will be aligned with the viewport."," @param {Array[2]} [points] A two item array specifying the points on the "," widget and `Node`/viewport which will to be aligned. The first entry is "," the point on the widget, and the second entry is the point on the "," `Node`/viewport. Valid point references are defined as static constants on "," the `WidgetPositionAlign` extension."," @chainable"," **/"," align: function (node, points) {"," if (arguments.length) {"," // Set the `align` Attribute."," this.set(ALIGN, {"," node : node,"," points: points"," });"," } else {"," // Sync the current `align` Attribute value to the DOM."," this._syncUIPosAlign();"," }",""," return this;"," },",""," /**"," Centers the widget in the viewport, or if a `Node` is passed in, it will "," be centered to that `Node`.",""," @method centered"," @param {Node|String} [node] A `Node` reference or selector String defining "," the `Node` which the widget should be centered. If a `Node` is not passed"," in, then the widget will be centered to the viewport."," @chainable"," **/"," centered: function (node) {"," return this.align(node, [PositionAlign.CC, PositionAlign.CC]);"," },",""," // -- Protected Methods ----------------------------------------------------",""," /**"," Default setter for `center` Attribute changes. Sets up the appropriate"," value, and passes it through the to the align attribute.",""," @method _setAlignCenter"," @param {Boolean|Node} val The Attribute value being set."," @return {Boolean|Node} the value passed in."," @protected"," **/"," _setAlignCenter: function (val) {"," if (val) {"," this.set(ALIGN, {"," node : val === true ? null : val,"," points: [PositionAlign.CC, PositionAlign.CC]"," });"," }",""," return val;"," },",""," /**"," Updates the UI to reflect the `align` value passed in.",""," **Note:** See the `align` Attribute documentation, for the Object structure"," expected.",""," @method _uiSetAlign"," @param {Node|String|null} [node] The node to align to, or null to indicate"," the viewport."," @param {Array} points The alignment points."," @protected"," **/"," _uiSetAlign: function (node, points) {"," if ( ! Lang.isArray(points) || points.length !== 2) {"," Y.error('align: Invalid Points Arguments');"," return;"," }",""," var nodeRegion = this._getRegion(node), "," widgetPoint, nodePoint, xy;",""," if ( ! nodeRegion) {"," // No-op, nothing to align to."," return;"," }",""," widgetPoint = points[0];"," nodePoint = points[1];",""," // TODO: Optimize KWeight - Would lookup table help?"," switch (nodePoint) {"," case PositionAlign.TL:"," xy = [nodeRegion.left, nodeRegion.top];"," break;",""," case PositionAlign.TR:"," xy = [nodeRegion.right, nodeRegion.top];"," break;",""," case PositionAlign.BL:"," xy = [nodeRegion.left, nodeRegion.bottom];"," break;",""," case PositionAlign.BR:"," xy = [nodeRegion.right, nodeRegion.bottom];"," break;",""," case PositionAlign.TC:"," xy = ["," nodeRegion.left + Math.floor(nodeRegion.width / 2),"," nodeRegion.top"," ];"," break;",""," case PositionAlign.BC:"," xy = ["," nodeRegion.left + Math.floor(nodeRegion.width / 2),"," nodeRegion.bottom"," ];"," break;",""," case PositionAlign.LC:"," xy = ["," nodeRegion.left,"," nodeRegion.top + Math.floor(nodeRegion.height / 2)"," ];"," break;",""," case PositionAlign.RC:"," xy = ["," nodeRegion.right,"," nodeRegion.top + Math.floor(nodeRegion.height / 2)"," ];"," break;",""," case PositionAlign.CC:"," xy = ["," nodeRegion.left + Math.floor(nodeRegion.width / 2),"," nodeRegion.top + Math.floor(nodeRegion.height / 2)"," ];"," break;",""," default:"," break;",""," }",""," if (xy) {"," this._doAlign(widgetPoint, xy[0], xy[1]);"," }"," },",""," /**"," Attaches or detaches alignment-syncing event handlers based on the widget's"," `visible` Attribute state.",""," @method _uiSetVisiblePosAlign"," @param {Boolean} visible The current value of the widget's `visible`"," Attribute."," @protected"," **/"," _uiSetVisiblePosAlign: function (visible) {"," if (visible) {"," this._attachPosAlignUIHandles();"," } else {"," this._detachPosAlignUIHandles();"," }"," },",""," /**"," Attaches the alignment-syncing event handlers.",""," @method _attachPosAlignUIHandles"," @protected"," **/"," _attachPosAlignUIHandles: function () {"," if (this._posAlignUIHandles) {"," // No-op if we have already setup the event handlers."," return;"," }",""," var bb = this.get(BOUNDING_BOX),"," syncAlign = Y.bind(this._syncUIPosAlign, this),"," handles = [];",""," Y.Array.each(this.get(ALIGN_ON), function (o) {"," var event = o.eventName,"," node = Y.one(o.node) || bb;"," "," if (event) {"," handles.push(node.on(event, syncAlign));"," }"," });",""," this._posAlignUIHandles = handles;"," },",""," /**"," Detaches the alignment-syncing event handlers.",""," @method _detachPosAlignUIHandles"," @protected"," **/"," _detachPosAlignUIHandles: function () {"," var handles = this._posAlignUIHandles;"," if (handles) {"," new Y.EventHandle(handles).detach();"," this._posAlignUIHandles = null;"," }"," },",""," // -- Private Methods ------------------------------------------------------",""," /**"," Helper method, used to align the given point on the widget, with the XY page"," coordinates provided.",""," @method _doAlign"," @param {String} widgetPoint Supported point constant"," (e.g. WidgetPositionAlign.TL)"," @param {Number} x X page coordinate to align to."," @param {Number} y Y page coordinate to align to."," @private"," **/"," _doAlign: function (widgetPoint, x, y) {"," var widgetNode = this._posNode,"," xy;",""," switch (widgetPoint) {"," case PositionAlign.TL:"," xy = [x, y];"," break;",""," case PositionAlign.TR:"," xy = ["," x - widgetNode.get(OFFSET_WIDTH),"," y"," ];"," break;",""," case PositionAlign.BL:"," xy = ["," x,"," y - widgetNode.get(OFFSET_HEIGHT)"," ];"," break;",""," case PositionAlign.BR:"," xy = ["," x - widgetNode.get(OFFSET_WIDTH),"," y - widgetNode.get(OFFSET_HEIGHT)"," ];"," break;",""," case PositionAlign.TC:"," xy = ["," x - (widgetNode.get(OFFSET_WIDTH) / 2),"," y"," ];"," break;",""," case PositionAlign.BC:"," xy = ["," x - (widgetNode.get(OFFSET_WIDTH) / 2),"," y - widgetNode.get(OFFSET_HEIGHT)"," ];"," break;",""," case PositionAlign.LC:"," xy = ["," x,"," y - (widgetNode.get(OFFSET_HEIGHT) / 2)"," ];"," break;",""," case PositionAlign.RC:"," xy = ["," x - widgetNode.get(OFFSET_WIDTH),"," y - (widgetNode.get(OFFSET_HEIGHT) / 2)"," ];"," break;",""," case PositionAlign.CC:"," xy = ["," x - (widgetNode.get(OFFSET_WIDTH) / 2),"," y - (widgetNode.get(OFFSET_HEIGHT) / 2)"," ];"," break;",""," default:"," break;",""," }",""," if (xy) {"," this.move(xy);"," }"," },",""," /**"," Returns the region of the passed-in `Node`, or the viewport region if"," calling with passing in a `Node`.",""," @method _getRegion"," @param {Node} [node] The node to get the region of."," @return {Object} The node's region."," @private"," **/"," _getRegion: function (node) {"," var nodeRegion;",""," if ( ! node) {"," nodeRegion = this._posNode.get(VIEWPORT_REGION);"," } else {"," node = Y.Node.one(node);"," if (node) {"," nodeRegion = node.get(REGION);"," }"," }",""," return nodeRegion;"," },",""," // -- Protected Event Handlers ---------------------------------------------",""," /**"," Handles `alignChange` events by updating the UI in response to `align`"," Attribute changes.",""," @method _afterAlignChange"," @param {EventFacade} e"," @protected"," **/"," _afterAlignChange: function (e) {"," var align = e.newVal;"," if (align) {"," this._uiSetAlign(align.node, align.points); "," }"," },",""," /**"," Handles `alignOnChange` events by updating the alignment-syncing event"," handlers.",""," @method _afterAlignOnChange"," @param {EventFacade} e"," @protected"," **/"," _afterAlignOnChange: function(e) {"," this._detachPosAlignUIHandles();",""," if (this.get(VISIBLE)) {"," this._attachPosAlignUIHandles();"," }"," }","};","","Y.WidgetPositionAlign = PositionAlign;","","","}, '3.10.3', {\"requires\": [\"widget-position\"]});","","}());"]}; |