@@ -12,12 +12,35 @@ module.exports.Component = registerComponent('inspector', {
1212 } ,
1313
1414 init : function ( ) {
15+ this . loadingMessage = 'Loading Inspector' ;
1516 this . onKeydown = bind ( this . onKeydown , this ) ;
1617 this . onMessage = bind ( this . onMessage , this ) ;
18+ this . initOverlay ( ) ;
1719 window . addEventListener ( 'keydown' , this . onKeydown ) ;
1820 window . addEventListener ( 'message' , this . onMessage ) ;
1921 } ,
2022
23+ initOverlay : function ( ) {
24+ this . overlayEl = document . createElement ( 'div' ) ;
25+ this . overlayEl . style . backgroundColor = '#222' ;
26+ this . overlayEl . style . opacity = '0.90' ;
27+ this . overlayEl . style . position = 'absolute' ;
28+ this . overlayEl . style . width = '800px' ;
29+ this . overlayEl . style . height = '600px' ;
30+ this . overlayEl . style . textAlign = 'left' ;
31+
32+ this . loadingMessageEl = document . createElement ( 'div' ) ;
33+ this . loadingMessageEl . innerHTML = this . loadingMessage ;
34+ this . loadingMessageEl . style . position = 'relative' ;
35+ this . loadingMessageEl . style . color = 'white' ;
36+ this . loadingMessageEl . style . width = '130px' ;
37+ this . loadingMessageEl . style . opacity = '1.0' ;
38+ this . loadingMessageEl . style . height = '20px' ;
39+ this . loadingMessageEl . style . left = 'calc(50% - 65px)' ;
40+ this . loadingMessageEl . style . top = 'calc(50% - 10px)' ;
41+ this . overlayEl . appendChild ( this . loadingMessageEl ) ;
42+ } ,
43+
2144 remove : function ( ) {
2245 this . removeEventListeners ( ) ;
2346 } ,
@@ -31,6 +54,50 @@ module.exports.Component = registerComponent('inspector', {
3154 this . injectInspector ( ) ;
3255 } ,
3356
57+ showLoader : function ( ) {
58+ var computedStyle = window . getComputedStyle ( this . el ) ;
59+ var overlayEl = this . overlayEl ;
60+ overlayEl . style . width = computedStyle . width ;
61+ overlayEl . style . height = computedStyle . height ;
62+ this . el . appendChild ( this . overlayEl ) ;
63+ this . tick = this . animate ;
64+ this . el . addBehavior ( this ) ;
65+ } ,
66+
67+ hideLoader : function ( ) {
68+ this . el . removeChild ( this . overlayEl ) ;
69+ this . tick = undefined ;
70+ this . el . removeBehavior ( this ) ;
71+ } ,
72+
73+ animate : ( function ( ) {
74+ var step = 0 ;
75+ return function ( ) {
76+ var message = this . loadingMessage ;
77+ var loadingMessageEl = this . loadingMessageEl ;
78+ if ( this . overlayEl . parentElement === null ) { return ; }
79+ step ++ ;
80+ if ( step === 100 ) {
81+ step = 0 ;
82+ loadingMessageEl . innerHTML = message + '' ;
83+ return ;
84+ }
85+ if ( step === 25 ) {
86+ this . loadingMessageEl . innerHTML = message + '.' ;
87+ return ;
88+ }
89+ if ( step === 50 ) {
90+ this . loadingMessageEl . innerHTML = message + '..' ;
91+ return ;
92+ }
93+ if ( step === 75 ) {
94+ this . loadingMessageEl . innerHTML = message + '...' ;
95+ return ;
96+ }
97+ console . log ( step ) ;
98+ } ;
99+ } ) ( ) ,
100+
34101 /**
35102 * postMessage. aframe.io uses this to create a button on examples to open Inspector.
36103 */
@@ -44,13 +111,16 @@ module.exports.Component = registerComponent('inspector', {
44111
45112 if ( AFRAME . INSPECTOR || AFRAME . inspectorInjected ) { return ; }
46113
114+ this . showLoader ( ) ;
115+
47116 // Inject.
48117 script = document . createElement ( 'script' ) ;
49118 script . src = this . data . url ;
50119 script . setAttribute ( 'data-name' , 'aframe-inspector' ) ;
51120 script . setAttribute ( AFRAME_INJECTED , '' ) ;
52121 script . onload = function ( ) {
53122 AFRAME . INSPECTOR . open ( ) ;
123+ self . hideLoader ( ) ;
54124 self . removeEventListeners ( ) ;
55125 } ;
56126 document . head . appendChild ( script ) ;
0 commit comments