OSDN Git Service

Version 0.6.168, fix X.UI.Repeater.
authoritozyun <itozyun@user.sourceforge.jp>
Wed, 1 Jul 2015 00:16:11 +0000 (09:16 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Wed, 1 Jul 2015 00:16:11 +0000 (09:16 +0900)
20 files changed:
0.6.x/index.html
0.6.x/js/01_core/02_XUA.js
0.6.x/js/01_core/04_XObject.js
0.6.x/js/01_core/05_XArray.js
0.6.x/js/01_core/13_XClass.js
0.6.x/js/02_dom/03_XDomEvent.js
0.6.x/js/02_dom/07_XNodeList.js
0.6.x/js/02_dom/20_XNode.js
0.6.x/js/02_dom/22_XTreeBuilder.js
0.6.x/js/03_plugin/00_XPlugin.js
0.6.x/js/05_util/01_XNinjaIframe.js
0.6.x/js/06_net/01_XNetXHR.js
0.6.x/js/06_net/10_XOAuth2.js
0.6.x/js/07_audio/00_XAudio.js
0.6.x/js/07_audio/10_XAudioSprite.js
0.6.x/js/20_ui/02_XUI_Attr.js
0.6.x/js/20_ui/08_Box.js
0.6.x/js/20_ui/14_ChromeBox.js
0.6.x/js/20_ui/16_Repeater.js
0.6.x/js/import.js

index eac273a..43d4c63 100644 (file)
@@ -27,6 +27,8 @@
 <script type="text/javascript" src="js/20_ui/13_TileBox.js"></script>\r
 <script type="text/javascript" src="js/20_ui/14_ChromeBox.js"></script>\r
 <script type="text/javascript" src="js/20_ui/15_ScrollBox.js"></script>\r
+<script type="text/javascript" src="js/20_ui/16_Repeater.js"></script>\r
+<script type="text/javascript" src="js/20_ui/17_List.js"></script>\r
 <script type="text/javascript" src="js/20_ui/17_Text.js"></script>\r
 <script type="text/javascript" src="js/20_ui/20_PageRoot.js"></script>\r
 \r
index 61230c8..b99223a 100644 (file)
@@ -286,10 +286,10 @@ var X_UA = X[ 'UA' ] = {},
                tridentToVer       = X_UA[ 'Trident' ] ? ( X_UA[ 'Trident' ] + 4 | 0 ) : X_UA[ '_IE' ];\r
                /**\r
                 * IE10 以上の互換モードを使用している場合、そのバージョン\r
-                * @alias X.UA.IECompat\r
+                * @alias X.UA.IEHost\r
                 * @type {number}\r
                 */\r
-               if( tridentToVer !== X_UA[ '_IE' ] ) X_UA[ 'IECompat' ] = tridentToVer;\r
+               if( tridentToVer !== X_UA[ '_IE' ] ) X_UA[ 'IEHost' ] = tridentToVer;\r
                /**\r
                 * documentモードを考慮したIEのバージョン\r
                 * @alias X.UA.IE\r
@@ -362,7 +362,7 @@ var X_UA = X[ 'UA' ] = {},
                 */\r
                if( dua.toLowerCase().indexOf( 'windows phone' ) !== -1 || 0 < dav.indexOf( 'ZuneWP' ) ) X_UA[ 'WinPhone' ] = true; // ZuneWP は IEM のデスクトップモードで登場する\r
                \r
-               console.log( '>> IE : ' + v + ' ActiveX : ' + X_UA[ 'ActiveX' ] + ' IEHost : ' + X_UA[ 'IECompat' ] );\r
+               console.log( '>> IE : ' + v + ' ActiveX : ' + X_UA[ 'ActiveX' ] + ' IEHost : ' + X_UA[ 'IEHost' ] );\r
                // TODO XBox360, XBox1, Modern or Desktop, Standalone\r
                return;\r
        };\r
@@ -682,11 +682,6 @@ if( document.getElementById ){
        } else {\r
                X_UA_EVENT.DOM0 = true;\r
        };\r
-} else\r
-if( document.layers ){\r
-       \r
-} else {\r
-       \r
 };\r
 \r
 if( navigator.msPointerEnabled || navigator.pointerEnabled ) X_UA_HID.POINTER = true;\r
index 500ca49..7e42e0c 100644 (file)
@@ -29,18 +29,15 @@ var X_Object_inObject = X_UA[ 'IE' ] < 5.5 ? // TODO JScript で判定
  * @alias X.Object\r
  */\r
 X[ 'Object' ] = {\r
-       // TODO rename to copy\r
-       'clone'      : X_Object_clone,\r
+\r
+       'copy'       : X_Object_copy,\r
+       \r
+       'deepCopy'   : X_Object_deepCopy,\r
        \r
        'override'   : X_Object_override,\r
        \r
        'clear'      : X_Object_clear,\r
        \r
-       'deepCopy'   : X_Object_deepCopy,\r
-       \r
-       // TODO rename to X.Array.copy\r
-       'cloneArray' : X_Object_cloneArray,\r
-       \r
        'isEmpty'    : X_Object_isEmpty,\r
        \r
        'inObject'   : X_Object_inObject\r
@@ -53,11 +50,11 @@ X[ 'Object' ] = {
 // ------------------------------------------------------------------------- //\r
 /**\r
  * 単純なクローンでメンバーをコピーしたオブジェクトを返します。 k in null でエラーになる Opera7- に対策済。\r
- * @alias X.Object.clone\r
+ * @alias X.Object.copy\r
  * @param {object|Array} src コピー元のオブジェクトです。\r
  * @return {object|Array}\r
  */\r
-function X_Object_clone( src ){\r
+function X_Object_copy( src ){\r
        var ret, k;\r
        \r
        if( !src || !X_Type_isObject( src ) ) return src;\r
@@ -141,23 +138,6 @@ function X_Object_deepCopy_( src, objSrc, objCopy, n ) {
 };\r
 \r
 /**\r
- * 単純にメンバーをコピーした Array を返します。\r
- * @alias X.Object.cloneArray\r
- * @param {Array} ary コピー元のオブジェクトです。\r
- * @return {Array}\r
- */\r
-function X_Object_cloneArray( ary ){\r
-       var ret = [],\r
-               i = ary.length;\r
-\r
-       if( !i ) return ret;\r
-       for( ; i; ){\r
-               ret[ --i ] = ary[ i ];\r
-       };\r
-       return ret;\r
-};\r
-\r
-/**\r
  * object が空か?調べます。 object でない場合、undefined が返る\r
  * @alias X.Object.isEmpty\r
  * @param {object} v \r
@@ -172,11 +152,3 @@ function X_Object_isEmpty( v ){
        return true;\r
 };\r
 \r
-/*     \r
-X.matchTest = function( array1, array2 ){\r
-       var i = array2.length;\r
-       for( ; i; ){\r
-               if( array1.indexOf( array2[ --i ] ) === -1 ) return false;\r
-       };\r
-       return true;\r
-}; */\r
index e69de29..2bbf616 100644 (file)
@@ -0,0 +1,39 @@
+/**\r
+ * Array に関するメソッドを集めたものです。\r
+ * @namespace X.Array\r
+ * @alias X.Array\r
+ */\r
+X[ 'Array' ] = {\r
+       'copy'      : X_Array_copy\r
+};\r
+\r
+// renamed\r
+// X.Object.cloneArray -> X.Array.copy\r
+// X.Object.clone -> X.Object.copy\r
+\r
+/**\r
+ * 単純にメンバーをコピーした Array を返します。\r
+ * @alias X.Array.copy\r
+ * @param {Array} ary コピー元のオブジェクトです。\r
+ * @return {Array}\r
+ */\r
+function X_Array_copy( ary ){\r
+       var ret = [],\r
+               i = ary.length;\r
+\r
+       if( !i ) return ret;\r
+       for( ; i; ){\r
+               ret[ --i ] = ary[ i ];\r
+       };\r
+       return ret;\r
+};\r
+\r
+/*     \r
+X.matchTest = function( array1, array2 ){\r
+       var i = array2.length;\r
+       for( ; i; ){\r
+               if( array1.indexOf( array2[ --i ] ) === -1 ) return false;\r
+       };\r
+       return true;\r
+}; */\r
+\r
index 9d92b55..ee7174d 100644 (file)
@@ -204,7 +204,7 @@ X_Class_CommonMethods =
                                                case 4 :\r
                                                        return sFunc.call( this, args[ 1 ], args[ 2 ], args[ 3 ] );\r
                                                default :\r
-                                                       args = X_Object_cloneArray( args );\r
+                                                       args = X_Array_copy( args );\r
                                                        args.shift();\r
                                                        return sFunc.apply( this, args );\r
                                        };\r
@@ -336,7 +336,7 @@ X[ 'Class' ] = /** @lends X.Class */ {
         * );\r
         */\r
        function X_Class_create( /* displayName, classSetting, privateClass, props */ ){\r
-               var args        = X_Object_cloneArray( arguments ),\r
+               var args        = X_Array_copy( arguments ),\r
                        displayName = args[ 0 ],\r
                        classSetting,\r
                        opt_pool, opt_abstract, opt_final,\r
@@ -503,7 +503,7 @@ function X_Class_subClassOf( klass ){
  * @return {__ClassBase__}\r
  */\r
 function X_Class_inherits( /* displayName, classSetting, opt_PrivateClass, props */ ){\r
-       var args        = X_Object_cloneArray( arguments ),\r
+       var args        = X_Array_copy( arguments ),\r
                params      = [],\r
                Super       = this,\r
                superDef    = X_Class_getClassDef( Super ),\r
index 4ab70dd..07886c0 100644 (file)
@@ -205,7 +205,7 @@ if( !X_UA[ 'IE' ] || 9 <= X_UA[ 'IE' ] ){
                        // http://www.programming-magic.com/20090127231544/\r
                        // Opera で button==2の場合、コンテキストメニューイベントを発火 「ツール」->「設定」->「詳細設定」->「コンテンツ」->「Javascriptオプション」で「右クリックを制御するスクリプトを許可する」\r
                                if( originalType === 'mousedown' && this[ 'button' ] === 2 && X_UA[ 'Opera' ] ){\r
-                                       events = [ X_Object_clone( this ), X_Object_clone( this ) ];\r
+                                       events = [ X_Object_copy( this ), X_Object_copy( this ) ];\r
                                        events[ 1 ].type = 'contextmenu';\r
                                        return events;\r
                                };\r
index 50eaff9..443677c 100644 (file)
@@ -34,7 +34,7 @@ X_NodeList.prototype[ 'each' ] = function( func /* opt_args... */ ){
                i = 0, args;\r
 \r
        if( 1 < arguments.length ){\r
-               args = X_Object_cloneArray( arguments );\r
+               args = X_Array_copy( arguments );\r
                for( ; i < l; ++i ){\r
                        args[ 0 ] = i;\r
                        if( func.apply( this[ i ], args ) === false ) break;\r
index 04f01e2..de76d17 100644 (file)
@@ -505,7 +505,7 @@ function X_Node_clone( opt_clone_children ){
        var xnode, xnodes, i, l;
        if( this[ '_tag' ] ){
                X_Node_newByTag = true;
-               xnode = Node( this[ '_tag' ], X_Object_clone( this[ '_attrs' ] ), X_Object_clone( this[ '_css' ] ) )
+               xnode = Node( this[ '_tag' ], X_Object_copy( this[ '_attrs' ] ), X_Object_copy( this[ '_css' ] ) )
                        [ 'attr' ]( { 'id' : this[ '_id' ] } )
                        [ 'className' ]( this[ '_className' ] );
                if( opt_clone_children && ( xnodes = this[ '_xnodes' ] ) && ( l = xnodes.length ) ){
@@ -1182,7 +1182,7 @@ function X_Node_call( name /*, opt_args... */ ){
        func = raw[ name ];
        if( X_Type_isFunction( func ) ){
                if( l ){
-                       args = X_Object_cloneArray( arguments );
+                       args = X_Array_copy( arguments );
                        args.shift();
                        return func.apply( raw, args );
                };
@@ -1192,7 +1192,7 @@ function X_Node_call( name /*, opt_args... */ ){
                // typeof func === unknown に対策
                // http://la.ma.la/blog/diary_200509031529.htm          
                if( l ){
-                       args = X_Object_cloneArray( arguments );
+                       args = X_Array_copy( arguments );
                        args.shift();
                        
                params = [];
@@ -1216,7 +1216,7 @@ function X_Node_call( name /*, opt_args... */ ){
 function X_Node_each( func /*, opt_args */ ){
        var args;
        if( 1 < arguments.length ){
-               args = X_Object_cloneArray( arguments );
+               args = X_Array_copy( arguments );
                args[ 0 ] = 0;          
                func.apply( this, args );
        } else {
index 8a6c74a..72eae6b 100644 (file)
@@ -124,7 +124,7 @@ X_TEMP._onPreInit =
        //X_UA[ 'MacIE' ] && alert( body.innerHTML );\r
        // cleanup tree \r
        function cleanUpTree( elm, skip, head ){\r
-               var nodes      = X_Object_cloneArray( elm.childNodes ),\r
+               var nodes      = X_Array_copy( elm.childNodes ),\r
                        i          = 0,\r
                        l          = nodes.length,\r
                        node, tag, textNode, content;\r
@@ -256,7 +256,7 @@ X_TEMP._handleEvent = function( e ){
 };\r
 \r
 X_TEMP.asyncCreateTree = function( parent, elems, elmProgress, async ){\r
-       var xnodes      = async ? 0           : X_Object_cloneArray( parent[ '_xnodes' ] ),\r
+       var xnodes      = async ? 0           : X_Array_copy( parent[ '_xnodes' ] ),\r
                l           = async ? 0           : xnodes.length,\r
                stack       = async ? async.stack : [],\r
                done        = async ? async.done  : 0,\r
@@ -266,7 +266,7 @@ X_TEMP.asyncCreateTree = function( parent, elems, elmProgress, async ){
                        xnodes : xnodes,\r
                        l      : l,\r
                        i      : 0,\r
-                       elems  : X_Object_cloneArray( elems ),\r
+                       elems  : X_Array_copy( elems ),\r
                        j      : 0,\r
                        xtext  : null,\r
                        flag   : 0\r
@@ -392,12 +392,12 @@ X_TEMP.bindElementToXnode =
                                                        \r
                                                        return {\r
                                                                me     : xnode,\r
-                                                               xnodes : X_Object_cloneArray( xnode[ '_xnodes' ] ),\r
+                                                               xnodes : X_Array_copy( xnode[ '_xnodes' ] ),\r
                                                                xtext  : null,\r
                                                                flag   : 0,\r
                                                                i      : 0,\r
                                                                l      : xnode[ '_xnodes' ].length,\r
-                                                               elems  : X_Object_cloneArray( elm.childNodes ),\r
+                                                               elems  : X_Array_copy( elm.childNodes ),\r
                                                                j      : 0,\r
                                                                skipCleanup : skipCleanup || X_Dom_DTD_SKIP_CLEANUP_TAGS[ tag ]\r
                                                        };\r
@@ -531,12 +531,12 @@ X_TEMP.bindElementToXnode =
                                        if( xnode[ '_xnodes' ] && xnode[ '_xnodes' ].length ){\r
                                                return {\r
                                                        me     : xnode,\r
-                                                       xnodes : X_Object_cloneArray( xnode[ '_xnodes' ] ),\r
+                                                       xnodes : X_Array_copy( xnode[ '_xnodes' ] ),\r
                                                        xtext  : null,\r
                                                        flag   : 0,\r
                                                        i      : 0,\r
                                                        l      : xnode[ '_xnodes' ].length,\r
-                                                       elems  : X_Object_cloneArray( elm.children ),\r
+                                                       elems  : X_Array_copy( elm.children ),\r
                                                        j      : 0,\r
                                                        skipCleanup : skipCleanup || X_Dom_DTD_SKIP_CLEANUP_TAGS[ tag ]\r
                                                };\r
index aa9daf9..7bd7e97 100644 (file)
@@ -1,24 +1,3 @@
-/*
- * VBS
- */
-
-if( false && 5 <= X_UA[ 'IE' ] && X_UA[ 'IE' ] < 11 ){
-       (function(){
-
-                var script = document.createElement( "script" ) ;
-                script[ "type" ] = "text/vbscript" ;
-                script.text = [
-                    "Function vba_IEBinaryToArrayBytes()\n" ,
-                    "  vba_IEBinaryToArrayBytes = 1\n" ,
-                    "End Function\n"
-                    ].join( "" ) ;
-                document.getElementsByTagName("head")[ 0 ].appendChild( script ) ;
-               
-               // alert( vba_IEBinaryToArrayBytes() );
-       })();
-       
-};
-
 
 /*
  * Flash Player 10 バージョン判別チェックリスト
@@ -95,7 +74,11 @@ var X_Pulgin_FLASH_VERSION =
                        navigator.mimeTypes &&
                        navigator.mimeTypes[ 'application/x-googlegears' ] &&
                        navigator.mimeTypes[ 'application/x-googlegears' ].enabledPlugin
-               );
+               ),
+       
+       X_Pulgin_VBS_ENABLED =
+               X_UA[ 'Windows' ] && !X_UA[ 'WinCE' ] && X_UA[ 'IE' ] < 11;
+
 
 /**
  * @namespace X.Pulgin
index e16f550..08f7d21 100644 (file)
@@ -50,7 +50,8 @@ X[ 'Util' ][ 'NinjaIframe' ] = Node[ 'inherits' ](
                        \r
                        if( html ) this._contentHTML = html;                    \r
                        \r
-                       this[ 'appendTo' ]( X_Node_body /* X_Node_systemNode */ );\r
+                       this[ 'appendTo' ]( X_Node_body /* X_Node_systemNode */ )\r
+                               [ 'listenOnce' ]( X_EVENT_KILL_INSTANCE, X_Util_NinjaIframe_handleEvent );\r
                        \r
                        X_ViewPort[ 'listenOnce' ]( X_EVENT_AFTER_UPDATE, this, X_Util_NinjaIframe_handleEvent );\r
                },\r
@@ -82,13 +83,6 @@ X[ 'Util' ][ 'NinjaIframe' ] = Node[ 'inherits' ](
                        };\r
                        \r
                        return this;\r
-               },\r
-               \r
-               // TODO close -> kill\r
-               'close' : function(){\r
-                       X_ViewPort[ 'unlisten' ]( X_EVENT_AFTER_UPDATE, this, X_Util_NinjaIframe_handleEvent );\r
-                       this.call( 'close' );\r
-                       this[ 'kill' ]();\r
                }\r
                \r
        }\r
@@ -131,6 +125,11 @@ function X_Util_NinjaIframe_handleEvent( e ){
                case 'error' :\r
                        this[ 'asyncDispatch' ]( 'ninjaerror' );\r
                        break;\r
+               \r
+               case X_EVENT_KILL_INSTANCE :\r
+                       X_ViewPort[ 'unlisten' ]( X_EVENT_AFTER_UPDATE, this, X_Util_NinjaIframe_handleEvent );\r
+                       this._iwin && this._iwin.close();\r
+                       break;\r
        };\r
        \r
        return X_Callback_STOP_PROPAGATION;\r
index 265cc79..f5db50f 100644 (file)
@@ -110,7 +110,9 @@ X[ 'XHR' ] = {
        'UPLOAD_PROGRESS' : X_Net_XHR_upload,\r
 \r
        // or gadget proxy or flash\r
-       'CORS'            : X_Net_XHR_xdr || X_Net_XHR_cors\r
+       'CORS'            : X_Net_XHR_xdr || X_Net_XHR_cors,\r
+       \r
+       'BINARY'          : X_Pulgin_VBS_ENABLED\r
 };\r
 \r
 if( X_Net_XHR_msXMLVer ) X[ 'XHR' ][ 'MSXML_VERSION' ] = X_Net_XHR_msXMLVer;\r
@@ -190,9 +192,8 @@ X_TEMP.X_Net_XHR_params = {
                                                // js, css\r
                                                        raw.responseType = 'text';\r
                                                        break;\r
-                                               case 'json' :\r
-                                               case 'moz-json' : // firefox9-\r
-                                                       raw.responseType = X_UA[ 'Gecko' ] ? this._dataType : ''; // Iron 37 でエラー\r
+                                               case 'json' : // firefox9- は moz-json\r
+                                                       raw.responseType = X_UA[ 'Gecko' ] < 10 ? 'moz-json' : X_UA[ 'Gecko' ] ? this._dataType : ''; // Iron 37 でエラー\r
                                                        break;\r
                                                case 'document' :\r
                                                case 'xml' :\r
@@ -211,11 +212,15 @@ X_TEMP.X_Net_XHR_params = {
                                \r
                                // http://www.quirksmode.org/blog/archives/2005/09/xmlhttp_notes_r_1.html\r
                                if( !this._isMsXML && raw.overrideMimeType ){   \r
-                                       switch( X_URL_getEXT( url ) ){\r
+                                       switch( X_URL_getEXT( url ) || this._dataType ){\r
                                                case 'html' :\r
+                                               case 'htm' :\r
                                                case 'xml' :\r
                                                        tmp = 'text/xml';\r
                                                        break;\r
+                                               case 'json' :\r
+                                                       tmp = 'application/json'; // 2015.6.29\r
+                                                       break;\r
 \r
                                                case 'mp3' :\r
                                                        tmp = 'audio/mpeg';\r
@@ -250,9 +255,9 @@ X_TEMP.X_Net_XHR_params = {
                                                headers[ 'Pragma' ] = 'no-cache';\r
                                                headers[ 'Cache-Control' ] = 'no-cache';\r
                                                headers[ 'If-Modified-Since' ] = 'Thu, 01 Jun 1970 00:00:00 GMT';\r
-                                       } else */                                       \r
+                                       } */                                    \r
                                        // http://nakigao.sitemix.jp/blog/?p=2040\r
-                                       // json å\8f\96å¾\97æ\99\82ã\81« Safariã\81§HTTP/412ã\81®ã\82¨ã\83©ã\83¼ã\80\82ä½\86ã\81\97ç\9b¸æ\89\8bã\81\8c audio ã\81®å ´å\90\88ã\80\81ã\81\93ã\81®æ\8c\87å®\9aã\81\8cã\81\82ã\82\8bã\81¨ã\83­ã\83¼ã\83\89ã\81«å¤±æ\95\97ã\81\99ã\82\8bã\80\82 iOS8.2, iOS7.1 ã\81§ã\81¯é\81­é\81\87ã\81\9bã\81\9a\r
+                                       // json 取得時に SafariでHTTP/412のエラー。但し相手が audio の場合この指定があるとロードに失敗する。 iOS8.2, iOS7.1 では遭遇せず\r
                                        if( this._dataType === 'json' ){\r
                                                headers[ 'If-Modified-Since' ] = ( new Date ).toUTCString();\r
                                        };\r
index 63e220d..91f7f67 100644 (file)
@@ -54,7 +54,7 @@ X[ 'OAuth2' ] = X_EventDispatcher[ 'inherits' ](
                        'Constructor' : function( obj ){
                                var expires_at;
                                
-                               obj = X_Object_clone( obj );
+                               obj = X_Object_copy( obj );
                                obj[ 'refreshMargin' ] = obj[ 'refreshMargin' ] || 300000;
                                
                                X_Pair_create( this, obj );
index c0a39d8..783e885 100644 (file)
@@ -76,7 +76,7 @@ X[ 'Audio' ] = X_EventDispatcher[ 'inherits' ](
                'Constructor' : function( sourceList, opt_option ){\r
                        X_Audio_startDetectionBackend(\r
                                X_Audio_BACKENDS[ 0 ], this,\r
-                               X_Type_isArray( sourceList ) ? X_Object_cloneArray( sourceList ) : [ sourceList ],\r
+                               X_Type_isArray( sourceList ) ? X_Array_copy( sourceList ) : [ sourceList ],\r
                                opt_option || {} );\r
                        this[ 'listenOnce' ]( [ X_EVENT_BACKEND_READY, X_EVENT_BACKEND_NONE, X_EVENT_KILL_INSTANCE ], X_Audio_handleEvent );\r
                },\r
index 1ff87f6..542eea1 100644 (file)
@@ -59,7 +59,7 @@ X[ 'AudioSprite' ] = function( setting ){
        for( k in setting ){\r
                v = setting[ k ];\r
                if( X_Type_isArray( v ) && v !== urls ){\r
-                       v = X_Object_cloneArray( v );\r
+                       v = X_Array_copy( v );\r
                        for( i = v.length; i; ){\r
                                --i;\r
                                if( i !== 2 ) v[ i ] = X_AudioWrapper_timeStringToNumber( v[ i ] );\r
@@ -69,7 +69,7 @@ X[ 'AudioSprite' ] = function( setting ){
                };\r
        };\r
        \r
-       X_Audio_startDetectionBackend( X_Audio_BACKENDS[ 0 ], X_Audio_Sprite_instance, X_Object_cloneArray( urls ), option );\r
+       X_Audio_startDetectionBackend( X_Audio_BACKENDS[ 0 ], X_Audio_Sprite_instance, X_Array_copy( urls ), option );\r
 \r
        X_Audio_Sprite_instance[ 'listenOnce' ]( [ X_EVENT_BACKEND_READY, X_EVENT_BACKEND_NONE ], X_AudioSprite_backendHandler );\r
        X_Audio_Sprite_instance[ 'listenOnce' ]( X_EVENT_KILL_INSTANCE, X_Audio_Sprite_handleEvent );\r
index 2e865f3..26b9b3c 100644 (file)
@@ -145,7 +145,7 @@ function XUI_createChecker( str ){
 };\r
 \r
        function XUI_Attr_createAttrDef( base, defs ){\r
-               var F = base ? X_Object_clone( base ) : {},\r
+               var F = base ? X_Object_copy( base ) : {},\r
                        z = base ? base._last : 0,\r
                        n = 1,\r
                        p, def;\r
index 2c66217..613400a 100644 (file)
@@ -299,18 +299,18 @@ X.UI.Box = X.UI.AbstractUINode.inherits(
                },\r
                \r
                add : function( /* node, node, node ... */ ){\r
-                       X_Pair_get( this ).addAt( this.numNodes() + 1, X_Object_cloneArray( arguments ) );\r
+                       X_Pair_get( this ).addAt( this.numNodes() + 1, X_Array_copy( arguments ) );\r
                        return this;\r
                },\r
                addAt : function( index /* , node , node, node ... */ ){\r
                        var nodes;\r
                        if( index < 0 ) index = 0;\r
-                       nodes = X_Object_cloneArray( arguments );\r
+                       nodes = X_Array_copy( arguments );\r
                        X_Pair_get( this ).addAt( nodes.shift(), nodes );\r
                        return this;\r
                },\r
                remove : function( /* node, node, node ... */ ){\r
-                       X_Pair_get( this )[ 'remove' ]( X_Object_cloneArray( arguments ) );\r
+                       X_Pair_get( this )[ 'remove' ]( X_Array_copy( arguments ) );\r
                        return this;\r
                },\r
                removeAt : function( from, length ){\r
index 7053192..06ea4a5 100644 (file)
@@ -52,13 +52,13 @@ X.UI.ChromeBox = X.UI.Box.inherits(
                        X_Pair_create( this, XUI_ChromeBox( this, XUI_Layout_Canvas, arguments ) );\r
                },\r
                add : function( /* node, node, node ... */ ){\r
-                       X_Pair_get( this ).containerNode.addAt( this.numNodes(), X_Object_cloneArray( arguments ) );\r
+                       X_Pair_get( this ).containerNode.addAt( this.numNodes(), X_Array_copy( arguments ) );\r
                        return this;\r
                },\r
                addAt : function( index /* , node, node, node ... */ ){\r
                        var nodes;\r
                        if( index < 0 ) index = 0;\r
-                       nodes = X_Object_cloneArray( arguments );\r
+                       nodes = X_Array_copy( arguments );\r
                        X_Pair_get( this ).containerNode.addAt( nodes.shift(), nodes );\r
                        return this;\r
                },\r
index e709360..6deacef 100644 (file)
@@ -7,19 +7,14 @@ var XUI_Repeater = XUI_Box.inherits(
        '_Repeater',\r
        X_Class.NONE,\r
        {\r
-               layout       : XUI_Layout_Vertical,\r
+               layout           : XUI_Layout_Vertical,\r
                \r
-               dataSource   : null, // Array.<object>, Array.<ItemData>\r
+               dataSource       : null, // Array.<object>, Array.<ItemData>\r
                \r
                itemRenderer     : null,\r
                \r
                itemNodes        : null,\r
-               \r
-               startIndex       : 0,\r
-               startRenderIndex : 0,\r
-               numItemsParPage  : 0,\r
-               numItemsPrev     : 0,\r
-               numItems         : 0,\r
+\r
                itemHeightLast   : 0,\r
                itemHeightLastEM : 0,\r
                \r
@@ -33,8 +28,6 @@ var XUI_Repeater = XUI_Box.inherits(
                \r
                initialize : function(){\r
                        XUI_AbstractUINode.prototype.initialize.apply( this, arguments );\r
-                       \r
-                       this.parent[ 'listen' ]( XUI_Event.SCROLL_END, this );\r
                },\r
                \r
                /*\r
@@ -44,9 +37,6 @@ var XUI_Repeater = XUI_Box.inherits(
                        var dataSource = this[ 'dataSource' ];\r
 \r
                        if( allowedW + allowedH === XUI_Attr_AUTO ) return false;\r
-               \r
-                       this.scrollPortWidth  = allowedW;\r
-                       this.scrollPortHeight = allowedH;                       \r
                        \r
                        this.preMesure( allowedW, allowedH );\r
                        \r
@@ -67,54 +57,8 @@ var XUI_Repeater = XUI_Box.inherits(
                },\r
                \r
                handleEvent : function( e ){\r
-                       var scrollBox, scrollY, dataSource, offsetY, startIndex, maxIndex, offset, itemNodes, ary, i, l;\r
-                       \r
                        switch( e.type ){\r
-                               case XUI_Event.SCROLL_END :\r
-                                       scrollBox  = this.parentData;\r
-                                       scrollY    = - scrollBox.scrollY;\r
-                                       dataSource = this[ 'dataSource' ];\r
-                                       itemNodes  = this.itemNodes;\r
-                                       itemH      = this.itemHeightLast;\r
-                                       \r
-                                       // transition Y を 0 付近に。\r
-                               \r
-                                       \r
-                                       // startIndex の計算\r
-                                       startIndex = scrollY / itemH | 0;\r
-                                       \r
-                                       /*maxIndex   = dataSource.length <= this.numItems ? 0 : dataSource.length - this.numItems;\r
-                                       console.log( ' >>> ' + startIndex + ' ' + maxIndex );\r
-                                       \r
-                                       startIndex =\r
-                                               startIndex < 0 ? 0 :\r
-                                               maxIndex < startIndex ? maxIndex : startIndex; */\r
-                                       // アイテムの座標の修正とレンジ外のアイテムを配列内で再配置\r
-                                       offset = startIndex - this.startIndex; // visible な stratIndex renderStartIndex\r
-                                       this.startIndex = startIndex;\r
-                                       \r
-                                       console.log(  this.numItemsPrev + ' oo ' + offset )\r
-                                       \r
-                                       if( 0 < offset ){\r
-                                               itemNodes.push.apply( itemNodes, itemNodes.splice( 0, offset ) );\r
-                                       } else\r
-                                       if( offset < - 0 ){\r
-                                               itemNodes.unshift.apply( itemNodes, itemNodes.splice( itemNodes.length + offset ) );\r
-                                       };\r
-\r
-                                       // 再配置されたアイテムにitemData のセット\r
-                                       this.updateItemRenderer( this.contentWidth, this.scrollPortHeight );\r
-                                       \r
-                                       \r
-                                       \r
-                                       offsetY  = scrollY % itemH;\r
-                                       offsetY  = offsetY === 0 ? 0 : ( offsetY - itemH );\r
-                                       offsetY += ( this.startRenderIndex - this.startIndex ) * itemH;\r
-                                       //console.log( ' ====> ' + this.startRenderIndex + ' -> ' + this.startIndex + ' scrollY:' + offsetY );\r
 \r
-                                       //scrollBox.scrollTo( 0, - scrollY, 0, '', 0 ); // anime無し                                                  \r
-                                       //console.log( '  <==== ' );\r
-                                       break;\r
                        };\r
                },\r
                \r
@@ -123,19 +67,14 @@ var XUI_Repeater = XUI_Box.inherits(
                                attrs      = this.attrObject || this.attrClass.prototype,\r
                                gapY       = XUI_AbstractUINode_calcValue( attrs[ this.usableAttrs.gapY.No ], _w ),\r
                                dataSource = this[ 'dataSource' ],\r
-                               render     = this[ 'itemRenderer' ],\r
+                               renderer   = this[ 'itemRenderer' ],\r
                                l          = dataSource.length,\r
-                               start      = this.startIndex - this.numItemsPrev,\r
                                itemH      = this.itemHeightLastEM,\r
-                               i, data, node, _y = 0, last, n;\r
-                       \r
-                       i = this.startRenderIndex = start = start < 0 ? 0 : start;\r
-                       \r
-                       _y = ( itemH + gapY ) * i;\r
+                               i = 0, data, node, _y = 0, last, n;\r
                        \r
                        for( ; i < l; ++i ){\r
                                if( !( data = itemNodes[ i ] ) ){\r
-                                       node = render.clone( true );\r
+                                       node = renderer.clone( true );\r
                                        this.addAt( i, [ node ] );\r
                                        data = itemNodes[ i ] = X_Pair_get( node );\r
                                        // init -> addToParent -> creationComplete\r
@@ -146,17 +85,10 @@ var XUI_Repeater = XUI_Box.inherits(
                                _y += ( itemH || data.boxHeight ) + gapY;\r
                                \r
                                // 一番最初のループ。ここでページあたりのアイテム数を計算\r
-                               if( !itemH && i === start ){\r
+                               if( !itemH && i === 0 ){\r
                                        itemH = _y - gapY;\r
                                        this.itemHeightLastEM = itemH;\r
-                                       this.itemHeightLast   = itemH * X_ViewPort_baseFontSize,\r
-                                       // scroller の miniHeight は(例えば)親の高さの300% そこにいくつのアイテムを並べることが出来るか?端数切り上げ\r
-                                       this.numItemsParPage = _h / itemH + 0.999 | 0;\r
-                                       n    = this.numItems = ( _h * 3 ) / itemH + 0.999 | 0; // TODO boxHeight\r
-                                       this.numItemsPrev    = ( this.numItems - this.numItemsParPage ) / 2 | 0;\r
-                                       last = i + n;\r
-                                       // データの最後まで、または、開始位置から 3ページ分を生成する\r
-                                       l    = last < l ? last : l;\r
+                                       this.itemHeightLast   = itemH * X_ViewPort_baseFontSize;\r
                                };\r
                        };\r
                        \r
@@ -165,7 +97,7 @@ var XUI_Repeater = XUI_Box.inherits(
                        };\r
                        \r
                        // TODO contentHeight は attr を無視する -> 未表示領域につくるアイテム数 GPU の有無で変わる\r
-                       this.contentHeight = dataSource.length * ( itemH + gapY ) - gapY;\r
+                       this.contentHeight = l * ( itemH + gapY ) - gapY;\r
                },\r
                \r
                onPropertyChange : function( name, newValue ){\r
index 11ebfcb..e5c7745 100644 (file)
@@ -55,8 +55,10 @@ document.write( [
                'js/06_net/00_XNet.js',\r
                'js/06_net/01_XNetXHR.js',\r
                'js/06_net/02_XNetJSONP.js',\r
-               //'js/06_net/03_XNetForm.js',\r
+               'js/06_net/03_XNetForm.js',\r
                'js/06_net/04_XNetImage.js',\r
+               'js/06_net/05_XXHRGadget.js',\r
+               'js/06_net/10_XOAuth2.js',\r
                \r
                'js/07_audio/00_XAudio.js',\r
                'js/07_audio/01_XWebAudio.js',\r