diff options
Diffstat (limited to 'js/vendor/get-size')
-rw-r--r-- | js/vendor/get-size/.bower.json | 45 | ||||
-rw-r--r-- | js/vendor/get-size/README.md | 37 | ||||
-rw-r--r-- | js/vendor/get-size/bower.json | 37 | ||||
-rw-r--r-- | js/vendor/get-size/get-size.js | 209 |
4 files changed, 328 insertions, 0 deletions
diff --git a/js/vendor/get-size/.bower.json b/js/vendor/get-size/.bower.json new file mode 100644 index 000000000..b2b5fb873 --- /dev/null +++ b/js/vendor/get-size/.bower.json @@ -0,0 +1,45 @@ +{ + "name": "get-size", + "version": "2.0.2", + "main": "get-size.js", + "description": "measures element size", + "dependencies": {}, + "devDependencies": { + "qunit": "~1.10" + }, + "ignore": [ + "test/", + "**/.*", + "package.json", + "node_modules", + "bower_components", + "test", + "tests", + "sandbox.html" + ], + "homepage": "https://github.com/desandro/get-size", + "authors": [ + "David DeSandro <desandrocodes@gmail.com>" + ], + "moduleType": [ + "amd", + "globals", + "node" + ], + "keywords": [ + "size", + "dom", + "width", + "height" + ], + "license": "MIT", + "_release": "2.0.2", + "_resolution": { + "type": "version", + "tag": "v2.0.2", + "commit": "53ad18840e260d5eb89fd579362596dad5852c77" + }, + "_source": "git://github.com/desandro/get-size.git", + "_target": "~2.0.2", + "_originalSource": "get-size" +}
\ No newline at end of file diff --git a/js/vendor/get-size/README.md b/js/vendor/get-size/README.md new file mode 100644 index 000000000..f3573a874 --- /dev/null +++ b/js/vendor/get-size/README.md @@ -0,0 +1,37 @@ +# getSize + +Get the size of elements. + +``` js +var size = getSize( elem ); +// elem can be an element +var size = getSize( document.querySelector('#selector') ) +// elem can be a string, used as a query selector +var size = getSize('#selector') +``` + +Returns an object with: `width`, `height`, `innerWidth/Height`, `outerWidth/Height`, `paddingLeft/Top/Right/Bottom`, `marginLeft/Top/Right/Bottom`, `borderLeft/Top/Right/BottomWidth` and `isBorderBox`. + +Browser support: IE10+, Android 4.0+, iOS 5+, and modern browsers + +## Install + +Install with [Bower](http://bower.io): `bower install get-size` + +Install with npm: `npm install get-size` + +## Firefox hidden iframe bug + +[Firefox has an old bug](https://bugzilla.mozilla.org/show_bug.cgi?id=548397) that occurs within iframes that are hidden with `display: none`. To resolve this, you can use alternate CSS to hide the iframe off-screen, with out `display: none`. + +``` css +.hide-iframe { + visibility: hidden; + position: absolute; + left: -999em; +} +``` + +## MIT License + +getSize is released under the [MIT License](http://desandro.mit-license.org/). diff --git a/js/vendor/get-size/bower.json b/js/vendor/get-size/bower.json new file mode 100644 index 000000000..bb7a6e6b3 --- /dev/null +++ b/js/vendor/get-size/bower.json @@ -0,0 +1,37 @@ +{ + "name": "get-size", + "version": "2.0.2", + "main": "get-size.js", + "description": "measures element size", + "dependencies": { + }, + "devDependencies": { + "qunit": "~1.10" + }, + "ignore": [ + "test/", + "**/.*", + "package.json", + "node_modules", + "bower_components", + "test", + "tests", + "sandbox.html" + ], + "homepage": "https://github.com/desandro/get-size", + "authors": [ + "David DeSandro <desandrocodes@gmail.com>" + ], + "moduleType": [ + "amd", + "globals", + "node" + ], + "keywords": [ + "size", + "dom", + "width", + "height" + ], + "license": "MIT" +} diff --git a/js/vendor/get-size/get-size.js b/js/vendor/get-size/get-size.js new file mode 100644 index 000000000..fda33b69c --- /dev/null +++ b/js/vendor/get-size/get-size.js @@ -0,0 +1,209 @@ +/*! + * getSize v2.0.2 + * measure size of elements + * MIT license + */ + +/*jshint browser: true, strict: true, undef: true, unused: true */ +/*global define: false, module: false, console: false */ + +( function( window, factory ) { + 'use strict'; + + if ( typeof define == 'function' && define.amd ) { + // AMD + define( function() { + return factory(); + }); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS + module.exports = factory(); + } else { + // browser global + window.getSize = factory(); + } + +})( window, function factory() { +'use strict'; + +// -------------------------- helpers -------------------------- // + +// get a number from a string, not a percentage +function getStyleSize( value ) { + var num = parseFloat( value ); + // not a percent like '100%', and a number + var isValid = value.indexOf('%') == -1 && !isNaN( num ); + return isValid && num; +} + +function noop() {} + +var logError = typeof console == 'undefined' ? noop : + function( message ) { + console.error( message ); + }; + +// -------------------------- measurements -------------------------- // + +var measurements = [ + 'paddingLeft', + 'paddingRight', + 'paddingTop', + 'paddingBottom', + 'marginLeft', + 'marginRight', + 'marginTop', + 'marginBottom', + 'borderLeftWidth', + 'borderRightWidth', + 'borderTopWidth', + 'borderBottomWidth' +]; + +var measurementsLength = measurements.length; + +function getZeroSize() { + var size = { + width: 0, + height: 0, + innerWidth: 0, + innerHeight: 0, + outerWidth: 0, + outerHeight: 0 + }; + for ( var i=0; i < measurementsLength; i++ ) { + var measurement = measurements[i]; + size[ measurement ] = 0; + } + return size; +} + +// -------------------------- getStyle -------------------------- // + +/** + * getStyle, get style of element, check for Firefox bug + * https://bugzilla.mozilla.org/show_bug.cgi?id=548397 + */ +function getStyle( elem ) { + var style = getComputedStyle( elem ); + if ( !style ) { + logError( 'Style returned ' + style + + '. Are you running this code in a hidden iframe on Firefox? ' + + 'See http://bit.ly/getsizebug1' ); + } + return style; +} + +// -------------------------- setup -------------------------- // + +var isSetup = false; + +var isBoxSizeOuter; + +/** + * setup + * check isBoxSizerOuter + * do on first getSize() rather than on page load for Firefox bug + */ +function setup() { + // setup once + if ( isSetup ) { + return; + } + isSetup = true; + + // -------------------------- box sizing -------------------------- // + + /** + * WebKit measures the outer-width on style.width on border-box elems + * IE & Firefox<29 measures the inner-width + */ + var div = document.createElement('div'); + div.style.width = '200px'; + div.style.padding = '1px 2px 3px 4px'; + div.style.borderStyle = 'solid'; + div.style.borderWidth = '1px 2px 3px 4px'; + div.style.boxSizing = 'border-box'; + + var body = document.body || document.documentElement; + body.appendChild( div ); + var style = getStyle( div ); + + getSize.isBoxSizeOuter = isBoxSizeOuter = getStyleSize( style.width ) == 200; + body.removeChild( div ); + +} + +// -------------------------- getSize -------------------------- // + +function getSize( elem ) { + setup(); + + // use querySeletor if elem is string + if ( typeof elem == 'string' ) { + elem = document.querySelector( elem ); + } + + // do not proceed on non-objects + if ( !elem || typeof elem != 'object' || !elem.nodeType ) { + return; + } + + var style = getStyle( elem ); + + // if hidden, everything is 0 + if ( style.display == 'none' ) { + return getZeroSize(); + } + + var size = {}; + size.width = elem.offsetWidth; + size.height = elem.offsetHeight; + + var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box'; + + // get all measurements + for ( var i=0; i < measurementsLength; i++ ) { + var measurement = measurements[i]; + var value = style[ measurement ]; + var num = parseFloat( value ); + // any 'auto', 'medium' value will be 0 + size[ measurement ] = !isNaN( num ) ? num : 0; + } + + var paddingWidth = size.paddingLeft + size.paddingRight; + var paddingHeight = size.paddingTop + size.paddingBottom; + var marginWidth = size.marginLeft + size.marginRight; + var marginHeight = size.marginTop + size.marginBottom; + var borderWidth = size.borderLeftWidth + size.borderRightWidth; + var borderHeight = size.borderTopWidth + size.borderBottomWidth; + + var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter; + + // overwrite width and height if we can get it from style + var styleWidth = getStyleSize( style.width ); + if ( styleWidth !== false ) { + size.width = styleWidth + + // add padding and border unless it's already including it + ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth ); + } + + var styleHeight = getStyleSize( style.height ); + if ( styleHeight !== false ) { + size.height = styleHeight + + // add padding and border unless it's already including it + ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight ); + } + + size.innerWidth = size.width - ( paddingWidth + borderWidth ); + size.innerHeight = size.height - ( paddingHeight + borderHeight ); + + size.outerWidth = size.width + marginWidth; + size.outerHeight = size.height + marginHeight; + + return size; +} + +return getSize; + +}); |