Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
|
|
@ -0,0 +1,58 @@
|
|||
define(["exports"], function (exports) {
|
||||
"use strict";
|
||||
|
||||
(function (window) {
|
||||
"use strict";
|
||||
|
||||
var shadowHTML = "<style scoped>\n.overlay {\n display: none;\n position: absolute;\n box-sizing: border-box;\n pointer-events: none;\n z-index: 9999999; /* above the app, but below the other customizer elements */\n background-color: #00caf2;\n border: 2px dotted #fff;\n outline: 1px solid #00caf2;\n opacity: 0.75;\n}\n.label {\n background-color: rgba(0, 0, 0, 0.5);\n border-bottom-right-radius: 2px;\n color: #fff;\n font-family: 'FiraSans';\n font-size: 10px;\n line-height: 1.2em;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: inline-block;\n position: absolute;\n padding: 0 2px;\n top: 0;\n left: 0;\n max-width: 100%;\n overflow: hidden;\n}\n</style>\n<div class=\"overlay\">\n <div class=\"label\"></div>\n</div>";
|
||||
|
||||
var proto = Object.create(HTMLElement.prototype);
|
||||
|
||||
proto.createdCallback = function () {
|
||||
this.shadow = this.createShadowRoot();
|
||||
this.shadow.innerHTML = shadowHTML;
|
||||
this.overlay = this.shadow.querySelector(".overlay");
|
||||
this.label = this.shadow.querySelector(".label");
|
||||
};
|
||||
|
||||
proto.highlight = function (element) {
|
||||
// Figure out where the element is
|
||||
var rect = element && element.getBoundingClientRect();
|
||||
|
||||
// If the element has zero size, hide the highlight
|
||||
if (!rect || (rect.width === 0 && rect.height === 0)) {
|
||||
this.overlay.style.display = "none";
|
||||
} else {
|
||||
// Otherwise, highlight the element.
|
||||
// Note that we use add the document scroll offsets to the element
|
||||
// coordinates to get document coordinates instead of screen coordinates.
|
||||
this.overlay.style.left = (rect.left + window.pageXOffset) + "px";
|
||||
this.overlay.style.top = (rect.top + window.pageYOffset) + "px";
|
||||
this.overlay.style.width = rect.width + "px";
|
||||
this.overlay.style.height = rect.height + "px";
|
||||
this.overlay.style.display = "block";
|
||||
|
||||
// Set the label to properly identify the element.
|
||||
this.label.textContent = element.tagName;
|
||||
if (element.id) {
|
||||
this.label.textContent += "#" + element.id;
|
||||
}
|
||||
|
||||
// And try to move the element so that it is on screen
|
||||
element.scrollIntoView({ behavior: "smooth" });
|
||||
}
|
||||
};
|
||||
|
||||
proto.hide = function () {
|
||||
this.overlay.style.display = "none";
|
||||
};
|
||||
|
||||
try {
|
||||
document.registerElement("fxos-customizer-highlighter", { prototype: proto });
|
||||
} catch (e) {
|
||||
if (e.name !== "NotSupportedError") {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
})(window);
|
||||
});
|
||||
Loading…
Reference in a new issue