overflow : hidden;\r
}\r
\r
-/* mouse-operation-catcher\r
---------------------------------------------------------------------------------------*/ \r
+#xui div {\r
+/* 要素は絶対配置される */\r
+ position : absolute;\r
+ top : 0;\r
+ left : 0;\r
+ padding : 0;\r
+ margin : 0;\r
+/* ブラウザのレイアウト機能による auto なサイズ指定は行わない */\r
+ overflow : hidden;\r
+/* border-box がデフォルト */\r
+ box-sizing : border-box;\r
+ -o-box-sizing : border-box;\r
+ -ms-box-sizing : border-box;\r
+ -moz-box-sizing : border-box;\r
+ -khtml-box-sizing : border-box;\r
+ -webkit-box-sizing : border-box;\r
+/* browser bug fix */\r
+ -moz-opacity : 0.99;\r
+ zoom : 1;\r
+}\r
+\r
+/*------------------------------------------------------------------------------------\r
+ * mouse-operation-catcher\r
+ */\r
.mouse-operation-catcher {\r
position : absolute;\r
top : 0;\r
left : 0;\r
width : 100%;\r
height : 100%; /* 100% don't work for ie6, so ie6 need to set height as 'XXpx' by js */\r
+ \r
+ user-select : none;\r
+ -moz-user-select : none;\r
+ -khtml-user-select : none;\r
+ -webkit-user-select : none;\r
+\r
+ /* this makes the element blocking in IE10 >, you could experiment with the value\r
+ see for more options this issue; https://github.com/EightMedia/hammer.js/issues/241 */\r
+ touch-action : none;\r
+ -ms-touch-action : none;\r
+ touch-callout : none;\r
+ -webkit-touch-callout : none;\r
+ content-zooming : none;\r
+ -ms-content-zooming : none;\r
+ user-drag : none;\r
+ -khtml-user-drag : none;\r
+ -webkit-user-drag : none;\r
+ tap-highlight-color : rgba(0,0,0,0);\r
+ -webkit-tap-highlight-color : rgba(0,0,0,0);\r
}\r
.ActiveX-enabled .mouse-operation-catcher {\r
background-color : #fff;\r
background : url( "../images/opacity0.gif" ) fixed repeat;\r
}\r
\r
+/*------------------------------------------------------------------------------------\r
+ * hidden-sysyem-node\r
+ */\r
+.hidden-sysyem-node {\r
+ position : absolute;\r
+ left : 100%;\r
+ top : 0;\r
+ visibility : hidden;\r
+}\r
\r
+/*------------------------------------------------------------------------------------\r
+ * mouse-operation-catcher\r
+ */\r
.jul-hover {\r
opacity : 0.5;\r
}\r
.VBox,\r
.HBox,\r
.TileBox,\r
-.ChromeBox {\r
+.ChromeBox,\r
+.ScrollBox {\r
position : absolute;\r
overflow : hidden;\r
box-sizing : border-box;\r
-moz-box-sizing : border-box;\r
-}
\ No newline at end of file
+}\r
+\r
+/* Scrollbox\r
+--------------------------------------------------------------------------------------*/\r
+ .ScrollBox-Scroller {\r
+ transform : translate( 0, 0 );\r
+ transformOrigin : '0 0';\r
+ position : absolute;\r
+ }\r
+ .ScrollBox-Scrollbar-Wrapper-V,\r
+ .ScrollBox-Scrollbar-Wrapper-H,\r
+ .ScrollBox-Scrollbar-Wrapper-V-withH,\r
+ .ScrollBox-Scrollbar-Wrapper-H-withV {\r
+ position : absolute;\r
+ z-index : 100;\r
+ overflow : hidden;\r
+ }\r
+ .ScrollBox-Scrollbar-Wrapper-V,\r
+ .ScrollBox-Scrollbar-Wrapper-V-withH {\r
+ width : 7px;\r
+ top : 2px;\r
+ right : 1px;\r
+ }\r
+ .ScrollBox-Scrollbar-Wrapper-V {\r
+ bottom : 2px;\r
+ }\r
+ .ScrollBox-Scrollbar-Wrapper-V-withH {\r
+ bottom : 7px;\r
+ }\r
+ .ScrollBox-Scrollbar-Wrapper-H,\r
+ .ScrollBox-Scrollbar-Wrapper-H-withV {\r
+ height : 7px;\r
+ bottom : 1px;\r
+ left : 2px;\r
+ }\r
+ .ScrollBox-Scrollbar-Wrapper-H {\r
+ right : 2px;\r
+ }\r
+ .ScrollBox-Scrollbar-Wrapper-H-withV {\r
+ right : 7px;\r
+ }\r
+ .ScrollBox-Scrollbar-Indicator-V,\r
+ .ScrollBox-Scrollbar-Indicator-H {\r
+ position : absolute;\r
+ z-index : 100;\r
+ background : #000;\r
+ background : rgba(0,0,0,0.5);\r
+ border : 1px solid #fff;\r
+ border : 1px solid rgba(255,255,255,0.9);\r
+ background-clip : padding-box;\r
+ -o-background-clip : padding-box;\r
+ -ms-background-clip : padding-box;\r
+ -moz-background-clip : padding-box;\r
+ -khtml-background-clip : padding-box;\r
+ -webkit-background-clip : padding-box;\r
+ box-sizing : border-box;\r
+ -o-box-sizing : border-box;\r
+ -ms-box-sizing : border-box;\r
+ -moz-box-sizing : border-box;\r
+ -khtml-box-sizing : border-box;\r
+ -webkit-box-sizing : border-box;\r
+ border-radius : 3px;\r
+ -o-border-radius : 3px;\r
+ -ms-border-radius : 3px;\r
+ -moz-border-radius : 3px;\r
+ -khtml-border-radius : 3px;\r
+ -webkit-border-radius : 3px;\r
+ transition-property : transform;\r
+ -o-transition-property : -o-transform;\r
+ -ms-transition-property : -ms-transform;\r
+ -moz-transition-property : -moz-transform;\r
+ -khtml-transition-property : -khtml-transform;\r
+ -webkit-transition-property : -webkit-transform;\r
+ transform: translate(0,0);\r
+ -o-transform: translate(0,0);\r
+ -ms-transform: translate(0,0);\r
+ -moz-transform: translate(0,0);\r
+ -khtml-transform: translate(0,0);\r
+ -webkit-transform: translate(0,0);\r
+ }\r
+ .ScrollBox-Scrollbar-Indicator-V {\r
+ width:100%;\r
+ }\r
+ .ScrollBox-Scrollbar-Indicator-H {\r
+ height:100%;\r
+ }
\ No newline at end of file
<link rel="stylesheet" type="text/css" media="all" href="css/ju.css">\r
\r
<script type="text/javascript" src="js/core/00_builtin.js"></script>\r
+ <script type="text/javascript" src="js/core/00_X.js"></script>\r
<script type="text/javascript" src="js/core/01_XUa.js"></script>\r
<script type="text/javascript" src="js/core/02_XType.js"></script>\r
\r
<script type="text/javascript" src="js/core/06_XEventDispatcher.js"></script>\r
<script type="text/javascript" src="js/core/07_XNotification.js"></script>\r
\r
- <script type="text/javascript" src="js/dom/10_XDomStyle.js"></script>\r
- <script type="text/javascript" src="js/dom/12_XDomParser.js"></script>\r
- <script type="text/javascript" src="js/dom/13_XDomEvent.js"></script>\r
- <script type="text/javascript" src="js/dom/14_XDomNode.js"></script>\r
- <script type="text/javascript" src="js/dom/15_XDomNodeList.js"></script>\r
- <script type="text/javascript" src="js/dom/16_XDomQuery.js"></script> \r
- <script type="text/javascript" src="js/dom/17_XView.js"></script>\r
- \r
+ <script type="text/javascript" src="js/dom/10_XDom.js"></script>\r
+ <script type="text/javascript" src="js/dom/11_XDomEvent.js"></script>\r
+ <script type="text/javascript" src="js/dom/12_XDomNode.js"></script>\r
+ <script type="text/javascript" src="js/dom/13_XDomStyle.js"></script>\r
+ <script type="text/javascript" src="js/dom/14_XDomAttr.js"></script>\r
+ <!-- <script type="text/javascript" src="js/dom/15_XDomAnime.js"></script> -->\r
+ <script type="text/javascript" src="js/dom/16_XDomNodeList.js"></script>\r
+ <script type="text/javascript" src="js/dom/17_XDomQuery.js"></script>\r
+ <script type="text/javascript" src="js/dom/18_XDomParser.js"></script>\r
\r
+ <script type="text/javascript" src="js/ui/00_XUI.js"></script>\r
<script type="text/javascript" src="js/ui/00_XUI_Type.js"></script>\r
<script type="text/javascript" src="js/ui/01_XUI_Option.js"></script>\r
<script type="text/javascript" src="js/ui/02_XUI_Dirty.js"></script>\r
<script type="text/javascript" src="js/ui/03_XUI_Attr.js"></script>\r
<script type="text/javascript" src="js/ui/04_XUI_AttrNo.js"></script>\r
+ <script type="text/javascript" src="js/ui/04_XUI_Event.js"></script>\r
\r
+ <script type="text/javascript" src="js/ui/05_XUI_Gesture.js"></script>\r
<script type="text/javascript" src="js/ui/AbstractDisplayNode.js"></script>\r
<script type="text/javascript" src="js/ui/AbstractDisplayContainer.js"></script>\r
<script type="text/javascript" src="js/ui/DisplayNodeStyle.js"></script>\r
<script type="text/javascript" src="js/ui/HBox.js"></script>\r
<script type="text/javascript" src="js/ui/TileBox.js"></script>\r
<script type="text/javascript" src="js/ui/ChromeBox.js"></script>\r
+ <script type="text/javascript" src="js/ui/ScrollBox.js"></script>\r
<script type="text/javascript" src="js/ui/PageRoot.js"></script>\r
<script type="text/javascript" src="js/ui/Text.js"></script>\r
</head>\r
-<body>\r
-</body>\r
+<body></body>\r
</html>
\ No newline at end of file
/*\r
* + checkActiveX\r
- * + fetch core lib\r
+ * + fetch core lib x_ie6.js || x._gecko36.js\r
* + ResponsiveImage\r
*/\r
\r
delete ResponsiveImage._onload;\r
\r
ResponsiveImage.onResize();\r
- X.View.add( ResponsiveImage.onResize );\r
+ X.Dom.add( ResponsiveImage.onResize );\r
};\r
},\r
start : function(){\r
--- /dev/null
+if( !window['console'] ) console = { log : function(){} };\r
+\r
+var undefined,\r
+ X = X || {\r
+ \r
+ emptyFunction : new Function,\r
+ \r
+ inHead : (function( s, p ){\r
+ s = s[ s.length - 1 ];\r
+ p = s.parent || s.parentNode;\r
+ if( !p ) return true;// ??\r
+ return p.tagName.toLowerCase() === 'head';\r
+ })( document.scripts || document.getElementsByTagName( 'script' ) || document.all.tags( 'script' ) ),\r
+ \r
+ getTime : Date.now ? new Function( 'return Date.now()' ) : new Function( 'return +new Date' ),\r
+ \r
+ parse : function( v ){\r
+ var _v, n;\r
+ if( Type.isString( v ) === true ){\r
+ switch( v ){\r
+ case '' : return v;\r
+ //case '{}' : return {};\r
+ //case '[]' : return [];\r
+ case 'NaN' : return NaN;\r
+ case 'null' : return null;\r
+ case 'true' : return true;\r
+ case 'false' : return false;\r
+ case 'Infinity' : return Number.POSITIVE_INFINITY;\r
+ case '-Infinity' : return Number.NEGATIVE_INFINITY; \r
+ case 'undefined' : return;\r
+ };\r
+ _v = v.split( ' ' ).join( '' );\r
+ n = _v - 0;\r
+ if( '' + n === _v || '' + n === '0' + _v ) return n;\r
+ };\r
+ return v;\r
+ },\r
+ \r
+ cleanupWhiteSpace : function( text ){\r
+ text.indexOf( '\r\n' ) !== -1 && ( text = text.split( '\r\n' ).join( ' ' ) );\r
+ text.indexOf( '\n\r' ) !== -1 && ( text = text.split( '\n\r' ).join( ' ' ) );\r
+ text.indexOf( '\t' ) !== -1 && ( text = text.split( '\t' ).join( ' ' ) );\r
+ text.indexOf( '\r' ) !== -1 && ( text = text.split( '\r' ).join( ' ' ) );\r
+ text.indexOf( '\n' ) !== -1 && ( text = text.split( '\n' ).join( ' ' ) );\r
+ text.indexOf( '\f' ) !== -1 && ( text = text.split( '\f' ).join( ' ' ) );\r
+ text.indexOf( '\b' ) !== -1 && ( text = text.split( '\b' ).join( ' ' ) );\r
+ while( text.indexOf( ' ' ) !== -1 ){\r
+ text = text.split( ' ' ).join( ' ' );\r
+ };\r
+ return text;\r
+ }\r
+ };\r
+ \r
Function.prototype.call || (Function.prototype.call = function () {\r
var a = arguments, x = a[0], y = [], i = 1, j;\r
for (j = a.length; i < j; ++i)\r
- y[i - 1] = a[i]\r
+ y[i - 1] = a[i];\r
return this.apply(x, y);\r
});\r
\r
-if( !window['console'] ) console = { log : function(){} };\r
-\r
/*\r
* UA\r
*/\r
-var X = X || {\r
- emptyFunction : new Function,\r
- inHead : (function( s ){\r
- s = s[ s.length - 1 ];\r
- return ( s.parent || s.parentNode ).tagName.toLowerCase() === ( 'head' );\r
- })( document.scripts || document.getElementsByTagName( 'script' ) || document.all.tags( 'script' ) )\r
-};\r
\r
X.UA = (function( n, undefined ){\r
var acme = {},\r
dav = n.appVersion,\r
tv = parseFloat(dav),\r
i;\r
- acme.Opera = ( dua.indexOf("Opera") >= 0 ) ? tv : undefined;\r
+ acme.Opera = ( 0 < dua.indexOf("Opera") ) ? tv : undefined;\r
+ acme.OperaMobile = ( 0 < dua.indexOf("Opera Mobi") ) ? tv : undefined;\r
+ \r
acme.IE = undefined;\r
if( document.all && !acme.Opera ){\r
acme.IE = parseFloat(dav.split("MSIE ")[1]) || undefined;\r
return acme;\r
};\r
+ \r
+ // Blink\r
+ // Netfront\r
+ // iCab\r
acme.Khtml = ( dav.indexOf("Konqueror") >= 0 ) ? tv : undefined;\r
acme.WebKit = parseFloat(dua.split("WebKit\/")[1]) || undefined;\r
acme.Chrome = parseFloat(dua.split("Chrome\/")[1]) || undefined;\r
};\r
};\r
return acme;\r
-})( navigator );
\ No newline at end of file
+})( navigator );\r
+\r
+X.UA.Android = navigator.userAgent.toLowerCase().indexOf( 'android' ) !== -1;\r
+X.UA.iOS = navigator.userAgent.toLowerCase().indexOf( 'iphone' ) !== -1 ||\r
+ navigator.userAgent.toLowerCase().indexOf( 'ipad' ) !== -1 ||\r
+ navigator.userAgent.toLowerCase().indexOf( 'ipod' ) !== -1;\r
+X.UA.TouchPad = navigator.userAgent.toLowerCase().indexOf( 'hp-tablet' ) !== -1;\r
+\r
+X.UA.EInk =\r
+ // Kobo Mozilla/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit/533.1 (KHTML, like Gecko) Verson/4.0 Mobile Safari/533.1 (Kobo Touch)\r
+ navigator.userAgent.indexOf( 'Kobo' ) !== -1 ||\r
+ // Kindle paperwhite Mozilla/5.0 (X11; U; Linux armv7l like Android; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/533.2+ Kindle/3.0+\r
+ navigator.userAgent.indexOf( 'Kindle' ) !== -1 ||\r
+ // Sony Reader Mozilla/5.0 (Linux; U; ja-jp; EBRD1101; EXT) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\r
+ navigator.userAgent.indexOf( 'EBRD' ) !== -1;\r
+\r
+if( X.UA.IE && X.UA.IE < 10 ) X.UA.ActiveX = !!window[ 'ActiveXObject' ];\r
f.callback = callback;\r
};\r
\r
- if( arg2 && typeof arg2.length === 'number' ){\r
+ if( X.Type.isArray( arg2 ) ){\r
f.add = arg2;\r
};\r
return f;\r
INDEX_TIME = 0,\r
INDEX_LAST = 1,\r
INDEX_COUNT = 2,\r
- INDEX_CALLBACK = 3;\r
+ INDEX_CALLBACK = 3,\r
INDEX_UID = 4;\r
\r
function loop(){\r
f = queue[ INDEX_CALLBACK ];\r
c = queue[ INDEX_COUNT ];\r
ret = f();\r
- if( ret === false || ret & X.Callback.UN_LISTEN || c === 1 ){\r
+ if( ret & X.Callback.UN_LISTEN || c === 1 ){\r
list.splice( i, 1 );\r
f.kill();\r
queue.length = 0;\r
dispatch : function( e ){\r
// dispatch 中の listen は?\r
var list = getList( this, e.type ),\r
- i, f, ret, sysOnly, _ret;\r
+ i = 0, f, ret, sysOnly, _ret;\r
if( !list ) return;\r
- for( i = list.length; i; ){\r
- f = list[ --i ];\r
+ for( ; i < list.length; ){\r
+ f = list[ i ];\r
// once の場合リストから削除してからファイア\r
if( f.once === true ){\r
list.splice( i, 1 );\r
ret = f( e );\r
+ } else\r
+ if( ( ret = f( e ) ) & X.Callback.UN_LISTEN ){\r
+ list.splice( i, 1 );\r
+ f.kill();\r
} else {\r
- ret = f( e );\r
- if( ret === false || ret & X.Callback.UN_LISTEN ){\r
- list.splice( i, 1 );\r
- f.kill();\r
- };\r
+ ++i;\r
};\r
if( list.length === 0 ){\r
list.data[ e.type ] = void 0;\r
},\r
_output : function( msg, level ){\r
var body, $Area;\r
- if( X.View && X.View.ready === true ){\r
+ if( X.Dom && X.Dom.ready === true ){\r
if( $Area = X.Notification._$LogArea ){\r
$Area.remove();\r
delete X.Notification._$LogArea;\r
--- /dev/null
+(function( window, document ){\r
+ var view,\r
+ lock = 0, w = 0, h = 0,\r
+ resize, delayResize;\r
+\r
+/* -----------------------------------------------\r
+ * Resize\r
+ * uupaa.js\r
+ */\r
+ function unlock(){ lock = 0; };\r
+ \r
+ if( X.UA.IE ){\r
+ resize = function(){\r
+ var size, i, l;\r
+ if( !lock++ ){\r
+ size = X.Dom.getSize();\r
+ if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED\r
+ w = size[ 0 ];\r
+ h = size[ 1 ];\r
+ X.Dom.dispatch( { type : X.Dom.Event.VIEW_RESIZED, w : w, h : h } );\r
+ };\r
+ X.Timer.once( 1, unlock );// delay unlock\r
+ };\r
+ };\r
+ } else {\r
+ resize = function( e ){\r
+ !lock++ && X.Timer.once( 40, delayResize );\r
+ e.stopPropagation && e.stopPropagation();\r
+ e.preventDefault && e.preventDefault();\r
+ return false;\r
+ };\r
+ delayResize = function(){\r
+ var size = X.Dom.getSize(),\r
+ i, l;\r
+ if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED\r
+ w = size[ 0 ];\r
+ h = size[ 1 ];\r
+ X.Dom.dispatch( { type : X.Dom.Event.VIEW_RESIZED, w : w, h : h } );\r
+ };\r
+ X.Timer.once( 1, unlock );\r
+ };\r
+ };\r
+ \r
+ X.Dom = X.Class._override(\r
+ new X.EventDispatcher(),\r
+ {\r
+ ready : false,\r
+ getPointerPosition : function(){\r
+ \r
+ },\r
+ /* 要素が視界に入った http://remysharp.com/2009/01/26/element-in-view-event-plugin/ */\r
+ inView : function( elm ){\r
+ \r
+ },\r
+ _init : function(){\r
+ var s, size, b, x;\r
+ if( X.Dom.ready ) return X.Callback.UN_LISTEN;\r
+ if( s = X.Dom._script ){\r
+ s.parentNode.removeChild( s );\r
+ s.onreadystatechange = X.emptyFunction;\r
+ s.onreadystatechange = null;\r
+ delete X.Dom._script;\r
+ };\r
+ delete X.Dom._init;\r
+ X.Dom.ready = true;\r
+ \r
+ /* if( X.UA.IE ) */ X.Dom._view = ( document.compatMode !== "CSS1Compat" ? document.body : document.documentElement );\r
+ size = X.Dom.getSize();\r
+ \r
+ X.Dom.dispatch( { type : X.Dom.Event.DOM_PREINIT, w : size[ 0 ], h : size[ 1 ] } );\r
+ \r
+ X.Dom.dispatch( { type : X.Dom.Event.INIT, w : size[ 0 ], h : size[ 1 ] } );\r
+ \r
+ if( X.UA.IE && X.UA.IE < 9 ){\r
+ X.Timer.add( 100, resize );\r
+ if( 5 <= X.UA.IE ){\r
+ b = document.body;\r
+ b.appendChild( x = document.createElement( 'div' ) );\r
+ x.style.cssText = 'width:1px;height:1px;line-height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';\r
+ b.className += [ b.className === '' ? '' : ' ', 'ActiveX-', 1 < x.offsetHeight ? 'enabled' : 'disabled' ].join( '' );\r
+ b.removeChild( x ); \r
+ };\r
+ } else {\r
+ X.Dom.Event.add( window, 'resize', resize );\r
+ }; \r
+ \r
+ //X.Timer.once( 0, X.Dom, X.Dom.dispatch, [ { type : X.Dom.Event.XDOM_READY, w : size[ 0 ], h : size[ 1 ] } ] );\r
+ X.Dom.dispatch( { type : X.Dom.Event.XDOM_READY, w : size[ 0 ], h : size[ 1 ] } );\r
+ return X.Callback.UN_LISTEN;\r
+ },\r
+ // _view : null, for ie\r
+ getSize :\r
+ X.UA.IE ?\r
+ new Function( 'return [ X.Dom._view.clientWidth, X.Dom._view.clientHeight ]' ) :\r
+ new Function( 'return [ window.innerWidth, window.innerHeight ]' ),\r
+ getScrollPosition :\r
+ window.pageXOffset !== undefined ?\r
+ new Function( 'return [window.pageXOffset,window.pageYOffset]' ) :\r
+ window.scrollLeft !== undefined ?\r
+ new Function( 'return [window.scrollLeft,window.scrollTop]') :\r
+ new Function( 'return [X.Dom._view.scrollLeft,X.Dom._view.scrollTop]' ),\r
+ getDocumentSize : function(){\r
+ return [\r
+ X.Dom._view.scrollWidth || X.Dom._view.offsetWidth,\r
+ X.Dom._view.scrollHeight || X.Dom._view.offsetHeight\r
+ ];\r
+ }\r
+ }\r
+ );\r
+\r
+})( window, document );\r
+\r
+X.Dom.Dirty = {\r
+ CLEAN : 0,\r
+ PAINT : 1, // 再描画のみ必要\r
+ LAYOUT : 2, // レイアウト(ボックスサイズ)の再計算が必要\r
+ UPDATE_FONT : 4, // フォントサイズが変更された\r
+ UPDATE_CONTENT : 8, // コンテンツが変更された\r
+ UPDATE_TAG : 16\r
+};\r
+\r
+\r
+\r
+\r
+++ /dev/null
-X.Dom = function(){ if( X.Dom._shortcut ) return X.Dom._shortcut.apply( this, arguments ); };
-
-X.Dom.Style = {
- /* font-size -> fontSize */
- camelize: function( cssProp ){
- var parts = cssProp.split( ' ' ).join( '' ).split( '-' ),
- l = parts.length,
- i, camelized;
- if( l === 1 ) return parts[ 0 ];
-
- camelized = cssProp.charAt(0) === '-'
- ? parts[ 0 ].charAt( 0 ).toUpperCase() + parts[ 0 ].substring( 1 )
- : parts[ 0 ];
-
- for( i = 1; i < l; ++i ){
- camelized += parts[ i ].charAt( 0 ).toUpperCase() + parts[ i ].substring( 1 );
- };
- return camelized;
- },
- REG_LARGE : /[A-Z]/g,
- /* fontSize -> font-size */
- uncamelize: function( str ){
- return str.split( ' ' ).join( '' ).replace( X.Dom.Style.REG_LARGE, '-$&' ).toLowerCase();
- },
- objToCssText : function( obj ){
- var css = [], uncamelize = X.Dom.Style.uncamelize, p;
- for( p in obj ){
- css[ css.length ] = [ uncamelize( p ), obj[ p ] ].join( ':' );
- };
- return css.join( ';' );
- }
-};
// http://www.programming-magic.com/20090127231544/
this.which = e.which || ( e.button + 1 ); // 左:1, 中:2, 右:3
- this.wheelDelta = e.wheelDelta;
+ // https://developer.mozilla.org/ja/docs/DOM/DOM_event_reference/mousewheel
+ if( e.wheelDeltaY !== undefined ){
+ this.wheelDeltaX = e.wheelDeltaX / 12;
+ this.wheelDeltaY = e.wheelDeltaY / 12;
+ } else
+ if( e.wheelDelta !== undefined ){
+ this.wheelDeltaX = this.wheelDeltaY = e.wheelDelta / 12;
+ } else {
+ this.wheelDeltaX = this.wheelDeltaY = - e.detail * 3;
+ };
if( e.constructor === window.TouchEvent ){
// TouchEvent
//this.screenY = e.screenY;
this.pageX = e.clientX + document.body.scrollLeft;
this.pageY = e.clientY + document.body.scrollTop;
- this.offsetX = e.offsetX;
- this.offsetY = e.offsetY;
+
+ if( X.UA.IE && 5 <= X.UA.IE ){
+ this.offsetX = e.offsetX;
+ this.offsetY = e.offsetY;
+ };
this.keyCode = e.keyCode;
this.altKey = e.altKey;
btn & 4 ? 2 :
btn & 2 ? 3 : 0; // 左:1(click:0), 中:4, 右:2
};
-
- this.wheelDelta = e.wheelDelta;
+ this.wheelDeltaX = this.wheelDeltaY = e.wheelDelta / 12;
};
};
+X.Dom.Event.DOM_PREINIT = 0;
+X.Dom.Event.DOM_INIT = 1;
+X.Dom.Event.XDOM_READY = 2;
+X.Dom.Event.VIEW_RESIZED = 3;
+X.Dom.Event._LAST_EVENT = 3;
+
X.Dom.Event._Helper =
document.addEventListener ?
(function( elm, type ){
delete this.callback;
}) :
(function( migrate ){
- this.elm[ 'on' + this.type ] = X.Dom.Event.emptyFunc;
+ this.elm[ 'on' + this.type ] = X.emptyFunction;
this.elm[ 'on' + this.type ] = '';
X.Callback._correct( this.callback );
if( migrate ) return;
var XEvent = X.Dom.Event,
hash = XEvent._getHash( element, true ),
helper = hash[ type ],
- callback;
+ callback, list;
if( typeof arg2 === 'function' ){
callback = X.Callback.create( element, arg2, arg3 );
} else {
type = arguments[ 1 ],
arg2, arg3, arg4,
hash = X.Dom.Event._getHash( element ),
- helper, callback, i;
+ helper, callback, list, i;
if( !hash ) return;
switch( arguments.length ){
};
};
-if( !document.removeEventListener && !document.detachEvent ){
- X.Dom.Event.emptyFunc = new Function();
-};
\ No newline at end of file
+
+
+/* -----------------------------------------------
+ * Document Ready
+ * Dean Edwards/Matthias Miller/John Resig
+ */
+/* for ie9+/Mozilla/Opera9 */
+if( document.addEventListener ){
+ X.Dom.Event.add( document, 'DOMContentLoaded', X.Dom._init );
+} else
+if( 5 <= X.UA.IE && X.inHead ){
+ // if this script in Head
+ document.write( "<script id=__ie_onload defer src=javascript:void(0)><\/script>" );
+ X.Dom._script = document.getElementById( "__ie_onload" );
+ X.Dom._script.onreadystatechange = function(){
+ this.readyState === 'complete' && X.Dom._init();
+ };
+} else
+if( X.UA.WebKit ){ // sniff
+ X.Timer.add( 10, function(){
+ if( !X.Dom._init ) return X.Callback.UN_LISTEN;
+ if( 'loaded|complete'.indexOf( document.readyState ) !== -1 ) return X.Dom._init();
+ });
+};
+
+/* for other browsers */
+X.Dom.Event.add( window, 'load', X.Dom._init );
+
+//
+X.Dom.listenOnce( X.Dom.Event.XDOM_READY, function(e){ console.log( 'X.Dom XDomReady ' + X.Dom.ready ) } );
+
+X.Dom.listenOnce( X.Dom.Event.VIEW_RESIZED, function(e){ console.log( 'X.Dom VIEW_RESIZED ' + e.w + 'x' + e.h ) } );
\ No newline at end of file
delete Node._newByTag;\r
this._tag = v;\r
this._nodeType = 1;\r
+ arguments[ 1 ] && this.attr( arguments[ 1 ] );\r
+ arguments[ 2 ] && this.css( arguments[ 2 ] );\r
} else\r
if( Node._newByText ){\r
delete Node._newByText;\r
this._text = v;\r
this._nodeType = 3;\r
} else {\r
- if( 1 < arguments.length ){\r
- return new X.Dom.NodeList( arguments );\r
- };\r
- if( v && 1 < v.length && typeof v !== 'string' && v[ v.length - 1 ] ){\r
- return new X.Dom.NodeList( v );\r
- };\r
-\r
+ if( 1 < arguments.length ) return new X.Dom.NodeList( arguments );\r
+ if( X.Type.isArray( v ) && v.length ) return new X.Dom.NodeList( v );\r
if( !this || this.append !== Node.prototype.append ) return new Node( v );\r
\r
switch( Node._getType( v ) ){\r
default :\r
if( Node.none ) return Node.none;\r
return;\r
- }; \r
+ };\r
};\r
\r
Node._chashe[ this._uid = uid ] = this;\r
\r
var Node = X.Dom.Node;\r
\r
+Node.root = null;\r
+Node._systemNode = null;\r
+\r
Node.IS_XNODE = 1;\r
Node.IS_RAW_HTML = 2;\r
Node.IS_RAW_TEXT = 3;\r
Node.prototype._tag = null;\r
Node.prototype._text = null;\r
Node.prototype._id = null;\r
-Node.prototype._className = null;\r
-Node.prototype._attrs = null;\r
-Node.prototype._children = null;\r
-Node.prototype._events = null;\r
+Node.prototype._className = '';\r
+Node.prototype._classText = ' ';\r
Node.prototype.parent = null;\r
\r
+Node.prototype._xnodes = null;\r
+Node.prototype._attrs = null; // X.Dom.Attr\r
+Node.prototype._attrText = '';\r
+Node.prototype._css = null; // X.Dom.Style\r
+Node.prototype._cssText = '';\r
+Node.prototype._events = null; // X.Dom.Event\r
+\r
Node._getType = function( v ){\r
if( v === '' ) return Node.IS_STRING;\r
if( !v ) return 0;\r
if( v.nodeType === 11 ) return Node.IS_DOC_FRAG;\r
return 0;\r
};\r
-Node.create = function( tag, attr ){\r
+Node.create = function( tag, opt_attr, opt_css ){\r
Node._newByTag = true;\r
- return new Node( tag );\r
+ return new Node( tag, opt_attr, opt_css );\r
};\r
Node.createText = function( text ){\r
Node._newByText = true;\r
return true;\r
};\r
\r
-Node.cleanupWhiteSpace = function( text ){\r
- text.indexOf( '\r\n' ) !== -1 && ( text = text.split( '\r\n' ).join( ' ' ) );\r
- text.indexOf( '\n\r' ) !== -1 && ( text = text.split( '\n\r' ).join( ' ' ) );\r
- text.indexOf( '\t' ) !== -1 && ( text = text.split( '\t' ).join( ' ' ) );\r
- text.indexOf( '\r' ) !== -1 && ( text = text.split( '\r' ).join( ' ' ) );\r
- text.indexOf( '\n' ) !== -1 && ( text = text.split( '\n' ).join( ' ' ) );\r
- text.indexOf( '\f' ) !== -1 && ( text = text.split( '\f' ).join( ' ' ) );\r
- text.indexOf( '\b' ) !== -1 && ( text = text.split( '\b' ).join( ' ' ) );\r
- while( text.indexOf( ' ' ) !== -1 ){\r
- text = text.split( ' ' ).join( ' ' );\r
- };\r
- return text;\r
-};\r
-\r
/* --------------------------------------\r
* Dom Level 2\r
*/\r
if( document.getElementById ){\r
Node._dom2cleanUp = function( xnode ){\r
var elm = xnode._rawNode,\r
- children = xnode._children,\r
+ children = xnode._xnodes,\r
childNodes, i, l, child, _child;\r
if( elm && children && ( childNodes = elm.childNodes ) ){\r
for( i = 0, l = children.length; i < l; ++i ){\r
if( typeof child === 'string' ) child = document.createTextNode( child );\r
if( ( _child = childNodes[ i ] ) !== child ){\r
_child ?\r
- elm.insetBefore( child, _child ) :\r
+ elm.insertBefore( child, _child ) :\r
elm.appendChild( child );\r
_child && elm.removeChild( _child );\r
};\r
return node;\r
}) :\r
document.all ? (function( skipRemove, skipContainsDirty ){\r
- var id, html, attrs, attr, children, i, l, child, toName, noValue, name;\r
+ var html, attrs, attr, children, i, l, child, toName, noValue, name;\r
if( this._nodeType !== 1 ) return this._text;\r
\r
if( this._rawNode || this._ie4getRawNode() ){\r
return this._htmlText;\r
};\r
};\r
- id = this._id || ( 'ie4uid' + this._uid );\r
- html = [ '<', this._tag, ' id="', id, '"' ];\r
- if( attrs = this._attrs ){\r
- toName = X.Dom.Attr.toName;\r
- noValue = X.Dom.Attr.noValue;\r
- for( i in attrs ){ //\r
- attr = attrs[ i ];\r
- if( attr === true ){\r
- html[ html.length ] = ' ' + name;\r
- } else {\r
- html[ html.length ] = ' ' + name + '="' + attr + '"';\r
- };\r
- /*\r
- = 0, l = attrs.length; i < l; ++i ){\r
- if( attr = attrs[ i ] || attr === 0 ){\r
- name = toName[ i ];\r
- if( noValue[ name ] ){\r
- html[ html.length ] = ' ' + name;\r
- } else {\r
- html[ html.length ] = ' ' + name + '="' + attr + '"';\r
- };\r
- };*/\r
- };\r
- };\r
- html[ html.length ] = '>';\r
-\r
- if( ( children = this._children ) && ( l = children.length ) ){\r
+ html = [ '<', this._tag, ' id="', ( this._id || ( 'ie4uid' + this._uid ) ), '"', this._classText, this._attrText, '>' ];\r
+ if( ( children = this._xnodes ) && ( l = children.length ) ){\r
for( i = 0; i < l; ++i ){\r
html[ html.length ] = children[ i ]._create( true, true );\r
};\r
\r
Node.prototype._afterCreate =\r
( document.appendChild ) ? (function( parent ){\r
- var _children = this._children,\r
+ var _children = this._xnodes,\r
node = this._rawNode,\r
eChildren = node.childNodes,\r
- _child, i, l;\r
+ attrs, p, _child, i, l;\r
this.parent = parent;\r
if( this._nodeType !== 1 ) return;\r
if( this._isNew ){\r
- if( _children && !document.createDocumentFragment ){ \r
+ if( _children && !document.createDocumentFragment ){\r
Node._dom2cleanUp( this ); // docFrg が使えない場合、doc 追加後に子を追加\r
};\r
- node.UID = this._uid;\r
- // attr\r
- // イベントの復帰\r
- X.Dom.Event.restore( node );\r
+ node.UID = this._uid;\r
+ node.id = this._id;\r
+ node.className = this._className;\r
+ // ie では createElement に <div class=...> HTML 文字列を渡すことができる\r
+ // 動的に生成した iframe に後から frameborder 等を設定しても無視される ie7\r
+ if( attrs = this._attrs ){\r
+ for( p in attrs ){\r
+ node[ p ] = attrs[ p ];\r
+ };\r
+ };\r
+ node.style.cssText = this._cssText;\r
+ X.Dom.Event.restore( node ); // イベントの復帰\r
delete this._isNew;\r
};\r
/*\r
- * elm.childNodes を this._children にリンクさせる\r
+ * elm.childNodes を this._xnodes にリンクさせる\r
*/\r
if( _children ){\r
for( i = 0, l = _children.length; i < l; ++i ){\r
};\r
} else\r
if( eChildren && eChildren.length ){\r
- this._children = [];\r
- this._children.push.apply( this._children, eChildren );\r
+ this._xnodes = [];\r
+ this._xnodes.push.apply( this._xnodes, eChildren );\r
};\r
return this;\r
}) :\r
document.all ? (function( parent ){\r
var elm,\r
- children = this._children,\r
+ children = this._xnodes,\r
child, i, l;\r
this.parent = parent;\r
delete this._ie4dirty;\r
/* --------------------------------------\r
* Create\r
*/\r
-Node.prototype.create = function( tag, attrs ){\r
+Node.prototype.create = function( tag, opt_attrs, opt_css ){\r
var elm, xnode;\r
if( this._nodeType !== 1 ) return;\r
- if( !this._children ) this._children = [];\r
+ if( !this._xnodes ) this._xnodes = [];\r
\r
elm = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode;\r
\r
- if( elm ){\r
+ if( elm && !Node.skipCreate ){\r
if( document.appendChild ){\r
+ // ie では iframe の frameborder が無視されるので、<iframe class=> を渡す\r
elm.appendChild( document.createElement( tag ) );\r
xnode = new Node( elm.lastChild );\r
- xnode.attr( attrs );\r
+ opt_attrs && xnode.attr( opt_attrs );\r
+ opt_css && xnode.attr( opt_css );\r
} else\r
if( document.all ){\r
Node._newByTag = true;\r
- xnode = new Node( tag, attrs );\r
+ xnode = new Node( tag, opt_attrs, opt_css );\r
+ // opt_attrs && xnode.attr( opt_attrs );\r
elm.insertAdjacentHTML( 'BeforeEnd', xnode._create() );\r
xnode._rawNode = elm.children[ elm.children.length - 1 ];\r
} else {\r
};\r
} else {\r
Node._newByTag = true;\r
- xnode = new Node( tag );\r
+ xnode = new Node( tag, opt_attrs, opt_css );\r
};\r
xnode.parent = this;\r
- this._children[ this._children.length ] = xnode;\r
+ this._xnodes[ this._xnodes.length ] = xnode;\r
return xnode;\r
};\r
\r
Node.prototype.createText = function( text ){\r
var elm, xnode;\r
if( this._nodeType !== 1 ) return;\r
- if( !this._children ) this._children = [];\r
+ if( !this._xnodes ) this._xnodes = [];\r
\r
elm = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode;\r
\r
- if( elm ){\r
+ if( elm && !Node.skipCreate ){\r
if( document.createTextNode ){\r
elm.appendChild( document.createTextNode( text ) );\r
xnode = new Node( elm.lastChild );\r
xnode = new Node( text );\r
};\r
xnode.parent = this;\r
- this._children[ this._children.length ] = xnode;\r
+ this._xnodes[ this._xnodes.length ] = xnode;\r
return xnode;\r
};\r
\r
v = arguments[ i ];\r
v = v.constructor === Node ? v : new Node( v );\r
frg.appendChild( v._create() );\r
- this._children[ this._children.length ] = v;\r
+ this._xnodes[ this._xnodes.length ] = v;\r
v._afterCreate( this );\r
};\r
this._rawNode.appendChild( frg );\r
return this;\r
};\r
\r
- if( !this._children ) this._children = [];\r
+ if( !this._xnodes ) this._xnodes = [];\r
\r
elm = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode;\r
switch( Node._getType( v ) ){\r
\r
};\r
};\r
- this._children[ this._children.length ] = new Node( v );\r
+ this._xnodes[ this._xnodes.length ] = new Node( v );\r
break;\r
case Node.IS_HTML_STRING :\r
case Node.IS_STRING :\r
break;\r
case Node.IS_XNODE :\r
if( v === Node.none ) return this;\r
+ // 親の xnodes から v を消す\r
+ v.parent && ( i = v.parent._xnodes.indexOf( v ) ) !== -1 && v.parent._xnodes.splice( i, 1 );\r
if( elm ){\r
if( document.appendChild ){\r
elm.appendChild( v._create() );\r
\r
};\r
};\r
- this._children[ this._children.length ] = v;\r
+ this._xnodes[ this._xnodes.length ] = v;\r
};\r
return this;\r
};\r
\r
if( this._nodeType !== 1 ) return this;\r
\r
- if( !( children = this._children ) ) children = this._children = [];\r
+ if( !( children = this._xnodes ) ) children = this._xnodes = [];\r
\r
l = arguments.length;\r
if( children.length <= start ){\r
break;\r
case Node.IS_XNODE :\r
if( v === Node.none ) return this;\r
+ // 親の xnodes から v を消す\r
+ v.parent && ( i = v.parent._xnodes.indexOf( v ) ) !== -1 && v.parent._xnodes.splice( i, 1 );\r
if( elm ){\r
if( document.appendChild ){\r
elm.insertBefore( v._create(), elm.childNodes[ start ] );\r
\r
};\r
\r
- parent._children.splice( parent._children.indexOf( this ), 1 );\r
+ parent._xnodes.splice( parent._xnodes.indexOf( this ), 1 );\r
delete this.parent;\r
return this;\r
};\r
\r
Node.prototype._beforeRemove = \r
document.removeChild ?\r
- ( function(){\r
+ ( function(){\r
var elm = this._rawNode, children,\r
child, i, l;\r
if( !elm ) return;\r
X.Dom.Event.migrate( elm ); // イベントの退避\r
- if( children = this._children ){\r
+ if( children = this._xnodes ){\r
for( i = 0, l = children.length; i < l; ++i ){\r
child = children[ i ];\r
child._nodeType === 1 && child._beforeRemove();\r
( function(){\r
var elm = this._ie4getRawNode(),\r
children, i, l;\r
- if( children = this._children ){\r
+ if( children = this._xnodes ){\r
for( i = 0, l = children.length; i < l; ++i ){\r
children[ i ]._beforeRemove();\r
}; \r
}) :\r
(function(){});\r
\r
-Node.prototype.empty = function( v ){\r
- \r
-};\r
+Node.prototype.empty =\r
+ document.removeChild ?\r
+ ( function(){\r
+ var elm = this._rawNode, children,\r
+ child, i, l;\r
+ if( children = this._xnodes ){\r
+ for( i = 0, l = children.length; i < l; ++i ){\r
+ children[ i ].destroy();\r
+ };\r
+ children.length = 0;\r
+ };\r
+ if( elm ) elm.innerHTML = '';\r
+ return this;\r
+ }) :\r
+ document.all ? \r
+ ( function(){\r
+ var elm = this._ie4getRawNode(),\r
+ children, i, l;\r
+ if( children = this._xnodes ){\r
+ for( i = 0, l = children.length; i < l; ++i ){\r
+ children[ i ].destroy();\r
+ };\r
+ children.length = 0;\r
+ };\r
+ if( elm ) elm.innerHTML = this._htmlText = '';\r
+ return this;\r
+ }) :\r
+ (function(){});\r
\r
/* --------------------------------------\r
* replace\r
/* --------------------------------------\r
* destory\r
*/\r
-Node.prototype.destroy = function( v ){\r
- \r
+Node.prototype.destroy = function(){\r
+ var elm = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode,\r
+ children = this._xnodes;\r
+ if( children ){\r
+ for( i = 0, l = children.length; i < l; ++i ){\r
+ children[ i ].destroy();\r
+ };\r
+ children.length = 0;\r
+ };\r
+ if( elm ){\r
+ this._nodeType === 1 && X.Dom.Event.remove( elm ); // イベントの退避\r
+ elm.innerHTML = '';\r
+ document.removeChild && this.parent._rawNode.removeChild( elm );\r
+ };\r
+ delete Node._chashe[ this._uid ];\r
+ delete this._uid;\r
+ delete this._nodeType;\r
+ delete this._rawNode;\r
+ delete this._tag;\r
+ delete this._text;\r
+ delete this._id;\r
+ delete this._className;\r
+ delete this._classText;\r
+ delete this.parent;\r
+ delete this._xnodes;\r
+ delete this._attrs;\r
+ delete this._attrText;\r
+ delete this._css;\r
+ delete this._cssText;\r
+ delete this._events;\r
};\r
\r
/* --------------------------------------\r
Node.prototype._ie4startUpdate = function(){\r
if( this._ie4reserved !== true ) return;\r
delete this._ie4reserved;\r
- if( !this._children ) return;\r
+ if( !this._xnodes ) return;\r
this._ie4commitUpdate()._ie4afterUpdate();\r
};\r
\r
Node.prototype._ie4commitUpdate = function(){\r
- var children = this._children,\r
+ var children = this._xnodes,\r
i, l, html;\r
if( !this._ie4dirtyChildren ){\r
for( i = 0, l = children.length; i < l; ++i ){\r
};\r
\r
Node.prototype._ie4afterUpdate = function(){\r
- var children = this._children,\r
+ var children = this._xnodes,\r
i, l;\r
if( !this._ie4dirtyChildren ){\r
for( i = 0, l = children.length; i < l; ++i ){\r
var children, i;\r
if( this._nodeType !== 1 ) return;\r
if( this._ie4dirtyChildren || this._ie4dirty ) return true;\r
- if( !( children = this._children ) || !( i = children.length ) ) return;\r
+ if( !( children = this._xnodes ) || !( i = children.length ) ) return;\r
for( ; i; ){\r
if( children[ --i ]._ie4containsDirty() ) return true;\r
};\r
* contains\r
*/\r
Node.prototype.contains = function( v ){\r
- var node, children;\r
+ var node, children, i;\r
if( !v || !this.parent || this._nodeType !== -1 ) return false;\r
// contains ie4+\r
if( document.contains ){\r
return false;\r
}; \r
};\r
- children = this._children;\r
+ children = this._xnodes;\r
if( children.indexOf( v ) !== -1 ) return true;\r
if( ( node = this._rawNode ) && node === v.parentNode ) return;\r
for( i = children.length; i; ){\r
* getChild\r
*/\r
Node.prototype.getChildAt = function( index ){\r
- var children = this._children,\r
+ var children = this._xnodes,\r
elm, childNodes, child, xnode;\r
if( this._nodeType !== 1 || index < 0 ) return;\r
if( children.length <= index ) return;\r
return this.getChildAt( 0 );\r
};\r
Node.prototype.lastChild = function(){\r
- return this.getChildAt( this._children.length - 1 );\r
+ return this.getChildAt( this._xnodes.length - 1 );\r
};\r
\r
/* --------------------------------------\r
};\r
\r
/* --------------------------------------\r
- * className, addClass, removeClass, hasClass, cssText, css\r
+ * className, addClass, removeClass, hasClass\r
*/\r
-\r
-Node.prototype.css = function( name /* , valuOrUnit */ ){\r
- var args = arguments,\r
- css = this._css,\r
- v, node;\r
- if( 1 < args.length && 'px|em|cm|in|%'.indexOf( v = args[ 1 ] ) === -1 ){\r
- if( node = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode ){\r
- node.style[ name ] = v;\r
- };\r
- if( !css ) css = this._css = {};\r
- css[ name ] = v;\r
- return this;\r
- };\r
- if( !css ) return;\r
- return css[ name ];\r
+Node.prototype.className = function( v ){\r
+ var node;\r
+ // getter\r
+ if( typeof v !== 'string' ) return this._className;\r
+ // setter\r
+ if( this._className === v ) return;\r
+ if( !v ) delete this._className;\r
+ node = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode;\r
+ if( node ) node.className = v;\r
+ this._className = v;\r
+ this._classText = ' class="' + v + '" ';\r
+ return this;\r
+};\r
+Node.prototype.addClass = function(){\r
+ \r
+};\r
+Node.prototype.removeClass = function(){\r
+ \r
+};\r
+Node.prototype.toggleClass = function(){\r
+ \r
+};\r
+Node.prototype.hasClass = function(){\r
+ \r
};\r
-\r
\r
/* --------------------------------------\r
- * attribute\r
- * X.Dom.Attr.toIndex に定義されている 属性の場合\r
+ * html, text\r
*/\r
-Node.prototype.attr = function( v ){\r
- var attrs, attr, l, i;\r
- if( v.length && v[ v.length - 1 ] ){\r
- //\r
- } else\r
- if( 2 < arguments.length ){\r
- // setter\r
- } else\r
- if( typeof v === 'string' ){\r
- // getter\r
- if( attrs = this._attrs ){\r
- //i = X.Dom.Attr.toIndex[ v ];\r
- //if( i || i === 0 ){\r
- // return attrs[ i ];\r
- //};\r
- return attrs[ v ];\r
- };\r
- };\r
+Node.prototype.html = function( html ){\r
+ return this.empty().append.call( this, X.Dom.parse( html, true ) );\r
+};\r
+\r
+Node.prototype.text = function( text ){\r
+ this.empty().createText( text );\r
+ return this;\r
};\r
\r
/* --------------------------------------\r
* Width, Height\r
+ * overflow:hidden かつ width か height が設定されていたら、再描画しないでその値を返す\r
*/\r
Node.prototype.width = function(){\r
var elm;\r
var elm;\r
if( !this.parent ) return 0;\r
if( document.getElementById ){\r
+ // this.css( X.Dom.Style.Unit.px, 'height' );\r
return ( elm = this._rawNode ) ? elm.offsetHeight : 0;\r
} else\r
if( document.all ){\r
};\r
\r
/* --------------------------------------\r
- * Content Width, Content Height\r
- */\r
-\r
-\r
-/* --------------------------------------\r
* load\r
*/\r
-X.Dom.Event.add( window, 'load', function(){\r
+X.Dom.listenOnce( X.Dom.Event.DOM_INIT, function(){\r
var r = Node.root = new Node( document.body ),\r
elm = r._rawNode,\r
- createTree, n = 0;\r
+ createTree, n = 0, s;\r
r.appendTo = r.appendToRoot = r.before = r.after = r.clone = r.remove = r.destroy = r.prevNode = r.nextNode = new Function( 'return this' );\r
\r
if( elm.childNodes ){\r
for( ; i < l; ++i ){\r
child = children[ i ];\r
if( child.nodeType === 1 ){\r
- if( !xnode._children ) xnode._children = [];\r
- xnode._children[ xnode._children.length ] = _xnode = new Node( child );\r
+ if( !xnode._xnodes ) xnode._xnodes = [];\r
+ xnode._xnodes[ xnode._xnodes.length ] = _xnode = new Node( child );\r
_xnode.parent = xnode;\r
child.childNodes.length && createTree( _xnode, child, child.childNodes );\r
} else\r
- if( child.nodeType === 3 && child.data !== '' && Node.cleanupWhiteSpace( child.data ) !== ' ' ){\r
- if( !xnode._children ) xnode._children = [];\r
- xnode._children[ xnode._children.length ] = new Node( child );\r
+ if( child.nodeType === 3 && child.data !== '' && X.cleanupWhiteSpace( child.data ) !== ' ' ){\r
+ if( !xnode._xnodes ) xnode._xnodes = [];\r
+ xnode._xnodes[ xnode._xnodes.length ] = new Node( child );\r
} else {\r
elm.removeChild( child );\r
--i;\r
child = children[ i ];\r
if( child.tagName === '!' ) continue;\r
f = false;\r
- while( j < xnode._children.length ){\r
- _xnode = xnode._children[ j ];\r
+ while( j < xnode._xnodes.length ){\r
+ _xnode = xnode._xnodes[ j ];\r
_xnode.parent = xnode;\r
_xnode._ie4dirty = true;\r
if( _xnode._nodeType === 1 ){\r
};\r
} else\r
if( _xnode._nodeType === 3 ){\r
- if( !_xnode._text || Node.cleanupWhiteSpace( _xnode._text ) === ' ' ){\r
+ if( !_xnode._text || X.cleanupWhiteSpace( _xnode._text ) === ' ' ){\r
_xnode.remove();\r
++n;\r
continue;\r
if( !f ) alert( '**** ' + child.outerHTML );\r
};\r
};\r
- r._children = [];\r
- r._children.push.apply( r._children, X.Dom.parse( elm.innerHTML, true ) );\r
+ \r
+ r._xnodes = [];\r
+ Node.skipCreate = true;\r
+ r._xnodes.push.apply( r._xnodes, X.Dom.parse( elm.innerHTML, true ) );\r
+ delete Node.skipCreate;\r
createTree( r, elm.children );\r
r._ie4reserveUpdate();\r
//alert(n + ' ' + elm.innerHTML);\r
\r
};\r
\r
- r.width = new Function( 'return X.View.getSize()[ 0 ]' );\r
- r.height = new Function( 'return X.View.getSize()[ 1 ]' );\r
+ r.width = new Function( 'return X.Dom.getSize()[ 0 ]' );\r
+ r.height = new Function( 'return X.Dom.getSize()[ 1 ]' );\r
\r
- return X.Callback.UN_LISTEN;\r
+ Node._systemNode = r.create( 'div' ).className( 'hidden-sysyem-node' );\r
+ r._xnodes.splice( r._xnodes.indexOf( Node._systemNode ), 1 ); // hide from api user\r
} );\r
\r
//})( window, document );
\ No newline at end of file
--- /dev/null
+
+
+/*
+ * style 値の変更は、enterFrame 後にまとめて適用
+ * width(), height(), x(), y() 1em の取得時にも適用
+ * css3 の ie用 fix は X.UI レベルで行う
+ *
+ * use X.Dom.Event
+ */
+X.Dom.Style = {
+
+ Type : {
+ LENGTH : 1,
+ PERCENT : 2,
+ COLOR : 2 < 2,
+ U_DECIMAL : 2 < 3,
+ NUMERICAL : 2 < 4,
+ BOOLEAN : 2 < 5,
+ QUARTET : 2 < 6,
+ URL : 2 < 7,
+ FONT_NAME : 2 < 8,
+ TIME : 2 < 9,
+ CONTENT : 2 < 10,
+ LIST : 2 < 11,
+ AUTO : 2 < 12,
+ COMBI : 2 < 13
+ },
+
+ SPECIAL_VALUES : {
+ AUTO : Number.POSITIVE_INFINITY,
+ FULL : X.Dom // something unigue value; 100%
+ },
+
+ PropNo : {},
+
+ UNIT : {
+ 'px' : 0,
+ 'em' : 1,
+ 'cm' : 2,
+ 'mm' : 3,
+ 'in' : 4,
+ '%' : 5,
+ 'pct' : 5,
+ 'ms' : 6,
+ 's' : 7,
+ '#' : 8,
+ 'rgb' : 9,
+ 'rgba' : 10
+ },
+
+ /* font-size -> fontSize */
+ _DICTIONARY_CAMELIZE : {},
+
+ camelize : function( cssProp ){
+ var me = X.Dom.Style,
+ parts, l, i, camelized;
+
+ if( camelized = me._DICTIONARY_CAMELIZE[ cssProp ] ) return camelized;
+ parts = cssProp.split( ' ' ).join( '' ).split( '-' );
+ l = parts.length;
+ if( l === 1 ) return parts[ 0 ];
+
+ camelized = cssProp.charAt(0) === '-'
+ ? parts[ 0 ].charAt( 0 ).toUpperCase() + parts[ 0 ].substring( 1 )
+ : parts[ 0 ];
+
+ for( i = 1; i < l; ++i ){
+ camelized += parts[ i ].charAt( 0 ).toUpperCase() + parts[ i ].substring( 1 );
+ };
+ return me._DICTIONARY_CAMELIZE[ cssProp ] = camelized;
+ },
+
+ /* fontSize -> font-size */
+ /*
+ REG_LARGE : /[A-Z]/g,
+ uncamelize: function( str ){
+ return str.split( ' ' ).join( '' ).replace( X.Dom.Style.REG_LARGE, '-$&' ).toLowerCase();
+ }, */
+
+ CHAR_CODE_A : 'A'.charCodeAt( 0 ),
+
+ _DICTIONARY_UNCAMELIZE : {},
+
+ uncamelize : function( str ){
+ var me = X.Dom.Style,
+ A = me.CHAR_CODE_A,
+ Z = A + 25,
+ uncamelized, l, chr, code;
+ str = str.split( ' ' ).join( '' );
+ if( uncamelized = me._DICTIONARY_UNCAMELIZE[ str ] ) return uncamelized;
+ uncamelized = '';
+ for( i = 0, l = str.length; i < l; ++i ){
+ chr = str.charAt( i );
+ code = chr.charCodeAt( 0 );
+ uncamelized += ( A <= code && code <= Z ) ? '-' + chr : chr;
+ };
+ return me._DICTIONARY_UNCAMELIZE[ str ] = uncamelized.toLowerCase();
+ },
+
+ objToCssText : function( obj ){
+ var css = [],
+ me = X.Dom.Style,
+ uncamelize = me.uncamelize,
+ VENDER_PREFIX = me.VENDER_PREFIX,
+ FIX_PROP = me.SPECIAL_FIX_PROP,
+ SPECIAL_FIX = me.SPECIAL_FIX,
+ p, name, sp;
+ for( p in obj ){
+ name = uncamelize( p );
+ if( FIX_PROP[ name ] ){
+ sp = 1;
+ } else {
+ css[ css.length ] = [ VENDER_PREFIX[ name ] || name, obj[ p ] ].join( ':' );
+ };
+ };
+ sp && ( css[ css.length ] = SPECIAL_FIX( obj ) );
+ return css.join( ';' );
+ },
+
+ _FONT_SIZE_RATIO : {},
+
+ absoluteFontSizeToPx : function( fontsize ){
+ return X.Dom.Style._FONT_SIZE_RATIO[ fontsize ] || 0;
+ }
+
+ // https://developer.mozilla.org/en-US/docs/Web/CSS/transform
+ // Firefox 3.5, ie9, Opera 10.5, Safari 3.1, Chrome
+ // 3D support Firefox 10, ie10, Safari 4.0, Chrome 12.0
+ // transform : void 0,
+
+ // https://developer.mozilla.org/ja/docs/Web/Guide/CSS/Using_CSS_transitions
+ // Chrome 1.0, Firefox 4.0, ie10, Opera 10.5, Safari 3.2
+ // Android 2.1, Firefox Android 4.0, Opera Mobile 10, Safari Mobile 3.2
+ // transition : void 0
+};
+
+X.Dom.Style.Option = {
+ BORDER_STYLE : 'none,hidden,dotted,dashed,solid,double,groove,ridge,inset,outset'.split(','),
+ POSITION_X : 'left,center,right'.split(','),
+ POSITION_Y : 'top,center,bottom'.split(','),
+ ALIGN : 'left,center,right,justify'.split(','),
+ TEXT_DECORATION : 'none,underline,overline,line-through,blink'.split(','),
+ TEXT_TRANSFORM : 'none,capitalize,lowercase,uppercase'.split(','),
+ WIDTH_HEIGHT : [ 'auto' ],
+ BOX_SIZING : 'content-box,padding-box,border-box'.split(',') // ,margin-box
+};
+X.Dom.Style.Props = {
+ borderWidth : [ X.Dom.Dirty.REFLOW, 0, X.Dom.Style.Type.QUARTET | X.Dom.Style.Type.LENGTH ], // em [ top, right, bottom, left ]
+ borderColor : [ X.Dom.Dirty.PAINT, 4, X.Dom.Style.Type.QUARTET | X.Dom.Style.Type.COLOR ], // color [ top, right, bottom, left ]
+ borderStyle : [ X.Dom.Dirty.PAINT, 8, X.Dom.Style.Type.QUARTET | X.Dom.Style.Type.LIST, X.Dom.Style.Option.BORDER_STYLE ], // string [ top, right, bottom, left ]
+ cornerRadius : [ X.Dom.Dirty.PAINT, 12, X.Dom.Style.Type.QUARTET | X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ], // em, px [ top, right, bottom, left ]
+ bgColor : [ X.Dom.Dirty.PAINT, 16, X.Dom.Style.Type.COLOR ], // color
+ bgAlpha : [ X.Dom.Dirty.PAINT, 17, X.Dom.Style.Type.U_DECIMAL ], // 0 - 1
+ bgImgUrl : [ X.Dom.Dirty.PAINT, 18, X.Dom.Style.Type.URL ], // url
+ bgImgRepeatX : [ X.Dom.Dirty.PAINT, 19, X.Dom.Style.Type.BOOLEAN ], // true / false
+ bgImgRepeatY : [ X.Dom.Dirty.PAINT, 20, X.Dom.Style.Type.BOOLEAN ], // true / false
+ bgImgPositionX : [ X.Dom.Dirty.PAINT, 21, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT | X.Dom.Style.Type.LIST, X.Dom.Style.Option.POSITION_X ], // em %, px, string
+ bgImgPositionY : [ X.Dom.Dirty.PAINT, 22, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT | X.Dom.Style.Type.LIST, X.Dom.Style.Option.POSITION_Y ], // em %, px, string
+ shadowColor : [ X.Dom.Dirty.PAINT, 23, X.Dom.Style.Type.COLOR ], // color
+ shadowAlpha : [ X.Dom.Dirty.PAINT, 24, X.Dom.Style.Type.U_DECIMAL ], // 0 - 1
+ shadowOffsetX : [ X.Dom.Dirty.PAINT, 25, X.Dom.Style.Type.LENGTH ], // em
+ shadowOffsetY : [ X.Dom.Dirty.PAINT, 26, X.Dom.Style.Type.LENGTH ], // em
+ shadowBlur : [ X.Dom.Dirty.PAINT, 27, X.Dom.Style.Type.LENGTH ], // em
+ shadowSpread : [ X.Dom.Dirty.PAINT, 28, X.Dom.Style.Type.LENGTH ], // em
+ shadowInset : [ X.Dom.Dirty.PAINT, 29, X.Dom.Style.Type.BOOLEAN ], // true / false
+
+ color : [ X.Dom.Dirty.PAINT, 30, X.Dom.Style.Type.COLOR ], // color
+ fontFamily : [ X.Dom.Dirty.FONT, 31, X.Dom.Style.Type.FONT_NAME ], // string
+ fontSize : [ X.Dom.Dirty.FONT, 32, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ], // em, %
+ bold : [ X.Dom.Dirty.FONT, 33, X.Dom.Style.Type.BOOLEAN ], // true / false
+ italic : [ X.Dom.Dirty.FONT, 34, X.Dom.Style.Type.BOOLEAN ], // true / false
+ lineHeight : [ X.Dom.Dirty.FONT, 35, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT | X.Dom.Style.Type.NUMERICAL ], // em, %,
+ letterSpacing : [ X.Dom.Dirty.FONT, 36, X.Dom.Style.Type.LENGTH ], // em
+ wordSpacing : [ X.Dom.Dirty.FONT, 37, X.Dom.Style.Type.LENGTH ],
+ align : [ X.Dom.Dirty.FONT, 38, X.Dom.Style.Type.LIST, X.Dom.Style.Type.ALIGN ],
+ decoration : [ X.Dom.Dirty.PAINT, 39, X.Dom.Style.Type.LIST, X.Dom.Style.Type.TEXT_DECORATION ],
+ transform : [ X.Dom.Dirty.FONT, 40, X.Dom.Style.Type.LIST, X.Dom.Style.Type.TEXT_TRANSFORM ],
+ textShadowColor : [ X.Dom.Dirty.PAINT, 41, X.Dom.Style.Type.COLOR ],
+ textShadowOffsetX : [ X.Dom.Dirty.PAINT, 42, X.Dom.Style.Type.LENGTH ],
+ textShadowOffsetY : [ X.Dom.Dirty.PAINT, 43, X.Dom.Style.Type.LENGTH ],
+ shadowBlur : [ X.Dom.Dirty.PAINT, 44, X.Dom.Style.Type.LENGTH ],
+
+ width : [ X.Dom.Dirty.REFLOW, 45, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT, X.Dom.Style.Option.WIDTH_HEIGHT ],
+ minWidth : [ X.Dom.Dirty.REFLOW, 46, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+ maxWidth : [ X.Dom.Dirty.REFLOW, 47, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+ height : [ X.Dom.Dirty.REFLOW, 48, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT, X.Dom.Style.Option.WIDTH_HEIGHT ],
+ minHeight : [ X.Dom.Dirty.REFLOW, 49, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+ maxHeight : [ X.Dom.Dirty.REFLOW, 50, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+ padding : [ X.Dom.Dirty.REFLOW, 51, X.Dom.Style.Type.QUARTET | X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+ margin : [ X.Dom.Dirty.REFLOW, 55, X.Dom.Style.Type.QUARTET | X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+ sizing : [ X.Dom.Dirty.REFLOW, 59, X.Dom.Style.Type.LIST, X.Dom.Style.Option.BOX_SIZING ],
+ pageBox : [ X.Dom.Dirty.REFLOW, 60, X.Dom.Style.Type.BOOLEAN ], // true / false
+ left : [ X.Dom.Dirty.REFLOW, 61, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+ top : [ X.Dom.Dirty.REFLOW, 62, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+ bottom : [ X.Dom.Dirty.REFLOW, 63, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+ right : [ X.Dom.Dirty.REFLOW, 64, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ]
+};
+
+X.Dom.Style.SPECIAL_FIX =
+ // ~IE8
+ X.UA.IE && X.UA.IE < 9 ?
+ (function( obj ){
+ var test = X.Dom.Style.SPECIAL_FIX_PROP,
+ filters = [], p, id, v;
+ for( p in obj ){
+ if( !( id = test[ p ] ) ) continue;
+ v = obj[ p ];
+ switch( id ){
+ case 1 : //'filter' :
+ filters[ filters.length ] = v;
+ break;
+ case 2 : //'opacity' :
+ filters[ filters.length ] = 'aplha(opacity=' + v +')';
+ break;
+ case 3 : //'boxShadow' :
+ // box-shadow: 10px 10px 10px 10px rgba(0,0,0,0.4) inset;
+ // スペース区切りで、水平方向の距離 垂直方向の距離 ぼかし距離 広がり距離 影の色 insetキーワードを指定する。 ぼかし距離 広がり距離 影の色 insetキーワードは省略可
+ // shadow(color=#cccccc, strength=10, direction=135);
+ parseValue( 'boxShadow', v, 'px' );
+ dir = Math.atan2( ary[1], ary[0] ) * 180 / Math.PI + 90;
+ dir += dir < 0 ? 360 : 0;
+ break;
+ case 4 : //'textShadow' :
+ //text-shadow: 5px 5px 2px blue; 水平方向の距離 垂直方向の距離 影のぼかし半径 影の色 none
+ //glow(Color=yellow,Strength=10);
+ //どうやらCSSのbackgroundプロパティと同時に使えないようです。
+ break;
+ case 5 : //'backgroundImage' :
+ //
+ };
+ };
+ if( filters ) return filters.join( ' ' );
+ }) :
+ // IE9
+ X.UA.IE && 9 <= X.UA.IE && X.UA.IE < 10 ?
+ (function( obj ){
+ var test = X.Dom.Style.SPECIAL_FIX_PROP,
+ filters = [], p, id, v;
+ for( p in obj ){
+ if( !( id = test[ p ] ) ) continue;
+ v = obj[ p ];
+ switch( id ){
+ case 1 : //'filter' :
+ filters[ filters.length ] = v;
+ break;
+ };
+ };
+ if( filters ) return filters.join( ' ' );
+ }) :
+ (function( obj ){
+ var test = X.Dom.Style.SPECIAL_FIX_PROP,
+ ret = [], p, id, v;
+ for( p in obj ){
+ if( !( id = test[ p ] ) ) continue;
+ v = obj[ p ];
+ switch( id ){
+ case 1 : //'backgroundPositionX' :
+ bgpX = v;
+ break;
+ case 2 : //'backgroundPositionY' :
+ bgpY = v;
+ break;
+ case 3 : //'backgroundPositionX' :
+ clipT = v;
+ break;
+ case 4 : //'backgroundPositionX' :
+ clipB = v;
+ break;
+ case 5 : //'backgroundPositionX' :
+ clipL = v;
+ break;
+ case 6 : //'backgroundPositionX' :
+ clipR = v;
+ break;
+ };
+ };
+ if( bgpX || bgpY ) ret[ ret.length ] = 'background-position:';
+ if( clipT || clipB || clipL || clipR ){
+ ret[ ret.length ] = 'clip:rect(';
+ };
+ return ret.join( ';' );
+ });
+
+
+
+
+// export
+// name getter
+// unitID, name 単位指定のプロパティ取得 geter
+// obj setter
+// name, value setter
+X.Dom.Node.prototype.css = function( nameOrObj /* orUnitID, valuOrUnitOrName */ ){
+ var XDomStyle = X.Dom.Style,
+ args = arguments,
+ css = this._css,
+ p, valOrUnit, name, v, node, camelize;
+ if( this._nodeType !== 1 ) return this;
+ // setter
+ if( X.Type.isObject( nameOrObj ) ){
+ if( !css ) css = this._css = {};
+ camelize = XDomStyle.camelize;
+ for( p in nameOrObj ){
+ css[ camelize( p ) ] = nameOrObj[ p ];
+ };
+ this._cssText = XDomStyle.objToCssText( this._css );
+ if( node = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode ){
+ if( this._cssText ){
+ node.style.cssText = this._cssText;
+ } else {
+ node.removeAttribute( 'style' );
+ };
+ };
+ return this;
+ } else
+ if( 1 < args.length && !XDomStyle.UNIT[ nameOrObj ] ){
+ if( !css ) css = this._css = {};
+ name = XDomStyle.camelize( nameOrObj );
+ v = args[ 1 ];
+ if( css[ name ] === v ) return this;
+ if( node = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode ){
+ node.style[ name ] = v; // val
+ };
+ if( !css[ name ] ){
+ this._cssText = [ this._cssText, this._cssText ? ';' : '', XDomStyle.uncamelize( nameOrObj ), ':', v ].join( '' );
+ css[ name ] = v;
+ } else {
+ css[ name ] = v;
+ // build _cssText
+ this._cssText = XDomStyle.objToCssText( css );
+ };
+ node && !this._cssText && node.removeAttribute( 'style' );
+ return this;
+ };
+ // getter
+ if( !css ) return;
+ if( 1 < args.length && XDomStyle.UNIT[ nameOrObj ] ){ // unit
+ // To do
+ return XDomStyle.getValue( this, args[ 1 ], name );
+ };
+ // 集計 border, padding, margin, backgroundPosition, clip
+ // border で正確なデータを返せない時は、null を返す
+ return css[ XDomStyle.camelize( nameOrObj ) ];
+};
+
+X.Dom.Node.prototype.cssText = function( v ){
+ var camelize, obj, i, l, attr, name;
+ if( X.Type.isString( v ) ){
+ camelize = X.Dom.Style.camelize;
+ obj = {};
+ v = v.split( ';' );
+ delete this._css;
+ for( i = 0, l = v.length; i < l; ++i ){
+ attr = v[ i ].split( ':' );
+ name = camelize( attr[ 0 ] );
+ name && ( obj[ name ] = attr[ 1 ] || true );
+ };
+ return this.css( obj );
+ };
+ return this._cssText;
+};
+
+X.Dom.Node.prototype._getCharSize =
+ document.defaultView && document.defaultView.getComputedStyle ?
+ (function(){
+ document.defaultView.getComputedStyle( this._rawNode, null );
+ }) :
+ X.UA.IE && 5 <= X.UA.IE ?
+ (function(){
+ //this._rawNode.currentStyle;
+ }) :
+ document.removeChild ?
+ (function(){
+
+ }) :
+ (function(){
+
+ });
+
+X.Dom.listenOnce( X.Dom.Event.DOM_PREINIT, function(){
+
+ var testStyle = X.Dom._view;
+
+ X.Dom.Style.VENDER_PREFIX = (function(){
+ var ret = {},
+ vendors = ',webkit,Webkit,Moz,moz,ms,Ms,O,o,khtml,Khtml'.split( ',' ),
+ searches =
+ 'opacity,boxSizing,' +
+ 'transform,transformOrigin,perspective,' +
+ 'transisiton,transitionDelay,transitionProperty,transitionDuration,transitionTimingFunction,' +
+ 'userSelect,touchAction,touchCallout,contentZooming,userDrag,tapHighlightColor'.split( ',' ),
+ vendor, i, search, prop;
+
+ function findVenderPrefix( prop ){
+ var v, i = vendors.length;
+ vendor = null;
+ for( ; i; ){
+ v = vendors[ --i ];
+ if( testStyle[ v + prop ] !== undefined ){
+ vendor = v;
+ return v + prop;
+ };
+ };
+ };
+
+ for( i = searches.length; i; ){
+ search = searches[ --i ];
+ prop = findVenderPrefix( search );
+ if( search === 'transform' ) ret.transVender = vendor;
+ if( prop ) ret[ search ] = prop;
+ };
+ return ret;
+ })();
+
+ X.Dom.Style.SPECIAL_FIX_PROP =
+ // ~IE8
+ X.UA.IE && X.UA.IE < 9 ?
+ {
+ filter : 1,
+ opacity : 2//, uinode ChromeNode で行う
+ //boxShadow : 3,
+ //textShadow : 4,
+ //backgroundImage : 5
+ } :
+ // IE9
+ X.UA.IE && 9 <= X.UA.IE && X.UA.IE < 10 ?
+ {
+ filter : 1//,
+ //textShadow : 1
+ } :
+ {
+ backgroundPositionX : testStyle.backgroundPositionX === undefined ? 3 : 0,
+ backgroundPosiitonY : testStyle.backgroundPositionX === undefined ? 3 : 0,
+ clipTop : testStyle.clipTop === undefined && testStyle[ 'clip-top' ] === undefined ? 3 : 0,
+ clipBottom : testStyle.clipTop === undefined && testStyle[ 'clip-top' ] === undefined ? 4 : 0,
+ clipLeft : testStyle.clipTop === undefined && testStyle[ 'clip-top' ] === undefined ? 5 : 0,
+ clipRight : testStyle.clipTop === undefined && testStyle[ 'clip-top' ] === undefined ? 6 : 0
+ };
+} );
+
+X.Dom.listenOnce( X.Dom.Event.DOM_INIT, function(){
+ var xnode = Node._systemNode;
+
+ var ret = X.Dom.Style._UNIT_RATIO = {},
+ unit,
+ units = 'em,cm,mm,in,pt,pc'.split( ',' ),
+ i = units.length;
+
+ for( ; i; ){
+ unit = units[ --i ];
+ xnode.css( 'width', 100 + unit );
+ ret[ unit ] = xnode.width() / 100;
+ console.log( unit + ':' + ret[ unit ] );
+ };
+ xnode.css( 'width', '' );
+
+ var ret = X.Dom.Style._FONT_SIZE_RATIO = {},
+ size, base,
+ list = 'xx-large,x-large,large,larger,medium,small,smaller,x-small,xx-small'.split( ',' ),
+ i = list.length;
+
+ base = xnode.css( 'lineHeight', 1 ).text( 'X' ).height();
+ for( ; i; ){
+ size = list[ --i ];
+ ret[ size ] = xnode.css( 'fontSize', size ).height() / base;
+ console.log( size + ':' + ( ret[ size ] * 100 | 0 ) + '%' );
+ };
+
+ xnode.empty().cssText( '' );
+} );
\ No newline at end of file
readonly : 1,\r
selected : 1\r
},\r
- rename : {\r
+ renameForDOM : {\r
'class' : 'className',\r
accesskey : 'accessKey',\r
'accept-charset' : 'acceptCharset',\r
rowspan : 'rowSpan',\r
tabindex : 'tabIndex',\r
usemap : 'useMap',\r
- valuetype : 'valueType'\r
+ valuetype : 'valueType',\r
+ checked : 'defaultChecked'\r
+ },\r
+ renameForTag : {},\r
+ objToAttrText : function( obj ){\r
+ var attrs = [], noValue = X.Dom.Attr.noValue, p;\r
+ for( p in obj ){\r
+ attrs[ attrs.length ] = noValue[ p ] ? p : [ p, '="', obj[ p ], '"' ].join( '' );\r
+ };\r
+ return attrs.join( ' ' );\r
}\r
};\r
\r
-(function(){\r
- var toIndex = X.Dom.Attr.toIndex,\r
- toName = X.Dom.Attr.toName,\r
- name, i;\r
+(function( toIndex, toName, renameForDOM, renameForTag ){\r
+ var name, i;\r
for( name in toIndex ){\r
if( typeof ( i = toIndex[ name ] ) === 'number' ){\r
toName[ i ] = name;\r
};\r
};\r
-})();
\ No newline at end of file
+ for( name in renameForDOM ){\r
+ renameForTag[ renameForDOM[ name ] ] = name;\r
+ };\r
+})( X.Dom.Attr.toIndex, X.Dom.Attr.toName, X.Dom.Attr.renameForDOM, X.Dom.Attr.renameForTag );\r
+\r
+\r
+\r
+/* --------------------------------------\r
+ * attribute\r
+ * X.Dom.Attr.toIndex に定義されている 属性の場合\r
+ * \r
+ * http://nanto.asablo.jp/blog/2005/10/29/123294\r
+ * className, onclick等 はここで設定しない\r
+ * \r
+ */\r
+X.Dom.Node.prototype.attr = function( nameOrObj /* v */ ){\r
+ var attrs = this._attrs,\r
+ node, v, name;\r
+ \r
+ if( this._nodeType !== 1 ) return this;\r
+ \r
+ if( nameOrObj && X.Type.isObject( nameOrObj ) ){\r
+ if( !attrs ) attrs = this._attrs = {};\r
+ node = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode;\r
+ for( p in nameOrObj ){\r
+ this.__attr( node, attrs, p, nameOrObj[ p ] );\r
+ };\r
+ this._attrText = X.Dom.Attr.objToAttrText( this._attrs );\r
+ return this;\r
+ } else\r
+ if( 1 < arguments.length ){\r
+ // setter\r
+ // this._attrText use when Node.create()\r
+ if( !attrs ) attrs = this._attrs = {};\r
+ this.__attr(\r
+ this._ie4getRawNode ? ( this._rawNode || this._ie4getRawNode() ) : this._rawNode,\r
+ attrs, nameOrObj, arguments[ 1 ]\r
+ );\r
+ //if( !attrs[ name ] ){\r
+ // !this._attrText ? ( this._attrText = '' ) : ( this._attrText += ' ' );\r
+ // this._attrText += X.Dom.Attr.noValue[ name ] ? name : name + '="' + v + '"';\r
+ // attrs[ name ] = v;\r
+ //} else {\r
+ // attrs[ name ] = v;\r
+ this._attrText = X.Dom.Attr.objToAttrText( attrs );\r
+ //};\r
+ return this;\r
+ } else\r
+ if( typeof nameOrObj === 'string' ){\r
+ // getter\r
+ if( !attrs ) return;\r
+ \r
+ return attrs[ v ];\r
+ };\r
+};\r
+X.Dom.Node.prototype.__attr = function( node, attrs, name, v ){\r
+ name = X.Dom.Attr.renameForTag[ name ] || name;\r
+ \r
+ if( attrs[ name ] === v ) return;\r
+ if( name === 'style' ){\r
+ return this.cssText( v );\r
+ };\r
+ if( name.indexOf( 'on' ) === 0 ){\r
+ X.Notification.warn( 'xnode.attr("' + name + '") is wrong, xnode.listen() & xnode.unlisten().' );\r
+ return;\r
+ };\r
+ // className\r
+ if( name === 'class' ) return this.className( v );\r
+ // update node\r
+ if( node ){\r
+ this._ie4getRawNode ?\r
+ v ? node.setAttribute( name, v ) : node.removeAttribute( name ) : // val\r
+ ( node[ X.Dom.Attr.renameForDOM[ name ] || name ] = v || undefined ); // val\r
+ };\r
+ // id\r
+ if( name === 'id' ){\r
+ this._id = v === 'ie4uid' + this._uid ? undefined : !v ? undefined : v;\r
+ return;\r
+ };\r
+ // update this._attrs\r
+ if( !v ){\r
+ delete attrs[ name ];\r
+ } else {\r
+ attrs[ name ] = v;\r
+ };\r
+};
\ No newline at end of file
--- /dev/null
+/*\r
+ * GPU レイヤーを使うとスムースなアニメーションが得られる\r
+ * 但し、古めのデバイスでは処理落ちが起こる\r
+ * 処理落ちは、最も古い初代 iPod touch (iOS3) では特に顕著に発生するため、テスト機としてちょうどいい\r
+ * css の書き方によっても、処理落ちやガタツキに影響するので、デザイナーが気軽に触れるものではない\r
+ * \r
+ * transform の登場によって、要素の表示位置を変更する方法が、css-p との2択になった。\r
+ * 初代 iPod touch では、簡単な css-p すら無視してくれるので、積極的に transform を使っていけ、ということだと思う。\r
+ * 但し transform には様々な癖があり、一筋縄ではいかない。\r
+ * \r
+ * DHTML を扱う専用モジュールを用意して、そこにコードとノウハウを集積する。\r
+ * \r
+ * GPUレイヤーを使用している場合\r
+ * 新しいアニメーション・キューが追加されたときに、現在アニメーションしている要素と親子関係ならば、以前のアニメーションは直ちに停止し、GPUレイヤーを解除。\r
+ */\r
+\r
+X.Dom.Anime = (function( window, document, navigator, Math, undefined ){\r
+\r
+var QUEUE_LIST = [],\r
+ timerID,\r
+ ABS = new Function( 'v', 'return v<0?-v:v' ),\r
+ animeEnabled = !X.UA.EInk,\r
+ vendor = false,\r
+ cssVendor = '',\r
+ has3d = X.Dom.Style.has3d,\r
+ transform = X.Dom.Style.transform,\r
+ transformOrigin = X.Dom.Style.transformOrigin,\r
+ translateZ = X.Dom.Style.translateZ,\r
+ transition = X.Dom.Style.transition;\r
+\r
+/*\r
+ * 新規アニメーション要素が現在アニメーションしている要素と親子関係の場合、\r
+ * 親子関係のアニメーションを停止して一挙に最後の状態へ\r
+ */\r
+function registerQueue( queue ){\r
+ var list = QUEUE_LIST,\r
+ l = list.length,\r
+ xnode = queue.xnode,\r
+ q, _xnode;\r
+ for( ; l; ){\r
+ q = list[ --l ];\r
+ _xnode = q.xnode;\r
+ _xnode !== xnode && ( _xnode.contains( xnode ) || xnode.contains( _xnode ) ) && q.stop( true );\r
+ };\r
+ list[ list.length ] = queue;\r
+ !timerID && ( timerID = X.Timer.nextFrame( onEnterFrame ) );\r
+};\r
+\r
+function unregisterQueue( queue ){\r
+ var i = QUEUE_LIST.indexOf( queue );\r
+ if( i === -1 ) return;\r
+ if( QUEUE_LIST.length === 1 ){\r
+ QUEUE_LIST.length = 0;\r
+ timerID && X.Timer.cancelFrame( onEnterFrame );\r
+ } else {\r
+ QUEUE_LIST.splice( i, 1 );\r
+ };\r
+};\r
+\r
+function onEnterFrame(){\r
+ var list = QUEUE_LIST,\r
+ i = 0,\r
+ l = list.length,\r
+ t = X.getTime();\r
+ for( ; l; ){\r
+ list[ --l ].tick( t );\r
+ };\r
+ list.length && ( timerID = X.Timer.nextFrame( onEnterFrame ) );\r
+};\r
+\r
+var AnimationQueue = function( xnode ){\r
+ this.xnode = xnode;\r
+};\r
+\r
+X.Class._override( AnimationQueue.prototype,\r
+{\r
+ state : 0, // 0:停止, 1:登録済, 2:アニメ中の親子要素のGPUレイヤー解除待ち, 3:アニメ中;GPUレイヤーにセット、目標値のセット(transisiton有効), 4:\r
+ xnode : null,\r
+ startTime : 0,\r
+ type : 0,\r
+ list : null,\r
+ init : function( data, duration, timmingFunction ){\r
+ var list, type, prop, data, target, i, l;\r
+ if( !( list = this.list ) ) this.list = list = [];\r
+ for( type in data ){\r
+ for( i = 0, l = list.length; i < l; ++i ){\r
+ if( list[ i ][ 0 ] === type ){\r
+ prop = list[ i ];\r
+ break;\r
+ };\r
+ };\r
+ if( !prop ){\r
+ prop = {};\r
+ switch( type ){\r
+ case 'width' :\r
+ prop[ 2 ] = this.xnode.width(); // currentValue\r
+ break;\r
+ case 'height' :\r
+ prop[ 2 ] = this.xnode.height(); // currentValue\r
+ break;\r
+ case 'x' :\r
+ case 'left' :\r
+ type = transform ? 'translateX' : 'left';\r
+ prop[ 2 ] = this.xnode.x(); // currentValue\r
+ break;\r
+ case 'y' :\r
+ case 'top' :\r
+ type = transform ? 'translateY' : 'top';\r
+ prop[ 2 ] = this.xnode.y(); // currentValue\r
+ break;\r
+ };\r
+ prop[ 0 ] = type;\r
+ };\r
+ prop[ 1 ] = data[ type ]; // target value;\r
+ prop[ 3 ] = prop[ 1 ] - prop[ 2 ];\r
+ };\r
+\r
+ this.state === 0 && registerQueue( this );\r
+\r
+ this.state = 1;\r
+ this.startTime = X.getTime();\r
+ this.duration = duration;\r
+ if( transition ){\r
+ this.timming = 'liner';//timmingFunction;\r
+ } else {\r
+ this.timming = Liner;\r
+ };\r
+ \r
+ },\r
+ stop : function( opt_goEndPosition ){\r
+ if( this.xnode.dispatch( { type : X.UI.Event.ANIME_BEFORE_STOP, target : this.xnode } ) & X.Callback.PREVENT_DEFAULT ){\r
+ return;\r
+ };\r
+ this.xnode.dispatch( { type : X.UI.Event.ANIME_STOP, target : this.xnode } );\r
+ opt_goEndPosition && this.tick( this.startTime + this.duration );\r
+ unregisterQueue( this ); \r
+ },\r
+ tick :\r
+ transition ?\r
+ (function( time ){\r
+ var ratio = ( time - this.startTime ) / this.duration,\r
+ list = this.list,\r
+ xnode = this.xnode,\r
+ css;\r
+ if( this.state === 1 ){\r
+ this.state = 2;\r
+ calculateCSS( css = {}, list );\r
+ css[ transformOrigin ] = '0 0';\r
+ css[ transition.Property ] = this._transProp;\r
+ css[ transition.Delay ] = '0';\r
+ css[ transition.Duration ] = this.duration + 'ms';\r
+ css[ transition.TimingFunction ] = this.timming;\r
+ xnode.css( css );\r
+ delete this._transProp; \r
+ } else\r
+ if( this.state === 2 ){\r
+ this.state = 3;\r
+ css = {};\r
+ css[ transform ] = this._transform + translateZ;\r
+ xnode.css( css )\r
+ .listenOnce( transition.End, xnode, this.onTransitionEnd )\r
+ .dispatch( { type : X.UI.Event.ANIME_START, ratio : 1, target : xnode } );\r
+ this.startTime = time;\r
+ } else\r
+ if( 1 <= ratio ){\r
+ css = {};\r
+ css[ transform ] = this._transform; // GPU support off\r
+ delete this._transform;\r
+ list.length = 0;\r
+ xnode.css( css )\r
+ .unlisten( transition.End, xnode, onTransitionEnd )\r
+ .dispatch( { type : X.UI.Event.ANIME, ratio : 1, target : xnode } );\r
+ xnode.dispatch( { type : X.UI.Event.ANIME_END, ratio : 1, target : xnode } );\r
+ } else {\r
+ xnode.dispatch( { type : X.UI.Event.ANIME, ratio : rario, target : xnode } );\r
+ };\r
+ }) :\r
+ (function( time ){\r
+ var ratio = ( time - this.startTime ) / this.duration,\r
+ list = this.list,\r
+ xnode = this.xnode,\r
+ css;\r
+ if( 1 <= ratio ){\r
+ this.state = 0;\r
+ calculateCSS( css = {}, list, 1, time - this.startTime, this.duration );\r
+ list.length = 0;\r
+ xnode.css( css )\r
+ .dispatch( { type : X.UI.Event.ANIME, ratio : 1, target : xnode } );\r
+ xnode.dispatch( { type : X.UI.Event.ANIME_END, ratio : 1, target : xnode } );\r
+ } else {\r
+ this.state = 3;\r
+ calculateCSS( css = {}, list, ratio, time - this.startTime, this.duration );\r
+ xnode.css( css )\r
+ .dispatch( { type : X.UI.Event.ANIME, ratio : rario, target : xnode } );\r
+ };\r
+ }),\r
+ onTransitionEnd : transition && (function(){\r
+ return this.dispatch( { type : X.UI.Event.ANIME_END, ratio : 1, target : xnode } );\r
+ }),\r
+ /*\r
+ * transisitonProperty を集める\r
+ * trasform を集める\r
+ */\r
+ calculateCSS :\r
+ transition ?\r
+ (function( css, list ){\r
+ var i = 0,\r
+ l = list.length,\r
+ prop = [],\r
+ data, type, transX, transY, _transX, _transY;\r
+ for( ; i < l; ++i ){\r
+ data = list[ i ];\r
+ type = data[ 0 ];\r
+ switch( type ){\r
+ case 'translateX' :\r
+ transX = data[ 2 ];\r
+ _transX = data[ 1 ];\r
+ break;\r
+ case 'translateY' :\r
+ transY = data[ 2 ];\r
+ _transY = data[ 1 ];\r
+ break;\r
+ default :\r
+ css[ type ] = data[ 1 ];\r
+ prop[ prop.length ] = type;\r
+ };\r
+ };\r
+ if( transX || transY ){\r
+ prop[ prop.length ] = cssVendor + 'transform';\r
+ if( transX && transY ){\r
+ css[ transform ] = cssVendor + 'translate(' + transX + ',' + transY + ')' + translateZ;\r
+ this._transform = cssVendor + 'translate(' + _transX + ',' + _transY + ')';\r
+ \r
+ } else\r
+ if( transX ){\r
+ css[ transform ] = cssVendor + 'translateX(' + transX + ')' + translateZ;\r
+ this._transform = cssVendor + 'translateX(' + _transX + ')';\r
+ } else\r
+ if( transY ){\r
+ css[ transform ] = cssVendor + 'translateY(' + transY + ')' + translateZ;\r
+ this._transform = cssVendor + 'translateY(' + _transY + ')';\r
+ }; \r
+ };\r
+ this._transProp = prop.join( ',' );\r
+ }) :\r
+ transform ?\r
+ (function( css, list, ratio, time, duration ){\r
+ var i = 0, l = list.length,\r
+ easing = this.timming,\r
+ data, type, transX, transY;\r
+ for( ; i < l; ++i ){\r
+ data = list[ i ];\r
+ type = data[ 0 ];\r
+ switch( type ){\r
+ case 'translateX' :\r
+ transX = ratio === 1 ? data[ 1 ] : easing( time, data[ 2 ], data[ 3 ], duration );\r
+ break;\r
+ case 'translateY' :\r
+ transY = ratio === 1 ? data[ 1 ] : easing( time, data[ 2 ], data[ 3 ], duration );\r
+ break;\r
+ default :\r
+ css[ type ] = ratio === 1 ? data[ 1 ] : easing( time, data[ 2 ], data[ 3 ], duration );\r
+ };\r
+ };\r
+ if( transX && transY ){\r
+ this._transform = cssVendor + 'translate(' + transX + ',' + transY + ')';\r
+ css[ transform ] = this._transform + translateZ;\r
+ } else\r
+ if( transX ){\r
+ this._transform = cssVendor + 'translateX(' + transX + ')';\r
+ css[ transform ] = this._transform + translateZ;\r
+ } else\r
+ if( transY ){\r
+ this._transform = cssVendor + 'translateY(' + transY + ')';\r
+ css[ transform ] = this._transform + translateZ;\r
+ };\r
+ }) :\r
+ (function( css, list, l, ratio, time, duration ){\r
+ var data,\r
+ easing = this.timming;\r
+ for( ; l; ){\r
+ data = list[ --l ];\r
+ css[ data[ 0 ] ] = ratio === 1 ? data[ 1 ] : easing( time, data[ 2 ], data[ 3 ], duration );\r
+ };\r
+ })\r
+});\r
+\r
+function Liner( t, b, c, d ){ \r
+ return c * t / d + b;\r
+};\r
+\r
+// original :\r
+// https://github.com/arian/cubic-bezier/blob/master/index.js, MIT License\r
+function CubicBezier(x1, y1, x2, y2, t, epsilon){\r
+ var x = t, t0 = 0, t1 = 1, t2 = x, d2, i = 0;\r
+\r
+ // First try a few iterations of Newton's method -- normally very fast.\r
+ for (; i < 8; i++){\r
+ x2 = CubicBezier.curveX(x1,x2,t2) - x;\r
+ if (ABS(x2) < epsilon) return CubicBezier.curveY(y1, y2, t2);\r
+ d2 = CubicBezier.derivativeCurveX( x1, x2, t2);\r
+ if (ABS(d2) < 1e-6) break;\r
+ t2 = t2 - x2 / d2;\r
+ };\r
+ if (x < t0) return CubicBezier.curveY(y1, y2, t0);\r
+ if (x > t1) return CubicBezier.curveY(y1, y2, t1);\r
+ \r
+ t2 = x;\r
+ \r
+ // Fallback to the bisection method for reliability.\r
+ while (t0 < t1){\r
+ x2 = CubicBezier.curveX(x1,x2,t2);\r
+ if (ABS(x2 - x) < epsilon) return CubicBezier.curveY(y1, y2, t2);\r
+ if (x > x2) t0 = t2;\r
+ else t1 = t2;\r
+ t2 = (t1 - t0) * .5 + t0;\r
+ };\r
+ // Failure\r
+ return CubicBezier.curveY(y1, y2, t2);\r
+\r
+};\r
+CubicBezier.curveX = function( x1, x2, t ){\r
+ var v = 1 - t;\r
+ return 3 * v * v * t * x1 + 3 * v * t * t * x2 + t * t * t;\r
+};\r
+CubicBezier.curveY = function( y1, y2, t ){\r
+ var v = 1 - t;\r
+ return 3 * v * v * t * y1 + 3 * v * t * t * y2 + t * t * t;\r
+};\r
+CubicBezier.derivativeCurveX = function( x1, x2, t ){\r
+ var v = 1 - t;\r
+ return 3 * (2 * (t - 1) * t + v * v) * x1 + 3 * (- t * t * t + 2 * v * t) * x2;\r
+};\r
+\r
+\r
+\r
+// export\r
+X.Dom.Node.prototype.anime = function(){\r
+ if( !this._anime ) this._anime = new AnimationQueue( this );\r
+ this._anime.init.apply( this._anime, arguments );\r
+ return this;\r
+};\r
+X.Dom.Node.prototype.stop = function(){\r
+ if( !this._anime ) return this;\r
+ this._anime.stop.apply( this._anime, arguments );\r
+ return this;\r
+};\r
+\r
+return {\r
+ X : 1,\r
+ Y : 2,\r
+ MOVE : 4,\r
+ WIDTH : 8,\r
+ HEIGHT : 16,\r
+ SIZE : 32,\r
+ OPACITY : 64\r
+};\r
+ \r
+})( window, document, navigator, Math );\r
+++ /dev/null
-X.View = {\r
- Event : {\r
- SYS_READY : 0,\r
- INIT : 1,\r
- ADDED : 2,\r
- CREATION_COMPLETE : 3,\r
- REMOVED : 4,\r
- \r
- VIEW_RESIZED : 5, // リサイズイベントのバブルアップは要素のレイアウトマネジャーでキャンセルされることも\r
- IN_VIEW : 6, // 要素が視界に入った\r
- OUT_VIEW : 7,\r
- \r
- POINTER_OUT : 8,\r
- POINTER_IN : 9,\r
- \r
- // FOCUS\r
- // DISABLED\r
- // ENABLED\r
- // BASE_FONT_SIZE_CHANGE\r
- \r
- /* -- Pointing Device Event -- */\r
- _START_POINTER : 9.5,\r
- \r
- CONTEXT_MENU : 10, // rightclick or longtouch or menukey or ctrl + click\r
- \r
- /* -- ここよりあとははノード上をバブルアップ -- */\r
- _START_BUBLEUP : 10.5, \r
-\r
- // raw pointing device event\r
- _POINTER_DOWN : 11,\r
- _POINTER_UP : 12,\r
- _POINTER_MOVE : 13,\r
- _POINTER_CANCEL : 14,\r
- _TOUCH_START : 15,\r
- _TOUCH_END : 16,\r
- _TOUCH_MOVE : 17,\r
- _TOUCH_CANCEL : 18,\r
- _MOUSE_DOWN : 19,\r
- _MOUSE_UP : 20,\r
- _MOUSE_MOVE : 21,\r
- _MOUSE_CANCEL : 22,\r
- \r
- SELECT : 23, // click or tap or enterkey\r
- FILE_DRAG : 24,\r
- \r
- /* -- ここより後は X.UI 用のイベント -- */\r
- _START_XUI_EVENT : 24.5,\r
- \r
- /* -- Mouse only -- */\r
- MOUSE_MOVE : 25,\r
- MOUSE_STAY : 26,\r
- MOUSE_STAY_END : 27,\r
- MOUSE_WHEEL : 28,\r
- \r
- /* -- Gesuture Event -- */\r
- HOLD : 33,\r
- HOLD_END : 34,\r
- TAP : 35,\r
- DOUBLE_TAP : 36,\r
- DRAG : 37,\r
- DRAG_START : 38,\r
- DRAG_END : 39,\r
- DRAG_UP : 40,\r
- DRAG_RIGHT : 41,\r
- DRAG_LEFT : 42,\r
- DRAG_DOWN : 43,\r
- SWIP : 44,\r
- SWIP_UP : 45,\r
- SWIP_RIGHT : 46,\r
- SWIP_LEFT : 47, \r
- SWIP_DOWN : 48,\r
- TRANSFORM : 49,\r
- TRANSFORM_START : 50,\r
- TRANSFORM_END : 51,\r
- PINCH : 52,\r
- PINCH_IN : 53,\r
- PINCH_OUT : 54,\r
- ROTATE : 55,\r
- \r
- _END_XUI_EVENT : 55.5,\r
- \r
- _END_POINTER : 55.5,\r
- /* -- Pointing Device Event -- */\r
- \r
- KEY_DOWN : 56,\r
- KEY_UP : 57,\r
- KEY_HOLD : 58,\r
- \r
- SCROLL : 59,\r
- SCROLL_START : 60,\r
- SCROLL_END : 61,\r
- SCROLL_BEFORE_START : 62, // cancelable\r
- SCROLL_BEFORE_END : 63,\r
- \r
- CHANGE : 64,\r
- SUBMIT : 65,\r
- \r
- IdToName : {},\r
- NameToID : {}\r
- }\r
-};\r
-/*\r
-X.View.Event.IdToName[ X.View.Event.MOUSE_MOVE ] = 'mousemove';\r
-X.View.Event.IdToName[ X.View.Event.MOUSE_STAY ] = 'stay';\r
-X.View.Event.IdToName[ X.View.Event.MOUSE_STAY_END ] = 'stayend';\r
-X.View.Event.IdToName[ X.View.Event.MOUSE_WHEEL ] = document.onmousewheel !== void 0 ? 'mousewheel' : 'DOMMouseScroll';\r
-X.View.Event.IdToName[ X.View.Event.HOLD ] = 'hold';\r
-X.View.Event.IdToName[ X.View.Event.HOLD_END ] = 'holdend';\r
-X.View.Event.IdToName[ X.View.Event.TAP ] = 'tap';\r
-X.View.Event.IdToName[ X.View.Event.DOUBLE_TAP ] = 'dobuletap';\r
-X.View.Event.IdToName[ X.View.Event.DRAG ] = 'drag';\r
-X.View.Event.IdToName[ X.View.Event.DRAG_START ] = 'dragstart';\r
-X.View.Event.IdToName[ X.View.Event.DRAG_END ] = 'dragend';\r
-X.View.Event.IdToName[ X.View.Event.DRAG_END ] = 'dragup';\r
-X.View.Event.IdToName[ X.View.Event.DRAG_END ] = 'dragleft';\r
-X.View.Event.IdToName[ X.View.Event.DRAG_END ] = 'dragright';\r
-X.View.Event.IdToName[ X.View.Event.DRAG_END ] = 'dragdown';\r
-X.View.Event.IdToName[ X.View.Event.SWIP ] = 'swip';\r
-X.View.Event.IdToName[ X.View.Event.SWIP_LEFT ] = 'swipleft';\r
-X.View.Event.IdToName[ X.View.Event.SWIP_RIGHT ] = 'swipright';\r
-X.View.Event.IdToName[ X.View.Event.SWIP_TOP ] = 'swiptop';\r
-X.View.Event.IdToName[ X.View.Event.SWIP_BOTTOM ] = 'swipbottom';\r
-X.View.Event.IdToName[ X.View.Event.TRANSFORM ] = 'transform';\r
-X.View.Event.IdToName[ X.View.Event.TRANSFORM_START ] = 'transformstart';\r
-X.View.Event.IdToName[ X.View.Event.TRANSFORM_END ] = 'transformend';\r
-X.View.Event.IdToName[ X.View.Event.PINCH ] = 'pinch';\r
-X.View.Event.IdToName[ X.View.Event.PINCH_IN ] = 'pinchin';\r
-X.View.Event.IdToName[ X.View.Event.PINCH_OUT ] = 'pinchout';\r
-X.View.Event.IdToName[ X.View.Event.ROTATE ] = 'rotate';\r
-*/\r
-\r
-if( navigator.msPointerEnabled || navigator.pointerEnabled ){\r
- X.View.Event.IdToName[ X.View.Event._POINTER_DOWN ] = navigator.msPointerEnabled ? 'MSPointerDown' : 'pointerdown';\r
- X.View.Event.IdToName[ X.View.Event._POINTER_UP ] = navigator.msPointerEnabled ? 'MSPointerUp' : 'pointerup';\r
- X.View.Event.IdToName[ X.View.Event._POINTER_MOVE ] = navigator.msPointerEnabled ? 'MSPointerMove' : 'pointermove';\r
- X.View.Event.IdToName[ X.View.Event._POINTER_CANCEL ] = navigator.msPointerEnabled ? 'MSPointerCancel' : 'pointercancel';\r
-};// else\r
-//if( window.ontouchstart !== void 0 /* || window.DocumentTouch && document instanceof DocumentTouch */ ){\r
- X.View.Event.IdToName[ X.View.Event._TOUCH_START ] = 'touchstart';\r
- X.View.Event.IdToName[ X.View.Event._TOUCH_END ] = 'touchend';\r
- X.View.Event.IdToName[ X.View.Event._TOUCH_MOVE ] = 'touchmove';\r
- X.View.Event.IdToName[ X.View.Event._TOUCH_CANCEL ] = 'touchcancel';\r
-//} else {\r
- // ToDo: cancel \r
- X.View.Event.IdToName[ X.View.Event._MOUSE_DOWN ] = 'mousedown';\r
- X.View.Event.IdToName[ X.View.Event._MOUSE_UP ] = 'mouseup';\r
- X.View.Event.IdToName[ X.View.Event._MOUSE_MOVE ] = 'mousemove';\r
- X.View.Event.IdToName[ X.View.Event._MOUSE_CANCEL ] = 'mouseleave'; // ??\r
-//};\r
-\r
-( function( IdToName, NameToID ){\r
- for( var id in IdToName ){\r
- NameToID[ IdToName[ id ] ] = id;\r
- };\r
-})( X.View.Event.IdToName, X.View.Event.NameToID );\r
-\r
-X.View = (function( window, document ){\r
- var view,\r
- lock = 0, w = 0, h = 0,\r
- resize, delayResize;\r
-\r
-/* -----------------------------------------------\r
- * Resize\r
- * uupaa.js\r
- */\r
- function unlock(){ lock = 0; };\r
- \r
- if( X.UA.IE ){\r
- resize = function(){\r
- var size, i, l;\r
- if( !lock++ ){\r
- size = X.View.getSize();\r
- if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED\r
- w = size[ 0 ];\r
- h = size[ 1 ];\r
- X.View.dispatch( { type : X.View.Event.VIEW_RESIZED, w : w, h : h } );\r
- };\r
- X.Timer.once( 1, unlock );// delay unlock\r
- };\r
- };\r
- } else {\r
- resize = function(){\r
- !lock++ && X.Timer.once( 40, delayResize );\r
- };\r
- delayResize = function(){\r
- var size = X.View.getSize(),\r
- i, l;\r
- if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED\r
- w = size[ 0 ];\r
- h = size[ 1 ];\r
- X.View.dispatch( { type : X.View.Event.VIEW_RESIZED, w : w, h : h } );\r
- };\r
- X.Timer.once( 1, unlock );\r
- };\r
- };\r
- \r
- X.View = X.Class._override(\r
- new X.EventDispatcher(),\r
- {\r
- ready : false,\r
- getPointerPosition : function(){\r
- \r
- },\r
- /* 要素が視界に入った http://remysharp.com/2009/01/26/element-in-view-event-plugin/ */\r
- inView : function( elm ){\r
- \r
- },\r
- _init : function(){\r
- var s, size, b, x;\r
- if( X.View.ready ) return X.Callback.UN_LISTEN;\r
- if( s = X.View._script ){\r
- s.parentNode.removeChild( s );\r
- s.onreadystatechange = new Function();\r
- s.onreadystatechange = null;\r
- delete X.View._script;\r
- };\r
- delete X.View._init;\r
- X.View.ready = true;\r
- \r
- /* if( X.UA.IE ) */ X.View._view = ( document.compatMode !== "CSS1Compat" ? document.body : document.documentElement );\r
- size = X.View.getSize();\r
- \r
- X.View.dispatch( { type : X.View.Event.SYS_READY, w : size[ 0 ], h : size[ 1 ] } );\r
- \r
- if( X.UA.IE && X.UA.IE < 9 ){\r
- X.Timer.add( 100, resize );\r
- if( 5 <= X.UA.IE ){\r
- b = document.body;\r
- b.appendChild( x = document.createElement( 'div' ) );\r
- x.style.cssText = 'width:1px;height:1px;line-height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';\r
- b.className += [ b.className === '' ? '' : ' ', 'ActiveX-', 1 < x.offsetHeight ? 'enabled' : 'disabled' ].join( '' );\r
- b.removeChild( x ); \r
- };\r
- } else {\r
- X.Dom.Event.add( window, 'resize', resize );\r
- }; \r
- \r
- return X.Callback.UN_LISTEN;\r
- },\r
- Event : X.View.Event,\r
- // _view : null, for ie\r
- getSize :\r
- X.UA.IE ?\r
- new Function( 'return [ X.View._view.clientWidth, X.View._view.clientHeight ]' ) :\r
- new Function( 'return [ window.innerWidth, window.innerHeight ]' ),\r
- getScrollPosition :\r
- window.pageXOffset ?\r
- new Function( 'return [window.pageXOffset,window.pageYOffset]' ) :\r
- window.scrollLeft ?\r
- new Function( 'return [window.scrollLeft,window.scrollTop]') :\r
- new Function( 'return [X.View._view.scrollLeft,X.View._view.scrollTop]' ),\r
- getDocumentSize : function(){\r
- return [\r
- X.View._view.scrollWidth || X.View._view.offsetWidth,\r
- X.View._view.scrollHeight || X.View._view.offsetHeight\r
- ];\r
- }\r
- }\r
- );\r
- \r
- return X.View;\r
-})( window, document );\r
-\r
-/* -----------------------------------------------\r
- * Document Ready\r
- * Dean Edwards/Matthias Miller/John Resig\r
- */\r
-/* for ie9+/Mozilla/Opera9 */\r
-if( document.addEventListener ){\r
- X.Dom.Event.add( document, 'DOMContentLoaded', X.View._init );\r
-} else\r
-if( 5 <= X.UA.IE && X.inHead ){\r
- // if this script in Head\r
- document.write( "<script id=__ie_onload defer src=javascript:void(0)><\/script>" );\r
- X.View._script = document.getElementById( "__ie_onload" );\r
- X.View._script.onreadystatechange = function(){\r
- this.readyState === 'complete' && X.View._init();\r
- };\r
-} else\r
-if( X.UA.WebKit ){ // sniff\r
- X.Timer.add( 10, function(){\r
- if( !X.View._init ) return X.Callback.UN_LISTEN;\r
- if( 'loaded|complete'.indexOf( document.readyState ) !== -1 ) return X.View._init();\r
- });\r
-};\r
-\r
-/* for other browsers */\r
-X.Dom.Event.add( window, 'load', X.View._init );\r
-\r
-//\r
-X.View.listen( X.View.Event.SYS_READY, function(e){ console.log( 'X.View DomReady ' + X.View.ready ) } );\r
-\r
-X.View.listen( X.View.Event.VIEW_RESIZED, function(e){ console.log( 'X.View VIEW_RESIZED ' + e.w + 'x' + e.h ) } );
\ No newline at end of file
function saveAttr( attrs, name, value ){
name = name.toLowerCase();
value = fillAttrs[ name ] === 1 ? name : value;
- var escape = value.indexOf( '"' ) !== -1 && value.split( '"' ).join( '\\"' ).split( '\\\\"' ).join( '\\"' );
attrs[ attrs.length ] = {
name : name,
value : value,
- escaped : escape || value
+ escaped :
+ value.indexOf( '"' ) !== -1 ?
+ value.split( '"' ).join( '\\"' ).split( '\\\\"' ).join( '\\"' ) :
+ value
};
};
};
};
};
- xnode._attrs = _attrs;
+ //xnode._attrs = _attrs;
+ xnode.attr( _attrs );
+ // xnode.css()
};
},
end : function(){
--- /dev/null
+X.UI = X.UI || {};
\ No newline at end of file
--- /dev/null
+\r
+X.UI.s = X.Dom.Event._LAST_EVENT;\r
+X.UI.i = 0;\r
+\r
+X.UI.Event = {\r
+\r
+ INIT : X.UI.s + ( ++X.UI.i ),\r
+ ADDED : X.UI.s + ( ++X.UI.i ),\r
+ CREATION_COMPLETE : X.UI.s + ( ++X.UI.i ),\r
+ REMOVED : X.UI.s + ( ++X.UI.i ),\r
+ \r
+ ENTER_VIEW : X.UI.s + ( ++X.UI.i ), // 要素が視界に入った\r
+ OUT_VIEW : X.UI.s + ( ++X.UI.i ),\r
+ \r
+ POINTER_OUT : X.UI.s + ( ++X.UI.i ),\r
+ POINTER_IN : X.UI.s + ( ++X.UI.i ),\r
+ \r
+ // FOCUS\r
+ // DISABLED\r
+ // ENABLED\r
+ // BASE_FONT_SIZE_CHANGE\r
+ \r
+/* -- Pointing Device Event -- */\r
+ _START_POINTER : X.UI.s + ( X.UI.i ) + 0.5,\r
+ \r
+ CONTEXT_MENU : X.UI.s + ( ++X.UI.i ), // rightclick or longtouch or menukey or ctrl + click\r
+ \r
+/* -- ここよりあとははノード上をバブルアップ -- */\r
+ _START_BUBLEUP : X.UI.s + ( X.UI.i ) + 0.5, \r
+\r
+ // raw pointing device event\r
+ _POINTER_DOWN : X.UI.s + ( ++X.UI.i ),\r
+ _POINTER_UP : X.UI.s + ( ++X.UI.i ),\r
+ _POINTER_MOVE : X.UI.s + ( ++X.UI.i ),\r
+ _POINTER_CANCEL : X.UI.s + ( ++X.UI.i ),\r
+ _TOUCH_START : X.UI.s + ( ++X.UI.i ),\r
+ _TOUCH_END : X.UI.s + ( ++X.UI.i ),\r
+ _TOUCH_MOVE : X.UI.s + ( ++X.UI.i ),\r
+ _TOUCH_CANCEL : X.UI.s + ( ++X.UI.i ),\r
+ _MOUSE_DOWN : X.UI.s + ( ++X.UI.i ),\r
+ _MOUSE_UP : X.UI.s + ( ++X.UI.i ),\r
+ _MOUSE_MOVE : X.UI.s + ( ++X.UI.i ),\r
+ _MOUSE_CANCEL : X.UI.s + ( ++X.UI.i ),\r
+ \r
+ SELECT : X.UI.s + ( ++X.UI.i ), // click or tap or enterkey\r
+ \r
+ FILE_DRAG : X.UI.s + ( ++X.UI.i ),\r
+ FILE_DRAG_START : X.UI.s + ( ++X.UI.i ),\r
+ FILE_DRAG_END : X.UI.s + ( ++X.UI.i ),\r
+ FILE_HOLD : X.UI.s + ( ++X.UI.i ),\r
+ FILE_HOLD_END : X.UI.s + ( ++X.UI.i ),\r
+ FILE_DROP_BEFORE : X.UI.s + ( ++X.UI.i ),\r
+ FILE_DROP : X.UI.s + ( ++X.UI.i ),\r
+ FILE_DROP_CANCEL : X.UI.s + ( ++X.UI.i ),\r
+\r
+/* -- ここより後は X.UI 用のイベント -- */\r
+ _START_XUI_EVENT : X.UI.s + ( X.UI.i ) + 0.5,\r
+\r
+/* -- Mouse & Floating touch(Xperia sola)?? -- */\r
+ HOVER_MOVE : X.UI.s + ( ++X.UI.i ),\r
+ HOVER_STAY : X.UI.s + ( ++X.UI.i ),\r
+ HOVER_STAY_END : X.UI.s + ( ++X.UI.i ),\r
+ WHEEL : X.UI.s + ( ++X.UI.i ),\r
+\r
+/* -- Gesuture Event -- */\r
+ HOLD : X.UI.s + ( ++X.UI.i ),\r
+ HOLD_END : X.UI.s + ( ++X.UI.i ),\r
+ TAP : X.UI.s + ( ++X.UI.i ),\r
+ DOUBLE_TAP : X.UI.s + ( ++X.UI.i ),\r
+ DRAG : X.UI.s + ( ++X.UI.i ),\r
+ DRAG_START : X.UI.s + ( ++X.UI.i ),\r
+ DRAG_END : X.UI.s + ( ++X.UI.i ),\r
+ DRAG_UP : X.UI.s + ( ++X.UI.i ),\r
+ DRAG_RIGHT : X.UI.s + ( ++X.UI.i ),\r
+ DRAG_LEFT : X.UI.s + ( ++X.UI.i ),\r
+ DRAG_DOWN : X.UI.s + ( ++X.UI.i ),\r
+ SWIP : X.UI.s + ( ++X.UI.i ),\r
+ SWIP_UP : X.UI.s + ( ++X.UI.i ),\r
+ SWIP_RIGHT : X.UI.s + ( ++X.UI.i ),\r
+ SWIP_LEFT : X.UI.s + ( ++X.UI.i ), \r
+ SWIP_DOWN : X.UI.s + ( ++X.UI.i ),\r
+ TRANSFORM : X.UI.s + ( ++X.UI.i ),\r
+ TRANSFORM_START : X.UI.s + ( ++X.UI.i ),\r
+ TRANSFORM_END : X.UI.s + ( ++X.UI.i ),\r
+ PINCH : X.UI.s + ( ++X.UI.i ),\r
+ PINCH_IN : X.UI.s + ( ++X.UI.i ),\r
+ PINCH_OUT : X.UI.s + ( ++X.UI.i ),\r
+ ROTATE : X.UI.s + ( ++X.UI.i ),\r
+ \r
+ _END_XUI_EVENT : X.UI.s + ( X.UI.i ) + 0.5,\r
+ \r
+ _END_POINTER : X.UI.s + ( X.UI.i ) + 0.5,\r
+/* -- Pointing Device Event -- */\r
+ \r
+ KEY_DOWN : X.UI.s + ( ++X.UI.i ),\r
+ KEY_UP : X.UI.s + ( ++X.UI.i ),\r
+ KEY_HOLD : X.UI.s + ( ++X.UI.i ),\r
+ \r
+ SCROLL_BEFORE_START : X.UI.s + ( ++X.UI.i ), // cancelable\r
+ SCROLL_START : X.UI.s + ( ++X.UI.i ),\r
+ SCROLL_BEFORE_MOVE : X.UI.s + ( ++X.UI.i ),\r
+ SCROLL_MOVE : X.UI.s + ( ++X.UI.i ),\r
+ SCROLL_END : X.UI.s + ( ++X.UI.i ),\r
+ SCROLL_REFRESH : X.UI.s + ( ++X.UI.i ),\r
+\r
+ ANIME_BEFORE_START : X.UI.s + ( ++X.UI.i ),\r
+ ANIME_START : X.UI.s + ( ++X.UI.i ),\r
+ ANIME : X.UI.s + ( ++X.UI.i ),\r
+ ANIME_END : X.UI.s + ( ++X.UI.i ),\r
+ ANIME_BEFORE_STOP : X.UI.s + ( ++X.UI.i ),\r
+ ANIME_STOP : X.UI.s + ( ++X.UI.i ),\r
+\r
+ CHANGE : X.UI.s + ( ++X.UI.i ),\r
+ SUBMIT : X.UI.s + ( ++X.UI.i ),\r
+ \r
+ IdToName : {},\r
+ NameToID : {}\r
+};\r
+\r
+delete X.UI.s;\r
+delete X.UI.i;\r
+\r
+if( navigator.msPointerEnabled || navigator.pointerEnabled ){\r
+ X.UI.Event.IdToName[ X.UI.Event._POINTER_DOWN ] = navigator.msPointerEnabled ? 'MSPointerDown' : 'pointerdown';\r
+ X.UI.Event.IdToName[ X.UI.Event._POINTER_UP ] = navigator.msPointerEnabled ? 'MSPointerUp' : 'pointerup';\r
+ X.UI.Event.IdToName[ X.UI.Event._POINTER_MOVE ] = navigator.msPointerEnabled ? 'MSPointerMove' : 'pointermove';\r
+ X.UI.Event.IdToName[ X.UI.Event._POINTER_CANCEL ] = navigator.msPointerEnabled ? 'MSPointerCancel' : 'pointercancel';\r
+};// else\r
+//if( window.ontouchstart !== void 0 /* || window.DocumentTouch && document instanceof DocumentTouch */ ){\r
+ X.UI.Event.IdToName[ X.UI.Event._TOUCH_START ] = 'touchstart';\r
+ X.UI.Event.IdToName[ X.UI.Event._TOUCH_END ] = 'touchend';\r
+ X.UI.Event.IdToName[ X.UI.Event._TOUCH_MOVE ] = 'touchmove';\r
+ X.UI.Event.IdToName[ X.UI.Event._TOUCH_CANCEL ] = 'touchcancel';\r
+//} else {\r
+ // ToDo: cancel \r
+ X.UI.Event.IdToName[ X.UI.Event._MOUSE_DOWN ] = 'mousedown';\r
+ X.UI.Event.IdToName[ X.UI.Event._MOUSE_UP ] = 'mouseup';\r
+ X.UI.Event.IdToName[ X.UI.Event._MOUSE_MOVE ] = 'mousemove';\r
+ X.UI.Event.IdToName[ X.UI.Event._MOUSE_CANCEL ] = 'mouseleave'; // ??\r
+//};\r
+\r
+( function( IdToName, NameToID ){\r
+ for( var id in IdToName ){\r
+ NameToID[ IdToName[ id ] ] = id;\r
+ };\r
+})( X.UI.Event.IdToName, X.UI.Event.NameToID );
\ No newline at end of file
* Jorik Tangelder <j.tangelder@gmail.com>, MIT license\r
**/\r
\r
-X.UI = X.UI || {};\r
-\r
( function( Math, window, document, undefined ){\r
\r
var ELEENT_LIST = [],\r
numTouches = 0,// count the total touches on the screen\r
pointerType, i, l, touches, ret, active, gesture, startEv,\r
deltaTime, deltaX, deltaY, velocity;\r
- console.log( '1 : ' + type + ' .............. ' + e.type )\r
+\r
if( !type ) return;\r
\r
if( e.pointerType ){\r
pointerType : type & POINTER_TYPE_MASK\r
};\r
\r
- console.log( '2 : ' + type + ' .............. ' + last_move_event.type )\r
-\r
if( type & START ){\r
- console.log( '2a : ' + type + ' .............. ' + last_move_event.type )\r
if( !this.enabled ) return;\r
// already busy with a Hammer.gesture detection on an element\r
- console.log( '2b : ' + type + ' .............. ' + last_move_event.type )\r
if( Detection.current ) return;\r
Detection.current = {\r
hammer : this, // reference to HammerInstance we're working for\r
active = hammer.activeGesture;\r
};\r
\r
- console.log( '3 : ' + type + ' .............. ' + last_move_event.type )\r
- \r
// ----------------------------------------------------------------------------------------------------------------\r
// ret = Detection.detect( e );\r
\r
startEvent : startEv\r
});\r
\r
-\r
+ // store as previous event event\r
+ Detection.current.lastEvent = e;\r
+ \r
// call Hammer.gesture handlers\r
for( i = 0, l = gestures.length; i < l; ++i ){\r
gesture = gestures[ i ];\r
if( Detection.stopped ) break;\r
- if( active[ gesture.name ] ) console.log( gesture.name );\r
+ //if( active[ gesture.name ] ) console.log( gesture.name );\r
// only when the instance options have enabled this gesture\r
active[ gesture.name ] &&\r
// if a handler returns false, we stop with the detection\r
( ret |= ( gesture.handler.call( gesture, e, hammer ) || X.Callback.NONE ) );\r
};\r
\r
- // store as previous event event\r
- Detection.current.lastEvent = e;\r
-\r
// endevent, but not the last touch, so dont stop\r
type & END && numTouches === 0 && Detection.stopDetect();\r
\r
};\r
\r
if( navigator.pointerEnabled || navigator.msPointerEnabled ){\r
- Hammer.EVENT_TYPES_START = [ X.View.Event._POINTER_DOWN ];\r
- types = [ X.View.Event._POINTER_MOVE, X.View.Event._POINTER_UP, X.View.Event._POINTER_CANCEL ];\r
+ Hammer.EVENT_TYPES_START = [ X.UI.Event._POINTER_DOWN ];\r
+ types = [ X.UI.Event._POINTER_MOVE, X.UI.Event._POINTER_UP, X.UI.Event._POINTER_CANCEL ];\r
} else\r
if( window.ontouchstart !== void 0 ){\r
- Hammer.EVENT_TYPES_START = [ X.View.Event._TOUCH_START ];\r
- types = [ X.View.Event._TOUCH_MOVE, X.View.Event._MOUSE_MOVE, X.View.Event._TOUCH_END, X.View.Event._TOUCH_CANCEL ];\r
+ Hammer.EVENT_TYPES_START = [ X.UI.Event._TOUCH_START ];\r
+ types = [ X.UI.Event._TOUCH_MOVE, X.UI.Event._MOUSE_MOVE, X.UI.Event._TOUCH_END, X.UI.Event._TOUCH_CANCEL ];\r
} else {\r
- Hammer.EVENT_TYPES_START = [ X.View.Event._MOUSE_DOWN ];\r
- types = [ X.View.Event._MOUSE_MOVE, X.View.Event._MOUSE_UP, X.View.Event._MOUSE_CANCEL ];\r
+ Hammer.EVENT_TYPES_START = [ X.UI.Event._MOUSE_DOWN ];\r
+ types = [ X.UI.Event._MOUSE_MOVE, X.UI.Event._MOUSE_UP, X.UI.Event._MOUSE_CANCEL ];\r
};\r
\r
// Add touch events on the document\r
EVENT_TYPE_MASK = START | MOVE | END,\r
POINTER_TYPE_MASK = POINTER | TOUCH | MOUSE | PEN,\r
IdToGestureID = {};\r
- IdToGestureID[ X.View.Event._POINTER_DOWN ] = START;\r
- IdToGestureID[ X.View.Event._POINTER_MOVE ] = MOVE;\r
- IdToGestureID[ X.View.Event._POINTER_UP ] = END;\r
- IdToGestureID[ X.View.Event._POINTER_CANCEL ] = END;\r
+ IdToGestureID[ X.UI.Event._POINTER_DOWN ] = START;\r
+ IdToGestureID[ X.UI.Event._POINTER_MOVE ] = MOVE;\r
+ IdToGestureID[ X.UI.Event._POINTER_UP ] = END;\r
+ IdToGestureID[ X.UI.Event._POINTER_CANCEL ] = END;\r
\r
- IdToGestureID[ X.View.Event._TOUCH_START ] = START;\r
- IdToGestureID[ X.View.Event._TOUCH_MOVE ] = MOVE;\r
- IdToGestureID[ X.View.Event._TOUCH_END ] = END;\r
- IdToGestureID[ X.View.Event._TOUCH_CANCEL ] = END;\r
+ IdToGestureID[ X.UI.Event._TOUCH_START ] = START;\r
+ IdToGestureID[ X.UI.Event._TOUCH_MOVE ] = MOVE;\r
+ IdToGestureID[ X.UI.Event._TOUCH_END ] = END;\r
+ IdToGestureID[ X.UI.Event._TOUCH_CANCEL ] = END;\r
\r
- IdToGestureID[ X.View.Event._MOUSE_DOWN ] = START;\r
- IdToGestureID[ X.View.Event._MOUSE_MOVE ] = MOVE;\r
- IdToGestureID[ X.View.Event._MOUSE_UP ] = END;\r
- IdToGestureID[ X.View.Event._MOUSE_CANCEL ] = END;\r
+ IdToGestureID[ X.UI.Event._MOUSE_DOWN ] = START;\r
+ IdToGestureID[ X.UI.Event._MOUSE_MOVE ] = MOVE;\r
+ IdToGestureID[ X.UI.Event._MOUSE_UP ] = END;\r
+ IdToGestureID[ X.UI.Event._MOUSE_CANCEL ] = END;\r
\r
Utils = {\r
\r
Gestures.Hold = {\r
name : 'hold',\r
index : 10,\r
- startID : X.View.Event.HOLD,\r
- endID : X.View.Event.HOLD_END,\r
+ startID : X.UI.Event.HOLD,\r
+ endID : X.UI.Event.HOLD_END,\r
defaults : {\r
hold_timeout : 500,\r
hold_threshold : 1\r
this.timerID && X.Timer.remove( this.timerID );\r
if( Gestures.Hold.holding === true ){\r
Gestures.Hold.holding = false;\r
- return hammer.trigger( X.View.Event.HOLD_END, e );\r
+ return hammer.trigger( X.UI.Event.HOLD_END, e );\r
};\r
break;\r
};\r
},\r
_onTimer : function( e, hammer ){\r
if( Detection.current.name === 'hold' ){\r
- hammer.trigger( X.View.Event.HOLD, e );\r
+ hammer.trigger( X.UI.Event.HOLD, e );\r
Gestures.Hold.holding = true;\r
};\r
}\r
Gestures.Tap = {\r
name : 'tap',\r
index : 100,\r
- startID : X.View.Event.TAP,\r
- endID : X.View.Event.DOUBLE_TAP,\r
+ startID : X.UI.Event.TAP,\r
+ endID : X.UI.Event.DOUBLE_TAP,\r
defaults : {\r
tap_max_touchtime : 250,\r
tap_max_distance : 10,\r
\r
// check if double tap\r
if( prev && prev.name === 'tap' && ( e.timeStamp - prev.lastEvent.timeStamp ) < hammer.options.doubletap_interval && e.distance < hammer.options.doubletap_distance ){\r
- return hammer.trigger( X.View.Event.DOUBLE_TAP, e );\r
+ return hammer.trigger( X.UI.Event.DOUBLE_TAP, e );\r
} else\r
// do a single tap\r
if( hammer.options.tap_always ){\r
Detection.current.name = 'tap';\r
- return hammer.trigger( X.View.Event.TAP, e );\r
+ return hammer.trigger( X.UI.Event.TAP, e );\r
};\r
};\r
}\r
Gestures.Swipe = {\r
name : 'swipe',\r
index : 40,\r
- startID : X.View.Event.SWIP,\r
- endID : X.View.Event.SWIP_DOWN,\r
+ startID : X.UI.Event.SWIP,\r
+ endID : X.UI.Event.SWIP_DOWN,\r
defaults : {\r
// set 0 for unlimited, but this can conflict with transform\r
swipe_max_touches : 1,\r
// or we can be already in dragging\r
if( hammer.options.swipe_velocity < e.velocityX || hammer.options.swipe_velocity < e.velocityY ){\r
// trigger swipe events\r
- hammer.trigger( X.View.Event.SWIP, e );\r
+ hammer.trigger( X.UI.Event.SWIP, e );\r
hammer.trigger(\r
e.direction === Hammer.DIRECTION_UP ?\r
- X.View.Event.SWIP_UP :\r
+ X.UI.Event.SWIP_UP :\r
e.direction === Hammer.DIRECTION_DOWN ?\r
- X.View.Event.SWIP_DOWN :\r
+ X.UI.Event.SWIP_DOWN :\r
e.direction === Hammer.DIRECTION_LEFT ?\r
- X.View.Event.SWIP_LEFT :\r
- X.View.Event.SWIP_RIGHT,\r
+ X.UI.Event.SWIP_LEFT :\r
+ X.UI.Event.SWIP_RIGHT,\r
e\r
);\r
};\r
Gestures.Drag = {\r
name : 'drag',\r
index : 50,\r
- startID : X.View.Event.DRAG,\r
- endID : X.View.Event.DRAG_DOWN,\r
+ startID : X.UI.Event.DRAG,\r
+ endID : X.UI.Event.DRAG_DOWN,\r
defaults : {\r
drag_min_distance : 10,\r
// set 0 for unlimited, but this can conflict with transform\r
// current gesture isnt drag, but dragged is true\r
// this means an other gesture is busy. now call dragend\r
if( Detection.current.name !== this.name && this.triggered ){\r
- hammer.trigger( X.View.Event.DRAG_END, e );\r
+ hammer.trigger( X.UI.Event.DRAG_END, e );\r
this.triggered = false;\r
return;\r
};\r
\r
// first time, trigger dragstart event\r
if( !this.triggered ){\r
- hammer.trigger( X.View.Event.DRAG_START, e );\r
+ hammer.trigger( X.UI.Event.DRAG_START, e );\r
this.triggered = true;\r
};\r
\r
// trigger normal event\r
- hammer.trigger( X.View.Event.DRAG, e );\r
+ hammer.trigger( X.UI.Event.DRAG, e );\r
\r
// direction event, like dragdown\r
hammer.trigger(\r
e.direction === Hammer.DIRECTION_UP ?\r
- X.View.Event.DRAG_UP :\r
+ X.UI.Event.DRAG_UP :\r
e.direction === Hammer.DIRECTION_DOWN ?\r
- X.View.Event.DRAG_DOWN :\r
+ X.UI.Event.DRAG_DOWN :\r
e.direction === Hammer.DIRECTION_LEFT ?\r
- X.View.Event.DRAG_LEFT :\r
- X.View.Event.DRAG_RIGHT,\r
+ X.UI.Event.DRAG_LEFT :\r
+ X.UI.Event.DRAG_RIGHT,\r
e\r
);\r
\r
\r
case END:\r
// trigger dragend\r
- this.triggered && hammer.trigger( X.View.Event.DRAG_END, e );\r
+ this.triggered && hammer.trigger( X.UI.Event.DRAG_END, e );\r
this.triggered = false;\r
break;\r
}\r
Gestures.Transform = {\r
name : 'transform',\r
index : 45,\r
- startID : X.View.Event.TRANSFORM,\r
- endID : X.View.Event.ROTATE,\r
+ startID : X.UI.Event.TRANSFORM,\r
+ endID : X.UI.Event.ROTATE,\r
defaults : {\r
// factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1\r
transform_min_scale : 0.01,\r
// current gesture isnt drag, but dragged is true\r
// this means an other gesture is busy. now call dragend\r
if( Detection.current.name !== this.name && this.triggered ){\r
- hammer.trigger( X.View.Event.TRANSFORM_END, e );\r
+ hammer.trigger( X.UI.Event.TRANSFORM_END, e );\r
this.triggered = false;\r
return;\r
};\r
\r
// first time, trigger dragstart event\r
if( !this.triggered ){\r
- hammer.trigger( X.View.Event.TRANSFORM_START, e );\r
+ hammer.trigger( X.UI.Event.TRANSFORM_START, e );\r
this.triggered = true;\r
};\r
\r
- hammer.trigger( X.View.Event.TRANSFORM, e );\r
+ hammer.trigger( X.UI.Event.TRANSFORM, e );\r
// basic transform event\r
\r
// trigger rotate event\r
- hammer.options.transform_min_rotation < rotation_threshold && hammer.trigger( X.View.Event.ROTATE, e );\r
+ hammer.options.transform_min_rotation < rotation_threshold && hammer.trigger( X.UI.Event.ROTATE, e );\r
\r
// trigger pinch event\r
if( scale_threshold > hammer.options.transform_min_scale ){\r
- hammer.trigger( X.View.Event.PINCH, e );\r
- hammer.trigger( e.scale < 1 ? X.View.Event.PINCH_IN : X.View.Event.PINCH_OUT, e );\r
+ hammer.trigger( X.UI.Event.PINCH, e );\r
+ hammer.trigger( e.scale < 1 ? X.UI.Event.PINCH_IN : X.UI.Event.PINCH_OUT, e );\r
};\r
break;\r
\r
case END:\r
// trigger dragend\r
- this.triggered && hammer.trigger( X.View.Event.TRANSFORM_END, e );\r
+ this.triggered && hammer.trigger( X.UI.Event.TRANSFORM_END, e );\r
this.triggered = false;\r
break;\r
};\r
this.styleData.initialize();\r
\r
this.phase = 1;\r
- this.User.dispatch( { type : X.View.Event.INIT } );\r
+ this.User.dispatch( { type : X.UI.Event.INIT } );\r
},\r
\r
addToParent : function( parentElement ){\r
};\r
\r
this.phase = 2;\r
- this.User.dispatch( { type : X.View.Event.ADDED } );\r
+ this.User.dispatch( { type : X.UI.Event.ADDED } );\r
},\r
\r
/* Rellay */\r
this.styleData.afterAddition();\r
\r
this.phase = 3;\r
- this.User.dispatch( { type : X.View.Event.CREATION_COMPLETE } );\r
+ this.User.dispatch( { type : X.UI.Event.CREATION_COMPLETE } );\r
},\r
\r
calculate : function( x, y, w, h ){\r
r : 0, // right\r
absoluteX : 0,\r
absoluteY : 0,\r
- _scrollX : 0,\r
- _scrollY : 0,\r
+ //_scrollX : 0,\r
+ //_scrollY : 0,\r
scrollingX : 0,\r
scrollingY : 0,\r
_cursor : '',\r
_content : null,\r
updateContent : false,\r
\r
- elmWrap : null,\r
- elmExtend : null,\r
- textNode : null,\r
boxWidth : 0,\r
boxHeight : 0,\r
contentL : 0,\r
this.styleData.initialize();\r
\r
this.phase = 1;\r
- this.User.dispatch( { type : X.View.Event.INIT } );\r
+ this.User.dispatch( { type : X.UI.Event.INIT } );\r
},\r
\r
addToParent : function( parentElement ){\r
parentElement && parentElement.appendChild( this.rawElement );\r
\r
this.phase = 2;\r
- this.User.dispatch( { type : X.View.Event.ADDED } );\r
+ this.User.dispatch( { type : X.UI.Event.ADDED } );\r
},\r
\r
/* Rellay\r
this.styleData.afterAddition();\r
\r
this.phase = 3;\r
- this.User.dispatch( { type : X.View.Event.CREATION_COMPLETE } );\r
+ this.User.dispatch( { type : X.UI.Event.CREATION_COMPLETE } );\r
}, */\r
\r
creationComplete : function(){\r
delete this.hitChildData;\r
x -= this.x;\r
y -= this.y;\r
+ // この部分 Box に移動\r
if( nodes = this.nodes ){\r
_x = x - this.scrollingX;\r
_y = y - this.scrollingY;\r
},\r
\r
dispatch : function( e ){\r
- var xve = X.View.Event,\r
+ var xve = X.UI.Event,\r
ret = X.EventDispatcher.prototype.dispatch.call( this.User, e ),\r
type = e.type;\r
- if( ret & X.Callback.MONOPOLY && !this.hitChildData && ( xve.POINTER_MOVE === type || type === xve.FILE_DRAG ) ){\r
+ if( ret & X.Callback.MONOPOLY && !this.hitChildData && ( xve._POINTER_MOVE === type || xve.type._MOUSE_MOVE === type || xve.FILE_DRAG === type ) ){\r
this.rootData.monopolyNodeData = this;\r
return ret;\r
};\r
\r
content : function( v ){\r
if( Type.isString( v ) === true ){\r
- if( !this.textNode || this.textNode.data !== v ){\r
+ if( !this.rawText || this.rawText.data !== v ){\r
this._content = v;\r
this.updateContent = true;\r
};\r
return this.User;\r
} else\r
if( v === null ){\r
- if( this._content !== v && this.textNode ){\r
+ if( this._content !== v && this.rawText ){\r
this.updateContent = true;\r
};\r
delete this._content;\r
return this.User;\r
};\r
if( this._content || this._content === null ) return this._content;\r
- if( this.textNode ) return this.textNode.data;\r
+ if( this.rawText ) return this.rawText.data;\r
return null;\r
},\r
paint : function( dirty ){\r
var content = this._content,\r
style = this.styleData; \r
if( this.updateContent === true || ( style && style.hasPaint === true ) ){\r
- if( !this.elmWrap ){\r
- this.elmWrap = DOM.createDiv();\r
+ if( !this.rawElement ){\r
+ this.rawElement = DOM.createDiv();\r
this.__parent.addDisplayElement( this );\r
};\r
dirty !== 0 && this.commitStyle(); \r
if( this.updateContent === true ){\r
if( content !== null ){\r
- if( !this.textNode ){\r
- this.textNode = DOM.cerateText();\r
- this.elmWrap.appendChild( this.textNode );\r
+ if( !this.rawText ){\r
+ this.rawText = DOM.cerateText();\r
+ this.rawElement.appendChild( this.rawText );\r
};\r
- this.textNode.data = content; \r
+ this.rawText.data = content; \r
} else\r
- if( this.textNode ){\r
- DOM.correct( this.textNode );\r
- delete this.textNode;\r
+ if( this.rawText ){\r
+ DOM.correct( this.rawText );\r
+ delete this.rawText;\r
delete this.contentWidth;\r
delete this.conetntHeight;\r
delete this.scrollWidth; \r
}; \r
};\r
} else\r
- if( this.elmWrap && content === null && ( !style || style.hasPaint === false ) ){\r
+ if( this.rawElement && content === null && ( !style || style.hasPaint === false ) ){\r
this.__parent.removeDisplayElement( this );\r
- DOM.correct( this.elmWrap );\r
+ DOM.correct( this.rawElement );\r
delete this.contentWidth;\r
delete this.conetntHeight;\r
};\r
},\r
commitStyle : function(){\r
var css;\r
- if( this.elmWrap ){\r
+ if( this.rawElement ){\r
css = this.styleData ? this.styleData.cssText( this ) : '';\r
if( this.contentWidth !== AUTO ) css += 'width:' + this.contentWidth + 'px';\r
if( this.contentHeight !== AUTO ) css += 'height:' + this.contentHeight + 'px';\r
- this.elmWrap.style.cssText = css;\r
+ this.rawElement.style.cssText = css;\r
};\r
},\r
/*\r
* コンテンツの高さの再取得が必要\r
* 必要でない\r
*/ \r
- if( this.textNode ){\r
+ if( this.rawText ){\r
if( w === AUTO ){\r
w = this.contentWidth = this.elm.offsetWidth;\r
this.scrollWidth = w + this.contentL + this.contentR;\r
},\r
listen : function( type, arg1, arg2 ){\r
var root, data, events, counter;\r
- if( X.View.Event._START_POINTER <= type && type <= X.View.Event._END_POINTER ){\r
+ if( X.UI.Event._START_POINTER <= type && type <= X.UI.Event._END_POINTER ){\r
data = X.Class._getPrivate( this );\r
if( data.phase < 3 ){\r
if( !( events = data.reserveEvents ) ) data.reserveEvents = events = [];\r
events[ events.length ] = [ type, arg1, arg2 ];\r
return this;\r
};\r
- if( X.View.Event._START_XUI_EVENT < type && type < X.View.Event._END_XUI_EVENT ){\r
+ if( X.UI.Event._START_XUI_EVENT < type && type < X.UI.Event._END_XUI_EVENT ){\r
if( !this.gesture ){\r
this.gesture = new X.UI.Gesture( data.root, this, type );\r
} else {\r
++counter[ type ];\r
} else {\r
counter[ type ] = 1; \r
- X.Dom.Event.add( root.elmMouseCatch, X.View.Event.IdToName[ type ], eventRellay );\r
+ X.Dom.Event.add( root.elmMouseCatch, X.UI.Event.IdToName[ type ], eventRellay );\r
};\r
};\r
};\r
- return this.Super.listen.apply( this, arguments );\r
+ return X.EventDispatcher.prototype.listen.apply( this, arguments );\r
},\r
unlisten : function( type, arg1, arg2 ){\r
var root, data, events, i, ev, counter;\r
- if( X.View.Event._START_POINTER <= type && type <= X.View.Event._END_POINTER ){\r
+ if( X.UI.Event._START_POINTER <= type && type <= X.UI.Event._END_POINTER ){\r
data = X.Class._getPrivate( this );\r
if( data.phase < 3 ){\r
if( !( events = data.reserveEvents ) ) return this;\r
return this;\r
};\r
\r
- if( X.View.Event._START_XUI_EVENT < type && type < X.View.Event._END_XUI_EVENT ){\r
+ if( X.UI.Event._START_XUI_EVENT < type && type < X.UI.Event._END_XUI_EVENT ){\r
this.gesture && this.gesture.unlisten( type );\r
} else {\r
root = data.rootData;\r
if( !counter[ type ] ) return this;\r
--counter[ type ];\r
if( counter[ type ] === 0 ){\r
- X.Dom.Event.remove( root.elmMouseCatch, X.View.Event.IdToName[ type ], eventRellay );\r
+ X.Dom.Event.remove( root.elmMouseCatch, X.UI.Event.IdToName[ type ], eventRellay );\r
delete counter[ type ];\r
};\r
};\r
// x
if( isFinite( x ) === true ){
style.left = x + 'px';
- obj.left = x
+ obj.left = x;
} else
if( isString( x ) === true ){
style.left = obj.left = x;
combi = !!( type & X.Css.Type.COMBI ),
data = this.data,
_v = -1,
- i, l, nodes, root;
+ i, l, nodes, root, roots;
/*
* Setter
*/
function eventRellay( e ){
var x = e.clientX,
y = e.clientY,
- type = X.View.Event.NameToID[ e.type ],
+ type = X.UI.Event.NameToID[ e.type ],
i = 0,
data = currentRootData,
sysOnly = false,
list, ret, parent;
- if( type !== X.View.Event.POINTER_MOVE ){
- console.log( type + ' x:' + x + ', y:' + y )
+ if( type !== X.UI.Event._POINTER_MOVE && type !== X.UI.Event._MOUSE_MOVE ){
+ //console.log( type + ' x:' + x + ', y:' + y )
};
e.type = type;
if( parent !== currentRootData ){
data.isHover === true && data.styleData.removeName( data.hoverStyleName );
delete data.isHover;
- data.events && data.events[ X.View.Event.POINTER_OUT ] && data.dispatch( e, X.View.Event.POINTER_OUT, false ); // new Event
+ data.events && data.events[ X.UI.Event.POINTER_OUT ] && data.dispatch( e, X.UI.Event.POINTER_OUT, false ); // new Event
delete data.hitSelf;
list.splice( i, 1 );
continue;
data.isHover = true;
};
if( data.hitSelf === false ){
- data.events && data.events[ X.View.Event.POINTER_IN ] && data.dispatch( e, X.View.Event.POINTER_IN, true ); // new Event
+ data.events && data.events[ X.UI.Event.POINTER_IN ] && data.dispatch( e, X.UI.Event.POINTER_IN, true ); // new Event
data.hitSelf = true;
};
};
Constructor : function( layout, args ){
this.SuperConstructor( layout, args );
- if( X.View.ready === true ){
+ if( X.Dom.ready === true ){
X.Timer.once( 0, this, this.start );
} else {
- X.View.listenOnce( X.View.Event.SYS_READY, this, this.start );
+ //X.Dom.listenOnce( X.Dom.Event.XDOM_READY, this, this.start );
+ X.Dom.Event.add( window, 'load', this, this.start );
};
this.hoverList = [];
this.elmMouseCatch = elm;
// hover や rollover rollout のための move イベントの追加
- // X.View.activate, X.View.deactivate ?
+ // X.Dom.activate, X.Dom.deactivate ?
// mouseout, mouseover
if( navigator.msPointerEnabled || navigator.pointerEnabled ){
- X.Dom.Event.add( elm, X.View.Event.IdToName[ X.View.Event._POINTER_MOVE ], eventRellay );
+ X.Dom.Event.add( elm, X.UI.Event.IdToName[ X.UI.Event._POINTER_MOVE ], eventRellay );
+ if( counter[ X.UI.Event._POINTER_MOVE ] ){
+ ++counter[ X.UI.Event._POINTER_MOVE ];
+ } else {
+ counter[ X.UI.Event._POINTER_MOVE ] = 1;
+ };
} else {
- X.Dom.Event.add( elm, X.View.Event.IdToName[ X.View.Event._MOUSE_MOVE ], eventRellay );
+ X.Dom.Event.add( elm, X.UI.Event.IdToName[ X.UI.Event._MOUSE_MOVE ], eventRellay );
+ if( counter[ X.UI.Event._MOUSE_MOVE ] ){
+ ++counter[ X.UI.Event._MOUSE_MOVE ];
+ } else {
+ counter[ X.UI.Event._MOUSE_MOVE ] = 1;
+ };
};
-
-
- if( counter[ X.View.Event.POINTER_MOVE ] ){
- ++counter[ X.View.Event.POINTER_MOVE ];
- } else {
- counter[ X.View.Event.POINTER_MOVE ] = 1;
- };
-
X.Timer.once( 0, this, this.afterAddToView );
},
afterAddToView : function(){
doFirstCalc : function(){
this.doCalculate();
- X.View.listen( X.View.Event.VIEW_RESIZED, this, this.doCalculate );
+ X.Dom.listen( X.Dom.Event.VIEW_RESIZED, this, this.doCalculate );
},
reserveCalc : function(){
if( this.calcReserved === false ){
doCalculate : function( e ){
var size, w, h;
if( !e ){
- size = X.View.getSize();
+ size = X.Dom.getSize();
w = size[ 0 ];
h = size[ 1 ];
} else {
beforeRemove : function(){
if( navigator.msPointerEnabled || navigator.pointerEnabled ){
- X.Dom.Event.remove( this.elmMouseCatch, X.View.Event.IdToName[ X.View.Event._POINTER_MOVE ], eventRellay );
+ X.Dom.Event.remove( this.elmMouseCatch, X.UI.Event.IdToName[ X.UI.Event._POINTER_MOVE ], eventRellay );
} else {
// Android で mouse が有効の場合がある
- X.Dom.Event.remove( this.elmMouseCatch, X.View.Event.IdToName[ X.View.Event._MOUSE_MOVE ], eventRellay );
+ X.Dom.Event.remove( this.elmMouseCatch, X.UI.Event.IdToName[ X.UI.Event._MOUSE_MOVE ], eventRellay );
};
}
}
this.styleData.afterAddition();\r
\r
this.phase = 3;\r
- this.User.dispatch( { type : X.View.Event.CREATION_COMPLETE } );\r
+ this.User.dispatch( { type : X.UI.Event.CREATION_COMPLETE } );\r
}\r
}\r
);\r