Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/chipsenkbeil/grid-side.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'static/js/pointer-events-polyfill.js')
-rw-r--r--static/js/pointer-events-polyfill.js146
1 files changed, 0 insertions, 146 deletions
diff --git a/static/js/pointer-events-polyfill.js b/static/js/pointer-events-polyfill.js
deleted file mode 100644
index bb6a77b..0000000
--- a/static/js/pointer-events-polyfill.js
+++ /dev/null
@@ -1,146 +0,0 @@
-(function() {
- /* From http://stackoverflow.com/a/2401861/3164172 , modified by me */
- navigator.browserInfo = (function() {
- var newResult = function(name, version, full) {
- var result = { name: "", version: "", full: "" };
- result.name = (name || "").toLowerCase();
- result.version = (version || "").toLowerCase();
- result.full = (
- full || (result.name + " " + result.version).trim()
- ).toLowerCase();
- return result;
- };
-
- var ua = navigator.userAgent, tem,
- M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
- if (/trident/i.test(M[1])) {
- tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
- return newResult("IE", tem[1]);
- }
- if (M[1] === "Chrome") {
- tem = ua.match(/\b(OPR|Edge)\/(\d+)/);
- if (tem != null) return newResult(
- tem[1].replace("OPR", "Opera"),
- tem[2],
- tem.slice(1).join(" ").replace("OPR", "Opera")
- );
- }
- M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, "-?"];
- if ((tem = ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]);
- return newResult(M[0], M[1], M.join(" ").trim());
- })();
-
- /* If browser and version is okay, don't apply polyfill */
- /* TODO: Provide better way to check for CSS4 pointer-events support */
- if (navigator.browserInfo.name === "firefox" &&
- parseFloat(navigator.browserInfo.version) >= 38) {
- console.log("Ignoring pointer events polyfill, browser is okay!");
- return;
- }
-
- // Returns the pointer events for the specified element
- var getPointerEventsStyle = function(element) {
- var view, computedStyle, pointerEvents;
- if (element && element.nodeType === Element.ELEMENT_NODE) {
- view = document.defaultView || window;
- if (view) {
- computedStyle = view.getComputedStyle(element);
- if (computedStyle &&
- typeof computedStyle.getPropertyValue === "function")
- {
- pointerEvents =
- computedStyle.getPropertyValue("pointer-events");
- }
- }
- }
-
- return pointerEvents || undefined;
- };
-
- /* Adds listeners to follow the pointer-events css */
- var attachPointerEventsPolyfill = function(node) {
- var initialPointerEvents = getPointerEventsStyle(node);
-
- // If no pointer events specified, do not attach listeners
- if (!node || !initialPointerEvents) {
- return;
- } else {
- console.log("Attaching pointer events to", node.nodeName);
- };
-
- var events = [
- "click", "dblclick", "mousedown", "mouseup", "mouseover",
- "mouseout", "mousemove", "drag", "dragstart", "dragend",
- "dragleave", "dragover", "drop", "mousewheel", "scroll",
- "contextmenu"
- ];
-
- var eventFunction = function(e) {
- var pointerEvents = getPointerEventsStyle(node) || "auto";
-
- // If no pointer events, cancel this mouse event
- if (pointerEvents === "none") {
- console.log("Cancelling event!");
- e.preventDefault();
- } else {
- console.log("Not cancelling event!");
- }
- };
-
- events.forEach(function(eventName) {
- node.addEventListener(eventName, eventFunction, false);
- });
- };
-
- var target = document.querySelector("body");
-
- // Recursively attach handlers to nodes
- function runPolyfill(node) {
- if (!node) return;
-
- var name = node.nodeName;
-
- // Add pointer events to this node
- try {
- attachPointerEventsPolyfill(node);
- } catch (ex) {
- console.error("Failed to add pointer events to", name, ":", ex);
- }
-
- // Add pointer events to all child nodes
- var childNodes = node.childNodes;
- for (var i = 0; i < childNodes.length; ++i) {
- runPolyfill(childNodes[i]);
- }
- }
- runPolyfill(target);
-
- var observer = new MutationObserver(function(mutations) {
- mutations.forEach(function(mutation) {
- var addedNodes = mutations.addedNodes;
- if (addedNodes) {
- for (var i = 0; i < addedNodes.length; ++i) {
- runPolyfill(addedNodes[i]);
- }
- }
-
- var removedNodes = mutations.removedNodes;
- if (removedNodes) {
- for (var i = 0; i < removedNodes.length; ++i) {
- /* TODO: Remove listeners? */
- }
- }
-
- // TODO: Handle addition/removal of pointer-events styling
- });
- });
-
- var config = {
- childList: true,
- subtree: true
- };
-
- //observer.observe(target, config);
- observer.observe(target, config);
-})();
-