OLD | NEW |
1 <!-- | 1 <!-- |
2 Copyright (C) 2012 Google Inc. All rights reserved. | 2 Copyright (C) 2012 Google Inc. All rights reserved. |
3 | 3 |
4 Redistribution and use in source and binary forms, with or without | 4 Redistribution and use in source and binary forms, with or without |
5 modification, are permitted provided that the following conditions | 5 modification, are permitted provided that the following conditions |
6 are met: | 6 are met: |
7 | 7 |
8 1. Redistributions of source code must retain the above copyright | 8 1. Redistributions of source code must retain the above copyright |
9 notice, this list of conditions and the following disclaimer. | 9 notice, this list of conditions and the following disclaimer. |
10 2. Redistributions in binary form must reproduce the above copyright | 10 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 const gridBackgroundColor = "rgba(255, 255, 255, 0.8)"; | 247 const gridBackgroundColor = "rgba(255, 255, 255, 0.8)"; |
248 | 248 |
249 function drawPausedInDebuggerMessage(message) | 249 function drawPausedInDebuggerMessage(message) |
250 { | 250 { |
251 window._controlsVisible = true; | 251 window._controlsVisible = true; |
252 document.querySelector(".controls-line").style.visibility = "visible"; | 252 document.querySelector(".controls-line").style.visibility = "visible"; |
253 document.getElementById("paused-in-debugger").textContent = message; | 253 document.getElementById("paused-in-debugger").textContent = message; |
254 document.body.classList.add("dimmed"); | 254 document.body.classList.add("dimmed"); |
255 } | 255 } |
256 | 256 |
257 function _drawGrid(rulerAtRight, rulerAtBottom) | 257 function _drawGrid(context, rulerAtRight, rulerAtBottom) |
258 { | 258 { |
259 if (window._gridPainted) | 259 if (window._gridPainted) |
260 return; | 260 return; |
261 window._gridPainted = true; | 261 window._gridPainted = true; |
262 | 262 |
263 context.save(); | 263 context.save(); |
264 | 264 |
265 var pageFactor = pageZoomFactor; | 265 var pageFactor = pageZoomFactor; |
266 function zoom(x) | 266 function zoom(x) |
267 { | 267 { |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
401 } | 401 } |
402 | 402 |
403 var frameWidth = canvasWidth; | 403 var frameWidth = canvasWidth; |
404 var textWidth = context.measureText(text).width; | 404 var textWidth = context.measureText(text).width; |
405 context.fillStyle = gridBackgroundColor; | 405 context.fillStyle = gridBackgroundColor; |
406 context.fillRect(frameWidth - textWidth - 12, drawGridBoolean ? 15 : 0, fram
eWidth, 25); | 406 context.fillRect(frameWidth - textWidth - 12, drawGridBoolean ? 15 : 0, fram
eWidth, 25); |
407 context.fillStyle = darkGridColor; | 407 context.fillStyle = darkGridColor; |
408 context.fillText(text, frameWidth - textWidth - 6, drawGridBoolean ? 33 : 18
); | 408 context.fillText(text, frameWidth - textWidth - 6, drawGridBoolean ? 33 : 18
); |
409 context.restore(); | 409 context.restore(); |
410 if (drawGridBoolean) | 410 if (drawGridBoolean) |
411 _drawGrid(); | 411 _drawGrid(context); |
412 } | 412 } |
413 | 413 |
414 function resetCanvas(canvasElement) | 414 function resetCanvas(canvasElement) |
415 { | 415 { |
416 canvasElement.width = deviceScaleFactor * viewportSize.width; | 416 canvasElement.width = deviceScaleFactor * viewportSize.width; |
417 canvasElement.height = deviceScaleFactor * viewportSize.height; | 417 canvasElement.height = deviceScaleFactor * viewportSize.height; |
418 canvasElement.style.width = viewportSize.width + "px"; | 418 canvasElement.style.width = viewportSize.width + "px"; |
419 canvasElement.style.height = viewportSize.height + "px"; | 419 canvasElement.style.height = viewportSize.height + "px"; |
420 var context = canvasElement.getContext("2d"); | 420 var context = canvasElement.getContext("2d"); |
421 context.scale(deviceScaleFactor, deviceScaleFactor); | 421 context.scale(deviceScaleFactor, deviceScaleFactor); |
422 } | 422 } |
423 | 423 |
424 function reset(resetData) | 424 function reset(resetData) |
425 { | 425 { |
426 window.viewportSize = resetData.viewportSize; | 426 window.viewportSize = resetData.viewportSize; |
427 window.deviceScaleFactor = resetData.deviceScaleFactor; | 427 window.deviceScaleFactor = resetData.deviceScaleFactor; |
428 window.pageZoomFactor = resetData.pageZoomFactor; | 428 window.pageZoomFactor = resetData.pageZoomFactor; |
429 window.scrollX = Math.round(resetData.scrollX); | 429 window.scrollX = Math.round(resetData.scrollX); |
430 window.scrollY = Math.round(resetData.scrollY); | 430 window.scrollY = Math.round(resetData.scrollY); |
431 | 431 |
432 window.canvas = document.getElementById("canvas"); | 432 window.canvas = document.getElementById("canvas"); |
433 window.context = canvas.getContext("2d"); | 433 window.context = canvas.getContext("2d"); |
434 resetCanvas(canvas); | 434 resetCanvas(canvas); |
435 | 435 var matchedNodesCanvas = document.getElementById("layout-editor-matched-node
s-canvas"); |
| 436 resetCanvas(matchedNodesCanvas); |
436 window.labelsCanvas = document.getElementById("labels-canvas"); | 437 window.labelsCanvas = document.getElementById("labels-canvas"); |
437 resetLabelCanvas(); | 438 resetLabelCanvas(); |
438 | 439 |
439 window.canvasWidth = viewportSize.width; | 440 window.canvasWidth = viewportSize.width; |
440 window.canvasHeight = viewportSize.height; | 441 window.canvasHeight = viewportSize.height; |
441 | 442 |
442 window._controlsVisible = false; | 443 window._controlsVisible = false; |
443 document.querySelector(".controls-line").style.visibility = "hidden"; | 444 document.querySelector(".controls-line").style.visibility = "hidden"; |
444 document.getElementById("element-title").style.visibility = "hidden"; | 445 document.getElementById("element-title").style.visibility = "hidden"; |
445 document.getElementById("tooltip-container").classList.add("hidden"); | 446 document.getElementById("tooltip-container").classList.add("hidden"); |
446 var editor = document.getElementById("editor"); | 447 var editor = document.getElementById("editor"); |
447 editor.style.visibility = "hidden"; | 448 editor.style.visibility = "hidden"; |
448 editor.textContent = ""; | 449 editor.textContent = ""; |
| 450 document.getElementById("selector-tooltip").style.visibility = "hidden"; |
449 document.body.classList.remove("dimmed"); | 451 document.body.classList.remove("dimmed"); |
450 document.removeEventListener("mousedown", consumeEvent); | 452 document.removeEventListener("mousedown", consumeEvent); |
451 document.removeEventListener("mousemove", onLayoutEditorMouseMove); | 453 document.removeEventListener("mousemove", onLayoutEditorMouseMove); |
452 document.removeEventListener("mouseup", consumeEvent); | 454 document.removeEventListener("mouseup", consumeEvent); |
453 document.removeEventListener("click", onLayoutEditorClick); | 455 document.removeEventListener("click", onLayoutEditorClick); |
454 document.removeEventListener("keydown", onLayoutEditorKeyDown); | 456 document.removeEventListener("keydown", onLayoutEditorKeyDown); |
| 457 document.removeEventListener("mousewheel", onLayoutEditorMouseWheel); |
455 | 458 |
456 delete window.hoverableAreas; | 459 delete window.hoverableAreas; |
457 delete window.anchorsByType; | 460 delete window.anchorsByType; |
458 window._gridPainted = false; | 461 window._gridPainted = false; |
459 } | 462 } |
460 | 463 |
461 function _drawElementTitle(elementInfo, bounds) | 464 function _drawElementTitle(context, elementInfo, bounds) |
462 { | 465 { |
463 document.getElementById("tag-name").textContent = elementInfo.tagName; | 466 document.getElementById("tag-name").textContent = elementInfo.tagName; |
464 document.getElementById("node-id").textContent = elementInfo.idValue ? "#" +
elementInfo.idValue : ""; | 467 document.getElementById("node-id").textContent = elementInfo.idValue ? "#" +
elementInfo.idValue : ""; |
465 var className = elementInfo.className; | 468 var className = elementInfo.className; |
466 if (className && className.length > 50) | 469 if (className && className.length > 50) |
467 className = className.substring(0, 50) + "\u2026"; | 470 className = className.substring(0, 50) + "\u2026"; |
468 document.getElementById("class-name").textContent = className || ""; | 471 document.getElementById("class-name").textContent = className || ""; |
469 document.getElementById("node-width").textContent = elementInfo.nodeWidth; | 472 document.getElementById("node-width").textContent = elementInfo.nodeWidth; |
470 document.getElementById("node-height").textContent = elementInfo.nodeHeight; | 473 document.getElementById("node-height").textContent = elementInfo.nodeHeight; |
471 var elementTitle = document.getElementById("element-title"); | 474 var elementTitle = document.getElementById("element-title"); |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
581 // Hide arrow if element is completely off the sides of the page. | 584 // Hide arrow if element is completely off the sides of the page. |
582 var arrowHidden = arrowX < pageMargin + tooltipBorderRadius || arrowX + arro
wRadius * 2 > canvasWidth - pageMargin - tooltipBorderRadius; | 585 var arrowHidden = arrowX < pageMargin + tooltipBorderRadius || arrowX + arro
wRadius * 2 > canvasWidth - pageMargin - tooltipBorderRadius; |
583 tooltipArrow.classList.toggle("hidden", arrowHidden); | 586 tooltipArrow.classList.toggle("hidden", arrowHidden); |
584 if (!arrowHidden) { | 587 if (!arrowHidden) { |
585 tooltipArrow.classList.toggle("tooltip-arrow-top", onTop); | 588 tooltipArrow.classList.toggle("tooltip-arrow-top", onTop); |
586 tooltipArrow.style.top = (onTop ? boxY + titleHeight : boxY - arrowRadiu
s) + "px"; | 589 tooltipArrow.style.top = (onTop ? boxY + titleHeight : boxY - arrowRadiu
s) + "px"; |
587 tooltipArrow.style.left = arrowX + "px"; | 590 tooltipArrow.style.left = arrowX + "px"; |
588 } | 591 } |
589 } | 592 } |
590 | 593 |
591 function _drawRulers(bounds, rulerAtRight, rulerAtBottom) | 594 function _drawRulers(context, bounds, rulerAtRight, rulerAtBottom) |
592 { | 595 { |
593 context.save(); | 596 context.save(); |
594 var width = canvasWidth; | 597 var width = canvasWidth; |
595 var height = canvasHeight; | 598 var height = canvasHeight; |
596 context.strokeStyle = "rgba(128, 128, 128, 0.3)"; | 599 context.strokeStyle = "rgba(128, 128, 128, 0.3)"; |
597 context.lineWidth = 1; | 600 context.lineWidth = 1; |
598 context.translate(0.5, 0.5); | 601 context.translate(0.5, 0.5); |
599 | 602 |
600 if (rulerAtRight) { | 603 if (rulerAtRight) { |
601 for (var y in bounds.rightmostXForY) { | 604 for (var y in bounds.rightmostXForY) { |
(...skipping 23 matching lines...) Expand all Loading... |
625 context.beginPath(); | 628 context.beginPath(); |
626 context.moveTo(x, 0); | 629 context.moveTo(x, 0); |
627 context.lineTo(x, bounds.topmostYForX[x]); | 630 context.lineTo(x, bounds.topmostYForX[x]); |
628 context.stroke(); | 631 context.stroke(); |
629 } | 632 } |
630 } | 633 } |
631 | 634 |
632 context.restore(); | 635 context.restore(); |
633 } | 636 } |
634 | 637 |
635 function drawPath(commands, fillColor, outlineColor, bounds, name) | 638 function drawPath(context, commands, fillColor, outlineColor, bounds, name) |
636 { | 639 { |
637 var commandsIndex = 0; | 640 var commandsIndex = 0; |
638 | 641 |
639 function extractPoints(count) | 642 function extractPoints(count) |
640 { | 643 { |
641 var points = []; | 644 var points = []; |
642 | 645 |
643 for (var i = 0; i < count; ++i) { | 646 for (var i = 0; i < count; ++i) { |
644 var x = Math.round(commands[commandsIndex++]); | 647 var x = Math.round(commands[commandsIndex++]); |
645 bounds.maxX = Math.max(bounds.maxX, x); | 648 bounds.maxX = Math.max(bounds.maxX, x); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
694 context.restore(); | 697 context.restore(); |
695 | 698 |
696 if (name) { | 699 if (name) { |
697 if (!window.hoverableAreas) | 700 if (!window.hoverableAreas) |
698 window.hoverableAreas = new Map(); | 701 window.hoverableAreas = new Map(); |
699 | 702 |
700 window.hoverableAreas.set(name, path); | 703 window.hoverableAreas.set(name, path); |
701 } | 704 } |
702 } | 705 } |
703 | 706 |
704 function drawHighlight(highlight) | 707 function drawHighlight(highlight, context) |
705 { | 708 { |
| 709 context = context || window.context; |
706 context.save(); | 710 context.save(); |
707 | 711 |
708 var bounds = { | 712 var bounds = { |
709 minX: Number.MAX_VALUE, | 713 minX: Number.MAX_VALUE, |
710 minY: Number.MAX_VALUE, | 714 minY: Number.MAX_VALUE, |
711 maxX: Number.MIN_VALUE, | 715 maxX: Number.MIN_VALUE, |
712 maxY: Number.MIN_VALUE, | 716 maxY: Number.MIN_VALUE, |
713 leftmostXForY: {}, | 717 leftmostXForY: {}, |
714 rightmostXForY: {}, | 718 rightmostXForY: {}, |
715 topmostYForX: {}, | 719 topmostYForX: {}, |
716 bottommostYForX: {} | 720 bottommostYForX: {} |
717 }; | 721 }; |
718 | 722 |
719 for (var paths = highlight.paths.slice(); paths.length;) { | 723 for (var paths = highlight.paths.slice(); paths.length;) { |
720 var path = paths.pop(); | 724 var path = paths.pop(); |
721 drawPath(path.path, path.fillColor, path.outlineColor, bounds, path.name
); | 725 drawPath(context, path.path, path.fillColor, path.outlineColor, bounds,
path.name); |
722 if (paths.length) { | 726 if (paths.length) { |
723 context.save(); | 727 context.save(); |
724 context.globalCompositeOperation = "destination-out"; | 728 context.globalCompositeOperation = "destination-out"; |
725 drawPath(paths[paths.length - 1].path, "red", null, bounds); | 729 drawPath(context, paths[paths.length - 1].path, "red", null, bounds)
; |
726 context.restore(); | 730 context.restore(); |
727 } | 731 } |
728 } | 732 } |
729 | 733 |
730 var rulerAtRight = highlight.paths.length && highlight.showRulers && bounds.
minX < 20 && bounds.maxX + 20 < canvasWidth; | 734 var rulerAtRight = highlight.paths.length && highlight.showRulers && bounds.
minX < 20 && bounds.maxX + 20 < canvasWidth; |
731 var rulerAtBottom = highlight.paths.length && highlight.showRulers && bounds
.minY < 20 && bounds.maxY + 20 < canvasHeight; | 735 var rulerAtBottom = highlight.paths.length && highlight.showRulers && bounds
.minY < 20 && bounds.maxY + 20 < canvasHeight; |
732 | 736 |
733 if (highlight.showRulers) | 737 if (highlight.showRulers) |
734 _drawGrid(rulerAtRight, rulerAtBottom); | 738 _drawGrid(context, rulerAtRight, rulerAtBottom); |
735 | 739 |
736 if (highlight.paths.length) { | 740 if (highlight.paths.length) { |
737 if (highlight.showExtensionLines) | 741 if (highlight.showExtensionLines) |
738 _drawRulers(bounds, rulerAtRight, rulerAtBottom); | 742 _drawRulers(context, bounds, rulerAtRight, rulerAtBottom); |
739 | 743 |
740 if (highlight.elementInfo && highlight.displayAsMaterial) | 744 if (highlight.elementInfo && highlight.displayAsMaterial) |
741 _drawMaterialElementTitle(highlight.elementInfo, bounds); | 745 _drawMaterialElementTitle(highlight.elementInfo, bounds); |
742 else if (highlight.elementInfo) | 746 else if (highlight.elementInfo) |
743 _drawElementTitle(highlight.elementInfo, bounds); | 747 _drawElementTitle(context, highlight.elementInfo, bounds); |
744 } | 748 } |
745 context.restore(); | 749 context.restore(); |
746 } | 750 } |
747 | 751 |
748 function setPlatform(platform) | 752 function setPlatform(platform) |
749 { | 753 { |
750 window.platform = platform; | 754 window.platform = platform; |
751 document.body.classList.add("platform-" + platform); | 755 document.body.classList.add("platform-" + platform); |
752 } | 756 } |
753 | 757 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
813 } | 817 } |
814 | 818 |
815 if (selectedAnchorInfo) | 819 if (selectedAnchorInfo) |
816 showLabels(selectedAnchorInfo.type, selectedAnchorInfo.propertyName); | 820 showLabels(selectedAnchorInfo.type, selectedAnchorInfo.propertyName); |
817 | 821 |
818 document.addEventListener("mousedown", consumeEvent); | 822 document.addEventListener("mousedown", consumeEvent); |
819 document.addEventListener("mousemove", onLayoutEditorMouseMove); | 823 document.addEventListener("mousemove", onLayoutEditorMouseMove); |
820 document.addEventListener("mouseup", consumeEvent); | 824 document.addEventListener("mouseup", consumeEvent); |
821 document.addEventListener("click", onLayoutEditorClick); | 825 document.addEventListener("click", onLayoutEditorClick); |
822 document.addEventListener("keydown", onLayoutEditorKeyDown); | 826 document.addEventListener("keydown", onLayoutEditorKeyDown); |
| 827 document.addEventListener("mousewheel", onLayoutEditorMouseWheel); |
| 828 showSelectorTooltip(); |
| 829 } |
| 830 |
| 831 function showSelectorTooltip() |
| 832 { |
| 833 var tooltipElement = document.getElementById("selector-tooltip"); |
| 834 tooltipElement.style.visibility = "visible"; |
| 835 tooltipElement.style.left = "100px"; |
| 836 tooltipElement.style.top = "100px"; |
| 837 var selectorInfo = JSON.parse(InspectorOverlayHost.currentSelectorInfo()); |
| 838 tooltipElement.textContent = selectorInfo.selector; |
| 839 tooltipElement.style.backgroundColor = "#eee"; |
| 840 |
| 841 var matchedNodesCanvas = document.getElementById("layout-editor-matched-node
s-canvas"); |
| 842 resetCanvas(matchedNodesCanvas); |
| 843 |
| 844 if (!selectorInfo.nodes) |
| 845 return; |
| 846 |
| 847 for (var nodeHighlight of selectorInfo.nodes) |
| 848 drawHighlight(nodeHighlight, matchedNodesCanvas.getContext("2d")); |
823 } | 849 } |
824 | 850 |
825 function createAnchor(anchorInfo) | 851 function createAnchor(anchorInfo) |
826 { | 852 { |
827 var handleWidth = 5; | 853 var handleWidth = 5; |
828 context.save(); | 854 context.save(); |
829 context.shadowColor = "rgba(0, 0, 0, 0.34)"; | 855 context.shadowColor = "rgba(0, 0, 0, 0.34)"; |
830 context.shadowBlur = 2; | 856 context.shadowBlur = 2; |
831 context.fillStyle = anchorColorForProperty(anchorInfo); | 857 context.fillStyle = anchorColorForProperty(anchorInfo); |
832 context.beginPath(); | 858 context.beginPath(); |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1059 if (window.draggedPropertyName) | 1085 if (window.draggedPropertyName) |
1060 return; | 1086 return; |
1061 | 1087 |
1062 // Clear selection on Esc. | 1088 // Clear selection on Esc. |
1063 if (event.keyIdentifier === "U+001B") { | 1089 if (event.keyIdentifier === "U+001B") { |
1064 event.preventDefault(); | 1090 event.preventDefault(); |
1065 InspectorOverlayHost.clearSelection(false); | 1091 InspectorOverlayHost.clearSelection(false); |
1066 } | 1092 } |
1067 } | 1093 } |
1068 | 1094 |
| 1095 function onLayoutEditorMouseWheel(event) |
| 1096 { |
| 1097 event.preventDefault(); |
| 1098 if (event.wheelDelta > 0) |
| 1099 InspectorOverlayHost.previousSelector(); |
| 1100 else |
| 1101 InspectorOverlayHost.nextSelector(); |
| 1102 |
| 1103 showSelectorTooltip(); |
| 1104 } |
| 1105 |
1069 function consumeEvent(event) | 1106 function consumeEvent(event) |
1070 { | 1107 { |
1071 event.preventDefault(); | 1108 event.preventDefault(); |
1072 } | 1109 } |
1073 | 1110 |
1074 function resetLabelCanvas() | 1111 function resetLabelCanvas() |
1075 { | 1112 { |
1076 delete window.labelCanvasState; | 1113 delete window.labelCanvasState; |
1077 resetCanvas(labelsCanvas); | 1114 resetCanvas(labelsCanvas); |
1078 if (!window.draggedPropertyName && document.body.style.cursor) | 1115 if (!window.draggedPropertyName && document.body.style.cursor) |
(...skipping 27 matching lines...) Expand all Loading... |
1106 | 1143 |
1107 </script> | 1144 </script> |
1108 </head> | 1145 </head> |
1109 <body class="fill"> | 1146 <body class="fill"> |
1110 <div class="controls-line"> | 1147 <div class="controls-line"> |
1111 <div class="message-box"><div id="paused-in-debugger"></div></div> | 1148 <div class="message-box"><div id="paused-in-debugger"></div></div> |
1112 <div class="button" id="resume-button" title="Resume script execution (F8)."
><div class="glyph"></div></div> | 1149 <div class="button" id="resume-button" title="Resume script execution (F8)."
><div class="glyph"></div></div> |
1113 <div class="button" id="step-over-button" title="Step over next function cal
l (F10)."><div class="glyph"></div></div> | 1150 <div class="button" id="step-over-button" title="Step over next function cal
l (F10)."><div class="glyph"></div></div> |
1114 </div> | 1151 </div> |
1115 </body> | 1152 </body> |
| 1153 <canvas id="layout-editor-matched-nodes-canvas" class="fill"></canvas> |
1116 <canvas id="canvas" class="fill"></canvas> | 1154 <canvas id="canvas" class="fill"></canvas> |
1117 <canvas id="labels-canvas" class="fill"></canvas> | 1155 <canvas id="labels-canvas" class="fill"></canvas> |
1118 <div id="element-title"> | 1156 <div id="element-title"> |
1119 <span id="tag-name"></span><span id="node-id"></span><span id="class-name"></s
pan> | 1157 <span id="tag-name"></span><span id="node-id"></span><span id="class-name"></s
pan> |
1120 <span id="node-width"></span><span class="px">px</span><span class="px"> ×
; </span><span id="node-height"></span><span class="px">px</span> | 1158 <span id="node-width"></span><span class="px">px</span><span class="px"> ×
; </span><span id="node-height"></span><span class="px">px</span> |
1121 </div> | 1159 </div> |
1122 <div id="tooltip-container" class="hidden"> | 1160 <div id="tooltip-container" class="hidden"> |
1123 <div id="element-tooltip"> | 1161 <div id="element-tooltip"> |
1124 <div id="element-description" class="monospace"><span id="material-tag-nam
e"></span><span id="material-node-id"></span><span id="material-class-name"></sp
an></div> | 1162 <div id="element-description" class="monospace"><span id="material-tag-nam
e"></span><span id="material-node-id"></span><span id="material-class-name"></sp
an></div> |
1125 <div id="dimensions"><span id="material-node-width"></span>×<span id=
"material-node-height"></span></div> | 1163 <div id="dimensions"><span id="material-node-width"></span>×<span id=
"material-node-height"></span></div> |
1126 </div> | 1164 </div> |
1127 <div id="element-tooltip-arrow"></div> | 1165 <div id="element-tooltip-arrow"></div> |
1128 <div id="editor" class="fill"></div> | 1166 <div id="editor" class="fill"></div> |
| 1167 <div id="selector-tooltip"></div> |
1129 <div id="log"></div> | 1168 <div id="log"></div> |
1130 </html> | 1169 </html> |
OLD | NEW |