@@ -12,7 +12,8 @@ import { createObjectClient } from "../../client/firefox";
1212import {
1313 getSelectedSource ,
1414 getSelectedFrame ,
15- getFrameScope ,
15+ getGeneratedFrameScope ,
16+ getOriginalFrameScope ,
1617 isPaused as getIsPaused ,
1718 getPauseReason
1819} from "../../selectors" ;
@@ -27,48 +28,78 @@ import "./Scopes.css";
2728type Props = {
2829 isPaused : Pause ,
2930 selectedFrame : Object ,
30- frameScopes : Object | null ,
31+ generatedFrameScopes : Object ,
32+ originalFrameScopes : Object | null ,
3133 isLoading : boolean ,
3234 why : Why
3335} ;
3436
3537type State = {
36- scopes : ?( NamedValue [ ] )
38+ originalScopes : ?( NamedValue [ ] ) ,
39+ generatedScopes : ?( NamedValue [ ] ) ,
40+ showOriginal : boolean
3741} ;
3842
3943class Scopes extends PureComponent < Props , State > {
4044 constructor ( props : Props , ...args ) {
41- const { why, selectedFrame, frameScopes } = props ;
45+ const {
46+ why,
47+ selectedFrame,
48+ originalFrameScopes,
49+ generatedFrameScopes
50+ } = props ;
4251
4352 super ( props , ...args ) ;
4453
4554 this . state = {
46- scopes : getScopes ( why , selectedFrame , frameScopes )
55+ originalScopes : getScopes ( why , selectedFrame , originalFrameScopes ) ,
56+ generatedScopes : getScopes ( why , selectedFrame , generatedFrameScopes ) ,
57+ showOriginal : true
4758 } ;
4859 }
4960
5061 componentWillReceiveProps ( nextProps ) {
51- const { isPaused, selectedFrame, frameScopes } = this . props ;
62+ const {
63+ isPaused,
64+ selectedFrame,
65+ originalFrameScopes,
66+ generatedFrameScopes
67+ } = this . props ;
5268 const isPausedChanged = isPaused !== nextProps . isPaused ;
5369 const selectedFrameChanged = selectedFrame !== nextProps . selectedFrame ;
54- const frameScopesChanged = frameScopes !== nextProps . frameScopes ;
55-
56- if ( isPausedChanged || selectedFrameChanged || frameScopesChanged ) {
70+ const originalFrameScopesChanged =
71+ originalFrameScopes !== nextProps . originalFrameScopes ;
72+ const generatedFrameScopesChanged =
73+ generatedFrameScopes !== nextProps . generatedFrameScopes ;
74+
75+ if (
76+ isPausedChanged ||
77+ selectedFrameChanged ||
78+ originalFrameScopesChanged ||
79+ generatedFrameScopesChanged
80+ ) {
5781 this . setState ( {
58- scopes : getScopes (
82+ originalScopes : getScopes (
83+ nextProps . why ,
84+ nextProps . selectedFrame ,
85+ nextProps . originalFrameScopes
86+ ) ,
87+ generatedScopes : getScopes (
5988 nextProps . why ,
6089 nextProps . selectedFrame ,
61- nextProps . frameScopes
90+ nextProps . generatedFrameScopes
6291 )
6392 } ) ;
6493 }
6594 }
6695
6796 render ( ) {
6897 const { isPaused , isLoading } = this . props ;
69- const { scopes } = this . state ;
98+ const { originalScopes , generatedScopes , showOriginal } = this . state ;
99+
100+ const scopes = ( showOriginal && originalScopes ) || generatedScopes ;
70101
71- if ( scopes ) {
102+ if ( scopes && ! isLoading ) {
72103 return (
73104 < div className = "pane scopes-list" >
74105 < ObjectInspector
@@ -80,6 +111,21 @@ class Scopes extends PureComponent<Props, State> {
80111 dimTopLevelWindow = { true }
81112 createObjectClient = { grip => createObjectClient ( grip ) }
82113 />
114+ { originalScopes ? (
115+ < div className = "scope-type-toggle" >
116+ < a
117+ href = ""
118+ onClick = { e => {
119+ e . preventDefault ( ) ;
120+ this . setState ( { showOriginal : ! showOriginal } ) ;
121+ } }
122+ >
123+ { showOriginal
124+ ? L10N . getStr ( "scopes.toggleToGenerated" )
125+ : L10N . getStr ( "scopes.toggleToOriginal" ) }
126+ </ a >
127+ </ div >
128+ ) : null }
83129 </ div >
84130 ) ;
85131 }
@@ -106,18 +152,30 @@ export default connect(
106152 const selectedFrame = getSelectedFrame ( state ) ;
107153 const selectedSource = getSelectedSource ( state ) ;
108154
109- const { scope : frameScopes , pending } = getFrameScope (
155+ const {
156+ scope : originalFrameScopes ,
157+ pending : originalPending
158+ } = getOriginalFrameScope (
110159 state ,
111160 selectedSource && selectedSource . get ( "id" ) ,
112161 selectedFrame && selectedFrame . id
113162 ) || { scope : null , pending : false } ;
114163
164+ const {
165+ scope : generatedFrameScopes ,
166+ pending : generatedPending
167+ } = getGeneratedFrameScope ( state , selectedFrame && selectedFrame . id ) || {
168+ scope : null ,
169+ pending : false
170+ } ;
171+
115172 return {
116173 selectedFrame,
117174 isPaused : getIsPaused ( state ) ,
118- isLoading : pending ,
175+ isLoading : generatedPending || originalPending ,
119176 why : getPauseReason ( state ) ,
120- frameScopes : frameScopes
177+ originalFrameScopes,
178+ generatedFrameScopes
121179 } ;
122180 } ,
123181 dispatch => bindActionCreators ( actions , dispatch )
0 commit comments