diff --git a/interactive-mining-madoap/madoap/src/static/OA CONNECT_A.png b/interactive-mining-madoap/madoap/src/static/OA CONNECT_A.png new file mode 100644 index 0000000..08fd7cd Binary files /dev/null and b/interactive-mining-madoap/madoap/src/static/OA CONNECT_A.png differ diff --git a/interactive-mining-madoap/madoap/src/static/OA CONNECT_B.png b/interactive-mining-madoap/madoap/src/static/OA CONNECT_B.png new file mode 100644 index 0000000..ebedd4e Binary files /dev/null and b/interactive-mining-madoap/madoap/src/static/OA CONNECT_B.png differ diff --git a/interactive-mining-madoap/madoap/src/static/ResizeSensor.js b/interactive-mining-madoap/madoap/src/static/ResizeSensor.js new file mode 100644 index 0000000..66dbf4a --- /dev/null +++ b/interactive-mining-madoap/madoap/src/static/ResizeSensor.js @@ -0,0 +1,214 @@ +/** + * Copyright Marc J. Schmidt. See the LICENSE file at the top-level + * directory of this distribution and at + * https://github.com/marcj/css-element-queries/blob/master/LICENSE. + */ +; +(function (root, factory) { + if (typeof define === "function" && define.amd) { + define(factory); + } else if (typeof exports === "object") { + module.exports = factory(); + } else { + root.ResizeSensor = factory(); + } +}(typeof window !== 'undefined' ? window : this, function () { + + // Make sure it does not throw in a SSR (Server Side Rendering) situation + if (typeof window === "undefined") { + return null; + } + // Only used for the dirty checking, so the event callback count is limited to max 1 call per fps per sensor. + // In combination with the event based resize sensor this saves cpu time, because the sensor is too fast and + // would generate too many unnecessary events. + var requestAnimationFrame = window.requestAnimationFrame || + window.mozRequestAnimationFrame || + window.webkitRequestAnimationFrame || + function (fn) { + return window.setTimeout(fn, 20); + }; + + /** + * Iterate over each of the provided element(s). + * + * @param {HTMLElement|HTMLElement[]} elements + * @param {Function} callback + */ + function forEachElement(elements, callback){ + var elementsType = Object.prototype.toString.call(elements); + var isCollectionTyped = ('[object Array]' === elementsType + || ('[object NodeList]' === elementsType) + || ('[object HTMLCollection]' === elementsType) + || ('[object Object]' === elementsType) + || ('undefined' !== typeof jQuery && elements instanceof jQuery) //jquery + || ('undefined' !== typeof Elements && elements instanceof Elements) //mootools + ); + var i = 0, j = elements.length; + if (isCollectionTyped) { + for (; i < j; i++) { + callback(elements[i]); + } + } else { + callback(elements); + } + } + + /** + * Class for dimension change detection. + * + * @param {Element|Element[]|Elements|jQuery} element + * @param {Function} callback + * + * @constructor + */ + var ResizeSensor = function(element, callback) { + /** + * + * @constructor + */ + function EventQueue() { + var q = []; + this.add = function(ev) { + q.push(ev); + }; + + var i, j; + this.call = function() { + for (i = 0, j = q.length; i < j; i++) { + q[i].call(); + } + }; + + this.remove = function(ev) { + var newQueue = []; + for(i = 0, j = q.length; i < j; i++) { + if(q[i] !== ev) newQueue.push(q[i]); + } + q = newQueue; + } + + this.length = function() { + return q.length; + } + } + + /** + * + * @param {HTMLElement} element + * @param {Function} resized + */ + function attachResizeEvent(element, resized) { + if (!element) return; + if (element.resizedAttached) { + element.resizedAttached.add(resized); + return; + } + + element.resizedAttached = new EventQueue(); + element.resizedAttached.add(resized); + + element.resizeSensor = document.createElement('div'); + element.resizeSensor.className = 'resize-sensor'; + var style = 'position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;'; + var styleChild = 'position: absolute; left: 0; top: 0; transition: 0s;'; + + element.resizeSensor.style.cssText = style; + element.resizeSensor.innerHTML = + '
' + + 'Working on it, please wait...
+