@@ -2,19 +2,26 @@ import { $$, ajax, replaceToolbarState, debounce } from "./utils.js";
2
2
3
3
function onKeyDown ( event ) {
4
4
if ( event . keyCode === 27 ) {
5
- djdt . hide_one_level ( ) ;
5
+ djdt . hideOneLevel ( ) ;
6
6
}
7
7
}
8
8
9
+ function getDebugElement ( ) {
10
+ // Fetch the debug element from the DOM.
11
+ // This is used to avoid writing the element's id
12
+ // everywhere the element is being selected. A fixed reference
13
+ // to the element should be avoided because the entire DOM could
14
+ // be reloaded such as via HTMX boosting.
15
+ return document . getElementById ( "djDebug" ) ;
16
+ }
17
+
9
18
const djdt = {
10
19
handleDragged : false ,
11
20
init ( ) {
12
- const djDebug = document . getElementById ( "djDebug" ) ;
13
- $$ . show ( djDebug ) ;
14
21
$$ . on (
15
- document . getElementById ( "djDebugPanelList" ) ,
22
+ document . body ,
16
23
"click" ,
17
- "li a" ,
24
+ "#djDebugPanelList li a" ,
18
25
function ( event ) {
19
26
event . preventDefault ( ) ;
20
27
if ( ! this . className ) {
@@ -23,23 +30,24 @@ const djdt = {
23
30
const panelId = this . className ;
24
31
const current = document . getElementById ( panelId ) ;
25
32
if ( $$ . visible ( current ) ) {
26
- djdt . hide_panels ( ) ;
33
+ djdt . hidePanels ( ) ;
27
34
} else {
28
- djdt . hide_panels ( ) ;
35
+ djdt . hidePanels ( ) ;
29
36
30
37
$$ . show ( current ) ;
31
38
this . parentElement . classList . add ( "djdt-active" ) ;
32
39
40
+ const djDebug = getDebugElement ( ) ;
33
41
const inner = current . querySelector (
34
42
".djDebugPanelContent .djdt-scroll"
35
43
) ,
36
- store_id = djDebug . dataset . storeId ;
37
- if ( store_id && inner . children . length === 0 ) {
44
+ storeId = djDebug . dataset . storeId ;
45
+ if ( storeId && inner . children . length === 0 ) {
38
46
const url = new URL (
39
47
djDebug . dataset . renderPanelUrl ,
40
48
window . location
41
49
) ;
42
- url . searchParams . append ( "store_id" , store_id ) ;
50
+ url . searchParams . append ( "store_id" , storeId ) ;
43
51
url . searchParams . append ( "panel_id" , panelId ) ;
44
52
ajax ( url ) . then ( function ( data ) {
45
53
inner . previousElementSibling . remove ( ) ; // Remove AJAX loader
@@ -62,13 +70,13 @@ const djdt = {
62
70
}
63
71
}
64
72
) ;
65
- $$ . on ( djDebug , "click" , ".djDebugClose" , function ( ) {
66
- djdt . hide_one_level ( ) ;
73
+ $$ . on ( document . body , "click" , "#djDebug .djDebugClose" , function ( ) {
74
+ djdt . hideOneLevel ( ) ;
67
75
} ) ;
68
76
$$ . on (
69
- djDebug ,
77
+ document . body ,
70
78
"click" ,
71
- ".djDebugPanelButton input[type=checkbox]" ,
79
+ "#djDebug .djDebugPanelButton input[type=checkbox]" ,
72
80
function ( ) {
73
81
djdt . cookie . set (
74
82
this . dataset . cookie ,
@@ -82,51 +90,51 @@ const djdt = {
82
90
) ;
83
91
84
92
// Used by the SQL and template panels
85
- $$ . on ( djDebug , "click" , ".remoteCall" , function ( event ) {
93
+ $$ . on ( document . body , "click" , "#djDebug .remoteCall" , function ( event ) {
86
94
event . preventDefault ( ) ;
87
95
88
96
let url ;
89
- const ajax_data = { } ;
97
+ const ajaxData = { } ;
90
98
91
99
if ( this . tagName === "BUTTON" ) {
92
100
const form = this . closest ( "form" ) ;
93
101
url = this . formAction ;
94
- ajax_data . method = form . method . toUpperCase ( ) ;
95
- ajax_data . body = new FormData ( form ) ;
102
+ ajaxData . method = form . method . toUpperCase ( ) ;
103
+ ajaxData . body = new FormData ( form ) ;
96
104
} else if ( this . tagName === "A" ) {
97
105
url = this . href ;
98
106
}
99
107
100
- ajax ( url , ajax_data ) . then ( function ( data ) {
108
+ ajax ( url , ajaxData ) . then ( function ( data ) {
101
109
const win = document . getElementById ( "djDebugWindow" ) ;
102
110
win . innerHTML = data . content ;
103
111
$$ . show ( win ) ;
104
112
} ) ;
105
113
} ) ;
106
114
107
115
// Used by the cache, profiling and SQL panels
108
- $$ . on ( djDebug , "click" , ".djToggleSwitch" , function ( ) {
116
+ $$ . on ( document . body , "click" , "#djDebug .djToggleSwitch" , function ( ) {
109
117
const id = this . dataset . toggleId ;
110
118
const toggleOpen = "+" ;
111
119
const toggleClose = "-" ;
112
- const open_me = this . textContent === toggleOpen ;
120
+ const openMe = this . textContent === toggleOpen ;
113
121
const name = this . dataset . toggleName ;
114
122
const container = document . getElementById ( name + "_" + id ) ;
115
123
container
116
124
. querySelectorAll ( ".djDebugCollapsed" )
117
125
. forEach ( function ( e ) {
118
- $$ . toggle ( e , open_me ) ;
126
+ $$ . toggle ( e , openMe ) ;
119
127
} ) ;
120
128
container
121
129
. querySelectorAll ( ".djDebugUncollapsed" )
122
130
. forEach ( function ( e ) {
123
- $$ . toggle ( e , ! open_me ) ;
131
+ $$ . toggle ( e , ! openMe ) ;
124
132
} ) ;
125
133
const self = this ;
126
134
this . closest ( ".djDebugPanelContent" )
127
135
. querySelectorAll ( ".djToggleDetails_" + id )
128
136
. forEach ( function ( e ) {
129
- if ( open_me ) {
137
+ if ( openMe ) {
130
138
e . classList . add ( "djSelected" ) ;
131
139
e . classList . remove ( "djUnselected" ) ;
132
140
self . textContent = toggleClose ;
@@ -142,19 +150,16 @@ const djdt = {
142
150
} ) ;
143
151
} ) ;
144
152
145
- document
146
- . getElementById ( "djHideToolBarButton" )
147
- . addEventListener ( "click" , function ( event ) {
148
- event . preventDefault ( ) ;
149
- djdt . hide_toolbar ( ) ;
150
- } ) ;
151
- document
152
- . getElementById ( "djShowToolBarButton" )
153
- . addEventListener ( "click" , function ( ) {
154
- if ( ! djdt . handleDragged ) {
155
- djdt . show_toolbar ( ) ;
156
- }
157
- } ) ;
153
+ $$ . on ( document . body , "click" , "#djHideToolBarButton" , function ( event ) {
154
+ event . preventDefault ( ) ;
155
+ djdt . hideToolbar ( ) ;
156
+ } ) ;
157
+
158
+ $$ . on ( document . body , "click" , "#djShowToolBarButton" , function ( ) {
159
+ if ( ! djdt . handleDragged ) {
160
+ djdt . showToolbar ( ) ;
161
+ }
162
+ } ) ;
158
163
let startPageY , baseY ;
159
164
const handle = document . getElementById ( "djDebugToolbarHandle" ) ;
160
165
function onHandleMove ( event ) {
@@ -174,14 +179,18 @@ const djdt = {
174
179
djdt . handleDragged = true ;
175
180
}
176
181
}
177
- document
178
- . getElementById ( "djShowToolBarButton" )
179
- . addEventListener ( "mousedown" , function ( event ) {
182
+ $$ . on (
183
+ document . body ,
184
+ "mousedown" ,
185
+ "#djShowToolBarButton" ,
186
+ function ( event ) {
180
187
event . preventDefault ( ) ;
181
188
startPageY = event . pageY ;
182
189
baseY = handle . offsetTop - startPageY ;
183
190
document . addEventListener ( "mousemove" , onHandleMove ) ;
184
- } ) ;
191
+ }
192
+ ) ;
193
+
185
194
document . addEventListener ( "mouseup" , function ( event ) {
186
195
document . removeEventListener ( "mousemove" , onHandleMove ) ;
187
196
if ( djdt . handleDragged ) {
@@ -190,22 +199,27 @@ const djdt = {
190
199
requestAnimationFrame ( function ( ) {
191
200
djdt . handleDragged = false ;
192
201
} ) ;
193
- djdt . ensure_handle_visibility ( ) ;
202
+ djdt . ensureHandleVisibility ( ) ;
194
203
}
195
204
} ) ;
205
+ const djDebug = getDebugElement ( ) ;
206
+ // Make sure the debug element is rendered at least once.
207
+ // showToolbar will continue to show it in the future if the
208
+ // entire DOM is reloaded.
209
+ $$ . show ( djDebug ) ;
196
210
const show =
197
211
localStorage . getItem ( "djdt.show" ) || djDebug . dataset . defaultShow ;
198
212
if ( show === "true" ) {
199
- djdt . show_toolbar ( ) ;
213
+ djdt . showToolbar ( ) ;
200
214
} else {
201
- djdt . hide_toolbar ( ) ;
215
+ djdt . hideToolbar ( ) ;
202
216
}
203
217
if ( djDebug . dataset . sidebarUrl !== undefined ) {
204
- djdt . update_on_ajax ( ) ;
218
+ djdt . updateOnAjax ( ) ;
205
219
}
206
220
} ,
207
- hide_panels ( ) {
208
- const djDebug = document . getElementById ( "djDebug" ) ;
221
+ hidePanels ( ) {
222
+ const djDebug = getDebugElement ( ) ;
209
223
$$ . hide ( document . getElementById ( "djDebugWindow" ) ) ;
210
224
djDebug . querySelectorAll ( ".djdt-panelContent" ) . forEach ( function ( e ) {
211
225
$$ . hide ( e ) ;
@@ -214,7 +228,7 @@ const djdt = {
214
228
e . classList . remove ( "djdt-active" ) ;
215
229
} ) ;
216
230
} ,
217
- ensure_handle_visibility ( ) {
231
+ ensureHandleVisibility ( ) {
218
232
const handle = document . getElementById ( "djDebugToolbarHandle" ) ;
219
233
// set handle position
220
234
const handleTop = Math . min (
@@ -223,47 +237,48 @@ const djdt = {
223
237
) ;
224
238
handle . style . top = handleTop + "px" ;
225
239
} ,
226
- hide_toolbar ( ) {
227
- djdt . hide_panels ( ) ;
240
+ hideToolbar ( ) {
241
+ djdt . hidePanels ( ) ;
228
242
229
243
$$ . hide ( document . getElementById ( "djDebugToolbar" ) ) ;
230
244
231
245
const handle = document . getElementById ( "djDebugToolbarHandle" ) ;
232
246
$$ . show ( handle ) ;
233
- djdt . ensure_handle_visibility ( ) ;
234
- window . addEventListener ( "resize" , djdt . ensure_handle_visibility ) ;
247
+ djdt . ensureHandleVisibility ( ) ;
248
+ window . addEventListener ( "resize" , djdt . ensureHandleVisibility ) ;
235
249
document . removeEventListener ( "keydown" , onKeyDown ) ;
236
250
237
251
localStorage . setItem ( "djdt.show" , "false" ) ;
238
252
} ,
239
- hide_one_level ( ) {
253
+ hideOneLevel ( ) {
240
254
const win = document . getElementById ( "djDebugWindow" ) ;
241
255
if ( $$ . visible ( win ) ) {
242
256
$$ . hide ( win ) ;
243
257
} else {
244
258
const toolbar = document . getElementById ( "djDebugToolbar" ) ;
245
259
if ( toolbar . querySelector ( "li.djdt-active" ) ) {
246
- djdt . hide_panels ( ) ;
260
+ djdt . hidePanels ( ) ;
247
261
} else {
248
- djdt . hide_toolbar ( ) ;
262
+ djdt . hideToolbar ( ) ;
249
263
}
250
264
}
251
265
} ,
252
- show_toolbar ( ) {
266
+ showToolbar ( ) {
253
267
document . addEventListener ( "keydown" , onKeyDown ) ;
268
+ $$ . show ( document . getElementById ( "djDebug" ) ) ;
254
269
$$ . hide ( document . getElementById ( "djDebugToolbarHandle" ) ) ;
255
270
$$ . show ( document . getElementById ( "djDebugToolbar" ) ) ;
256
271
localStorage . setItem ( "djdt.show" , "true" ) ;
257
- window . removeEventListener ( "resize" , djdt . ensure_handle_visibility ) ;
272
+ window . removeEventListener ( "resize" , djdt . ensureHandleVisibility ) ;
258
273
} ,
259
- update_on_ajax ( ) {
260
- const sidebar_url =
274
+ updateOnAjax ( ) {
275
+ const sidebarUrl =
261
276
document . getElementById ( "djDebug" ) . dataset . sidebarUrl ;
262
277
const slowjax = debounce ( ajax , 200 ) ;
263
278
264
279
function handleAjaxResponse ( storeId ) {
265
280
storeId = encodeURIComponent ( storeId ) ;
266
- const dest = `${ sidebar_url } ?store_id=${ storeId } ` ;
281
+ const dest = `${ sidebarUrl } ?store_id=${ storeId } ` ;
267
282
slowjax ( dest ) . then ( function ( data ) {
268
283
replaceToolbarState ( storeId , data ) ;
269
284
} ) ;
@@ -342,10 +357,10 @@ const djdt = {
342
357
} ,
343
358
} ;
344
359
window . djdt = {
345
- show_toolbar : djdt . show_toolbar ,
346
- hide_toolbar : djdt . hide_toolbar ,
360
+ show_toolbar : djdt . showToolbar ,
361
+ hide_toolbar : djdt . hideToolbar ,
347
362
init : djdt . init ,
348
- close : djdt . hide_one_level ,
363
+ close : djdt . hideOneLevel ,
349
364
cookie : djdt . cookie ,
350
365
} ;
351
366
0 commit comments