OSDN Git Service

Version 0.6.37, X.Dom.Anime removed.
authoritozyun <itozyun@user.sourceforge.jp>
Tue, 22 Apr 2014 14:31:31 +0000 (23:31 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Tue, 22 Apr 2014 14:31:31 +0000 (23:31 +0900)
0.6.x/js/core/04_XClass.js
0.6.x/js/dom/10_XDom.js
0.6.x/js/dom/11_XDomNode.js
0.6.x/js/dom/12_XDomEvent.js
0.6.x/js/dom/13_XDomBoxModel.js
0.6.x/js/dom/15_XDomStyle.js
0.6.x/js/dom/16_XDomAnime.js [deleted file]
0.6.x/js/dom/18_XDomQuery.js
0.6.x/js/dom/19_XDomParser.js
0.6.x/js/dom/22_XDomBuilder.js

index 9fc4fd3..e87daa3 100644 (file)
@@ -74,7 +74,7 @@ X.Class = ( function(){
                        def = X.Class._getClassDef( klass );\r
                        def.Super = Super;\r
                        def.SuperProto = Super.prototype;\r
-                       def.SuperConstructor = superDef[ CONSTRUCTOR ];\r
+                       def.SuperConstructor = superDef[ CONSTRUCTOR ] || superDef.SuperConstructor;\r
                };\r
                \r
                return klass;\r
@@ -162,7 +162,10 @@ X.Class = ( function(){
                        instance.Super = def.SuperProto;\r
                        instance.SuperConstructor = superConstructor;\r
                };\r
-               def[ CONSTRUCTOR ] && def[ CONSTRUCTOR ].apply( instance, args );\r
+               def[ CONSTRUCTOR ] ?\r
+                       def[ CONSTRUCTOR ].apply( instance, args ) :\r
+               def.SuperConstructor &&\r
+                       def.SuperConstructor.apply( instance, args );\r
                return instance;\r
        };\r
        \r
index fbcfecb..98ae022 100644 (file)
@@ -39,7 +39,7 @@ X.Dom = X.Class._override(
                                (function( e ){\r
                                        !X.Dom._lock && ( X.Dom._lock = true ) && X.Timer.once( 100, X.Dom._detectFinishResizing );\r
                                        return X.Callback.PREVENT_DEFAULT | X.Callback.STOP_PROPAGATION;\r
-                               }),     \r
+                               }),\r
                \r
                _detectFinishResizing : function (){\r
                        var size = X.Dom._getSize();\r
@@ -70,9 +70,9 @@ X.Dom = X.Class._override(
 \r
                        h = Node._html = document.documentElement ?\r
                                        new Node( document.documentElement ) :\r
-                               document.getElementsByTagName ?\r
+                               X.Dom.DOM_W3C ?\r
                                        new Node( document.getElementsByTagName( 'html' )[ 0 ] ) :\r
-                               document.all ?\r
+                               X.Dom.DOM_IE4 ?\r
                                        new Node( document.all.tags( 'html' )[ 0 ] ) :\r
                                        null;\r
                \r
@@ -240,7 +240,21 @@ if( !X.UA.IE || 9 <= X.UA.IE ){
        };\r
 };\r
 \r
-\r
+if( document.getElementById && ( !X.UA.IEMobile || 5 <= X.UA.IE ) ){\r
+       X.Dom.DOM_W3C = true;\r
+       if( document.addEventListener ){\r
+               X.Dom.EVENT_W3C = true;\r
+       } else\r
+       if( document.attachEvent ){\r
+               X.Dom.EVENT_IE = true;\r
+       } else {\r
+               X.Dom.EVENT_DOM0 = true;\r
+       };\r
+} else\r
+if( document.all ){\r
+       X.Dom.DOM_IE4    = true;\r
+       X.Dom.EVENT_DOM0 = true;\r
+};\r
 \r
 X.Dom.cleanupTagNames = {\r
                noscript : 1,\r
index f544a3c..332a005 100644 (file)
@@ -248,7 +248,7 @@ Node._systemNode = null;// = Node._chashe[ ? ]
 \r
 Node._reserveRemoval = [];\r
 \r
-if( !document.getElementById && document.all ){\r
+if( X.Dom.DOM_IE4 ){\r
        Node.prototype._ie4getRawNode = function(){\r
                var elm = this._rawNode;\r
                return elm ||\r
@@ -351,10 +351,10 @@ Node.prototype.append = function( v ){
                        if( v._xnodeType !== 1 && v._xnodeType !== 3 ) return this;\r
                        // 親の xnodes から v を消す\r
                        if( v.parent ){\r
-                               //if( document.getElementById ){\r
+                               //if( X.Dom.DOM_W3C ){\r
                                //      v.parent._xnodes.splice( v.parent._xnodes.indexOf( v ), 1 );\r
                                //} else\r
-                               //if( document.all ){\r
+                               //if( X.Dom.DOM_IE4 ){\r
                                        v.remove();\r
                                //} else {\r
                                        \r
@@ -415,10 +415,10 @@ Node.prototype.appendAt = function( start, v ){
                        if( v._xnodeType !== 1 && v._xnodeType !== 3 ) return this;\r
                        // 親の xnodes から v を消す\r
                        if( v.parent ){\r
-                               //if( document.getElementById ){\r
+                               //if( X.Dom.DOM_W3C ){\r
                                //      v.parent._xnodes.splice( v.parent._xnodes.indexOf( v ), 1 );\r
                                //} else\r
-                               //if( document.all ){\r
+                               //if( X.Dom.DOM_IE4 ){\r
                                        v.remove();\r
                                //} else {\r
                                        \r
@@ -848,7 +848,7 @@ Node.prototype._startUpdate = function(){
 };\r
 \r
 Node.prototype._commitUpdate =\r
-       document.getElementById ?\r
+       X.Dom.DOM_W3C ?\r
                ( function( parentElement, nextElement ){\r
                        var elm = this._rawNode,\r
                                xnodes, l, i, frg, next, k, v;\r
@@ -891,7 +891,7 @@ Node.prototype._commitUpdate =
                        };\r
                        return elm;\r
                }) :\r
-       document.all ? \r
+       X.Dom.DOM_IE4 ? \r
                ( function( parentElement, prevElement ){\r
                        var elm    = this._rawNode || this._ie4getRawNode(),\r
                                xnodes, l, i, html, text, prev;\r
@@ -939,7 +939,7 @@ Node.prototype._commitUpdate =
                (function(){});\r
 \r
 Node.prototype._updateRawNode =\r
-       document.getElementById ?\r
+       X.Dom.DOM_W3C ?\r
                ( function( elm ){\r
                        var attrs, rename, k, v;\r
 \r
@@ -1009,7 +1009,7 @@ Node.prototype._updateRawNode =
                        \r
                        delete this._dirty;\r
                }) :\r
-       document.all ? \r
+       X.Dom.DOM_IE4 ? \r
                ( function( elm ){\r
                        var attrs, rename, k, v;\r
 \r
@@ -1079,7 +1079,7 @@ Node.prototype._updateRawNode =
  * document.createElement of ie4 is only for OPTION & IMAGE.\r
  */\r
 Node.prototype._actualCreate =\r
-       document.getElementById ? (function( isChild ){\r
+       X.Dom.DOM_W3C ? (function( isChild ){\r
                var elm = this._rawNode,\r
                        xnodes, frg, i, l;\r
                \r
@@ -1118,7 +1118,7 @@ Node.prototype._actualCreate =
                \r
                return elm;\r
        }) :\r
-       document.all ? (function( isChild ){\r
+       X.Dom.DOM_IE4 ? (function( isChild ){\r
                var uid = this._uid,\r
                        html, xnodes, n, i, l;\r
                \r
@@ -1163,7 +1163,7 @@ Node.prototype._actualCreate =
        (function(){});\r
 \r
 Node.prototype._afterActualCreate =\r
-       document.getElementById ? (function(){\r
+       X.Dom.DOM_W3C ? (function(){\r
                var elm = this._rawNode, xnodes, l, attrs, k, i;\r
                \r
                this._root  = this.parent._root;\r
@@ -1210,7 +1210,7 @@ Node.prototype._afterActualCreate =
                \r
                this._restoreEvent();// イベントの復帰\r
        }) :\r
-       document.all ? (function(){\r
+       X.Dom.DOM_IE4 ? (function(){\r
                var xnodes, i;\r
                this._root = this.parent._root;\r
                \r
@@ -1231,7 +1231,7 @@ Node.prototype._afterActualCreate =
        (function(){});\r
 \r
 Node.prototype._actualRemove =\r
-       document.getElementById ?\r
+       X.Dom.DOM_W3C ?\r
                ( function( isChild ){\r
                        var xnodes = this._xnodes,\r
                                elm    = this._rawNode,\r
@@ -1248,7 +1248,7 @@ Node.prototype._actualRemove =
                        // elm.parentNode.tagName for ie7\r
                        !isChild && elm.parentNode && elm.parentNode.tagName && elm.parentNode.removeChild( elm );\r
                }) :\r
-       document.all ?\r
+       X.Dom.DOM_IE4 ?\r
                ( function( isChild ){\r
                        var xnodes = this._xnodes,\r
                                elm    = this._rawNode || this._ie4getRawNode(),\r
index cda5cd6..c387000 100644 (file)
@@ -178,11 +178,11 @@ X.Dom.Node.prototype.listen = function( type, arg1, arg2, arg3 /* [ listener ||
 };\r
 \r
 X.Dom.Node.prototype._addEvent =\r
-       document.removeEventListener ?\r
+       X.Dom.EVENT_W3C ?\r
                (function( type ){\r
                        this._rawNode && this._rawNode.addEventListener( type, this, false );\r
                }) :\r
-       document.detachEvent ?\r
+       X.Dom.EVENT_IE ?\r
                (function( type ){\r
                        if( !this._rawNode ) return;\r
                        this._handleEvent = this._handleEvent || X.Callback.create( this );\r
@@ -207,13 +207,13 @@ X.Dom.Node.prototype.unlisten = function( type /* , arg1, arg2, arg3 */ ){
 };\r
 \r
 X.Dom.Node.prototype._removeEvent =\r
-       document.removeEventListener ?\r
+       X.Dom.EVENT_W3C ?\r
                (function( type ){\r
                        var elm = this._rawNode;\r
                        if( !elm ) return;\r
                        elm.removeEventListener( type, this, false );\r
                }) :\r
-       document.detachEvent ?\r
+       X.Dom.EVENT_IE ?\r
                (function( type ){\r
                        var elm = this._rawNode;\r
                        if( !elm ) return;\r
@@ -236,7 +236,7 @@ X.Dom.Node.prototype._removeEvent =
 \r
 \r
 X.Dom.Node.prototype.handleEvent =\r
-       document.removeEventListener ?\r
+       X.Dom.EVENT_W3C ?\r
                (function( e ){\r
                        var ret = X.EventDispatcher.prototype.dispatch.call( this, new X.Dom.Event( e, this ) );\r
 \r
@@ -289,7 +289,7 @@ X.Dom.Node.prototype._restoreEvent = function(){
  *  Dean Edwards/Matthias Miller/John Resig\r
  */\r
 /* for ie9+/Mozilla/Opera9 */\r
-if( document.addEventListener ){\r
+if( X.Dom.DOM_W3C ){\r
        X.Dom.Node._document.listenOnce( 'DOMContentLoaded', X.Dom._init );\r
 } else\r
 if( 5 <= X.UA.IE && X.inHead ){\r
index a67c532..ea827c4 100644 (file)
@@ -2,7 +2,6 @@ X.Dom.BoxModel = {
        CONTENT_BOX      : 1,\r
        PADDING_BOX      : 2,\r
        BORDER_BOX       : 3,\r
-       MARGIN_BOX       : 4,\r
                \r
        defaultBoxModel  : 0,\r
        boxSizingEnabled : false,\r
@@ -63,11 +62,11 @@ Node.prototype.width = function(){
                return 0;\r
        };\r
        if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
-       if( document.getElementById ){\r
+       if( X.Dom.DOM_W3C ){\r
                // this.css( X.Dom.Style.Unit.px, 'width' );\r
                return this._rawNode.offsetWidth;\r
        } else\r
-       if( document.all ){\r
+       if( X.Dom.DOM_IE4 ){\r
                return ( this._rawNode || this._ie4getRawNode() ).offsetWidth;\r
        } else {\r
                \r
@@ -85,11 +84,11 @@ Node.prototype.height = function(){
                return 0;\r
        };\r
        if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
-       if( document.getElementById ){\r
+       if( X.Dom.DOM_W3C ){\r
                // this.css( X.Dom.Style.Unit.px, 'height' );\r
                return this._rawNode.offsetHeight;\r
        } else\r
-       if( document.all ){\r
+       if( X.Dom.DOM_IE4 ){\r
                return ( this._rawNode || this._ie4getRawNode() ).offsetHeight;\r
        } else {\r
                \r
@@ -107,11 +106,11 @@ Node.prototype.scrollWidth = function(){
                return 0;\r
        };\r
        if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
-       if( document.getElementById ){\r
+       if( X.Dom.DOM_W3C ){\r
                // this.css( X.Dom.Style.Unit.px, 'width' );\r
                return this._rawNode.scrollWidth;\r
        } else\r
-       if( document.all ){\r
+       if( X.Dom.DOM_IE4 ){\r
                return ( this._rawNode || this._ie4getRawNode() ).scrollWidth;\r
        } else {\r
                \r
@@ -129,11 +128,11 @@ Node.prototype.scrollHeight = function(){
                return 0;\r
        };\r
        if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
-       if( document.getElementById ){\r
+       if( X.Dom.DOM_W3C ){\r
                // this.css( X.Dom.Style.Unit.px, 'height' );\r
                return this._rawNode.scrollHeight;\r
        } else\r
-       if( document.all ){\r
+       if( X.Dom.DOM_IE4 ){\r
                return ( this._rawNode || this._ie4getRawNode() ).scollHeight;\r
        } else {\r
                \r
@@ -160,12 +159,12 @@ Node.prototype.x = function(){
                return 0;\r
        };\r
        if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
-       if( document.getElementById ){\r
+       if( X.Dom.DOM_W3C ){\r
                // this.css( X.Dom.Style.Unit.px, 'left' );\r
                // this.css( X.Dom.Style.Unit.px, 'translateX' );\r
                return this._rawNode.offsetLeft;\r
        } else\r
-       if( document.all ){\r
+       if( X.Dom.DOM_IE4 ){\r
                return ( this._rawNode || this._ie4getRawNode() ).offsetLeft;\r
        } else {\r
                \r
@@ -183,12 +182,12 @@ Node.prototype.y = function(){
                return 0;\r
        };\r
        if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
-       if( document.getElementById ){\r
+       if( X.Dom.DOM_W3C ){\r
                // this.css( X.Dom.Style.Unit.px, 'top' );\r
                // this.css( X.Dom.Style.Unit.px, 'transisitonY' );\r
                return this._rawNode.offsetTop;\r
        } else\r
-       if( document.all ){\r
+       if( X.Dom.DOM_IE4 ){\r
                return ( this._rawNode || this._ie4getRawNode() ).offsetTop;            \r
        } else {\r
                \r
index 019cb67..2d2055d 100644 (file)
@@ -71,12 +71,6 @@ X.Dom.Style = {
        },
        
        /* 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 : {},
@@ -1128,7 +1122,7 @@ X.Dom.Node.prototype._getCharSize =
                        };
                        return 0;
                }) :
-       document.getElementById ?
+       X.Dom.DOM_W3C ?
                (function(){
                        var elm, v;
                        if( this === Node.root && X.Dom.baseFontSize ) return X.Dom.baseFontSize;
diff --git a/0.6.x/js/dom/16_XDomAnime.js b/0.6.x/js/dom/16_XDomAnime.js
deleted file mode 100644 (file)
index 7ad1ec5..0000000
+++ /dev/null
@@ -1,362 +0,0 @@
-/*\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
-       // X.Dom.listenOnce( X.Dom.Event.DOM_PRE_INIT 以降にアクセス可能\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.Dom.Event.ANIME_BEFORE_STOP, target : this.xnode } ) & X.Callback.PREVENT_DEFAULT ){\r
-                       return;\r
-               };\r
-               opt_goEndPosition && this.tick( this.startTime + this.duration );\r
-               unregisterQueue( this );\r
-               this.xnode.dispatch( { type : X.Dom.Event.ANIME_STOP, target : this.xnode } );  \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.Dom.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, this.onTransitionEnd );\r
-                               } else {\r
-                                       xnode.dispatch( { type : X.Dom.Event.ANIME, ratio : rario, target : xnode } );\r
-                               };\r
-                       }) :\r
-                       (function( time ){\r
-                               var offset = time - this.startTime,\r
-                                       ratio  = offset / 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, offset, this.duration );\r
-                                       list.length = 0;\r
-                                       xnode.css( css )\r
-                                               .dispatch( { type : X.Dom.Event.ANIME, ratio : 1, target : xnode } );\r
-                                       xnode.dispatch( { type : X.Dom.Event.ANIME_END, ratio : 1, target : xnode } );\r
-                               } else {\r
-                                       this.state = 3;\r
-                                       calculateCSS( css = {}, list, ratio, offset, this.duration );\r
-                                       xnode.css( css )\r
-                                               .dispatch( { type : X.Dom.Event.ANIME, ratio : rario, target : xnode } );\r
-                               };\r
-                       }),\r
-       onTransitionEnd : transition && (function(){\r
-               this.dispatch( { type : X.Dom.Event.ANIME, ratio : 1, target : this.xnode } );\r
-               return this.dispatch( { type : X.Dom.Event.ANIME_END, ratio : 1, target : this.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
-\r
-\r
index d8c9533..2e183bc 100644 (file)
@@ -225,11 +225,13 @@ X.Dom.Query._parse = function( query, last ){
                        uid, tmp, xnode, filter, key, op, val, toLower, useName,\r
             links, className, attr, flag;\r
 \r
+               /*@cc_debug[ */\r
+               if( X.Dom.readyState < X.Dom.Event.XDOM_READY ){ alert( 'not ready! X.Dom.listen( X.Dom.Event.XDOM_READY, callback )' ); };\r
+               /*]@cc_debug */\r
+\r
                // 文字列以外は空で返す\r
                if( typeof queryString !== 'string' ) return ret;\r
                \r
-               \r
-               \r
                xnodes = [];\r
                \r
                // 以下、パースと探索\r
index b384393..9d664af 100644 (file)
@@ -22,9 +22,6 @@ X.Dom.Parser = {
        // (and which close themselves)\r
        closeSelf : {colgroup:1,dd:1,dt:1,li:1,options:1,p:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1}, // add tbody\r
 \r
-       // todo:\r
-       plainText : { plaintext : 1, xmp : 1, textarea : 1 },\r
-\r
        sisters : {\r
                th : { td : 1 },\r
                td : { th : 1 },\r
@@ -47,7 +44,7 @@ X.Dom.Parser = {
        fillAttrs : X.Dom.Attr.noValue, //{checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};\r
 \r
        // Special Elements (can contain anything)\r
-       special : {script:1,style:1,plaintext : 1, xmp : 1, textarea : 1},\r
+       special : { script : 1, style : 1, plaintext : 1, xmp : 1, textarea : 1 },\r
        \r
        exec : function( html, handler, async ){\r
                var special        = X.Dom.Parser.special,\r
index ad5e44f..8fb5f9c 100644 (file)
@@ -6,11 +6,12 @@ X.Dom._useBuilder = true;
  *  完全にワンページアプリで<body/>が空な場合、このコードはビルドに含める必要はない\r
  */\r
 X.Dom.listenOnce( X.Dom.Event.DOM_PRE_INIT,\r
-       document.getElementById ?\r
+       X.Dom.DOM_W3C ?\r
 (function(){\r
        var r    = Node.root,\r
                body = r._rawNode,\r
-               i, n = 0;\r
+               i, n = 0,\r
+               elmProgress;\r
        \r
        // cleanup tree \r
        (function( elm, skip, head ){\r
@@ -80,7 +81,7 @@ X.Dom.listenOnce( X.Dom.Event.DOM_PRE_INIT,
                } );\r
 \r
 }) :\r
-document.all ?\r
+X.Dom.DOM_IE4 ?\r
 (function(){\r
        var r    = Node.root,\r
                body = r._rawNode,\r
@@ -139,7 +140,7 @@ X.Dom._asyncCreateTree = function ( parent, elems, elmProgress, async ){
                        xnodes = current.xnodes;\r
                        while( xnode = xnodes[ i ] ){                   \r
                                //\r
-                               dive = bindElementToXnode( parent, xnode, current );\r
+                               dive = X.Dom._bindElementToXnode( parent, xnode, current );\r
                                \r
                                ++i;\r
                                ++done;\r
@@ -174,10 +175,11 @@ X.Dom._asyncCreateTree = function ( parent, elems, elmProgress, async ){
        X.Dom.asyncDispatch( 0, { type : X.Dom.Event.DOM_BUILDER_COMPLETE } );\r
        elmProgress.parentNode ? elmProgress.parentNode.removeChild( elmProgress ) : ( elmProgress.outerHTML = '' );\r
        delete X.Dom._asyncCreateTree;\r
+       delete X.Dom._bindElementToXnode;\r
 };\r
 \r
-bindElementToXnode =\r
-       document.getElementById ?\r
+X.Dom._bindElementToXnode =\r
+       X.Dom.DOM_W3C ?\r
                (function( parent, xnode, current ){\r
                        var elems = current.elems,\r
                                //j     = current.j,\r