soiz1 commited on
Commit
efb016b
·
verified ·
1 Parent(s): 9ef005a

Update dev-tools.js

Browse files
Files changed (1) hide show
  1. dev-tools.js +512 -1
dev-tools.js CHANGED
@@ -35,8 +35,519 @@
35
  --dom-attr: #9cdcfe;
36
  --dom-text: #d4d4d4;
37
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
 
39
- /* ... (スタイル定義は変更なし、前と同じ) ... */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  `;
41
  document.head.appendChild(style);
42
 
 
35
  --dom-attr: #9cdcfe;
36
  --dom-text: #d4d4d4;
37
  }
38
+ .devtools-container {
39
+ position: fixed;
40
+ bottom: 0;
41
+ left: 0;
42
+ width: 100%;
43
+ height: 300px;
44
+ background-color: var(--panel-bg);
45
+ border-top: 1px solid var(--border-color);
46
+ box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.3);
47
+ z-index: 9999;
48
+ display: flex;
49
+ flex-direction: column;
50
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
51
+ color: var(--text-color);
52
+ }
53
+
54
+ .devtools-header {
55
+ display: flex;
56
+ justify-content: space-between;
57
+ align-items: center;
58
+ padding: 5px 10px;
59
+ background-color: var(--tab-bg);
60
+ border-bottom: 1px solid var(--border-color);
61
+ }
62
+
63
+ .devtools-tabs {
64
+ display: flex;
65
+ gap: 5px;
66
+ }
67
+
68
+ .devtools-tab {
69
+ padding: 5px 10px;
70
+ cursor: pointer;
71
+ border-radius: 3px 3px 0 0;
72
+ background-color: var(--tab-bg);
73
+ border: 1px solid var(--border-color);
74
+ border-bottom: none;
75
+ font-size: 12px;
76
+ color: var(--text-muted);
77
+ }
78
+
79
+ .devtools-tab.active {
80
+ background-color: var(--tab-active-bg);
81
+ color: var(--text-color);
82
+ border-bottom: 1px solid var(--tab-active-bg);
83
+ margin-bottom: -1px;
84
+ font-weight: bold;
85
+ }
86
+
87
+ .devtools-close {
88
+ background: none;
89
+ border: none;
90
+ font-size: 16px;
91
+ cursor: pointer;
92
+ padding: 0 5px;
93
+ color: var(--text-color);
94
+ }
95
+
96
+ .devtools-content {
97
+ flex: 1;
98
+ overflow: auto;
99
+ position: relative;
100
+ background-color: var(--panel-bg);
101
+ }
102
+
103
+ .devtools-panel {
104
+ position: absolute;
105
+ top: 0;
106
+ left: 0;
107
+ width: 100%;
108
+ height: 100%;
109
+ padding: 10px;
110
+ overflow: auto;
111
+ display: none;
112
+ background-color: var(--panel-bg);
113
+ }
114
+
115
+ .devtools-panel.active {
116
+ display: block;
117
+ }
118
+
119
+ /* Console スタイル */
120
+ #console-log {
121
+ white-space: pre-wrap;
122
+ margin: 0;
123
+ line-height: 1.4;
124
+ flex: 1;
125
+ color: var(--console-log-color);
126
+ font-family: 'Consolas', 'Monaco', monospace;
127
+ font-size: 13px;
128
+ }
129
+
130
+ .console-log {
131
+ color: var(--console-log-color);
132
+ }
133
+
134
+ .console-error {
135
+ color: var(--console-error-color);
136
+ }
137
+
138
+ .console-warn {
139
+ color: var(--console-warn-color);
140
+ }
141
+
142
+ .console-info {
143
+ color: var(--console-info-color);
144
+ }
145
+
146
+ .console-input {
147
+ width: calc(100% - 16px);
148
+ background: var(--tab-bg);
149
+ border: 1px solid var(--border-color);
150
+ color: var(--text-color);
151
+ padding: 8px;
152
+ margin-top: 10px;
153
+ font-family: monospace;
154
+ border-radius: 3px;
155
+ }
156
+
157
+ /* Elements スタイル */
158
+ .elements-container {
159
+ display: flex;
160
+ flex: 1;
161
+ overflow: hidden;
162
+ }
163
+
164
+ .dom-tree {
165
+ font-family: 'Consolas', 'Monaco', monospace;
166
+ flex: 1;
167
+ overflow: auto;
168
+ border-right: 1px solid var(--border-color);
169
+ padding-right: 10px;
170
+ color: var(--dom-text);
171
+ font-size: 13px;
172
+ }
173
+
174
+ .dom-node {
175
+ margin-left: 15px;
176
+ position: relative;
177
+ line-height: 1.4;
178
+ transition: background-color 0.3s;
179
+ }
180
+
181
+ .dom-node.selected {
182
+ background: var(--highlight-bg);
183
+ }
184
+
185
+ .dom-node.highlight {
186
+ animation: highlight-fade 1.5s;
187
+ }
188
+
189
+ @keyframes highlight-fade {
190
+ 0% { background-color: rgba(79, 195, 247, 0.5); }
191
+ 100% { background-color: transparent; }
192
+ }
193
+
194
+ .dom-tag {
195
+ color: var(--dom-tag);
196
+ font-weight: bold;
197
+ }
198
+
199
+ .dom-attr {
200
+ color: var(--dom-attr);
201
+ }
202
+
203
+ .dom-attr.editable:hover {
204
+ text-decoration: underline;
205
+ cursor: pointer;
206
+ }
207
+
208
+ .dom-text {
209
+ color: var(--dom-text);
210
+ }
211
+
212
+ .dom-edit-input {
213
+ background: var(--panel-bg);
214
+ border: 1px solid var(--primary-color);
215
+ padding: 0 2px;
216
+ margin: -1px 0;
217
+ font-family: monospace;
218
+ min-width: 50px;
219
+ color: var(--text-color);
220
+ }
221
+
222
+ .css-panel {
223
+ flex: 1;
224
+ overflow: auto;
225
+ padding-left: 10px;
226
+ font-size: 13px;
227
+ }
228
+
229
+ .css-rule {
230
+ margin-bottom: 15px;
231
+ border: 1px solid var(--border-color);
232
+ padding: 8px;
233
+ background-color: var(--tab-bg);
234
+ border-radius: 3px;
235
+ }
236
+
237
+ .css-selector {
238
+ color: var(--primary-color);
239
+ margin-bottom: 5px;
240
+ font-weight: bold;
241
+ }
242
+
243
+ .css-property {
244
+ display: flex;
245
+ margin-bottom: 3px;
246
+ }
247
+
248
+ .css-property-name {
249
+ color: var(--dom-attr);
250
+ min-width: 120px;
251
+ }
252
+
253
+ .css-property-value {
254
+ color: var(--dom-text);
255
+ flex: 1;
256
+ }
257
+
258
+ .css-toggle {
259
+ margin-left: 10px;
260
+ color: var(--error-color);
261
+ cursor: pointer;
262
+ }
263
+
264
+ /* Context Menu */
265
+ .context-menu {
266
+ position: absolute;
267
+ background: var(--panel-bg);
268
+ border: 1px solid var(--border-color);
269
+ z-index: 10000;
270
+ min-width: 200px;
271
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
272
+ display: none;
273
+ border-radius: 3px;
274
+ overflow: hidden;
275
+ }
276
+
277
+ .context-menu-item {
278
+ padding: 8px 15px;
279
+ cursor: pointer;
280
+ color: var(--text-color);
281
+ font-size: 13px;
282
+ }
283
+
284
+ .context-menu-item:hover {
285
+ background: var(--primary-color);
286
+ color: #000;
287
+ }
288
+
289
+ /* Storage スタイル */
290
+ .storage-table {
291
+ width: 100%;
292
+ border-collapse: collapse;
293
+ margin-bottom: 10px;
294
+ font-size: 13px;
295
+ }
296
+
297
+ .storage-table th, .storage-table td {
298
+ border: 1px solid var(--border-color);
299
+ padding: 5px;
300
+ text-align: left;
301
+ }
302
+
303
+ .storage-table th {
304
+ background: var(--tab-bg);
305
+ }
306
+
307
+ .storage-actions {
308
+ display: flex;
309
+ gap: 5px;
310
+ }
311
+
312
+ .storage-btn {
313
+ background: var(--primary-color);
314
+ border: none;
315
+ padding: 2px 5px;
316
+ cursor: pointer;
317
+ border-radius: 3px;
318
+ color: #000;
319
+ font-size: 12px;
320
+ }
321
+
322
+ .editable {
323
+ cursor: pointer;
324
+ padding: 2px 5px;
325
+ border: 1px dashed transparent;
326
+ }
327
+
328
+ .editable:hover {
329
+ border-color: var(--primary-color);
330
+ }
331
+
332
+ .add-btn {
333
+ background: var(--primary-color);
334
+ color: #000;
335
+ border: none;
336
+ padding: 5px 10px;
337
+ margin-top: 10px;
338
+ cursor: pointer;
339
+ border-radius: 3px;
340
+ font-size: 13px;
341
+ }
342
+
343
+ .add-btn:hover {
344
+ background: var(--primary-hover);
345
+ }
346
+
347
+ /* Network スタイル */
348
+ .network-container {
349
+ display: flex;
350
+ height: 100%;
351
+ overflow: hidden;
352
+ }
353
+
354
+ .network-requests {
355
+ width: 40%;
356
+ overflow-y: auto;
357
+ border-right: 1px solid var(--border-color);
358
+ font-size: 13px;
359
+ }
360
+
361
+ .network-details {
362
+ width: 60%;
363
+ overflow-y: auto;
364
+ padding-left: 10px;
365
+ }
366
+
367
+ .network-request {
368
+ padding: 8px;
369
+ border-bottom: 1px solid var(--border-color);
370
+ cursor: pointer;
371
+ display: flex;
372
+ align-items: center;
373
+ }
374
+
375
+ .network-request:hover {
376
+ background-color: rgba(0, 122, 204, 0.1);
377
+ }
378
+
379
+ .network-request.selected {
380
+ background-color: var(--highlight-bg);
381
+ }
382
+
383
+ .network-status {
384
+ width: 20px;
385
+ height: 20px;
386
+ border-radius: 50%;
387
+ display: flex;
388
+ align-items: center;
389
+ justify-content: center;
390
+ margin-right: 8px;
391
+ flex-shrink: 0;
392
+ }
393
+
394
+ .network-status.success {
395
+ background-color: var(--success-color);
396
+ color: white;
397
+ }
398
+
399
+ .network-status.error {
400
+ background-color: var(--error-color);
401
+ color: white;
402
+ }
403
+
404
+ .network-method {
405
+ font-weight: bold;
406
+ margin-right: 8px;
407
+ color: var(--primary-color);
408
+ min-width: 40px;
409
+ }
410
+
411
+ .network-url {
412
+ flex: 1;
413
+ white-space: nowrap;
414
+ overflow: hidden;
415
+ text-overflow: ellipsis;
416
+ }
417
+
418
+ .network-time {
419
+ color: var(--text-muted);
420
+ font-size: 11px;
421
+ margin-left: 8px;
422
+ }
423
+
424
+ .network-detail-section {
425
+ margin-bottom: 15px;
426
+ }
427
+
428
+ .network-detail-title {
429
+ font-weight: bold;
430
+ margin-bottom: 5px;
431
+ color: var(--primary-color);
432
+ }
433
 
434
+ .network-detail-content {
435
+ background: var(--tab-bg);
436
+ padding: 8px;
437
+ border-radius: 3px;
438
+ border: 1px solid var(--border-color);
439
+ font-family: monospace;
440
+ white-space: pre-wrap;
441
+ font-size: 12px;
442
+ max-height: 200px;
443
+ overflow-y: auto;
444
+ }
445
+
446
+ /* Web Vitals スタイル */
447
+ .vitals-container {
448
+ display: flex;
449
+ flex-direction: column;
450
+ gap: 15px;
451
+ }
452
+
453
+ .vital-card {
454
+ background: var(--tab-bg);
455
+ border: 1px solid var(--border-color);
456
+ border-radius: 5px;
457
+ padding: 15px;
458
+ }
459
+
460
+ .vital-title {
461
+ font-weight: bold;
462
+ margin-bottom: 10px;
463
+ color: var(--primary-color);
464
+ display: flex;
465
+ justify-content: space-between;
466
+ align-items: center;
467
+ }
468
+
469
+ .vital-value {
470
+ font-size: 24px;
471
+ font-weight: bold;
472
+ margin: 10px 0;
473
+ }
474
+
475
+ .vital-good {
476
+ color: var(--success-color);
477
+ }
478
+
479
+ .vital-needs-improvement {
480
+ color: var(--warning-color);
481
+ }
482
+
483
+ .vital-poor {
484
+ color: var(--error-color);
485
+ }
486
+
487
+ .vital-description {
488
+ font-size: 13px;
489
+ color: var(--text-muted);
490
+ }
491
+
492
+ .vital-thresholds {
493
+ display: flex;
494
+ margin-top: 10px;
495
+ font-size: 12px;
496
+ }
497
+
498
+ .vital-threshold {
499
+ flex: 1;
500
+ text-align: center;
501
+ padding: 5px;
502
+ border-radius: 3px;
503
+ }
504
+
505
+ .vital-threshold.active {
506
+ background: rgba(0, 122, 204, 0.2);
507
+ }
508
+
509
+ /* DOM Tree Toggle */
510
+ .dom-toggle {
511
+ position: absolute;
512
+ left: -12px;
513
+ top: 2px;
514
+ width: 10px;
515
+ height: 10px;
516
+ cursor: pointer;
517
+ background-color: var(--text-muted);
518
+ clip-path: polygon(0 0, 100% 50%, 0 100%);
519
+ transition: transform 0.2s;
520
+ }
521
+
522
+ .dom-toggle.collapsed {
523
+ transform: rotate(-90deg);
524
+ }
525
+
526
+ .dom-children {
527
+ overflow: hidden;
528
+ transition: max-height 0.3s ease-out;
529
+ }
530
+
531
+ /* JSON スタイル */
532
+ .json-key {
533
+ color: var(--json-key);
534
+ }
535
+
536
+ .json-string {
537
+ color: var(--json-string);
538
+ }
539
+
540
+ .json-number {
541
+ color: var(--json-number);
542
+ }
543
+
544
+ .json-boolean {
545
+ color: var(--json-boolean);
546
+ }
547
+
548
+ .json-null {
549
+ color: var(--json-null);
550
+ }
551
  `;
552
  document.head.appendChild(style);
553