├── .github └── workflows │ └── node.js.yml ├── .gitignore ├── .npmignore ├── .nvmrc ├── .travis.yml ├── .vscode ├── launch.json └── tasks.json ├── LICENSE ├── README.md ├── browser └── midiplayer.js ├── demo ├── bower.json ├── bower_components │ ├── angular │ │ ├── .bower.json │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── angular-csp.css │ │ ├── angular.js │ │ ├── angular.min.js │ │ ├── angular.min.js.gzip │ │ ├── angular.min.js.map │ │ ├── bower.json │ │ ├── index.js │ │ └── package.json │ ├── bootstrap │ │ ├── .bower.json │ │ ├── Gruntfile.js │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ ├── dist │ │ │ ├── css │ │ │ │ ├── bootstrap-theme.css │ │ │ │ ├── bootstrap-theme.css.map │ │ │ │ ├── bootstrap-theme.min.css │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.css.map │ │ │ │ └── bootstrap.min.css │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ └── glyphicons-halflings-regular.woff │ │ │ └── js │ │ │ │ ├── bootstrap.js │ │ │ │ └── bootstrap.min.js │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ └── glyphicons-halflings-regular.woff │ │ ├── grunt │ │ │ ├── bs-glyphicons-data-generator.js │ │ │ ├── bs-lessdoc-parser.js │ │ │ ├── bs-raw-files-generator.js │ │ │ └── sauce_browsers.yml │ │ ├── js │ │ │ ├── affix.js │ │ │ ├── alert.js │ │ │ ├── button.js │ │ │ ├── carousel.js │ │ │ ├── collapse.js │ │ │ ├── dropdown.js │ │ │ ├── modal.js │ │ │ ├── popover.js │ │ │ ├── scrollspy.js │ │ │ ├── tab.js │ │ │ ├── tooltip.js │ │ │ └── transition.js │ │ ├── less │ │ │ ├── alerts.less │ │ │ ├── badges.less │ │ │ ├── bootstrap.less │ │ │ ├── breadcrumbs.less │ │ │ ├── button-groups.less │ │ │ ├── buttons.less │ │ │ ├── carousel.less │ │ │ ├── close.less │ │ │ ├── code.less │ │ │ ├── component-animations.less │ │ │ ├── dropdowns.less │ │ │ ├── forms.less │ │ │ ├── glyphicons.less │ │ │ ├── grid.less │ │ │ ├── input-groups.less │ │ │ ├── jumbotron.less │ │ │ ├── labels.less │ │ │ ├── list-group.less │ │ │ ├── media.less │ │ │ ├── mixins.less │ │ │ ├── mixins │ │ │ │ ├── alerts.less │ │ │ │ ├── background-variant.less │ │ │ │ ├── border-radius.less │ │ │ │ ├── buttons.less │ │ │ │ ├── center-block.less │ │ │ │ ├── clearfix.less │ │ │ │ ├── forms.less │ │ │ │ ├── gradients.less │ │ │ │ ├── grid-framework.less │ │ │ │ ├── grid.less │ │ │ │ ├── hide-text.less │ │ │ │ ├── image.less │ │ │ │ ├── labels.less │ │ │ │ ├── list-group.less │ │ │ │ ├── nav-divider.less │ │ │ │ ├── nav-vertical-align.less │ │ │ │ ├── opacity.less │ │ │ │ ├── pagination.less │ │ │ │ ├── panels.less │ │ │ │ ├── progress-bar.less │ │ │ │ ├── reset-filter.less │ │ │ │ ├── resize.less │ │ │ │ ├── responsive-visibility.less │ │ │ │ ├── size.less │ │ │ │ ├── tab-focus.less │ │ │ │ ├── table-row.less │ │ │ │ ├── text-emphasis.less │ │ │ │ ├── text-overflow.less │ │ │ │ └── vendor-prefixes.less │ │ │ ├── modals.less │ │ │ ├── navbar.less │ │ │ ├── navs.less │ │ │ ├── normalize.less │ │ │ ├── pager.less │ │ │ ├── pagination.less │ │ │ ├── panels.less │ │ │ ├── popovers.less │ │ │ ├── print.less │ │ │ ├── progress-bars.less │ │ │ ├── responsive-embed.less │ │ │ ├── responsive-utilities.less │ │ │ ├── scaffolding.less │ │ │ ├── tables.less │ │ │ ├── theme.less │ │ │ ├── thumbnails.less │ │ │ ├── tooltip.less │ │ │ ├── type.less │ │ │ ├── utilities.less │ │ │ ├── variables.less │ │ │ └── wells.less │ │ └── package.json │ ├── jquery │ │ ├── .bower.json │ │ ├── AUTHORS.txt │ │ ├── LICENSE.txt │ │ ├── README.md │ │ ├── bower.json │ │ ├── dist │ │ │ ├── core.js │ │ │ ├── jquery.js │ │ │ ├── jquery.min.js │ │ │ ├── jquery.min.map │ │ │ ├── jquery.slim.js │ │ │ ├── jquery.slim.min.js │ │ │ └── jquery.slim.min.map │ │ ├── external │ │ │ └── sizzle │ │ │ │ ├── LICENSE.txt │ │ │ │ └── dist │ │ │ │ ├── sizzle.js │ │ │ │ ├── sizzle.min.js │ │ │ │ └── sizzle.min.map │ │ └── src │ │ │ ├── .eslintrc.json │ │ │ ├── ajax.js │ │ │ ├── ajax │ │ │ ├── jsonp.js │ │ │ ├── load.js │ │ │ ├── parseXML.js │ │ │ ├── script.js │ │ │ ├── var │ │ │ │ ├── location.js │ │ │ │ ├── nonce.js │ │ │ │ └── rquery.js │ │ │ └── xhr.js │ │ │ ├── attributes.js │ │ │ ├── attributes │ │ │ ├── attr.js │ │ │ ├── classes.js │ │ │ ├── prop.js │ │ │ ├── support.js │ │ │ └── val.js │ │ │ ├── callbacks.js │ │ │ ├── core.js │ │ │ ├── core │ │ │ ├── DOMEval.js │ │ │ ├── access.js │ │ │ ├── init.js │ │ │ ├── parseHTML.js │ │ │ ├── ready-no-deferred.js │ │ │ ├── ready.js │ │ │ ├── readyException.js │ │ │ ├── stripAndCollapse.js │ │ │ ├── support.js │ │ │ └── var │ │ │ │ └── rsingleTag.js │ │ │ ├── css.js │ │ │ ├── css │ │ │ ├── addGetHookIf.js │ │ │ ├── adjustCSS.js │ │ │ ├── curCSS.js │ │ │ ├── hiddenVisibleSelectors.js │ │ │ ├── showHide.js │ │ │ ├── support.js │ │ │ └── var │ │ │ │ ├── cssExpand.js │ │ │ │ ├── getStyles.js │ │ │ │ ├── isHiddenWithinTree.js │ │ │ │ ├── rmargin.js │ │ │ │ ├── rnumnonpx.js │ │ │ │ └── swap.js │ │ │ ├── data.js │ │ │ ├── data │ │ │ ├── Data.js │ │ │ └── var │ │ │ │ ├── acceptData.js │ │ │ │ ├── dataPriv.js │ │ │ │ └── dataUser.js │ │ │ ├── deferred.js │ │ │ ├── deferred │ │ │ └── exceptionHook.js │ │ │ ├── deprecated.js │ │ │ ├── dimensions.js │ │ │ ├── effects.js │ │ │ ├── effects │ │ │ ├── Tween.js │ │ │ └── animatedSelector.js │ │ │ ├── event.js │ │ │ ├── event │ │ │ ├── ajax.js │ │ │ ├── alias.js │ │ │ ├── focusin.js │ │ │ ├── support.js │ │ │ └── trigger.js │ │ │ ├── exports │ │ │ ├── amd.js │ │ │ └── global.js │ │ │ ├── jquery.js │ │ │ ├── manipulation.js │ │ │ ├── manipulation │ │ │ ├── _evalUrl.js │ │ │ ├── buildFragment.js │ │ │ ├── getAll.js │ │ │ ├── setGlobalEval.js │ │ │ ├── support.js │ │ │ ├── var │ │ │ │ ├── rcheckableType.js │ │ │ │ ├── rscriptType.js │ │ │ │ └── rtagName.js │ │ │ └── wrapMap.js │ │ │ ├── offset.js │ │ │ ├── queue.js │ │ │ ├── queue │ │ │ └── delay.js │ │ │ ├── selector-native.js │ │ │ ├── selector-sizzle.js │ │ │ ├── selector.js │ │ │ ├── serialize.js │ │ │ ├── traversing.js │ │ │ ├── traversing │ │ │ ├── findFilter.js │ │ │ └── var │ │ │ │ ├── dir.js │ │ │ │ ├── rneedsContext.js │ │ │ │ └── siblings.js │ │ │ ├── var │ │ │ ├── ObjectFunctionString.js │ │ │ ├── arr.js │ │ │ ├── class2type.js │ │ │ ├── concat.js │ │ │ ├── document.js │ │ │ ├── documentElement.js │ │ │ ├── fnToString.js │ │ │ ├── getProto.js │ │ │ ├── hasOwn.js │ │ │ ├── indexOf.js │ │ │ ├── pnum.js │ │ │ ├── push.js │ │ │ ├── rcssNum.js │ │ │ ├── rnothtmlwhite.js │ │ │ ├── slice.js │ │ │ ├── support.js │ │ │ └── toString.js │ │ │ └── wrap.js │ ├── js-cookie │ │ ├── .bower.json │ │ ├── CONTRIBUTING.md │ │ ├── MIT-LICENSE.txt │ │ ├── README.md │ │ ├── SERVER_SIDE.md │ │ ├── bower.json │ │ └── src │ │ │ └── js.cookie.js │ ├── modernizr │ │ ├── .bower.json │ │ ├── .coveralls.yml │ │ ├── .editorconfig │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── .jscsrc │ │ ├── .jshintignore │ │ ├── .jshintrc │ │ ├── .npmignore │ │ ├── .travis.yml │ │ ├── Gruntfile.js │ │ ├── LICENSE │ │ ├── appveyor.yml │ │ ├── bin │ │ │ └── modernizr │ │ ├── feature-detects │ │ │ ├── a │ │ │ │ └── download.js │ │ │ ├── ambientlight.js │ │ │ ├── applicationcache.js │ │ │ ├── audio.js │ │ │ ├── audio │ │ │ │ ├── loop.js │ │ │ │ ├── preload.js │ │ │ │ └── webaudio.js │ │ │ ├── battery.js │ │ │ ├── battery │ │ │ │ └── lowbattery.js │ │ │ ├── blob.js │ │ │ ├── canvas.js │ │ │ ├── canvas │ │ │ │ ├── blending.js │ │ │ │ ├── todataurl.js │ │ │ │ └── winding.js │ │ │ ├── canvastext.js │ │ │ ├── contenteditable.js │ │ │ ├── contextmenu.js │ │ │ ├── cookies.js │ │ │ ├── cors.js │ │ │ ├── crypto.js │ │ │ ├── crypto │ │ │ │ └── getrandomvalues.js │ │ │ ├── css │ │ │ │ ├── all.js │ │ │ │ ├── animations.js │ │ │ │ ├── appearance.js │ │ │ │ ├── backdropfilter.js │ │ │ │ ├── backgroundblendmode.js │ │ │ │ ├── backgroundcliptext.js │ │ │ │ ├── backgroundposition-shorthand.js │ │ │ │ ├── backgroundposition-xy.js │ │ │ │ ├── backgroundrepeat.js │ │ │ │ ├── backgroundsize.js │ │ │ │ ├── backgroundsizecover.js │ │ │ │ ├── borderimage.js │ │ │ │ ├── borderradius.js │ │ │ │ ├── boxshadow.js │ │ │ │ ├── boxsizing.js │ │ │ │ ├── calc.js │ │ │ │ ├── checked.js │ │ │ │ ├── chunit.js │ │ │ │ ├── columns.js │ │ │ │ ├── cubicbezierrange.js │ │ │ │ ├── displayrunin.js │ │ │ │ ├── displaytable.js │ │ │ │ ├── ellipsis.js │ │ │ │ ├── escape.js │ │ │ │ ├── exunit.js │ │ │ │ ├── filters.js │ │ │ │ ├── flexbox.js │ │ │ │ ├── flexboxlegacy.js │ │ │ │ ├── flexboxtweener.js │ │ │ │ ├── flexwrap.js │ │ │ │ ├── fontface.js │ │ │ │ ├── generatedcontent.js │ │ │ │ ├── gradients.js │ │ │ │ ├── hairline.js │ │ │ │ ├── hsla.js │ │ │ │ ├── hyphens.js │ │ │ │ ├── invalid.js │ │ │ │ ├── lastchild.js │ │ │ │ ├── mask.js │ │ │ │ ├── mediaqueries.js │ │ │ │ ├── multiplebgs.js │ │ │ │ ├── nthchild.js │ │ │ │ ├── objectfit.js │ │ │ │ ├── opacity.js │ │ │ │ ├── overflow-scrolling.js │ │ │ │ ├── pointerevents.js │ │ │ │ ├── positionsticky.js │ │ │ │ ├── pseudoanimations.js │ │ │ │ ├── pseudotransitions.js │ │ │ │ ├── reflections.js │ │ │ │ ├── regions.js │ │ │ │ ├── remunit.js │ │ │ │ ├── resize.js │ │ │ │ ├── rgba.js │ │ │ │ ├── scrollbars.js │ │ │ │ ├── scrollsnappoints.js │ │ │ │ ├── shapes.js │ │ │ │ ├── siblinggeneral.js │ │ │ │ ├── subpixelfont.js │ │ │ │ ├── supports.js │ │ │ │ ├── target.js │ │ │ │ ├── textalignlast.js │ │ │ │ ├── textshadow.js │ │ │ │ ├── transforms.js │ │ │ │ ├── transforms3d.js │ │ │ │ ├── transformstylepreserve3d.js │ │ │ │ ├── transitions.js │ │ │ │ ├── userselect.js │ │ │ │ ├── valid.js │ │ │ │ ├── vhunit.js │ │ │ │ ├── vmaxunit.js │ │ │ │ ├── vminunit.js │ │ │ │ ├── vwunit.js │ │ │ │ ├── will-change.js │ │ │ │ └── wrapflow.js │ │ │ ├── custom-protocol-handler.js │ │ │ ├── customevent.js │ │ │ ├── dart.js │ │ │ ├── dataview-api.js │ │ │ ├── dom │ │ │ │ ├── classlist.js │ │ │ │ ├── createElement-attrs.js │ │ │ │ ├── dataset.js │ │ │ │ ├── documentfragment.js │ │ │ │ ├── hidden.js │ │ │ │ ├── microdata.js │ │ │ │ └── mutationObserver.js │ │ │ ├── elem │ │ │ │ ├── bdi.js │ │ │ │ ├── datalist.js │ │ │ │ ├── details.js │ │ │ │ ├── output.js │ │ │ │ ├── picture.js │ │ │ │ ├── progress-meter.js │ │ │ │ ├── ruby.js │ │ │ │ ├── template.js │ │ │ │ ├── time.js │ │ │ │ ├── track.js │ │ │ │ └── unknown.js │ │ │ ├── emoji.js │ │ │ ├── es5 │ │ │ │ ├── array.js │ │ │ │ ├── date.js │ │ │ │ ├── function.js │ │ │ │ ├── object.js │ │ │ │ ├── specification.js │ │ │ │ ├── strictmode.js │ │ │ │ ├── string.js │ │ │ │ ├── syntax.js │ │ │ │ └── undefined.js │ │ │ ├── es6 │ │ │ │ ├── array.js │ │ │ │ ├── collections.js │ │ │ │ ├── contains.js │ │ │ │ ├── generators.js │ │ │ │ ├── math.js │ │ │ │ ├── number.js │ │ │ │ ├── object.js │ │ │ │ ├── promises.js │ │ │ │ └── string.js │ │ │ ├── event │ │ │ │ ├── deviceorientation-motion.js │ │ │ │ └── oninput.js │ │ │ ├── eventlistener.js │ │ │ ├── exif-orientation.js │ │ │ ├── file │ │ │ │ ├── api.js │ │ │ │ └── filesystem.js │ │ │ ├── flash.js │ │ │ ├── forcetouch.js │ │ │ ├── forms │ │ │ │ ├── capture.js │ │ │ │ ├── fileinput.js │ │ │ │ ├── fileinputdirectory.js │ │ │ │ ├── formattribute.js │ │ │ │ ├── inputnumber-l10n.js │ │ │ │ ├── placeholder.js │ │ │ │ ├── requestautocomplete.js │ │ │ │ └── validation.js │ │ │ ├── fullscreen-api.js │ │ │ ├── gamepad.js │ │ │ ├── geolocation.js │ │ │ ├── hashchange.js │ │ │ ├── hiddenscroll.js │ │ │ ├── history.js │ │ │ ├── htmlimports.js │ │ │ ├── ie8compat.js │ │ │ ├── iframe │ │ │ │ ├── sandbox.js │ │ │ │ ├── seamless.js │ │ │ │ └── srcdoc.js │ │ │ ├── img │ │ │ │ ├── apng.js │ │ │ │ ├── crossorigin.js │ │ │ │ ├── jpeg2000.js │ │ │ │ ├── jpegxr.js │ │ │ │ ├── sizes.js │ │ │ │ ├── srcset.js │ │ │ │ ├── webp-alpha.js │ │ │ │ ├── webp-animation.js │ │ │ │ ├── webp-lossless.js │ │ │ │ └── webp.js │ │ │ ├── indexeddb.js │ │ │ ├── indexeddbblob.js │ │ │ ├── input.js │ │ │ ├── input │ │ │ │ ├── formaction.js │ │ │ │ ├── formenctype.js │ │ │ │ ├── formmethod.js │ │ │ │ └── formtarget.js │ │ │ ├── inputsearchevent.js │ │ │ ├── inputtypes.js │ │ │ ├── intl.js │ │ │ ├── json.js │ │ │ ├── ligatures.js │ │ │ ├── lists-reversed.js │ │ │ ├── mathml.js │ │ │ ├── network │ │ │ │ ├── beacon.js │ │ │ │ ├── connection.js │ │ │ │ ├── eventsource.js │ │ │ │ ├── fetch.js │ │ │ │ ├── xhr-responsetype-arraybuffer.js │ │ │ │ ├── xhr-responsetype-blob.js │ │ │ │ ├── xhr-responsetype-document.js │ │ │ │ ├── xhr-responsetype-json.js │ │ │ │ ├── xhr-responsetype-text.js │ │ │ │ ├── xhr-responsetype.js │ │ │ │ └── xhr2.js │ │ │ ├── notification.js │ │ │ ├── pagevisibility-api.js │ │ │ ├── performance.js │ │ │ ├── pointerevents.js │ │ │ ├── pointerlock-api.js │ │ │ ├── postmessage.js │ │ │ ├── proximity.js │ │ │ ├── queryselector.js │ │ │ ├── quota-management-api.js │ │ │ ├── requestanimationframe.js │ │ │ ├── script │ │ │ │ ├── async.js │ │ │ │ └── defer.js │ │ │ ├── serviceworker.js │ │ │ ├── speech │ │ │ │ ├── speech-recognition.js │ │ │ │ └── speech-synthesis.js │ │ │ ├── storage │ │ │ │ ├── localstorage.js │ │ │ │ ├── sessionstorage.js │ │ │ │ └── websqldatabase.js │ │ │ ├── style │ │ │ │ └── scoped.js │ │ │ ├── svg.js │ │ │ ├── svg │ │ │ │ ├── asimg.js │ │ │ │ ├── clippaths.js │ │ │ │ ├── filters.js │ │ │ │ ├── foreignobject.js │ │ │ │ ├── inline.js │ │ │ │ └── smil.js │ │ │ ├── templatestrings.js │ │ │ ├── textarea │ │ │ │ └── maxlength.js │ │ │ ├── touchevents.js │ │ │ ├── typed-arrays.js │ │ │ ├── unicode-range.js │ │ │ ├── unicode.js │ │ │ ├── url │ │ │ │ ├── bloburls.js │ │ │ │ ├── data-uri.js │ │ │ │ └── parser.js │ │ │ ├── userdata.js │ │ │ ├── vibration.js │ │ │ ├── video.js │ │ │ ├── video │ │ │ │ ├── autoplay.js │ │ │ │ ├── loop.js │ │ │ │ └── preload.js │ │ │ ├── vml.js │ │ │ ├── web-intents.js │ │ │ ├── webanimations.js │ │ │ ├── webgl.js │ │ │ ├── webgl │ │ │ │ └── extensions.js │ │ │ ├── webrtc │ │ │ │ ├── datachannel.js │ │ │ │ ├── getusermedia.js │ │ │ │ └── peerconnection.js │ │ │ ├── websockets.js │ │ │ ├── websockets │ │ │ │ └── binary.js │ │ │ ├── window │ │ │ │ ├── atob-btoa.js │ │ │ │ ├── framed.js │ │ │ │ └── matchmedia.js │ │ │ ├── workers │ │ │ │ ├── blobworkers.js │ │ │ │ ├── dataworkers.js │ │ │ │ ├── sharedworkers.js │ │ │ │ ├── transferables.js │ │ │ │ └── webworkers.js │ │ │ └── xdomainrequest.js │ │ ├── lib │ │ │ ├── .jshintrc │ │ │ ├── build-query.js │ │ │ ├── build.js │ │ │ ├── cli.js │ │ │ ├── config-all.json │ │ │ ├── generate-banner.js │ │ │ ├── metadata.js │ │ │ ├── options.js │ │ │ └── polyfills.json │ │ ├── media │ │ │ ├── .gitattributes │ │ │ ├── Modernizr 2 Logo vertical big.ai │ │ │ ├── Modernizr 2 Logo vertical medium.ai │ │ │ ├── Modernizr 2 Logo vertical small.ai │ │ │ ├── Modernizr 2 Logo.ai │ │ │ ├── Modernizr 2 Logo.eps │ │ │ ├── Modernizr 2 Logo.pdf │ │ │ ├── Modernizr 2 Logo.png │ │ │ ├── Modernizr 2 Logo.svg │ │ │ ├── Modernizr-2-Logo-vertical-big.png │ │ │ ├── Modernizr-2-Logo-vertical-medium.png │ │ │ └── Modernizr-2-Logo-vertical-small.png │ │ ├── package.json │ │ ├── readme.md │ │ ├── src │ │ │ ├── Modernizr.js │ │ │ ├── ModernizrProto.js │ │ │ ├── addTest.js │ │ │ ├── atRule.js │ │ │ ├── classes.js │ │ │ ├── contains.js │ │ │ ├── createElement.js │ │ │ ├── cssToDOM.js │ │ │ ├── cssomPrefixes.js │ │ │ ├── docElement.js │ │ │ ├── domPrefixes.js │ │ │ ├── domToCSS.js │ │ │ ├── fnBind.js │ │ │ ├── generate.js │ │ │ ├── getBody.js │ │ │ ├── hasEvent.js │ │ │ ├── hasOwnProp.js │ │ │ ├── html5printshiv.js │ │ │ ├── html5shiv.js │ │ │ ├── injectElementWithStyles.js │ │ │ ├── inputElem.js │ │ │ ├── is.js │ │ │ ├── isSVG.js │ │ │ ├── load.js │ │ │ ├── mStyle.js │ │ │ ├── modElem.js │ │ │ ├── mq.js │ │ │ ├── nativeTestProps.js │ │ │ ├── omPrefixes.js │ │ │ ├── prefixed.js │ │ │ ├── prefixedCSS.js │ │ │ ├── prefixedCSSValue.js │ │ │ ├── prefixes.js │ │ │ ├── roundedEquals.js │ │ │ ├── setClasses.js │ │ │ ├── slice.js │ │ │ ├── testAllProps.js │ │ │ ├── testDOMProps.js │ │ │ ├── testProp.js │ │ │ ├── testProps.js │ │ │ ├── testPropsAll.js │ │ │ ├── testRunner.js │ │ │ ├── testStyles.js │ │ │ ├── testXhrType.js │ │ │ ├── tests.js │ │ │ └── toStringFn.js │ │ └── test │ │ │ ├── .jshintrc │ │ │ ├── cleanup.js │ │ │ ├── img │ │ │ ├── integration.svg │ │ │ └── unit.svg │ │ │ ├── js │ │ │ └── lib │ │ │ │ ├── sinon.js │ │ │ │ └── uaparser.js │ │ │ ├── mocks │ │ │ └── lib │ │ │ │ ├── build-query.js │ │ │ │ └── metadata.js │ │ │ ├── node │ │ │ └── lib │ │ │ │ ├── build.js │ │ │ │ ├── cli.js │ │ │ │ ├── metadata.js │ │ │ │ └── options.js │ │ │ └── universal │ │ │ └── lib │ │ │ ├── build-query.js │ │ │ └── generate-banner.js │ ├── raphael │ │ ├── .bower.json │ │ ├── bower.json │ │ ├── license.txt │ │ ├── raphael-min.js │ │ └── raphael.js │ ├── skeleton │ │ ├── .bower.json │ │ ├── .gitignore │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── bower.json │ │ ├── css │ │ │ ├── normalize.css │ │ │ └── skeleton.css │ │ ├── images │ │ │ └── favicon.png │ │ └── index.html │ └── underscore │ │ ├── .bower.json │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ ├── component.json │ │ ├── package.json │ │ ├── underscore-min.js │ │ ├── underscore-min.map │ │ └── underscore.js ├── js │ ├── app.js │ └── soundfont-player.min.js ├── midi │ ├── 500_Miles.mid │ ├── Death Waltz.mid │ ├── Disney_Themes_-_Bippity_Boppity_Boo.mid │ ├── Disney_Themes_-_It's_A_Small_World.mid │ ├── O-Zone_-_Dragostea_Din_Tei.mid │ ├── Video_Game_Themes_-_Super_Mario_World.mid │ ├── chopin.mid │ ├── simultaneous_notes_test.mid │ └── zelda.mid └── package.json ├── docs ├── Player.html ├── Track.html ├── Utils.html ├── constants.js.html ├── fonts │ ├── OpenSans-Bold-webfont.eot │ ├── OpenSans-Bold-webfont.svg │ ├── OpenSans-Bold-webfont.woff │ ├── OpenSans-BoldItalic-webfont.eot │ ├── OpenSans-BoldItalic-webfont.svg │ ├── OpenSans-BoldItalic-webfont.woff │ ├── OpenSans-Italic-webfont.eot │ ├── OpenSans-Italic-webfont.svg │ ├── OpenSans-Italic-webfont.woff │ ├── OpenSans-Light-webfont.eot │ ├── OpenSans-Light-webfont.svg │ ├── OpenSans-Light-webfont.woff │ ├── OpenSans-LightItalic-webfont.eot │ ├── OpenSans-LightItalic-webfont.svg │ ├── OpenSans-LightItalic-webfont.woff │ ├── OpenSans-Regular-webfont.eot │ ├── OpenSans-Regular-webfont.svg │ ├── OpenSans-Regular-webfont.woff │ ├── OpenSans-Semibold-webfont.eot │ ├── OpenSans-Semibold-webfont.svg │ ├── OpenSans-Semibold-webfont.ttf │ ├── OpenSans-Semibold-webfont.woff │ ├── OpenSans-SemiboldItalic-webfont.eot │ ├── OpenSans-SemiboldItalic-webfont.svg │ ├── OpenSans-SemiboldItalic-webfont.ttf │ └── OpenSans-SemiboldItalic-webfont.woff ├── global.html ├── index.html ├── player.js.html ├── scripts │ ├── linenumber.js │ └── prettify │ │ ├── Apache-License-2.0.txt │ │ ├── lang-css.js │ │ └── prettify.js ├── styles │ ├── jsdoc-default.css │ ├── prettify-jsdoc.css │ └── prettify-tomorrow.css ├── track.js.html └── utils.js.html ├── index.d.ts ├── index.html ├── package-lock.json ├── package.json ├── postinstall.js ├── rollup.config.js ├── src ├── .babelrc.json ├── constants.js ├── index.js ├── player.js ├── track.js └── utils.js └── test └── test.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | npm-debug.log 3 | node_modules 4 | build 5 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | docs 2 | src 3 | demo -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v16.13.2 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "10" -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | 8 | { 9 | "type": "node", 10 | "request": "launch", 11 | "name": "Run Mocha", 12 | "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha", 13 | "stopOnEntry": true, 14 | "args": [ 15 | "test/test.js" 16 | ] 17 | } 18 | ] 19 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the tasks.json format 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "type": "gulp", 8 | "task": "default", 9 | "group": { 10 | "kind": "build", 11 | "isDefault": true 12 | } 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /demo/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "MidiPlayerJS Demo", 3 | "homepage": "https://github.com/grimmdude/MidiPlayerJS", 4 | "authors": [ 5 | "Garrett Grimm " 6 | ], 7 | "description": "A web based MIDI player using MidiPlayerJS engine.", 8 | "main": "index.html", 9 | "keywords": [ 10 | "music", 11 | "midi" 12 | ], 13 | "license": "MIT", 14 | "private": true, 15 | "ignore": [ 16 | "**/.*", 17 | "node_modules", 18 | "bower_components", 19 | "test", 20 | "tests" 21 | ], 22 | "dependencies": { 23 | "skeleton" : "2.0.4", 24 | "bootstrap": "~3.2.0", 25 | "modernizr":"latest", 26 | "angular":"1.6.*", 27 | "underscore":"1.7.0", 28 | "raphael":"2.1.1", 29 | "js-cookie":"latest" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /demo/bower_components/angular/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.6.3", 4 | "license": "MIT", 5 | "main": "./angular.js", 6 | "ignore": [], 7 | "dependencies": {}, 8 | "homepage": "https://github.com/angular/bower-angular", 9 | "_release": "1.6.3", 10 | "_resolution": { 11 | "type": "version", 12 | "tag": "v1.6.3", 13 | "commit": "40d67030765b0024618d348d78be3e30f4f8f29b" 14 | }, 15 | "_source": "https://github.com/angular/bower-angular.git", 16 | "_target": "1.6.*", 17 | "_originalSource": "angular" 18 | } -------------------------------------------------------------------------------- /demo/bower_components/angular/angular-csp.css: -------------------------------------------------------------------------------- 1 | /* Include this file in your html if you are using the CSP mode. */ 2 | 3 | @charset "UTF-8"; 4 | 5 | [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], 6 | .ng-cloak, .x-ng-cloak, 7 | .ng-hide:not(.ng-hide-animate) { 8 | display: none !important; 9 | } 10 | 11 | ng\:form { 12 | display: block; 13 | } 14 | 15 | .ng-animate-shim { 16 | visibility:hidden; 17 | } 18 | 19 | .ng-anchor { 20 | position:absolute; 21 | } 22 | -------------------------------------------------------------------------------- /demo/bower_components/angular/angular.min.js.gzip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/bower_components/angular/angular.min.js.gzip -------------------------------------------------------------------------------- /demo/bower_components/angular/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.6.3", 4 | "license": "MIT", 5 | "main": "./angular.js", 6 | "ignore": [], 7 | "dependencies": { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /demo/bower_components/angular/index.js: -------------------------------------------------------------------------------- 1 | require('./angular'); 2 | module.exports = angular; 3 | -------------------------------------------------------------------------------- /demo/bower_components/angular/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.6.3", 4 | "description": "HTML enhanced for web apps", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/angular/angular.js.git" 12 | }, 13 | "keywords": [ 14 | "angular", 15 | "framework", 16 | "browser", 17 | "client-side" 18 | ], 19 | "author": "Angular Core Team ", 20 | "license": "MIT", 21 | "bugs": { 22 | "url": "https://github.com/angular/angular.js/issues" 23 | }, 24 | "homepage": "http://angularjs.org" 25 | } 26 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; 8 | margin-bottom: @line-height-computed; 9 | list-style: none; 10 | background-color: @breadcrumb-bg; 11 | border-radius: @border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 18 | padding: 0 5px; 19 | color: @breadcrumb-color; 20 | } 21 | } 22 | 23 | > .active { 24 | color: @breadcrumb-active-color; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/close.less: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: (@font-size-base * 1.5); 9 | font-weight: @close-font-weight; 10 | line-height: 1; 11 | color: @close-color; 12 | text-shadow: @close-text-shadow; 13 | .opacity(.2); 14 | 15 | &:hover, 16 | &:focus { 17 | color: @close-color; 18 | text-decoration: none; 19 | cursor: pointer; 20 | .opacity(.5); 21 | } 22 | 23 | // Additional properties for button version 24 | // iOS requires the button element instead of an anchor tag. 25 | // If you want the anchor version, it requires `href="#"`. 26 | button& { 27 | padding: 0; 28 | cursor: pointer; 29 | background: transparent; 30 | border: 0; 31 | -webkit-appearance: none; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/component-animations.less: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | // Heads up! 6 | // 7 | // We don't use the `.opacity()` mixin here since it causes a bug with text 8 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. 9 | 10 | .fade { 11 | opacity: 0; 12 | .transition(opacity .15s linear); 13 | &.in { 14 | opacity: 1; 15 | } 16 | } 17 | 18 | .collapse { 19 | display: none; 20 | 21 | &.in { display: block; } 22 | tr&.in { display: table-row; } 23 | tbody&.in { display: table-row-group; } 24 | } 25 | 26 | .collapsing { 27 | position: relative; 28 | height: 0; 29 | overflow: hidden; 30 | .transition(height .35s ease); 31 | } 32 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/alerts.less: -------------------------------------------------------------------------------- 1 | // Alerts 2 | 3 | .alert-variant(@background; @border; @text-color) { 4 | background-color: @background; 5 | border-color: @border; 6 | color: @text-color; 7 | 8 | hr { 9 | border-top-color: darken(@border, 5%); 10 | } 11 | .alert-link { 12 | color: darken(@text-color, 10%); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/background-variant.less: -------------------------------------------------------------------------------- 1 | // Contextual backgrounds 2 | 3 | .bg-variant(@color) { 4 | background-color: @color; 5 | a&:hover { 6 | background-color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/border-radius.less: -------------------------------------------------------------------------------- 1 | // Single side border-radius 2 | 3 | .border-top-radius(@radius) { 4 | border-top-right-radius: @radius; 5 | border-top-left-radius: @radius; 6 | } 7 | .border-right-radius(@radius) { 8 | border-bottom-right-radius: @radius; 9 | border-top-right-radius: @radius; 10 | } 11 | .border-bottom-radius(@radius) { 12 | border-bottom-right-radius: @radius; 13 | border-bottom-left-radius: @radius; 14 | } 15 | .border-left-radius(@radius) { 16 | border-bottom-left-radius: @radius; 17 | border-top-left-radius: @radius; 18 | } 19 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/center-block.less: -------------------------------------------------------------------------------- 1 | // Center-align a block level element 2 | 3 | .center-block() { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/clearfix.less: -------------------------------------------------------------------------------- 1 | // Clearfix 2 | // 3 | // For modern browsers 4 | // 1. The space content is one way to avoid an Opera bug when the 5 | // contenteditable attribute is included anywhere else in the document. 6 | // Otherwise it causes space to appear at the top and bottom of elements 7 | // that are clearfixed. 8 | // 2. The use of `table` rather than `block` is only necessary if using 9 | // `:before` to contain the top-margins of child elements. 10 | // 11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/ 12 | 13 | .clearfix() { 14 | &:before, 15 | &:after { 16 | content: " "; // 1 17 | display: table; // 2 18 | } 19 | &:after { 20 | clear: both; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/hide-text.less: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | // 3 | // Heads up! v3 launched with with only `.hide-text()`, but per our pattern for 4 | // mixins being reused as classes with the same name, this doesn't hold up. As 5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. 6 | // 7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 8 | 9 | // Deprecated as of v3.0.1 (will be removed in v4) 10 | .hide-text() { 11 | font: ~"0/0" a; 12 | color: transparent; 13 | text-shadow: none; 14 | background-color: transparent; 15 | border: 0; 16 | } 17 | 18 | // New mixin to use as of v3.0.1 19 | .text-hide() { 20 | .hide-text(); 21 | } 22 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/labels.less: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | .label-variant(@color) { 4 | background-color: @color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken(@color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/list-group.less: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | .list-group-item-variant(@state; @background; @color) { 4 | .list-group-item-@{state} { 5 | color: @color; 6 | background-color: @background; 7 | 8 | a& { 9 | color: @color; 10 | 11 | .list-group-item-heading { 12 | color: inherit; 13 | } 14 | 15 | &:hover, 16 | &:focus { 17 | color: @color; 18 | background-color: darken(@background, 5%); 19 | } 20 | &.active, 21 | &.active:hover, 22 | &.active:focus { 23 | color: #fff; 24 | background-color: @color; 25 | border-color: @color; 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/nav-divider.less: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | .nav-divider(@color: #e5e5e5) { 6 | height: 1px; 7 | margin: ((@line-height-computed / 2) - 1) 0; 8 | overflow: hidden; 9 | background-color: @color; 10 | } 11 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/nav-vertical-align.less: -------------------------------------------------------------------------------- 1 | // Navbar vertical align 2 | // 3 | // Vertically center elements in the navbar. 4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. 5 | 6 | .navbar-vertical-align(@element-height) { 7 | margin-top: ((@navbar-height - @element-height) / 2); 8 | margin-bottom: ((@navbar-height - @element-height) / 2); 9 | } 10 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/opacity.less: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | .opacity(@opacity) { 4 | opacity: @opacity; 5 | // IE8 filter 6 | @opacity-ie: (@opacity * 100); 7 | filter: ~"alpha(opacity=@{opacity-ie})"; 8 | } 9 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/pagination.less: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) { 4 | > li { 5 | > a, 6 | > span { 7 | padding: @padding-vertical @padding-horizontal; 8 | font-size: @font-size; 9 | } 10 | &:first-child { 11 | > a, 12 | > span { 13 | .border-left-radius(@border-radius); 14 | } 15 | } 16 | &:last-child { 17 | > a, 18 | > span { 19 | .border-right-radius(@border-radius); 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/panels.less: -------------------------------------------------------------------------------- 1 | // Panels 2 | 3 | .panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) { 4 | border-color: @border; 5 | 6 | & > .panel-heading { 7 | color: @heading-text-color; 8 | background-color: @heading-bg-color; 9 | border-color: @heading-border; 10 | 11 | + .panel-collapse > .panel-body { 12 | border-top-color: @border; 13 | } 14 | .badge { 15 | color: @heading-bg-color; 16 | background-color: @heading-text-color; 17 | } 18 | } 19 | & > .panel-footer { 20 | + .panel-collapse > .panel-body { 21 | border-bottom-color: @border; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/progress-bar.less: -------------------------------------------------------------------------------- 1 | // Progress bars 2 | 3 | .progress-bar-variant(@color) { 4 | background-color: @color; 5 | 6 | // Deprecated parent class requirement as of v3.2.0 7 | .progress-striped & { 8 | #gradient > .striped(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/reset-filter.less: -------------------------------------------------------------------------------- 1 | // Reset filters for IE 2 | // 3 | // When you need to remove a gradient background, do not forget to use this to reset 4 | // the IE filter for IE9 and below. 5 | 6 | .reset-filter() { 7 | filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); 8 | } 9 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/resize.less: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | .resizable(@direction) { 4 | resize: @direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/responsive-visibility.less: -------------------------------------------------------------------------------- 1 | // Responsive utilities 2 | 3 | // 4 | // More easily include all the states for responsive-utilities.less. 5 | .responsive-visibility() { 6 | display: block !important; 7 | table& { display: table; } 8 | tr& { display: table-row !important; } 9 | th&, 10 | td& { display: table-cell !important; } 11 | } 12 | 13 | .responsive-invisibility() { 14 | display: none !important; 15 | } 16 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/size.less: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | .size(@width; @height) { 4 | width: @width; 5 | height: @height; 6 | } 7 | 8 | .square(@size) { 9 | .size(@size; @size); 10 | } 11 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/tab-focus.less: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | .tab-focus() { 4 | // Default 5 | outline: thin dotted; 6 | // WebKit 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/table-row.less: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | .table-row-variant(@state; @background) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table > thead > tr, 7 | .table > tbody > tr, 8 | .table > tfoot > tr { 9 | > td.@{state}, 10 | > th.@{state}, 11 | &.@{state} > td, 12 | &.@{state} > th { 13 | background-color: @background; 14 | } 15 | } 16 | 17 | // Hover states for `.table-hover` 18 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 19 | .table-hover > tbody > tr { 20 | > td.@{state}:hover, 21 | > th.@{state}:hover, 22 | &.@{state}:hover > td, 23 | &:hover > .@{state}, 24 | &.@{state}:hover > th { 25 | background-color: darken(@background, 5%); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/text-emphasis.less: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | .text-emphasis-variant(@color) { 4 | color: @color; 5 | a&:hover { 6 | color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/mixins/text-overflow.less: -------------------------------------------------------------------------------- 1 | // Text overflow 2 | // Requires inline-block or block for proper styling 3 | 4 | .text-overflow() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/responsive-embed.less: -------------------------------------------------------------------------------- 1 | // Embeds responsive 2 | // 3 | // Credit: Nicolas Gallagher and SUIT CSS. 4 | 5 | .embed-responsive { 6 | position: relative; 7 | display: block; 8 | height: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | 12 | .embed-responsive-item, 13 | iframe, 14 | embed, 15 | object { 16 | position: absolute; 17 | top: 0; 18 | left: 0; 19 | bottom: 0; 20 | height: 100%; 21 | width: 100%; 22 | border: 0; 23 | } 24 | 25 | // Modifier class for 16:9 aspect ratio 26 | &.embed-responsive-16by9 { 27 | padding-bottom: 56.25%; 28 | } 29 | 30 | // Modifier class for 4:3 aspect ratio 31 | &.embed-responsive-4by3 { 32 | padding-bottom: 75%; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /demo/bower_components/bootstrap/less/wells.less: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: @well-bg; 12 | border: 1px solid @well-border; 13 | border-radius: @border-radius-base; 14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-lg { 23 | padding: 24px; 24 | border-radius: @border-radius-large; 25 | } 26 | .well-sm { 27 | padding: 9px; 28 | border-radius: @border-radius-small; 29 | } 30 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "main": "dist/jquery.js", 4 | "license": "MIT", 5 | "ignore": [ 6 | "package.json" 7 | ], 8 | "keywords": [ 9 | "jquery", 10 | "javascript", 11 | "browser", 12 | "library" 13 | ], 14 | "homepage": "https://github.com/jquery/jquery-dist", 15 | "version": "3.1.1", 16 | "_release": "3.1.1", 17 | "_resolution": { 18 | "type": "version", 19 | "tag": "3.1.1", 20 | "commit": "1b30f3ad466ebf2714d47eda34dbd7fdf6849fe3" 21 | }, 22 | "_source": "https://github.com/jquery/jquery-dist.git", 23 | "_target": ">= 1.9.0", 24 | "_originalSource": "jquery" 25 | } -------------------------------------------------------------------------------- /demo/bower_components/jquery/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "main": "dist/jquery.js", 4 | "license": "MIT", 5 | "ignore": [ 6 | "package.json" 7 | ], 8 | "keywords": [ 9 | "jquery", 10 | "javascript", 11 | "browser", 12 | "library" 13 | ] 14 | } -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | // Support: IE <=9 only, Android <=4.0 only 3 | // The above browsers are failing a lot of tests in the ES5 4 | // test suite at http://test262.ecmascript.org. 5 | "parserOptions": { 6 | "ecmaVersion": 3 7 | }, 8 | "globals": { 9 | "window": true, 10 | "jQuery": true, 11 | "define": true, 12 | "module": true, 13 | "noGlobal": true 14 | }, 15 | "rules": { 16 | "strict": ["error", "function"] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/ajax/parseXML.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | "use strict"; 6 | 7 | // Cross-browser xml parsing 8 | jQuery.parseXML = function( data ) { 9 | var xml; 10 | if ( !data || typeof data !== "string" ) { 11 | return null; 12 | } 13 | 14 | // Support: IE 9 - 11 only 15 | // IE throws on parseFromString with invalid input. 16 | try { 17 | xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); 18 | } catch ( e ) { 19 | xml = undefined; 20 | } 21 | 22 | if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { 23 | jQuery.error( "Invalid XML: " + data ); 24 | } 25 | return xml; 26 | }; 27 | 28 | return jQuery.parseXML; 29 | 30 | } ); 31 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/ajax/var/location.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return window.location; 5 | } ); 6 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/ajax/var/nonce.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../../core" 3 | ], function( jQuery ) { 4 | "use strict"; 5 | 6 | return jQuery.now(); 7 | } ); 8 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/ajax/var/rquery.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return ( /\?/ ); 5 | } ); 6 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/attributes.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./core", 3 | "./attributes/attr", 4 | "./attributes/prop", 5 | "./attributes/classes", 6 | "./attributes/val" 7 | ], function( jQuery ) { 8 | 9 | "use strict"; 10 | 11 | // Return jQuery for attributes-only inclusion 12 | return jQuery; 13 | } ); 14 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/core/DOMEval.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/document" 3 | ], function( document ) { 4 | "use strict"; 5 | 6 | function DOMEval( code, doc ) { 7 | doc = doc || document; 8 | 9 | var script = doc.createElement( "script" ); 10 | 11 | script.text = code; 12 | doc.head.appendChild( script ).parentNode.removeChild( script ); 13 | } 14 | 15 | return DOMEval; 16 | } ); 17 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/core/readyException.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | "use strict"; 6 | 7 | jQuery.readyException = function( error ) { 8 | window.setTimeout( function() { 9 | throw error; 10 | } ); 11 | }; 12 | 13 | } ); 14 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/core/stripAndCollapse.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/rnothtmlwhite" 3 | ], function( rnothtmlwhite ) { 4 | "use strict"; 5 | 6 | // Strip and collapse whitespace according to HTML spec 7 | // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace 8 | function stripAndCollapse( value ) { 9 | var tokens = value.match( rnothtmlwhite ) || []; 10 | return tokens.join( " " ); 11 | } 12 | 13 | return stripAndCollapse; 14 | } ); 15 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/core/support.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/document", 3 | "../var/support" 4 | ], function( document, support ) { 5 | 6 | "use strict"; 7 | 8 | // Support: Safari 8 only 9 | // In Safari 8 documents created via document.implementation.createHTMLDocument 10 | // collapse sibling forms: the second one becomes a child of the first one. 11 | // Because of that, this security measure has to be disabled in Safari 8. 12 | // https://bugs.webkit.org/show_bug.cgi?id=137337 13 | support.createHTMLDocument = ( function() { 14 | var body = document.implementation.createHTMLDocument( "" ).body; 15 | body.innerHTML = "
"; 16 | return body.childNodes.length === 2; 17 | } )(); 18 | 19 | return support; 20 | } ); 21 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/core/var/rsingleTag.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | // Match a standalone tag 5 | return ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); 6 | } ); 7 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/css/addGetHookIf.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | 3 | "use strict"; 4 | 5 | function addGetHookIf( conditionFn, hookFn ) { 6 | 7 | // Define the hook, we'll check on the first run if it's really needed. 8 | return { 9 | get: function() { 10 | if ( conditionFn() ) { 11 | 12 | // Hook not needed (or it's not possible to use it due 13 | // to missing dependency), remove it. 14 | delete this.get; 15 | return; 16 | } 17 | 18 | // Hook needed; redefine it so that the support test is not executed again. 19 | return ( this.get = hookFn ).apply( this, arguments ); 20 | } 21 | }; 22 | } 23 | 24 | return addGetHookIf; 25 | 26 | } ); 27 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/css/hiddenVisibleSelectors.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../selector" 4 | ], function( jQuery ) { 5 | 6 | "use strict"; 7 | 8 | jQuery.expr.pseudos.hidden = function( elem ) { 9 | return !jQuery.expr.pseudos.visible( elem ); 10 | }; 11 | jQuery.expr.pseudos.visible = function( elem ) { 12 | return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); 13 | }; 14 | 15 | } ); 16 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/css/var/cssExpand.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return [ "Top", "Right", "Bottom", "Left" ]; 5 | } ); 6 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/css/var/getStyles.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return function( elem ) { 5 | 6 | // Support: IE <=11 only, Firefox <=30 (#15098, #14150) 7 | // IE throws on elements created in popups 8 | // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" 9 | var view = elem.ownerDocument.defaultView; 10 | 11 | if ( !view || !view.opener ) { 12 | view = window; 13 | } 14 | 15 | return view.getComputedStyle( elem ); 16 | }; 17 | } ); 18 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/css/var/rmargin.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return ( /^margin/ ); 5 | } ); 6 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/css/var/rnumnonpx.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../../var/pnum" 3 | ], function( pnum ) { 4 | "use strict"; 5 | 6 | return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); 7 | } ); 8 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/css/var/swap.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | 3 | "use strict"; 4 | 5 | // A method for quickly swapping in/out CSS properties to get correct calculations. 6 | return function( elem, options, callback, args ) { 7 | var ret, name, 8 | old = {}; 9 | 10 | // Remember the old values, and insert the new ones 11 | for ( name in options ) { 12 | old[ name ] = elem.style[ name ]; 13 | elem.style[ name ] = options[ name ]; 14 | } 15 | 16 | ret = callback.apply( elem, args || [] ); 17 | 18 | // Revert the old values 19 | for ( name in options ) { 20 | elem.style[ name ] = old[ name ]; 21 | } 22 | 23 | return ret; 24 | }; 25 | 26 | } ); 27 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/data/var/acceptData.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | 3 | "use strict"; 4 | 5 | /** 6 | * Determines whether an object can have data 7 | */ 8 | return function( owner ) { 9 | 10 | // Accepts only: 11 | // - Node 12 | // - Node.ELEMENT_NODE 13 | // - Node.DOCUMENT_NODE 14 | // - Object 15 | // - Any 16 | return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); 17 | }; 18 | 19 | } ); 20 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/data/var/dataPriv.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../Data" 3 | ], function( Data ) { 4 | "use strict"; 5 | 6 | return new Data(); 7 | } ); 8 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/data/var/dataUser.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../Data" 3 | ], function( Data ) { 4 | "use strict"; 5 | 6 | return new Data(); 7 | } ); 8 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/deferred/exceptionHook.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../deferred" 4 | ], function( jQuery ) { 5 | 6 | "use strict"; 7 | 8 | // These usually indicate a programmer mistake during development, 9 | // warn about them ASAP rather than swallowing them by default. 10 | var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; 11 | 12 | jQuery.Deferred.exceptionHook = function( error, stack ) { 13 | 14 | // Support: IE 8 - 9 only 15 | // Console exists when dev tools are open, which can happen at any time 16 | if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { 17 | window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); 18 | } 19 | }; 20 | 21 | } ); 22 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/deprecated.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./core" 3 | ], function( jQuery ) { 4 | 5 | "use strict"; 6 | 7 | jQuery.fn.extend( { 8 | 9 | bind: function( types, data, fn ) { 10 | return this.on( types, null, data, fn ); 11 | }, 12 | unbind: function( types, fn ) { 13 | return this.off( types, null, fn ); 14 | }, 15 | 16 | delegate: function( selector, types, data, fn ) { 17 | return this.on( types, selector, data, fn ); 18 | }, 19 | undelegate: function( selector, types, fn ) { 20 | 21 | // ( namespace ) or ( selector, types [, fn] ) 22 | return arguments.length === 1 ? 23 | this.off( selector, "**" ) : 24 | this.off( types, selector || "**", fn ); 25 | } 26 | } ); 27 | 28 | jQuery.parseJSON = JSON.parse; 29 | 30 | } ); 31 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/effects/animatedSelector.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../selector", 4 | "../effects" 5 | ], function( jQuery ) { 6 | 7 | "use strict"; 8 | 9 | jQuery.expr.pseudos.animated = function( elem ) { 10 | return jQuery.grep( jQuery.timers, function( fn ) { 11 | return elem === fn.elem; 12 | } ).length; 13 | }; 14 | 15 | } ); 16 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/event/ajax.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../event" 4 | ], function( jQuery ) { 5 | 6 | "use strict"; 7 | 8 | // Attach a bunch of functions for handling common AJAX events 9 | jQuery.each( [ 10 | "ajaxStart", 11 | "ajaxStop", 12 | "ajaxComplete", 13 | "ajaxError", 14 | "ajaxSuccess", 15 | "ajaxSend" 16 | ], function( i, type ) { 17 | jQuery.fn[ type ] = function( fn ) { 18 | return this.on( type, fn ); 19 | }; 20 | } ); 21 | 22 | } ); 23 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/event/alias.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | 4 | "../event", 5 | "./trigger" 6 | ], function( jQuery ) { 7 | 8 | "use strict"; 9 | 10 | jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + 11 | "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + 12 | "change select submit keydown keypress keyup contextmenu" ).split( " " ), 13 | function( i, name ) { 14 | 15 | // Handle event binding 16 | jQuery.fn[ name ] = function( data, fn ) { 17 | return arguments.length > 0 ? 18 | this.on( name, null, data, fn ) : 19 | this.trigger( name ); 20 | }; 21 | } ); 22 | 23 | jQuery.fn.extend( { 24 | hover: function( fnOver, fnOut ) { 25 | return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); 26 | } 27 | } ); 28 | 29 | } ); 30 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/event/support.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/support" 3 | ], function( support ) { 4 | 5 | "use strict"; 6 | 7 | support.focusin = "onfocusin" in window; 8 | 9 | return support; 10 | 11 | } ); 12 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/exports/global.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core" 3 | ], function( jQuery, noGlobal ) { 4 | 5 | "use strict"; 6 | 7 | var 8 | 9 | // Map over jQuery in case of overwrite 10 | _jQuery = window.jQuery, 11 | 12 | // Map over the $ in case of overwrite 13 | _$ = window.$; 14 | 15 | jQuery.noConflict = function( deep ) { 16 | if ( window.$ === jQuery ) { 17 | window.$ = _$; 18 | } 19 | 20 | if ( deep && window.jQuery === jQuery ) { 21 | window.jQuery = _jQuery; 22 | } 23 | 24 | return jQuery; 25 | }; 26 | 27 | // Expose jQuery and $ identifiers, even in AMD 28 | // (#7102#comment:10, https://github.com/jquery/jquery/pull/557) 29 | // and CommonJS for browser emulators (#13566) 30 | if ( !noGlobal ) { 31 | window.jQuery = window.$ = jQuery; 32 | } 33 | 34 | } ); 35 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/jquery.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./core", 3 | "./selector", 4 | "./traversing", 5 | "./callbacks", 6 | "./deferred", 7 | "./deferred/exceptionHook", 8 | "./core/ready", 9 | "./data", 10 | "./queue", 11 | "./queue/delay", 12 | "./attributes", 13 | "./event", 14 | "./event/alias", 15 | "./event/focusin", 16 | "./manipulation", 17 | "./manipulation/_evalUrl", 18 | "./wrap", 19 | "./css", 20 | "./css/hiddenVisibleSelectors", 21 | "./serialize", 22 | "./ajax", 23 | "./ajax/xhr", 24 | "./ajax/script", 25 | "./ajax/jsonp", 26 | "./ajax/load", 27 | "./event/ajax", 28 | "./effects", 29 | "./effects/animatedSelector", 30 | "./offset", 31 | "./dimensions", 32 | "./deprecated", 33 | "./exports/amd", 34 | "./exports/global" 35 | ], function( jQuery ) { 36 | 37 | "use strict"; 38 | 39 | return jQuery; 40 | 41 | } ); 42 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/manipulation/_evalUrl.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../ajax" 3 | ], function( jQuery ) { 4 | 5 | "use strict"; 6 | 7 | jQuery._evalUrl = function( url ) { 8 | return jQuery.ajax( { 9 | url: url, 10 | 11 | // Make this explicit, since user can override this through ajaxSetup (#11264) 12 | type: "GET", 13 | dataType: "script", 14 | cache: true, 15 | async: false, 16 | global: false, 17 | "throws": true 18 | } ); 19 | }; 20 | 21 | return jQuery._evalUrl; 22 | 23 | } ); 24 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/manipulation/getAll.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | "use strict"; 6 | 7 | function getAll( context, tag ) { 8 | 9 | // Support: IE <=9 - 11 only 10 | // Use typeof to avoid zero-argument method invocation on host objects (#15151) 11 | var ret; 12 | 13 | if ( typeof context.getElementsByTagName !== "undefined" ) { 14 | ret = context.getElementsByTagName( tag || "*" ); 15 | 16 | } else if ( typeof context.querySelectorAll !== "undefined" ) { 17 | ret = context.querySelectorAll( tag || "*" ); 18 | 19 | } else { 20 | ret = []; 21 | } 22 | 23 | if ( tag === undefined || tag && jQuery.nodeName( context, tag ) ) { 24 | return jQuery.merge( [ context ], ret ); 25 | } 26 | 27 | return ret; 28 | } 29 | 30 | return getAll; 31 | } ); 32 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/manipulation/setGlobalEval.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../data/var/dataPriv" 3 | ], function( dataPriv ) { 4 | 5 | "use strict"; 6 | 7 | // Mark scripts as having already been evaluated 8 | function setGlobalEval( elems, refElements ) { 9 | var i = 0, 10 | l = elems.length; 11 | 12 | for ( ; i < l; i++ ) { 13 | dataPriv.set( 14 | elems[ i ], 15 | "globalEval", 16 | !refElements || dataPriv.get( refElements[ i ], "globalEval" ) 17 | ); 18 | } 19 | } 20 | 21 | return setGlobalEval; 22 | } ); 23 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/manipulation/var/rcheckableType.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return ( /^(?:checkbox|radio)$/i ); 5 | } ); 6 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/manipulation/var/rscriptType.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return ( /^$|\/(?:java|ecma)script/i ); 5 | } ); 6 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/manipulation/var/rtagName.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); 5 | } ); 6 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/queue/delay.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../queue", 4 | "../effects" // Delay is optional because of this dependency 5 | ], function( jQuery ) { 6 | 7 | "use strict"; 8 | 9 | // Based off of the plugin by Clint Helfers, with permission. 10 | // https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ 11 | jQuery.fn.delay = function( time, type ) { 12 | time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; 13 | type = type || "fx"; 14 | 15 | return this.queue( type, function( next, hooks ) { 16 | var timeout = window.setTimeout( next, time ); 17 | hooks.stop = function() { 18 | window.clearTimeout( timeout ); 19 | }; 20 | } ); 21 | }; 22 | 23 | return jQuery.fn.delay; 24 | } ); 25 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/selector-sizzle.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./core", 3 | "../external/sizzle/dist/sizzle" 4 | ], function( jQuery, Sizzle ) { 5 | 6 | "use strict"; 7 | 8 | jQuery.find = Sizzle; 9 | jQuery.expr = Sizzle.selectors; 10 | 11 | // Deprecated 12 | jQuery.expr[ ":" ] = jQuery.expr.pseudos; 13 | jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; 14 | jQuery.text = Sizzle.getText; 15 | jQuery.isXMLDoc = Sizzle.isXML; 16 | jQuery.contains = Sizzle.contains; 17 | jQuery.escapeSelector = Sizzle.escape; 18 | 19 | } ); 20 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/selector.js: -------------------------------------------------------------------------------- 1 | define( [ "./selector-sizzle" ], function() { 2 | "use strict"; 3 | } ); 4 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/traversing/var/dir.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../../core" 3 | ], function( jQuery ) { 4 | 5 | "use strict"; 6 | 7 | return function( elem, dir, until ) { 8 | var matched = [], 9 | truncate = until !== undefined; 10 | 11 | while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { 12 | if ( elem.nodeType === 1 ) { 13 | if ( truncate && jQuery( elem ).is( until ) ) { 14 | break; 15 | } 16 | matched.push( elem ); 17 | } 18 | } 19 | return matched; 20 | }; 21 | 22 | } ); 23 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/traversing/var/rneedsContext.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../../core", 3 | "../../selector" 4 | ], function( jQuery ) { 5 | "use strict"; 6 | 7 | return jQuery.expr.match.needsContext; 8 | } ); 9 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/traversing/var/siblings.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | 3 | "use strict"; 4 | 5 | return function( n, elem ) { 6 | var matched = []; 7 | 8 | for ( ; n; n = n.nextSibling ) { 9 | if ( n.nodeType === 1 && n !== elem ) { 10 | matched.push( n ); 11 | } 12 | } 13 | 14 | return matched; 15 | }; 16 | 17 | } ); 18 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/ObjectFunctionString.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./fnToString" 3 | ], function( fnToString ) { 4 | "use strict"; 5 | 6 | return fnToString.call( Object ); 7 | } ); 8 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/arr.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return []; 5 | } ); 6 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/class2type.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | // [[Class]] -> type pairs 5 | return {}; 6 | } ); 7 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/concat.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./arr" 3 | ], function( arr ) { 4 | "use strict"; 5 | 6 | return arr.concat; 7 | } ); 8 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/document.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return window.document; 5 | } ); 6 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/documentElement.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./document" 3 | ], function( document ) { 4 | "use strict"; 5 | 6 | return document.documentElement; 7 | } ); 8 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/fnToString.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./hasOwn" 3 | ], function( hasOwn ) { 4 | "use strict"; 5 | 6 | return hasOwn.toString; 7 | } ); 8 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/getProto.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return Object.getPrototypeOf; 5 | } ); 6 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/hasOwn.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./class2type" 3 | ], function( class2type ) { 4 | "use strict"; 5 | 6 | return class2type.hasOwnProperty; 7 | } ); 8 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/indexOf.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./arr" 3 | ], function( arr ) { 4 | "use strict"; 5 | 6 | return arr.indexOf; 7 | } ); 8 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/pnum.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; 5 | } ); 6 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/push.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./arr" 3 | ], function( arr ) { 4 | "use strict"; 5 | 6 | return arr.push; 7 | } ); 8 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/rcssNum.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/pnum" 3 | ], function( pnum ) { 4 | 5 | "use strict"; 6 | 7 | return new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); 8 | 9 | } ); 10 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/rnothtmlwhite.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | // Only count HTML whitespace 5 | // Other whitespace should count in values 6 | // https://html.spec.whatwg.org/multipage/infrastructure.html#space-character 7 | return ( /[^\x20\t\r\n\f]+/g ); 8 | } ); 9 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/slice.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./arr" 3 | ], function( arr ) { 4 | "use strict"; 5 | 6 | return arr.slice; 7 | } ); 8 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/support.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | // All support tests are defined in their respective modules. 5 | return {}; 6 | } ); 7 | -------------------------------------------------------------------------------- /demo/bower_components/jquery/src/var/toString.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./class2type" 3 | ], function( class2type ) { 4 | "use strict"; 5 | 6 | return class2type.toString; 7 | } ); 8 | -------------------------------------------------------------------------------- /demo/bower_components/js-cookie/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "js-cookie", 3 | "license": "MIT", 4 | "main": [ 5 | "src/js.cookie.js" 6 | ], 7 | "ignore": [ 8 | "travis.sh", 9 | "test", 10 | "Gruntfile.js", 11 | "package.json", 12 | ".gitignore", 13 | ".jshintignore", 14 | ".jshintrc", 15 | ".tm_properties", 16 | ".travis.yml" 17 | ], 18 | "homepage": "https://github.com/js-cookie/js-cookie", 19 | "version": "2.1.3", 20 | "_release": "2.1.3", 21 | "_resolution": { 22 | "type": "version", 23 | "tag": "v2.1.3", 24 | "commit": "68acf18560eb7a5d21db7197ae24d975971d1ae0" 25 | }, 26 | "_source": "https://github.com/js-cookie/js-cookie.git", 27 | "_target": "*", 28 | "_originalSource": "js-cookie" 29 | } -------------------------------------------------------------------------------- /demo/bower_components/js-cookie/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "js-cookie", 3 | "license": "MIT", 4 | "main": [ 5 | "src/js.cookie.js" 6 | ], 7 | "ignore": [ 8 | "travis.sh", 9 | "test", 10 | "Gruntfile.js", 11 | "package.json", 12 | ".gitignore", 13 | ".jshintignore", 14 | ".jshintrc", 15 | ".tm_properties", 16 | ".travis.yml" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "modernizr", 3 | "homepage": "https://github.com/Modernizr/Modernizr", 4 | "version": "3.3.1", 5 | "_release": "3.3.1", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "v3.3.1", 9 | "commit": "f6ebbb887780c57deeb4af439609ebbc92a0241f" 10 | }, 11 | "_source": "https://github.com/Modernizr/Modernizr.git", 12 | "_target": "*", 13 | "_originalSource": "modernizr" 14 | } -------------------------------------------------------------------------------- /demo/bower_components/modernizr/.coveralls.yml: -------------------------------------------------------------------------------- 1 | repo_token: SvXbGOMwbSd26ylxjtyC93P5aSLKX92pq 2 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/.gitattributes: -------------------------------------------------------------------------------- 1 | # text files detection 2 | * text=auto 3 | 4 | # unix end of lines forcing for text files 5 | * text eol=lf 6 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | test/coverage 3 | test/*.html 4 | gh-pages 5 | modernizr.min.js 6 | metadata.json 7 | build 8 | dist 9 | tmp 10 | .DS_Store 11 | .project 12 | *.log 13 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/.jscsrc: -------------------------------------------------------------------------------- 1 | { 2 | "preset": "google", 3 | "disallowKeywordsOnNewLine": null, 4 | "disallowMultipleVarDecl": null, 5 | "disallowMultipleLineBreaks": null, 6 | "maximumLineLength": null, 7 | "requireCamelCaseOrUpperCaseIdentifiers": null, 8 | "validateIndentation": null, 9 | "jsDoc": { 10 | "requireHyphenBeforeDescription": true, 11 | "requireNewlineAfterDescription": true, 12 | "checkRedundantReturns": true, 13 | "checkParamExistence": true, 14 | "requireReturnTypes": true, 15 | "requireParamTypes": true, 16 | "checkReturnTypes": true, 17 | "checkTypes": true, 18 | "checkAnnotations": { 19 | "preset": "jsdoc3", 20 | "extra": { 21 | "access": true, 22 | "optionName": true, 23 | "optionProp": true, 24 | "memberof": true, 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/.jshintignore: -------------------------------------------------------------------------------- 1 | src/html5printshiv.js' 2 | src/html5shiv.js 3 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/.npmignore: -------------------------------------------------------------------------------- 1 | test 2 | media 3 | dist 4 | gh-pages 5 | appveyor.yml 6 | Gruntfile.js 7 | metadata.json 8 | modernizr.min.js 9 | .* 10 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/LICENSE: -------------------------------------------------------------------------------- 1 | /*! Modernizr 3.0.0pre (Custom Build) | MIT */ 2 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/appveyor.yml: -------------------------------------------------------------------------------- 1 | environment: 2 | matrix: 3 | - nodejs_version: 0.10 4 | - nodejs_version: 0.12 5 | 6 | # Get the latest stable version of Node 0.STABLE.latest 7 | install: 8 | - ps: Update-NodeJsInstallation (Get-NodeJsLatestBuild $env:nodejs_version) 9 | - npm install -g npm@latest 10 | - set PATH=%APPDATA%\npm;%PATH% 11 | - npm install 12 | 13 | build: off 14 | 15 | before_test: 16 | - npm install grunt-cli -g 17 | 18 | test_script: 19 | - node --version 20 | - npm --version 21 | - npm test 22 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/a/download.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "a[download] Attribute", 4 | "property": "adownload", 5 | "caniuse" : "download", 6 | "tags": ["media", "attribute"], 7 | "builderAliases": ["a_download"], 8 | "notes": [{ 9 | "name": "WhatWG Reference", 10 | "href": "https://developers.whatwg.org/links.html#downloading-resources" 11 | }] 12 | } 13 | !*/ 14 | /* DOC 15 | When used on an ``, this attribute signifies that the resource it points to should be downloaded by the browser rather than navigating to it. 16 | */ 17 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 18 | Modernizr.addTest('adownload', !window.externalHost && 'download' in createElement('a')); 19 | }); 20 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/ambientlight.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Ambient Light Events", 4 | "property": "ambientlight", 5 | "notes": [{ 6 | "name": "W3C Ambient Light Events", 7 | "href": "https://www.w3.org/TR/ambient-light/" 8 | }] 9 | } 10 | !*/ 11 | /* DOC 12 | Detects support for the API that provides information about the ambient light levels, as detected by the device's light detector, in terms of lux units. 13 | */ 14 | define(['Modernizr', 'hasEvent'], function(Modernizr, hasEvent) { 15 | Modernizr.addTest('ambientlight', hasEvent('devicelight', window)); 16 | }); 17 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/applicationcache.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Application Cache", 4 | "property": "applicationcache", 5 | "caniuse": "offline-apps", 6 | "tags": ["storage", "offline"], 7 | "notes": [{ 8 | "name": "MDN documentation", 9 | "href": "https://developer.mozilla.org/en/docs/HTML/Using_the_application_cache" 10 | }], 11 | "polyfills": ["html5gears"] 12 | } 13 | !*/ 14 | /* DOC 15 | Detects support for the Application Cache, for storing data to enable web-based applications run offline. 16 | 17 | The API has been [heavily criticized](http://alistapart.com/article/application-cache-is-a-douchebag) and discussions are underway to address this. 18 | */ 19 | define(['Modernizr'], function(Modernizr) { 20 | Modernizr.addTest('applicationcache', 'applicationCache' in window); 21 | }); 22 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/audio/loop.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Audio Loop Attribute", 4 | "property": "audioloop", 5 | "tags": ["audio", "media"] 6 | } 7 | !*/ 8 | /* DOC 9 | Detects if an audio element can automatically restart, once it has finished 10 | */ 11 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 12 | Modernizr.addTest('audioloop', 'loop' in createElement('audio')); 13 | }); 14 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/battery.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Battery API", 4 | "property": "batteryapi", 5 | "aliases": ["battery-api"], 6 | "builderAliases": ["battery_api"], 7 | "tags": ["device", "media"], 8 | "authors": ["Paul Sayre"], 9 | "notes": [{ 10 | "name": "MDN documentation", 11 | "href": "https://developer.mozilla.org/en/DOM/window.navigator.mozBattery" 12 | }] 13 | } 14 | !*/ 15 | /* DOC 16 | Detect support for the Battery API, for accessing information about the system's battery charge level. 17 | */ 18 | define(['Modernizr', 'prefixed'], function(Modernizr, prefixed) { 19 | Modernizr.addTest('batteryapi', !!prefixed('battery', navigator), {aliases: ['battery-api']}); 20 | }); 21 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/battery/lowbattery.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Low Battery Level", 4 | "property": "lowbattery", 5 | "tags": ["hardware", "mobile"], 6 | "builderAliases": ["battery_level"], 7 | "authors": ["Paul Sayre"], 8 | "notes": [{ 9 | "name": "MDN Docs", 10 | "href": "https://developer.mozilla.org/en-US/docs/Web/API/Navigator/battery" 11 | }] 12 | } 13 | !*/ 14 | /* DOC 15 | Enable a developer to remove CPU intensive CSS/JS when battery is low 16 | */ 17 | define(['Modernizr', 'prefixed'], function(Modernizr, prefixed) { 18 | Modernizr.addTest('lowbattery', function() { 19 | var minLevel = 0.20; 20 | var battery = prefixed('battery', navigator); 21 | return !!(battery && !battery.charging && battery.level <= minLevel); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/blob.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Blob constructor", 4 | "property": "blobconstructor", 5 | "aliases": ["blob-constructor"], 6 | "builderAliases": ["blob_constructor"], 7 | "caniuse": "blobbuilder", 8 | "notes": [{ 9 | "name": "W3C spec", 10 | "href": "https://w3c.github.io/FileAPI/#constructorBlob" 11 | }], 12 | "polyfills": ["blobjs"] 13 | } 14 | !*/ 15 | /* DOC 16 | Detects support for the Blob constructor, for creating file-like objects of immutable, raw data. 17 | */ 18 | define(['Modernizr'], function(Modernizr) { 19 | Modernizr.addTest('blobconstructor', function() { 20 | try { 21 | return !!new Blob(); 22 | } catch (e) { 23 | return false; 24 | } 25 | }, { 26 | aliases: ['blob-constructor'] 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/canvas.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Canvas", 4 | "property": "canvas", 5 | "caniuse": "canvas", 6 | "tags": ["canvas", "graphics"], 7 | "polyfills": ["flashcanvas", "excanvas", "slcanvas", "fxcanvas"] 8 | } 9 | !*/ 10 | /* DOC 11 | Detects support for the `` element for 2D drawing. 12 | */ 13 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 14 | // On the S60 and BB Storm, getContext exists, but always returns undefined 15 | // so we actually have to call getContext() to verify 16 | // github.com/Modernizr/Modernizr/issues/issue/97/ 17 | Modernizr.addTest('canvas', function() { 18 | var elem = createElement('canvas'); 19 | return !!(elem.getContext && elem.getContext('2d')); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/canvas/winding.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "canvas winding support", 4 | "property": ["canvaswinding"], 5 | "tags": ["canvas"], 6 | "async" : false, 7 | "notes": [{ 8 | "name": "Article", 9 | "href": "https://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/" 10 | }] 11 | } 12 | !*/ 13 | /* DOC 14 | Determines if winding rules, which controls if a path can go clockwise or counterclockwise 15 | */ 16 | define(['Modernizr', 'createElement', 'test/canvas'], function(Modernizr, createElement) { 17 | 18 | Modernizr.addTest('canvaswinding', function() { 19 | if (Modernizr.canvas === false) { 20 | return false; 21 | } 22 | var ctx = createElement('canvas').getContext('2d'); 23 | 24 | ctx.rect(0, 0, 10, 10); 25 | ctx.rect(2, 2, 6, 6); 26 | return ctx.isPointInPath(5, 5, 'evenodd') === false; 27 | }); 28 | 29 | }); 30 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/canvastext.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Canvas text", 4 | "property": "canvastext", 5 | "caniuse": "canvas-text", 6 | "tags": ["canvas", "graphics"], 7 | "polyfills": ["canvastext"] 8 | } 9 | !*/ 10 | /* DOC 11 | Detects support for the text APIs for `` elements. 12 | */ 13 | define(['Modernizr', 'createElement', 'test/canvas'], function(Modernizr, createElement) { 14 | Modernizr.addTest('canvastext', function() { 15 | if (Modernizr.canvas === false) { 16 | return false; 17 | } 18 | return typeof createElement('canvas').getContext('2d').fillText == 'function'; 19 | }); 20 | }); 21 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/contextmenu.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Context menus", 4 | "property": "contextmenu", 5 | "caniuse": "menu", 6 | "notes": [{ 7 | "name": "W3C spec", 8 | "href": "http://www.w3.org/TR/html5/interactive-elements.html#context-menus" 9 | },{ 10 | "name": "thewebrocks.com Demo", 11 | "href": "http://thewebrocks.com/demos/context-menu/" 12 | }], 13 | "polyfills": ["jquery-contextmenu"] 14 | } 15 | !*/ 16 | /* DOC 17 | Detects support for custom context menus. 18 | */ 19 | define(['Modernizr', 'docElement'], function(Modernizr, docElement) { 20 | Modernizr.addTest( 21 | 'contextmenu', 22 | ('contextMenu' in docElement && 'HTMLMenuItemElement' in window) 23 | ); 24 | }); 25 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/cors.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Cross-Origin Resource Sharing", 4 | "property": "cors", 5 | "caniuse": "cors", 6 | "authors": ["Theodoor van Donge"], 7 | "notes": [{ 8 | "name": "MDN documentation", 9 | "href": "https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS" 10 | }], 11 | "polyfills": ["pmxdr", "ppx", "flxhr"] 12 | } 13 | !*/ 14 | /* DOC 15 | Detects support for Cross-Origin Resource Sharing: method of performing XMLHttpRequests across domains. 16 | */ 17 | define(['Modernizr'], function(Modernizr) { 18 | Modernizr.addTest('cors', 'XMLHttpRequest' in window && 'withCredentials' in new XMLHttpRequest()); 19 | }); 20 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/crypto.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Web Cryptography", 4 | "property": "cryptography", 5 | "caniuse": "cryptography", 6 | "tags": ["crypto"], 7 | "authors": ["roblarsen"], 8 | "notes": [{ 9 | "name": "W3C Editor's Draft", 10 | "href": "https://www.w3.org/TR/WebCryptoAPI/" 11 | }], 12 | "polyfills": [ 13 | "polycrypt" 14 | ] 15 | } 16 | !*/ 17 | /* DOC 18 | Detects support for the cryptographic functionality available under window.crypto.subtle 19 | */ 20 | define(['Modernizr', 'prefixed'], function(Modernizr, prefixed) { 21 | var crypto = prefixed('crypto', window); 22 | Modernizr.addTest('crypto', !!prefixed('subtle', crypto)); 23 | }); 24 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/all.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "cssall", 4 | "property": "cssall", 5 | "notes": [{ 6 | "name": "Spec", 7 | "href": "https://drafts.csswg.org/css-cascade/#all-shorthand" 8 | }] 9 | } 10 | !*/ 11 | /* DOC 12 | Detects support for the `all` css property, which is a shorthand to reset all css properties (except direction and unicode-bidi) to their original value 13 | */ 14 | 15 | define(['Modernizr', 'docElement'], function(Modernizr, docElement) { 16 | Modernizr.addTest('cssall', 'all' in docElement.style); 17 | }); 18 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/animations.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Animations", 4 | "property": "cssanimations", 5 | "caniuse": "css-animation", 6 | "polyfills": ["transformie", "csssandpaper"], 7 | "tags": ["css"], 8 | "warnings": ["Android < 4 will pass this test, but can only animate a single property at a time"], 9 | "notes": [{ 10 | "name" : "Article: 'Dispelling the Android CSS animation myths'", 11 | "href": "https://goo.gl/OGw5Gm" 12 | }] 13 | } 14 | !*/ 15 | /* DOC 16 | Detects whether or not elements can be animated using CSS 17 | */ 18 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 19 | Modernizr.addTest('cssanimations', testAllProps('animationName', 'a', true)); 20 | }); 21 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/appearance.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Appearance", 4 | "property": "appearance", 5 | "caniuse": "css-appearance", 6 | "tags": ["css"], 7 | "notes": [{ 8 | "name": "MDN documentation", 9 | "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-appearance" 10 | },{ 11 | "name": "CSS-Tricks CSS Almanac: appearance", 12 | "href": "https://css-tricks.com/almanac/properties/a/appearance/" 13 | }] 14 | } 15 | !*/ 16 | /* DOC 17 | Detects support for the `appearance` css property, which is used to make an 18 | element inherit the style of a standard user interface element. It can also be 19 | used to remove the default styles of an element, such as input and buttons. 20 | */ 21 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 22 | Modernizr.addTest('appearance', testAllProps('appearance')); 23 | }); 24 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/backgroundblendmode.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Background Blend Mode", 4 | "property": "backgroundblendmode", 5 | "caniuse": "css-backgroundblendmode", 6 | "tags": ["css"], 7 | "notes": [ 8 | { 9 | "name": "CSS Blend Modes could be the next big thing in Web Design", 10 | "href": " https://medium.com/@bennettfeely/css-blend-modes-could-be-the-next-big-thing-in-web-design-6b51bf53743a" 11 | }, { 12 | "name": "Demo", 13 | "href": "http://bennettfeely.com/gradients/" 14 | } 15 | ] 16 | } 17 | !*/ 18 | /* DOC 19 | Detects the ability for the browser to composite backgrounds using blending modes similar to ones found in Photoshop or Illustrator. 20 | */ 21 | define(['Modernizr', 'prefixed'], function(Modernizr, prefixed) { 22 | Modernizr.addTest('backgroundblendmode', prefixed('backgroundBlendMode', 'text')); 23 | }); 24 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/backgroundposition-xy.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Background Position XY", 4 | "property": "bgpositionxy", 5 | "tags": ["css"], 6 | "builderAliases": ["css_backgroundposition_xy"], 7 | "authors": ["Allan Lei", "Brandom Aaron"], 8 | "notes": [{ 9 | "name": "Demo", 10 | "href": "https://jsfiddle.net/allanlei/R8AYS/" 11 | }, { 12 | "name": "Adapted From", 13 | "href": "https://github.com/brandonaaron/jquery-cssHooks/blob/master/bgpos.js" 14 | }] 15 | } 16 | !*/ 17 | /* DOC 18 | Detects the ability to control an element's background position using css 19 | */ 20 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 21 | Modernizr.addTest('bgpositionxy', function() { 22 | return testAllProps('backgroundPositionX', '3px', true) && testAllProps('backgroundPositionY', '5px', true); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/backgroundsize.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Background Size", 4 | "property": "backgroundsize", 5 | "tags": ["css"], 6 | "knownBugs": ["This will false positive in Opera Mini - https://github.com/Modernizr/Modernizr/issues/396"], 7 | "notes": [{ 8 | "name": "Related Issue", 9 | "href": "https://github.com/Modernizr/Modernizr/issues/396" 10 | }] 11 | } 12 | !*/ 13 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 14 | Modernizr.addTest('backgroundsize', testAllProps('backgroundSize', '100%', true)); 15 | }); 16 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/backgroundsizecover.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Background Size Cover", 4 | "property": "bgsizecover", 5 | "tags": ["css"], 6 | "builderAliases": ["css_backgroundsizecover"], 7 | "notes": [{ 8 | "name" : "MDN Docs", 9 | "href": "https://developer.mozilla.org/en/CSS/background-size" 10 | }] 11 | } 12 | !*/ 13 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 14 | // Must test value, as this specifically tests the `cover` value 15 | Modernizr.addTest('bgsizecover', testAllProps('backgroundSize', 'cover')); 16 | }); 17 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/borderimage.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Border Image", 4 | "property": "borderimage", 5 | "caniuse": "border-image", 6 | "polyfills": ["css3pie"], 7 | "knownBugs": ["Android < 2.0 is true, but has a broken implementation"], 8 | "tags": ["css"] 9 | } 10 | !*/ 11 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 12 | Modernizr.addTest('borderimage', testAllProps('borderImage', 'url() 1', true)); 13 | }); 14 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/borderradius.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Border Radius", 4 | "property": "borderradius", 5 | "caniuse": "border-radius", 6 | "polyfills": ["css3pie"], 7 | "tags": ["css"], 8 | "notes": [{ 9 | "name": "Comprehensive Compat Chart", 10 | "href": "https://muddledramblings.com/table-of-css3-border-radius-compliance" 11 | }] 12 | } 13 | !*/ 14 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 15 | Modernizr.addTest('borderradius', testAllProps('borderRadius', '0px', true)); 16 | }); 17 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/boxshadow.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Box Shadow", 4 | "property": "boxshadow", 5 | "caniuse": "css-boxshadow", 6 | "tags": ["css"], 7 | "knownBugs": [ 8 | "WebOS false positives on this test.", 9 | "The Kindle Silk browser false positives" 10 | ] 11 | } 12 | !*/ 13 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 14 | Modernizr.addTest('boxshadow', testAllProps('boxShadow', '1px 1px', true)); 15 | }); 16 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/boxsizing.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Box Sizing", 4 | "property": "boxsizing", 5 | "caniuse": "css3-boxsizing", 6 | "polyfills": ["borderboxmodel", "boxsizingpolyfill", "borderbox"], 7 | "tags": ["css"], 8 | "builderAliases": ["css_boxsizing"], 9 | "notes": [{ 10 | "name": "MDN Docs", 11 | "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing" 12 | },{ 13 | "name": "Related Github Issue", 14 | "href": "https://github.com/Modernizr/Modernizr/issues/248" 15 | }] 16 | } 17 | !*/ 18 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 19 | Modernizr.addTest('boxsizing', testAllProps('boxSizing', 'border-box', true) && (document.documentMode === undefined || document.documentMode > 7)); 20 | }); 21 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/calc.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Calc", 4 | "property": "csscalc", 5 | "caniuse": "calc", 6 | "tags": ["css"], 7 | "builderAliases": ["css_calc"], 8 | "authors": ["@calvein"] 9 | } 10 | !*/ 11 | /* DOC 12 | Method of allowing calculated values for length units. For example: 13 | 14 | ```css 15 | //lem { 16 | width: calc(100% - 3em); 17 | } 18 | ``` 19 | */ 20 | define(['Modernizr', 'createElement', 'prefixes'], function(Modernizr, createElement, prefixes) { 21 | Modernizr.addTest('csscalc', function() { 22 | var prop = 'width:'; 23 | var value = 'calc(10px);'; 24 | var el = createElement('a'); 25 | 26 | el.style.cssText = prop + prefixes.join(value + prop); 27 | 28 | return !!el.style.length; 29 | }); 30 | }); 31 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/checked.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS :checked pseudo-selector", 4 | "caniuse": "css-sel3", 5 | "property": "checked", 6 | "tags": ["css"], 7 | "notes": [{ 8 | "name": "Related Github Issue", 9 | "href": "https://github.com/Modernizr/Modernizr/pull/879" 10 | }] 11 | } 12 | !*/ 13 | define(['Modernizr', 'createElement', 'testStyles'], function(Modernizr, createElement, testStyles) { 14 | Modernizr.addTest('checked', function() { 15 | return testStyles('#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}', function(elem) { 16 | var cb = createElement('input'); 17 | cb.setAttribute('type', 'checkbox'); 18 | cb.setAttribute('checked', 'checked'); 19 | elem.appendChild(cb); 20 | return cb.offsetLeft === 20; 21 | }); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/chunit.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Font ch Units", 4 | "authors": ["Ron Waldon (@jokeyrhyme)"], 5 | "property": "csschunit", 6 | "tags": ["css"], 7 | "notes": [{ 8 | "name": "W3C Spec", 9 | "href": "https://www.w3.org/TR/css3-values/#font-relative-lengths" 10 | }] 11 | } 12 | !*/ 13 | define(['Modernizr', 'modElem'], function(Modernizr, modElem) { 14 | Modernizr.addTest('csschunit', function() { 15 | var elemStyle = modElem.elem.style; 16 | var supports; 17 | try { 18 | elemStyle.fontSize = '3ch'; 19 | supports = elemStyle.fontSize.indexOf('ch') !== -1; 20 | } catch (e) { 21 | supports = false; 22 | } 23 | return supports; 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/cubicbezierrange.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Cubic Bezier Range", 4 | "property": "cubicbezierrange", 5 | "tags": ["css"], 6 | "builderAliases": ["css_cubicbezierrange"], 7 | "doc" : null, 8 | "authors": ["@calvein"], 9 | "warnings": ["cubic-bezier values can't be > 1 for Webkit until [bug #45761](https://bugs.webkit.org/show_bug.cgi?id=45761) is fixed"], 10 | "notes": [{ 11 | "name": "Comprehensive Compat Chart", 12 | "href": "http://muddledramblings.com/table-of-css3-border-radius-compliance" 13 | }] 14 | } 15 | !*/ 16 | define(['Modernizr', 'createElement', 'prefixes'], function(Modernizr, createElement, prefixes) { 17 | Modernizr.addTest('cubicbezierrange', function() { 18 | var el = createElement('a'); 19 | el.style.cssText = prefixes.join('transition-timing-function:cubic-bezier(1,0,0,1.1); '); 20 | return !!el.style.length; 21 | }); 22 | }); 23 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/displayrunin.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Display run-in", 4 | "property": "display-runin", 5 | "authors": ["alanhogan"], 6 | "tags": ["css"], 7 | "builderAliases": ["css_displayrunin"], 8 | "notes": [{ 9 | "name": "CSS Tricks Article", 10 | "href": "https://css-tricks.com/596-run-in/" 11 | },{ 12 | "name": "Related Github Issue", 13 | "href": "https://github.com/Modernizr/Modernizr/issues/198" 14 | }] 15 | } 16 | !*/ 17 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 18 | Modernizr.addTest('displayrunin', testAllProps('display', 'run-in'), 19 | {aliases: ['display-runin']}); 20 | }); 21 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/ellipsis.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS text-overflow ellipsis", 4 | "property": "ellipsis", 5 | "caniuse": "text-overflow", 6 | "polyfills": [ 7 | "text-overflow" 8 | ], 9 | "tags": ["css"] 10 | } 11 | !*/ 12 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 13 | Modernizr.addTest('ellipsis', testAllProps('textOverflow', 'ellipsis')); 14 | }); 15 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/escape.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS.escape()", 4 | "property": "cssescape", 5 | "polyfills": [ 6 | "css-escape" 7 | ], 8 | "tags": [ 9 | "css", 10 | "cssom" 11 | ] 12 | } 13 | !*/ 14 | /* DOC 15 | Tests for `CSS.escape()` support. 16 | */ 17 | define(['Modernizr'], function(Modernizr) { 18 | var CSS = window.CSS; 19 | Modernizr.addTest('cssescape', CSS ? typeof CSS.escape == 'function' : false); 20 | }); 21 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/exunit.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Font ex Units", 4 | "authors": ["Ron Waldon (@jokeyrhyme)"], 5 | "property": "cssexunit", 6 | "tags": ["css"], 7 | "notes": [{ 8 | "name": "W3C Spec", 9 | "href": "https://www.w3.org/TR/css3-values/#font-relative-lengths" 10 | }] 11 | } 12 | !*/ 13 | define(['Modernizr', 'modElem'], function(Modernizr, modElem) { 14 | Modernizr.addTest('cssexunit', function() { 15 | var elemStyle = modElem.elem.style; 16 | var supports; 17 | try { 18 | elemStyle.fontSize = '3ex'; 19 | supports = elemStyle.fontSize.indexOf('ex') !== -1; 20 | } catch (e) { 21 | supports = false; 22 | } 23 | return supports; 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/flexbox.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Flexbox", 4 | "property": "flexbox", 5 | "caniuse": "flexbox", 6 | "tags": ["css"], 7 | "notes": [{ 8 | "name": "The _new_ flexbox", 9 | "href": "http://dev.w3.org/csswg/css3-flexbox" 10 | }], 11 | "warnings": [ 12 | "A `true` result for this detect does not imply that the `flex-wrap` property is supported; see the `flexwrap` detect." 13 | ] 14 | } 15 | !*/ 16 | /* DOC 17 | Detects support for the Flexible Box Layout model, a.k.a. Flexbox, which allows easy manipulation of layout order and sizing within a container. 18 | */ 19 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 20 | Modernizr.addTest('flexbox', testAllProps('flexBasis', '1px', true)); 21 | }); 22 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/flexboxlegacy.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Flexbox (legacy)", 4 | "property": "flexboxlegacy", 5 | "tags": ["css"], 6 | "polyfills": ["flexie"], 7 | "notes": [{ 8 | "name": "The _old_ flexbox", 9 | "href": "https://www.w3.org/TR/2009/WD-css3-flexbox-20090723/" 10 | }] 11 | } 12 | !*/ 13 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 14 | Modernizr.addTest('flexboxlegacy', testAllProps('boxDirection', 'reverse', true)); 15 | }); 16 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/flexboxtweener.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Flexbox (tweener)", 4 | "property": "flexboxtweener", 5 | "tags": ["css"], 6 | "polyfills": ["flexie"], 7 | "notes": [{ 8 | "name": "The _inbetween_ flexbox", 9 | "href": "https://www.w3.org/TR/2011/WD-css3-flexbox-20111129/" 10 | }], 11 | "warnings": ["This represents an old syntax, not the latest standard syntax."] 12 | } 13 | !*/ 14 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 15 | Modernizr.addTest('flexboxtweener', testAllProps('flexAlign', 'end', true)); 16 | }); 17 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/hairline.js: -------------------------------------------------------------------------------- 1 | /*! { 2 | "name": "hairline", 3 | "property": "csshairline", 4 | "tags": ["css"], 5 | "authors": ["strarsis"], 6 | "notes": [{ 7 | "name": "Blog post about CSS retina hairlines", 8 | "href": "http://dieulot.net/css-retina-hairline" 9 | },{ 10 | "name": "Derived from", 11 | "href": "https://gist.github.com/dieulot/520a49463f6058fbc8d1" 12 | }] 13 | } 14 | !*/ 15 | /* DOC 16 | Detects support for hidpi/retina hairlines, which are CSS borders with less than 1px in width, for being physically 1px on hidpi screens. 17 | */ 18 | 19 | define(['Modernizr', 'testStyles'], function(Modernizr, testStyles) { 20 | Modernizr.addTest('hairline', function() { 21 | return testStyles('#modernizr {border:.5px solid transparent}', function(elem) { 22 | return elem.offsetHeight === 1; 23 | }); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/hsla.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS HSLA Colors", 4 | "caniuse": "css3-colors", 5 | "property": "hsla", 6 | "tags": ["css"] 7 | } 8 | !*/ 9 | define(['Modernizr', 'createElement', 'contains'], function(Modernizr, createElement, contains) { 10 | Modernizr.addTest('hsla', function() { 11 | var style = createElement('a').style; 12 | style.cssText = 'background-color:hsla(120,40%,100%,.5)'; 13 | return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla'); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/invalid.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS :invalid pseudo-class", 4 | "property": "cssinvalid", 5 | "notes": [{ 6 | "name": "MDN documentation", 7 | "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/:invalid" 8 | }] 9 | } 10 | !*/ 11 | /* DOC 12 | Detects support for the ':invalid' CSS pseudo-class. 13 | */ 14 | define(['Modernizr', 'testStyles', 'createElement'], function(Modernizr, testStyles, createElement) { 15 | Modernizr.addTest('cssinvalid', function() { 16 | return testStyles('#modernizr input{height:0;border:0;padding:0;margin:0;width:10px} #modernizr input:invalid{width:50px}', function(elem) { 17 | var input = createElement('input'); 18 | input.required = true; 19 | elem.appendChild(input); 20 | return input.clientWidth > 10; 21 | }); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/lastchild.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS :last-child pseudo-selector", 4 | "caniuse": "css-sel3", 5 | "property": "lastchild", 6 | "tags": ["css"], 7 | "builderAliases": ["css_lastchild"], 8 | "notes": [{ 9 | "name": "Related Github Issue", 10 | "href": "https://github.com/Modernizr/Modernizr/pull/304" 11 | }] 12 | } 13 | !*/ 14 | define(['Modernizr', 'testStyles'], function(Modernizr, testStyles) { 15 | testStyles('#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}', function(elem) { 16 | Modernizr.addTest('lastchild', elem.lastChild.offsetWidth > elem.firstChild.offsetWidth); 17 | }, 2); 18 | }); 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/mediaqueries.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Media Queries", 4 | "caniuse": "css-mediaqueries", 5 | "property": "mediaqueries", 6 | "tags": ["css"], 7 | "builderAliases": ["css_mediaqueries"] 8 | } 9 | !*/ 10 | define(['Modernizr', 'mq'], function(Modernizr, mq) { 11 | Modernizr.addTest('mediaqueries', mq('only all')); 12 | }); 13 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/objectfit.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Object Fit", 4 | "caniuse": "object-fit", 5 | "property": "objectfit", 6 | "tags": ["css"], 7 | "builderAliases": ["css_objectfit"], 8 | "notes": [{ 9 | "name": "Opera Article on Object Fit", 10 | "href": "https://dev.opera.com/articles/css3-object-fit-object-position/" 11 | }] 12 | } 13 | !*/ 14 | define(['Modernizr', 'prefixed'], function(Modernizr, prefixed) { 15 | Modernizr.addTest('objectfit', !!prefixed('objectFit'), {aliases: ['object-fit']}); 16 | }); 17 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/opacity.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Opacity", 4 | "caniuse": "css-opacity", 5 | "property": "opacity", 6 | "tags": ["css"] 7 | } 8 | !*/ 9 | define(['Modernizr', 'createElement', 'prefixes'], function(Modernizr, createElement, prefixes) { 10 | // Browsers that actually have CSS Opacity implemented have done so 11 | // according to spec, which means their return values are within the 12 | // range of [0.0,1.0] - including the leading zero. 13 | 14 | Modernizr.addTest('opacity', function() { 15 | var style = createElement('a').style; 16 | style.cssText = prefixes.join('opacity:.55;'); 17 | 18 | // The non-literal . in this regex is intentional: 19 | // German Chrome returns this value as 0,55 20 | // github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632 21 | return (/^0.55$/).test(style.opacity); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/overflow-scrolling.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Overflow Scrolling", 4 | "property": "overflowscrolling", 5 | "tags": ["css"], 6 | "builderAliases": ["css_overflow_scrolling"], 7 | "warnings": ["Introduced in iOS5b2. API is subject to change."], 8 | "notes": [{ 9 | "name": "Article on iOS overflow scrolling", 10 | "href": "https://css-tricks.com/snippets/css/momentum-scrolling-on-ios-overflow-elements/" 11 | }] 12 | } 13 | !*/ 14 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 15 | Modernizr.addTest('overflowscrolling', testAllProps('overflowScrolling', 'touch', true)); 16 | }); 17 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/reflections.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Reflections", 4 | "caniuse": "css-reflections", 5 | "property": "cssreflections", 6 | "tags": ["css"] 7 | } 8 | !*/ 9 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 10 | Modernizr.addTest('cssreflections', testAllProps('boxReflect', 'above', true)); 11 | }); 12 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/resize.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS UI Resize", 4 | "property": "cssresize", 5 | "caniuse": "css-resize", 6 | "tags": ["css"], 7 | "builderAliases": ["css_resize"], 8 | "notes": [{ 9 | "name": "W3C Specification", 10 | "href": "https://www.w3.org/TR/css3-ui/#resize" 11 | },{ 12 | "name": "MDN Docs", 13 | "href": "https://developer.mozilla.org/en/CSS/resize" 14 | }] 15 | } 16 | !*/ 17 | /* DOC 18 | Test for CSS 3 UI "resize" property 19 | */ 20 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 21 | Modernizr.addTest('cssresize', testAllProps('resize', 'both', true)); 22 | }); 23 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/rgba.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS rgba", 4 | "caniuse": "css3-colors", 5 | "property": "rgba", 6 | "tags": ["css"], 7 | "notes": [{ 8 | "name": "CSSTricks Tutorial", 9 | "href": "https://css-tricks.com/rgba-browser-support/" 10 | }] 11 | } 12 | !*/ 13 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 14 | Modernizr.addTest('rgba', function() { 15 | var style = createElement('a').style; 16 | style.cssText = 'background-color:rgba(150,255,150,.5)'; 17 | 18 | return ('' + style.backgroundColor).indexOf('rgba') > -1; 19 | }); 20 | }); 21 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/scrollbars.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Stylable Scrollbars", 4 | "property": "cssscrollbar", 5 | "tags": ["css"], 6 | "builderAliases": ["css_scrollbars"] 7 | } 8 | !*/ 9 | define(['Modernizr', 'testStyles', 'prefixes'], function(Modernizr, testStyles, prefixes) { 10 | testStyles('#modernizr{overflow: scroll; width: 40px; height: 40px; }#' + prefixes 11 | .join('scrollbar{width:0px}' + ' #modernizr::') 12 | .split('#') 13 | .slice(1) 14 | .join('#') + 'scrollbar{width:0px}', 15 | function(node) { 16 | Modernizr.addTest('cssscrollbar', node.scrollWidth == 40); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/scrollsnappoints.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Scroll Snap Points", 4 | "property": "scrollsnappoints", 5 | "notes": [{ 6 | "name": "Setting native-like scrolling offsets in CSS with Scrolling Snap Points", 7 | "href": "http://generatedcontent.org/post/66817675443/setting-native-like-scrolling-offsets-in-css-with" 8 | },{ 9 | "name": "MDN Article", 10 | "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Scroll_Snap_Points" 11 | }], 12 | "polyfills": ["scrollsnap"] 13 | } 14 | !*/ 15 | /* DOC 16 | Detects support for CSS Snap Points 17 | */ 18 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 19 | Modernizr.addTest('scrollsnappoints', testAllProps('scrollSnapType')); 20 | }); 21 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/shapes.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Shapes", 4 | "property": "shapes", 5 | "tags": ["css"], 6 | "notes": [{ 7 | "name": "CSS Shapes W3C specification", 8 | "href": "https://www.w3.org/TR/css-shapes" 9 | },{ 10 | "name": "Examples from Adobe", 11 | "href": "http://webplatform.adobe.com/shapes/" 12 | }, { 13 | "name": "Samples showcasing uses of Shapes", 14 | "href": "http://codepen.io/collection/qFesk" 15 | }] 16 | } 17 | !*/ 18 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 19 | Modernizr.addTest('shapes', testAllProps('shapeOutside', 'content-box', true)); 20 | }); 21 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/siblinggeneral.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS general sibling selector", 4 | "caniuse": "css-sel3", 5 | "property": "siblinggeneral", 6 | "tags": ["css"], 7 | "notes": [{ 8 | "name": "Related Github Issue", 9 | "href": "https://github.com/Modernizr/Modernizr/pull/889" 10 | }] 11 | } 12 | !*/ 13 | define(['Modernizr', 'createElement', 'testStyles'], function(Modernizr, createElement, testStyles) { 14 | Modernizr.addTest('siblinggeneral', function() { 15 | return testStyles('#modernizr div {width:100px} #modernizr div ~ div {width:200px;display:block}', function(elem) { 16 | return elem.lastChild.offsetWidth == 200; 17 | }, 2); 18 | }); 19 | }); 20 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/supports.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Supports", 4 | "property": "supports", 5 | "caniuse": "css-featurequeries", 6 | "tags": ["css"], 7 | "builderAliases": ["css_supports"], 8 | "notes": [{ 9 | "name": "W3 Spec", 10 | "href": "http://dev.w3.org/csswg/css3-conditional/#at-supports" 11 | },{ 12 | "name": "Related Github Issue", 13 | "href": "github.com/Modernizr/Modernizr/issues/648" 14 | },{ 15 | "name": "W3 Info", 16 | "href": "http://dev.w3.org/csswg/css3-conditional/#the-csssupportsrule-interface" 17 | }] 18 | } 19 | !*/ 20 | define(['Modernizr'], function(Modernizr) { 21 | var newSyntax = 'CSS' in window && 'supports' in window.CSS; 22 | var oldSyntax = 'supportsCSS' in window; 23 | Modernizr.addTest('supports', newSyntax || oldSyntax); 24 | }); 25 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/textalignlast.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS text-align-last", 4 | "property": "textalignlast", 5 | "tags": ["css"], 6 | "knownBugs": ["IE does not support the 'start' or 'end' values."], 7 | "notes": [{ 8 | "name": "Quicksmode", 9 | "href": "http://www.quirksmode.org/css/text/textalignlast.html" 10 | },{ 11 | "name": "MDN", 12 | "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/text-align-last" 13 | }] 14 | } 15 | !*/ 16 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 17 | Modernizr.addTest('textalignlast', testAllProps('textAlignLast')); 18 | }); 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/textshadow.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS textshadow", 4 | "property": "textshadow", 5 | "caniuse": "css-textshadow", 6 | "tags": ["css"], 7 | "knownBugs": ["FF3.0 will false positive on this test"] 8 | } 9 | !*/ 10 | define(['Modernizr', 'testProp'], function(Modernizr, testProp) { 11 | Modernizr.addTest('textshadow', testProp('textShadow', '1px 1px')); 12 | }); 13 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/transforms.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Transforms", 4 | "property": "csstransforms", 5 | "caniuse": "transforms2d", 6 | "tags": ["css"] 7 | } 8 | !*/ 9 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 10 | Modernizr.addTest('csstransforms', function() { 11 | // Android < 3.0 is buggy, so we sniff and blacklist 12 | // http://git.io/hHzL7w 13 | return navigator.userAgent.indexOf('Android 2.') === -1 && 14 | testAllProps('transform', 'scale(1)', true); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/transformstylepreserve3d.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Transform Style preserve-3d", 4 | "property": "preserve3d", 5 | "authors": ["edmellum"], 6 | "tags": ["css"], 7 | "notes": [{ 8 | "name": "MDN Docs", 9 | "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/transform-style" 10 | },{ 11 | "name": "Related Github Issue", 12 | "href": "https://github.com/Modernizr/Modernizr/issues/762" 13 | }] 14 | } 15 | !*/ 16 | /* DOC 17 | Detects support for `transform-style: preserve-3d`, for getting a proper 3D perspective on elements. 18 | */ 19 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 20 | Modernizr.addTest('preserve3d', testAllProps('transformStyle', 'preserve-3d')); 21 | }); 22 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/transitions.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS Transitions", 4 | "property": "csstransitions", 5 | "caniuse": "css-transitions", 6 | "tags": ["css"] 7 | } 8 | !*/ 9 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 10 | Modernizr.addTest('csstransitions', testAllProps('transition', 'all', true)); 11 | }); 12 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/userselect.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS user-select", 4 | "property": "userselect", 5 | "caniuse": "user-select-none", 6 | "authors": ["ryan seddon"], 7 | "tags": ["css"], 8 | "builderAliases": ["css_userselect"], 9 | "notes": [{ 10 | "name": "Related Modernizr Issue", 11 | "href": "https://github.com/Modernizr/Modernizr/issues/250" 12 | }] 13 | } 14 | !*/ 15 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 16 | //https://github.com/Modernizr/Modernizr/issues/250 17 | Modernizr.addTest('userselect', testAllProps('userSelect', 'none', true)); 18 | }); 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/valid.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CSS :valid pseudo-class", 4 | "property": "cssvalid", 5 | "notes": [{ 6 | "name": "MDN documentation", 7 | "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/:valid" 8 | }] 9 | } 10 | !*/ 11 | /* DOC 12 | Detects support for the ':valid' CSS pseudo-class. 13 | */ 14 | define(['Modernizr', 'testStyles', 'createElement'], function(Modernizr, testStyles, createElement) { 15 | Modernizr.addTest('cssvalid', function() { 16 | return testStyles('#modernizr input{height:0;border:0;padding:0;margin:0;width:10px} #modernizr input:valid{width:50px}', function(elem) { 17 | var input = createElement('input'); 18 | elem.appendChild(input); 19 | return input.clientWidth > 10; 20 | }); 21 | }); 22 | }); 23 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/css/will-change.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "will-change", 4 | "property": "willchange", 5 | "notes": [{ 6 | "name": "Spec", 7 | "href": "https://drafts.csswg.org/css-will-change/" 8 | }] 9 | } 10 | !*/ 11 | /* DOC 12 | Detects support for the `will-change` css property, which formally signals to the 13 | browser that an element will be animating. 14 | */ 15 | define(['Modernizr', 'docElement'], function(Modernizr, docElement) { 16 | Modernizr.addTest('willchange', 'willChange' in docElement.style); 17 | }); 18 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/customevent.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "CustomEvent", 4 | "property": "customevent", 5 | "tags": ["customevent"], 6 | "authors": ["Alberto Elias"], 7 | "notes": [{ 8 | "name": "W3C DOM reference", 9 | "href": "https://www.w3.org/TR/DOM-Level-3-Events/#interface-CustomEvent" 10 | }, { 11 | "name": "MDN documentation", 12 | "href": "https://developer.mozilla.org/en/docs/Web/API/CustomEvent" 13 | }], 14 | "polyfills": ["eventlistener"] 15 | } 16 | !*/ 17 | /* DOC 18 | 19 | Detects support for CustomEvent. 20 | 21 | */ 22 | define(['Modernizr'], function(Modernizr) { 23 | Modernizr.addTest('customevent', 'CustomEvent' in window && typeof window.CustomEvent === 'function'); 24 | }); 25 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/dart.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Dart", 4 | "property": "dart", 5 | "authors": ["Theodoor van Donge"], 6 | "notes": [{ 7 | "name": "Language website", 8 | "href": "https://www.dartlang.org/" 9 | }] 10 | } 11 | !*/ 12 | /* DOC 13 | Detects native support for the Dart programming language. 14 | */ 15 | define(['Modernizr', 'prefixed'], function(Modernizr, prefixed) { 16 | Modernizr.addTest('dart', !!prefixed('startDart', navigator)); 17 | }); 18 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/dataview-api.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "DataView", 4 | "property": "dataview", 5 | "authors": ["Addy Osmani"], 6 | "builderAliases": ["dataview_api"], 7 | "notes": [{ 8 | "name": "MDN documentation", 9 | "href": "https://developer.mozilla.org/en/JavaScript_typed_arrays/DataView" 10 | }], 11 | "polyfills": ["jdataview"] 12 | } 13 | !*/ 14 | /* DOC 15 | Detects support for the DataView interface for reading data from an ArrayBuffer as part of the Typed Array spec. 16 | */ 17 | define(['Modernizr'], function(Modernizr) { 18 | Modernizr.addTest('dataview', (typeof DataView !== 'undefined' && 'getFloat64' in DataView.prototype)); 19 | }); 20 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/dom/classlist.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "classList", 4 | "caniuse": "classlist", 5 | "property": "classlist", 6 | "tags": ["dom"], 7 | "builderAliases": ["dataview_api"], 8 | "notes": [{ 9 | "name": "MDN Docs", 10 | "href": "https://developer.mozilla.org/en/DOM/element.classList" 11 | }] 12 | } 13 | !*/ 14 | define(['Modernizr', 'docElement'], function(Modernizr, docElement) { 15 | Modernizr.addTest('classlist', 'classList' in docElement); 16 | }); 17 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/dom/createElement-attrs.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "createElement with Attributes", 4 | "property": ["createelementattrs", "createelement-attrs"], 5 | "tags": ["dom"], 6 | "builderAliases": ["dom_createElement_attrs"], 7 | "authors": ["James A. Rosen"], 8 | "notes": [{ 9 | "name": "Related Github Issue", 10 | "href": "https://github.com/Modernizr/Modernizr/issues/258" 11 | }] 12 | } 13 | !*/ 14 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 15 | Modernizr.addTest('createelementattrs', function() { 16 | try { 17 | return createElement('').getAttribute('name') == 'test'; 18 | } catch (e) { 19 | return false; 20 | } 21 | }, { 22 | aliases: ['createelement-attrs'] 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/dom/dataset.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "dataset API", 4 | "caniuse": "dataset", 5 | "property": "dataset", 6 | "tags": ["dom"], 7 | "builderAliases": ["dom_dataset"], 8 | "authors": ["@phiggins42"] 9 | } 10 | !*/ 11 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 12 | // dataset API for data-* attributes 13 | Modernizr.addTest('dataset', function() { 14 | var n = createElement('div'); 15 | n.setAttribute('data-a-b', 'c'); 16 | return !!(n.dataset && n.dataset.aB === 'c'); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/dom/hidden.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "[hidden] Attribute", 4 | "property": "hidden", 5 | "tags": ["dom"], 6 | "notes": [{ 7 | "name": "WHATWG: The hidden attribute", 8 | "href": "https://developers.whatwg.org/editing.html#the-hidden-attribute" 9 | }, { 10 | "name": "original implementation of detect code", 11 | "href": "https://github.com/aFarkas/html5shiv/blob/bf4fcc4/src/html5shiv.js#L38" 12 | }], 13 | "polyfills": ["html5shiv"], 14 | "authors": ["Ron Waldon (@jokeyrhyme)"] 15 | } 16 | !*/ 17 | /* DOC 18 | Does the browser support the HTML5 [hidden] attribute? 19 | */ 20 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 21 | Modernizr.addTest('hidden', 'hidden' in createElement('a')); 22 | }); 23 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/dom/microdata.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "microdata", 4 | "property": "microdata", 5 | "tags": ["dom"], 6 | "builderAliases": ["dom_microdata"], 7 | "notes": [{ 8 | "name": "W3 Spec", 9 | "href": "https://www.w3.org/TR/microdata/" 10 | }] 11 | } 12 | !*/ 13 | define(['Modernizr'], function(Modernizr) { 14 | Modernizr.addTest('microdata', 'getItems' in document); 15 | }); 16 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/dom/mutationObserver.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "DOM4 MutationObserver", 4 | "property": "mutationobserver", 5 | "caniuse": "mutationobserver", 6 | "tags": ["dom"], 7 | "authors": ["Karel Sedláček (@ksdlck)"], 8 | "polyfills": ["mutationobservers"], 9 | "notes": [{ 10 | "name": "MDN documentation", 11 | "href": "https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver" 12 | }] 13 | } 14 | !*/ 15 | /* DOC 16 | 17 | Determines if DOM4 MutationObserver support is available. 18 | 19 | */ 20 | define(['Modernizr'], function(Modernizr) { 21 | Modernizr.addTest('mutationobserver', 22 | !!window.MutationObserver || !!window.WebKitMutationObserver); 23 | }); 24 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/elem/datalist.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "datalist Element", 4 | "caniuse": "datalist", 5 | "property": "datalistelem", 6 | "tags": ["elem"], 7 | "builderAliases": ["elem_datalist"], 8 | "warnings": ["This test is a dupe of Modernizr.input.list. Only around for legacy reasons."], 9 | "notes": [{ 10 | "name": "CSS Tricks Article", 11 | "href": "https://css-tricks.com/15346-relevant-dropdowns-polyfill-for-datalist/" 12 | },{ 13 | "name": "Mike Taylor Code", 14 | "href": "https://miketaylr.com/code/datalist.html" 15 | }] 16 | } 17 | !*/ 18 | define(['Modernizr', 'test/input'], function(Modernizr) { 19 | // lol. we already have a test for datalist built in! silly you. 20 | // Leaving it around in case anyone's using it 21 | 22 | Modernizr.addTest('datalistelem', Modernizr.input.list); 23 | }); 24 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/elem/output.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "output Element", 4 | "property": "outputelem", 5 | "tags": ["elem"], 6 | "builderAliases": ["elem_output"], 7 | "notes": [{ 8 | "name": "WhatWG Spec", 9 | "href": "https://html.spec.whatwg.org/multipage/forms.html#the-output-element" 10 | }] 11 | } 12 | !*/ 13 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 14 | Modernizr.addTest('outputelem', 'value' in createElement('output')); 15 | }); 16 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/elem/picture.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "picture Element", 4 | "property": "picture", 5 | "tags": ["elem"], 6 | "authors": ["Scott Jehl", "Mat Marquis"], 7 | "notes": [{ 8 | "name": "Specification", 9 | "href": "http://picture.responsiveimages.org" 10 | },{ 11 | "name": "Relevant spec issue", 12 | "href": "https://github.com/ResponsiveImagesCG/picture-element/issues/87" 13 | }] 14 | } 15 | !*/ 16 | define(['Modernizr'], function(Modernizr) { 17 | Modernizr.addTest('picture', 'HTMLPictureElement' in window); 18 | }); 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/elem/progress-meter.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "progress Element", 4 | "caniuse": "progress", 5 | "property": ["progressbar", "meter"], 6 | "tags": ["elem"], 7 | "builderAliases": ["elem_progress_meter"], 8 | "authors": ["Stefan Wallin"] 9 | } 10 | !*/ 11 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 12 | // Tests for progressbar-support. All browsers that don't support progressbar returns undefined =) 13 | Modernizr.addTest('progressbar', createElement('progress').max !== undefined); 14 | 15 | // Tests for meter-support. All browsers that don't support meters returns undefined =) 16 | Modernizr.addTest('meter', createElement('meter').max !== undefined); 17 | }); 18 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/elem/template.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Template Tag", 4 | "property": "template", 5 | "tags": ["elem"], 6 | "notes": [{ 7 | "name": "HTML5Rocks Article", 8 | "href": "http://www.html5rocks.com/en/tutorials/webcomponents/template/" 9 | },{ 10 | "name": "W3 Spec", 11 | "href": "https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html" 12 | }] 13 | } 14 | !*/ 15 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 16 | Modernizr.addTest('template', 'content' in createElement('template')); 17 | }); 18 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/elem/time.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "time Element", 4 | "property": "time", 5 | "tags": ["elem"], 6 | "builderAliases": ["elem_time"], 7 | "notes": [{ 8 | "name": "WhatWG Spec", 9 | "href": "https://html.spec.whatwg.org/multipage/semantics.html#the-time-element" 10 | }] 11 | } 12 | !*/ 13 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 14 | Modernizr.addTest('time', 'valueAsDate' in createElement('time')); 15 | }); 16 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/elem/unknown.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Unknown Elements", 4 | "property": "unknownelements", 5 | "tags": ["elem"], 6 | "notes": [{ 7 | "name": "The Story of the HTML5 Shiv", 8 | "href": "https://www.paulirish.com/2011/the-history-of-the-html5-shiv/" 9 | }, { 10 | "name": "original implementation of detect code", 11 | "href": "https://github.com/aFarkas/html5shiv/blob/bf4fcc4/src/html5shiv.js#L36" 12 | }], 13 | "polyfills": ["html5shiv"], 14 | "authors": ["Ron Waldon (@jokeyrhyme)"] 15 | } 16 | !*/ 17 | /* DOC 18 | Does the browser support HTML with non-standard / new elements? 19 | */ 20 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 21 | Modernizr.addTest('unknownelements', function() { 22 | var a = createElement('a'); 23 | a.innerHTML = ''; 24 | return a.childNodes.length === 1; 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/emoji.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Emoji", 4 | "property": "emoji" 5 | } 6 | !*/ 7 | /* DOC 8 | Detects support for emoji character sets. 9 | */ 10 | define(['Modernizr', 'createElement', 'test/canvastext'], function(Modernizr, createElement) { 11 | Modernizr.addTest('emoji', function() { 12 | if (!Modernizr.canvastext) { 13 | return false; 14 | } 15 | var pixelRatio = window.devicePixelRatio || 1; 16 | var offset = 12 * pixelRatio; 17 | var node = createElement('canvas'); 18 | var ctx = node.getContext('2d'); 19 | ctx.fillStyle = '#f00'; 20 | ctx.textBaseline = 'top'; 21 | ctx.font = '32px Arial'; 22 | ctx.fillText('\ud83d\udc28', 0, 0); // U+1F428 KOALA 23 | return ctx.getImageData(offset, offset, 1, 1).data[0] !== 0; 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/es5/function.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "ES5 Function", 4 | "property": "es5function", 5 | "notes": [{ 6 | "name": "ECMAScript 5.1 Language Specification", 7 | "href": "http://www.ecma-international.org/ecma-262/5.1/" 8 | }], 9 | "polyfills": ["es5shim"], 10 | "authors": ["Ron Waldon (@jokeyrhyme)"], 11 | "tags": ["es5"] 12 | } 13 | !*/ 14 | /* DOC 15 | Check if browser implements ECMAScript 5 Function per specification. 16 | */ 17 | define(['Modernizr'], function(Modernizr) { 18 | Modernizr.addTest('es5function', function() { 19 | return !!(Function.prototype && Function.prototype.bind); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/es5/strictmode.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "ES5 Strict Mode", 4 | "property": "strictmode", 5 | "caniuse": "sctrict-mode", 6 | "notes": [{ 7 | "name": "ECMAScript 5.1 Language Specification", 8 | "href": "http://www.ecma-international.org/ecma-262/5.1/" 9 | }], 10 | "authors": ["@kangax"], 11 | "tags": ["es5"], 12 | "builderAliases": ["es5_strictmode"] 13 | } 14 | !*/ 15 | /* DOC 16 | Check if browser implements ECMAScript 5 Object strict mode. 17 | */ 18 | define(['Modernizr'], function(Modernizr) { 19 | Modernizr.addTest('strictmode', (function() {'use strict'; return !this; })()); 20 | }); 21 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/es5/string.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "ES5 String", 4 | "property": "es5string", 5 | "notes": [{ 6 | "name": "ECMAScript 5.1 Language Specification", 7 | "href": "http://www.ecma-international.org/ecma-262/5.1/" 8 | }], 9 | "polyfills": ["es5shim"], 10 | "authors": ["Ron Waldon (@jokeyrhyme)"], 11 | "tags": ["es5"] 12 | } 13 | !*/ 14 | /* DOC 15 | Check if browser implements ECMAScript 5 String per specification. 16 | */ 17 | define(['Modernizr'], function(Modernizr) { 18 | Modernizr.addTest('es5string', function() { 19 | return !!(String.prototype && String.prototype.trim); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/es6/collections.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "ES6 Collections", 4 | "property": "es6collections", 5 | "notes": [{ 6 | "name": "unofficial ECMAScript 6 draft specification", 7 | "href": "https://people.mozilla.org/~jorendorff/es6-draft.html" 8 | }], 9 | "polyfills": ["es6shim", "weakmap"], 10 | "authors": ["Ron Waldon (@jokeyrhyme)"], 11 | "warnings": ["ECMAScript 6 is still a only a draft, so this detect may not match the final specification or implementations."], 12 | "tags": ["es6"] 13 | } 14 | !*/ 15 | /* DOC 16 | Check if browser implements ECMAScript 6 Map, Set, WeakMap and WeakSet 17 | */ 18 | define(['Modernizr'], function(Modernizr) { 19 | Modernizr.addTest('es6collections', !!( 20 | window.Map && window.Set && window.WeakMap && window.WeakSet 21 | )); 22 | }); 23 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/es6/contains.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "ES5 String.prototype.contains", 4 | "property": "contains", 5 | "authors": ["Robert Kowalski"], 6 | "tags": ["es6"] 7 | } 8 | !*/ 9 | /* DOC 10 | Check if browser implements ECMAScript 6 `String.prototype.contains` per specification. 11 | */ 12 | define(['Modernizr', 'is'], function(Modernizr, is) { 13 | Modernizr.addTest('contains', is(String.prototype.contains, 'function')); 14 | }); 15 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/es6/generators.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "ES6 Generators", 4 | "property": "generators", 5 | "authors": ["Michael Kachanovskyi"], 6 | "tags": ["es6"] 7 | } 8 | !*/ 9 | /* DOC 10 | Check if browser implements ECMAScript 6 Generators per specification. 11 | */ 12 | define(['Modernizr'], function(Modernizr) { 13 | Modernizr.addTest('generators', function() { 14 | try { 15 | /* jshint evil: true */ 16 | new Function('function* test() {}')(); 17 | } catch (e) { 18 | return false; 19 | } 20 | return true; 21 | }); 22 | }); 23 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/es6/object.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "ES6 Object", 4 | "property": "es6object", 5 | "notes": [{ 6 | "name": "unofficial ECMAScript 6 draft specification", 7 | "href": "https://people.mozilla.org/~jorendorff/es6-draft.html" 8 | }], 9 | "polyfills": ["es6shim"], 10 | "authors": ["Ron Waldon (@jokeyrhyme)"], 11 | "warnings": ["ECMAScript 6 is still a only a draft, so this detect may not match the final specification or implementations."], 12 | "tags": ["es6"] 13 | } 14 | !*/ 15 | /* DOC 16 | Check if browser implements ECMAScript 6 Object per specification. 17 | */ 18 | define(['Modernizr'], function(Modernizr) { 19 | Modernizr.addTest('es6object', !!(Object.assign && 20 | Object.is && 21 | Object.setPrototypeOf)); 22 | }); 23 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/eventlistener.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Event Listener", 4 | "property": "eventlistener", 5 | "authors": ["Andrew Betts (@triblondon)"], 6 | "notes": [{ 7 | "name": "W3C Spec", 8 | "href": "https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-Registration-interfaces" 9 | }], 10 | "polyfills": ["eventlistener"] 11 | } 12 | !*/ 13 | /* DOC 14 | Detects native support for addEventListener 15 | */ 16 | define(['Modernizr'], function(Modernizr) { 17 | Modernizr.addTest('eventlistener', 'addEventListener' in window); 18 | }); 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/file/api.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "File API", 4 | "property": "filereader", 5 | "caniuse": "fileapi", 6 | "notes": [{ 7 | "name": "W3C Working Draft", 8 | "href": "https://www.w3.org/TR/FileAPI/" 9 | }], 10 | "tags": ["file"], 11 | "builderAliases": ["file_api"], 12 | "knownBugs": ["Will fail in Safari 5 due to its lack of support for the standards defined FileReader object"] 13 | } 14 | !*/ 15 | /* DOC 16 | `filereader` tests for the File API specification 17 | 18 | Tests for objects specific to the File API W3C specification without 19 | being redundant (don't bother testing for Blob since it is assumed 20 | to be the File object's prototype.) 21 | */ 22 | define(['Modernizr'], function(Modernizr) { 23 | Modernizr.addTest('filereader', !!(window.File && window.FileList && window.FileReader)); 24 | }); 25 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/file/filesystem.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Filesystem API", 4 | "property": "filesystem", 5 | "caniuse": "filesystem", 6 | "notes": [{ 7 | "name": "W3 Draft", 8 | "href": "http://dev.w3.org/2009/dap/file-system/file-dir-sys.html" 9 | }], 10 | "authors": ["Eric Bidelman (@ebidel)"], 11 | "tags": ["file"], 12 | "builderAliases": ["file_filesystem"], 13 | "knownBugs": ["The API will be present in Chrome incognito, but will throw an exception. See crbug.com/93417"] 14 | } 15 | !*/ 16 | define(['Modernizr', 'prefixed'], function(Modernizr, prefixed) { 17 | Modernizr.addTest('filesystem', !!prefixed('requestFileSystem', window)); 18 | }); 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/forms/capture.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "input[capture] Attribute", 4 | "property": "capture", 5 | "tags": ["video", "image", "audio", "media", "attribute"], 6 | "notes": [{ 7 | "name": "W3C draft: HTML Media Capture", 8 | "href": "https://www.w3.org/TR/html-media-capture/" 9 | }] 10 | } 11 | !*/ 12 | /* DOC 13 | When used on an ``, this attribute signifies that the resource it takes should be generated via device's camera, camcorder, sound recorder. 14 | */ 15 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 16 | // testing for capture attribute in inputs 17 | Modernizr.addTest('capture', ('capture' in createElement('input'))); 18 | }); 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/forms/fileinput.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "input[file] Attribute", 4 | "property": "fileinput", 5 | "caniuse" : "forms", 6 | "tags": ["file", "forms", "input"], 7 | "builderAliases": ["forms_fileinput"] 8 | } 9 | !*/ 10 | /* DOC 11 | Detects whether input type="file" is available on the platform 12 | 13 | E.g. iOS < 6 and some android version don't support this 14 | */ 15 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 16 | Modernizr.addTest('fileinput', function() { 17 | if (navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/)) { 18 | return false; 19 | } 20 | var elem = createElement('input'); 21 | elem.type = 'file'; 22 | return !elem.disabled; 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/forms/placeholder.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "placeholder attribute", 4 | "property": "placeholder", 5 | "tags": ["forms", "attribute"], 6 | "builderAliases": ["forms_placeholder"] 7 | } 8 | !*/ 9 | /* DOC 10 | Tests for placeholder attribute in inputs and textareas 11 | */ 12 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 13 | Modernizr.addTest('placeholder', ('placeholder' in createElement('input') && 'placeholder' in createElement('textarea'))); 14 | }); 15 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/forms/requestautocomplete.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "form#requestAutocomplete()", 4 | "property": "requestautocomplete", 5 | "tags": ["form", "forms", "requestAutocomplete", "payments"], 6 | "notes": [{ 7 | "name": "WHATWG proposed spec", 8 | "href": "https://wiki.whatwg.org/wiki/RequestAutocomplete" 9 | }] 10 | } 11 | !*/ 12 | /* DOC 13 | When used with input[autocomplete] to annotate a form, form.requestAutocomplete() shows a dialog in Chrome that speeds up 14 | checkout flows (payments specific for now). 15 | */ 16 | define(['Modernizr', 'createElement', 'prefixed'], function(Modernizr, createElement, prefixed) { 17 | Modernizr.addTest('requestautocomplete', !!prefixed('requestAutocomplete', createElement('form'))); 18 | }); 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/fullscreen-api.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Fullscreen API", 4 | "property": "fullscreen", 5 | "caniuse": "fullscreen", 6 | "notes": [{ 7 | "name": "MDN documentation", 8 | "href": "https://developer.mozilla.org/en/API/Fullscreen" 9 | }], 10 | "polyfills": ["screenfulljs"], 11 | "builderAliases": ["fullscreen_api"] 12 | } 13 | !*/ 14 | /* DOC 15 | Detects support for the ability to make the current website take over the user's entire screen 16 | */ 17 | define(['Modernizr', 'prefixed'], function(Modernizr, prefixed) { 18 | // github.com/Modernizr/Modernizr/issues/739 19 | Modernizr.addTest('fullscreen', !!(prefixed('exitFullscreen', document, false) || prefixed('cancelFullScreen', document, false))); 20 | }); 21 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/gamepad.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "GamePad API", 4 | "property": "gamepads", 5 | "authors": ["Eric Bidelman"], 6 | "tags": ["media"], 7 | "notes": [{ 8 | "name": "W3C spec", 9 | "href": "https://www.w3.org/TR/gamepad/" 10 | },{ 11 | "name": "HTML5 Rocks tutorial", 12 | "href": "http://www.html5rocks.com/en/tutorials/doodles/gamepad/#toc-featuredetect" 13 | }], 14 | "warnings": [], 15 | "polyfills": [] 16 | } 17 | !*/ 18 | /* DOC 19 | Detects support for the Gamepad API, for access to gamepads and controllers. 20 | */ 21 | define(['Modernizr', 'prefixed'], function(Modernizr, prefixed) { 22 | 23 | Modernizr.addTest('gamepads', !!prefixed('getGamepads', navigator)); 24 | }); 25 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/htmlimports.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "HTML Imports", 4 | "notes": [ 5 | { 6 | "name": "W3C HTML Imports Specification", 7 | "href": "https://w3c.github.io/webcomponents/spec/imports/" 8 | }, 9 | { 10 | "name": "HTML Imports - #include for the web", 11 | "href": "http://www.html5rocks.com/en/tutorials/webcomponents/imports/" 12 | } 13 | ], 14 | "polyfills": ["polymer-htmlimports"], 15 | "property": "htmlimports", 16 | "tags": ["html", "import"] 17 | } 18 | !*/ 19 | /* DOC 20 | Detects support for HTML import, a feature that is used for loading in Web Components. 21 | */ 22 | 23 | define(['addTest', 'createElement'], function(addTest, createElement) { 24 | addTest('htmlimports', 'import' in createElement('link')); 25 | }); 26 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/ie8compat.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "IE8 compat mode", 4 | "property": "ie8compat", 5 | "authors": ["Erich Ocean"] 6 | } 7 | !*/ 8 | /* DOC 9 | Detects whether or not the current browser is IE8 in compatibility mode (i.e. acting as IE7). 10 | */ 11 | define(['Modernizr'], function(Modernizr) { 12 | // In this case, IE8 will be acting as IE7. You may choose to remove features in this case. 13 | 14 | // related: 15 | // james.padolsey.com/javascript/detect-ie-in-js-using-conditional-comments/ 16 | 17 | Modernizr.addTest('ie8compat', (!window.addEventListener && !!document.documentMode && document.documentMode === 7)); 18 | }); 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/iframe/sandbox.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "iframe[sandbox] Attribute", 4 | "property": "sandbox", 5 | "tags": ["iframe"], 6 | "builderAliases": ["iframe_sandbox"], 7 | "notes": [ 8 | { 9 | "name": "WhatWG Spec", 10 | "href": "https://html.spec.whatwg.org/multipage/embedded-content.html#attr-iframe-sandbox" 11 | }], 12 | "knownBugs": [ "False-positive on Firefox < 29" ] 13 | } 14 | !*/ 15 | /* DOC 16 | Test for `sandbox` attribute in iframes. 17 | */ 18 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 19 | Modernizr.addTest('sandbox', 'sandbox' in createElement('iframe')); 20 | }); 21 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/iframe/seamless.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "iframe[seamless] Attribute", 4 | "property": "seamless", 5 | "tags": ["iframe"], 6 | "builderAliases": ["iframe_seamless"], 7 | "notes": [{ 8 | "name": "WhatWG Spec", 9 | "href": "https://html.spec.whatwg.org/multipage/embedded-content.html#attr-iframe-seamless" 10 | }] 11 | } 12 | !*/ 13 | /* DOC 14 | Test for `seamless` attribute in iframes. 15 | */ 16 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 17 | Modernizr.addTest('seamless', 'seamless' in createElement('iframe')); 18 | }); 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/iframe/srcdoc.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "iframe[srcdoc] Attribute", 4 | "property": "srcdoc", 5 | "tags": ["iframe"], 6 | "builderAliases": ["iframe_srcdoc"], 7 | "notes": [{ 8 | "name": "WhatWG Spec", 9 | "href": "https://html.spec.whatwg.org/multipage/embedded-content.html#attr-iframe-srcdoc" 10 | }] 11 | } 12 | !*/ 13 | /* DOC 14 | Test for `srcdoc` attribute in iframes. 15 | */ 16 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 17 | Modernizr.addTest('srcdoc', 'srcdoc' in createElement('iframe')); 18 | }); 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/img/crossorigin.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Image crossOrigin", 4 | "property": "imgcrossorigin", 5 | "notes": [{ 6 | "name": "Cross Domain Images and the Tainted Canvas", 7 | "href": "https://blog.codepen.io/2013/10/08/cross-domain-images-tainted-canvas/" 8 | }] 9 | } 10 | !*/ 11 | /* DOC 12 | Detects support for the crossOrigin attribute on images, which allow for cross domain images inside of a canvas without tainting it 13 | */ 14 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 15 | Modernizr.addTest('imgcrossorigin', 'crossOrigin' in createElement('img')); 16 | }); 17 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/img/jpegxr.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "JPEG XR (extended range)", 4 | "async": true, 5 | "aliases": ["jpeg-xr"], 6 | "property": "jpegxr", 7 | "tags": ["image"], 8 | "notes": [{ 9 | "name": "Wikipedia Article", 10 | "href": "https://en.wikipedia.org/wiki/JPEG_XR" 11 | }] 12 | } 13 | !*/ 14 | /* DOC 15 | Test for JPEG XR support 16 | */ 17 | define(['Modernizr', 'addTest'], function(Modernizr, addTest) { 18 | 19 | Modernizr.addAsyncTest(function() { 20 | var image = new Image(); 21 | 22 | image.onload = image.onerror = function() { 23 | addTest('jpegxr', image.width == 1, {aliases: ['jpeg-xr']}); 24 | }; 25 | 26 | image.src = 'data:image/vnd.ms-photo;base64,SUm8AQgAAAAFAAG8AQAQAAAASgAAAIC8BAABAAAAAQAAAIG8BAABAAAAAQAAAMC8BAABAAAAWgAAAMG8BAABAAAAHwAAAAAAAAAkw91vA07+S7GFPXd2jckNV01QSE9UTwAZAYBxAAAAABP/gAAEb/8AAQAAAQAAAA=='; 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/img/srcset.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "srcset attribute", 4 | "property": "srcset", 5 | "tags": ["image"], 6 | "notes": [{ 7 | "name": "Smashing Magazine Article", 8 | "href": "https://en.wikipedia.org/wiki/APNG" 9 | },{ 10 | "name": "Generate multi-resolution images for srcset with Grunt", 11 | "href": "https://addyosmani.com/blog/generate-multi-resolution-images-for-srcset-with-grunt/" 12 | }] 13 | } 14 | !*/ 15 | /* DOC 16 | Test for the srcset attribute of images 17 | */ 18 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 19 | Modernizr.addTest('srcset', 'srcset' in createElement('img')); 20 | }); 21 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/input/formaction.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "input formaction", 4 | "property": "inputformaction", 5 | "aliases": ["input-formaction"], 6 | "notes": [{ 7 | "name": "WHATWG Spec", 8 | "href": "https://html.spec.whatwg.org/multipage/forms.html#attr-fs-formaction" 9 | }, { 10 | "name": "Wufoo demo", 11 | "href": "https://www.wufoo.com/html5/attributes/13-formaction.html" 12 | }], 13 | "polyfills": [ 14 | "webshims" 15 | ] 16 | } 17 | !*/ 18 | /* DOC 19 | Detect support for the formaction attribute on form inputs 20 | */ 21 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 22 | Modernizr.addTest('inputformaction', !!('formAction' in createElement('input')), {aliases: ['input-formaction']}); 23 | }); 24 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/input/formenctype.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "input formenctype", 4 | "property": "inputformenctype", 5 | "aliases": ["input-formenctype"], 6 | "notes": [{ 7 | "name": "WHATWG Spec", 8 | "href": "https://html.spec.whatwg.org/multipage/forms.html#attr-fs-formenctype" 9 | }, { 10 | "name": "Wufoo demo", 11 | "href": "https://www.wufoo.com/html5/attributes/16-formenctype.html" 12 | }], 13 | "polyfills": [ 14 | "html5formshim" 15 | ] 16 | } 17 | !*/ 18 | /* DOC 19 | Detect support for the formenctype attribute on form inputs, which overrides the form enctype attribute 20 | */ 21 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 22 | Modernizr.addTest('inputformenctype', !!('formEnctype' in createElement('input')), {aliases: ['input-formenctype']}); 23 | }); 24 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/input/formmethod.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "input formmethod", 4 | "property": "inputformmethod", 5 | "notes": [{ 6 | "name": "WHATWG Spec", 7 | "href": "https://html.spec.whatwg.org/multipage/forms.html#attr-fs-formmethod" 8 | }, { 9 | "name": "Wufoo demo", 10 | "href": "https://www.wufoo.com/html5/attributes/14-formmethod.html" 11 | }], 12 | "polyfills": [ 13 | "webshims" 14 | ] 15 | } 16 | !*/ 17 | /* DOC 18 | Detect support for the formmethod attribute on form inputs 19 | */ 20 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 21 | Modernizr.addTest('inputformmethod', !!('formMethod' in createElement('input'))); 22 | }); 23 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/input/formtarget.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "input formtarget", 4 | "property": "inputformtarget", 5 | "aliases": ["input-formtarget"], 6 | "notes": [{ 7 | "name": "WHATWG Spec", 8 | "href": "https://html.spec.whatwg.org/multipage/forms.html#attr-fs-formtarget" 9 | }, { 10 | "name": "Wufoo demo", 11 | "href": "https://www.wufoo.com/html5/attributes/15-formtarget.html" 12 | }], 13 | "polyfills": [ 14 | "html5formshim" 15 | ] 16 | } 17 | !*/ 18 | /* DOC 19 | Detect support for the formtarget attribute on form inputs, which overrides the form target attribute 20 | */ 21 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 22 | Modernizr.addTest('inputformtarget', !!('formtarget' in createElement('input')), {aliases: ['input-formtarget']}); 23 | }); 24 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/inputsearchevent.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "input[search] search event", 4 | "property": "search", 5 | "tags": ["input","search"], 6 | "authors": ["Calvin Webster"], 7 | "notes": [{ 8 | "name": "Wufoo demo", 9 | "href": "https://www.wufoo.com/html5/types/5-search.html?" 10 | }, { 11 | "name": "CSS Tricks", 12 | "href": "https://css-tricks.com/webkit-html5-search-inputs/" 13 | }] 14 | } 15 | !*/ 16 | /* DOC 17 | There is a custom `search` event implemented in webkit browsers when using an `input[search]` element. 18 | */ 19 | define(['Modernizr', 'hasEvent'], function(Modernizr, hasEvent) { 20 | Modernizr.addTest('inputsearchevent', hasEvent('search')); 21 | }); 22 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/intl.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Internationalization API", 4 | "property": "intl", 5 | "notes": [{ 6 | "name": "MDN documentation", 7 | "href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl" 8 | },{ 9 | "name": "ECMAScript spec", 10 | "href": "http://www.ecma-international.org/ecma-402/1.0/" 11 | }] 12 | } 13 | !*/ 14 | /* DOC 15 | Detects support for the Internationalization API which allow easy formatting of number and dates and sorting string 16 | based on a locale 17 | */ 18 | define(['Modernizr', 'prefixed'], function(Modernizr, prefixed) { 19 | Modernizr.addTest('intl', !!prefixed('Intl', window)); 20 | }); 21 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/json.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "JSON", 4 | "property": "json", 5 | "caniuse": "json", 6 | "notes": [{ 7 | "name": "MDN documentation", 8 | "href": "https://developer.mozilla.org/en-US/docs/Glossary/JSON" 9 | }], 10 | "polyfills": ["json2"] 11 | } 12 | !*/ 13 | /* DOC 14 | Detects native support for JSON handling functions. 15 | */ 16 | define(['Modernizr'], function(Modernizr) { 17 | // this will also succeed if you've loaded the JSON2.js polyfill ahead of time 18 | // ... but that should be obvious. :) 19 | 20 | Modernizr.addTest('json', 'JSON' in window && 'parse' in JSON && 'stringify' in JSON); 21 | }); 22 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/ligatures.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Font Ligatures", 4 | "property": "ligatures", 5 | "caniuse": "font-feature", 6 | "notes": [{ 7 | "name": "Cross-browser Web Fonts", 8 | "href": "http://www.sitepoint.com/cross-browser-web-fonts-part-3/" 9 | }] 10 | } 11 | !*/ 12 | /* DOC 13 | Detects support for OpenType ligatures 14 | */ 15 | define(['Modernizr', 'testAllProps'], function(Modernizr, testAllProps) { 16 | Modernizr.addTest('ligatures', testAllProps('fontFeatureSettings', '"liga" 1')); 17 | }); 18 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/lists-reversed.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Reverse Ordered Lists", 4 | "property": "olreversed", 5 | "notes": [{ 6 | "name": "Impressive Webs article", 7 | "href": "http://impressivewebs.com/reverse-ordered-lists-html5" 8 | }], 9 | "builderAliases": ["lists_reversed"] 10 | } 11 | !*/ 12 | /* DOC 13 | Detects support for the `reversed` attribute on the `
    ` element. 14 | */ 15 | define(['Modernizr', 'createElement'], function(Modernizr, createElement) { 16 | Modernizr.addTest('olreversed', 'reversed' in createElement('ol')); 17 | }); 18 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/network/beacon.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Beacon API", 4 | "notes": [{ 5 | "name": "MDN documentation", 6 | "href": "https://developer.mozilla.org/en-US/docs/Web/API/navigator.sendBeacon" 7 | },{ 8 | "name": "W3C specification", 9 | "href": "https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/Beacon/Overview.html" 10 | }], 11 | "property": "beacon", 12 | "tags": ["beacon", "network"], 13 | "authors": ["Cătălin Mariș"] 14 | } 15 | !*/ 16 | /* DOC 17 | Detects support for an API that allows for asynchronous transfer of small HTTP data from the client to a server. 18 | */ 19 | define(['Modernizr'], function(Modernizr) { 20 | Modernizr.addTest('beacon', 'sendBeacon' in navigator); 21 | }); 22 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/network/eventsource.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Server Sent Events", 4 | "property": "eventsource", 5 | "tags": ["network"], 6 | "builderAliases": ["network_eventsource"], 7 | "notes": [{ 8 | "name": "WHATWG Spec", 9 | "href": "https://html.spec.whatwg.org/multipage/comms.html#server-sent-events" 10 | }] 11 | } 12 | !*/ 13 | /* DOC 14 | Tests for server sent events aka eventsource. 15 | */ 16 | define(['Modernizr'], function(Modernizr) { 17 | Modernizr.addTest('eventsource', 'EventSource' in window); 18 | }); 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/network/fetch.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Fetch API", 4 | "property": "fetch", 5 | "tags": ["network"], 6 | "caniuse": "fetch", 7 | "notes": [{ 8 | "name": "Fetch Living Standard", 9 | "href": "https://fetch.spec.whatwg.org/" 10 | }], 11 | "polyfills": ["fetch"] 12 | } 13 | !*/ 14 | /* DOC 15 | Detects support for the fetch API, a modern replacement for XMLHttpRequest. 16 | */ 17 | define(['Modernizr'], function(Modernizr) { 18 | Modernizr.addTest('fetch', 'fetch' in window); 19 | }); 20 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/network/xhr-responsetype-arraybuffer.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "XHR responseType='arraybuffer'", 4 | "property": "xhrresponsetypearraybuffer", 5 | "tags": ["network"], 6 | "notes": [{ 7 | "name": "XMLHttpRequest Living Standard", 8 | "href": "https://xhr.spec.whatwg.org/#the-responsetype-attribute" 9 | }] 10 | } 11 | !*/ 12 | /* DOC 13 | Tests for XMLHttpRequest xhr.responseType='arraybuffer'. 14 | */ 15 | define(['Modernizr', 'testXhrType'], function(Modernizr, testXhrType) { 16 | Modernizr.addTest('xhrresponsetypearraybuffer', testXhrType('arraybuffer')); 17 | }); 18 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/network/xhr-responsetype-blob.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "XHR responseType='blob'", 4 | "property": "xhrresponsetypeblob", 5 | "tags": ["network"], 6 | "notes": [{ 7 | "name": "XMLHttpRequest Living Standard", 8 | "href": "https://xhr.spec.whatwg.org/#the-responsetype-attribute" 9 | }] 10 | } 11 | !*/ 12 | /* DOC 13 | Tests for XMLHttpRequest xhr.responseType='blob'. 14 | */ 15 | define(['Modernizr', 'testXhrType'], function(Modernizr, testXhrType) { 16 | Modernizr.addTest('xhrresponsetypeblob', testXhrType('blob')); 17 | }); 18 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/network/xhr-responsetype-document.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "XHR responseType='document'", 4 | "property": "xhrresponsetypedocument", 5 | "tags": ["network"], 6 | "notes": [{ 7 | "name": "XMLHttpRequest Living Standard", 8 | "href": "https://xhr.spec.whatwg.org/#the-responsetype-attribute" 9 | }] 10 | } 11 | !*/ 12 | /* DOC 13 | Tests for XMLHttpRequest xhr.responseType='document'. 14 | */ 15 | define(['Modernizr', 'testXhrType'], function(Modernizr, testXhrType) { 16 | Modernizr.addTest('xhrresponsetypedocument', testXhrType('document')); 17 | }); 18 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/network/xhr-responsetype-json.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "XHR responseType='json'", 4 | "property": "xhrresponsetypejson", 5 | "tags": ["network"], 6 | "notes": [{ 7 | "name": "XMLHttpRequest Living Standard", 8 | "href": "https://xhr.spec.whatwg.org/#the-responsetype-attribute" 9 | },{ 10 | "name": "Explanation of xhr.responseType='json'", 11 | "href": "https://mathiasbynens.be/notes/xhr-responsetype-json" 12 | }] 13 | } 14 | !*/ 15 | /* DOC 16 | Tests for XMLHttpRequest xhr.responseType='json'. 17 | */ 18 | define(['Modernizr', 'testXhrType'], function(Modernizr, testXhrType) { 19 | Modernizr.addTest('xhrresponsetypejson', testXhrType('json')); 20 | }); 21 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/network/xhr-responsetype-text.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "XHR responseType='text'", 4 | "property": "xhrresponsetypetext", 5 | "tags": ["network"], 6 | "notes": [{ 7 | "name": "XMLHttpRequest Living Standard", 8 | "href": "https://xhr.spec.whatwg.org/#the-responsetype-attribute" 9 | }] 10 | } 11 | !*/ 12 | /* DOC 13 | Tests for XMLHttpRequest xhr.responseType='text'. 14 | */ 15 | define(['Modernizr', 'testXhrType'], function(Modernizr, testXhrType) { 16 | Modernizr.addTest('xhrresponsetypetext', testXhrType('text')); 17 | }); 18 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/network/xhr-responsetype.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "XHR responseType", 4 | "property": "xhrresponsetype", 5 | "tags": ["network"], 6 | "notes": [{ 7 | "name": "XMLHttpRequest Living Standard", 8 | "href": "https://xhr.spec.whatwg.org/#the-responsetype-attribute" 9 | }] 10 | } 11 | !*/ 12 | /* DOC 13 | Tests for XMLHttpRequest xhr.responseType. 14 | */ 15 | define(['Modernizr'], function(Modernizr) { 16 | Modernizr.addTest('xhrresponsetype', (function() { 17 | if (typeof XMLHttpRequest == 'undefined') { 18 | return false; 19 | } 20 | var xhr = new XMLHttpRequest(); 21 | xhr.open('get', '/', true); 22 | return 'response' in xhr; 23 | }())); 24 | }); 25 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/network/xhr2.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "XML HTTP Request Level 2 XHR2", 4 | "property": "xhr2", 5 | "tags": ["network"], 6 | "builderAliases": ["network_xhr2"], 7 | "notes": [{ 8 | "name": "W3 Spec", 9 | "href": "https://www.w3.org/TR/XMLHttpRequest2/" 10 | },{ 11 | "name": "Details on Related Github Issue", 12 | "href": "https://github.com/Modernizr/Modernizr/issues/385" 13 | }] 14 | } 15 | !*/ 16 | /* DOC 17 | Tests for XHR2. 18 | */ 19 | define(['Modernizr'], function(Modernizr) { 20 | // all three of these details report consistently across all target browsers: 21 | // !!(window.ProgressEvent); 22 | // 'XMLHttpRequest' in window && 'withCredentials' in new XMLHttpRequest 23 | Modernizr.addTest('xhr2', 'XMLHttpRequest' in window && 'withCredentials' in new XMLHttpRequest()); 24 | }); 25 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/performance.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Navigation Timing API", 4 | "property": "performance", 5 | "caniuse": "nav-timing", 6 | "tags": ["performance"], 7 | "authors": ["Scott Murphy (@uxder)"], 8 | "notes": [{ 9 | "name": "W3C Spec", 10 | "href": "https://www.w3.org/TR/navigation-timing/" 11 | },{ 12 | "name": "HTML5 Rocks article", 13 | "href": "http://www.html5rocks.com/en/tutorials/webperformance/basics/" 14 | }], 15 | "polyfills": ["perfnow"] 16 | } 17 | !*/ 18 | /* DOC 19 | Detects support for the Navigation Timing API, for measuring browser and connection performance. 20 | */ 21 | define(['Modernizr', 'prefixed'], function(Modernizr, prefixed) { 22 | Modernizr.addTest('performance', !!prefixed('performance', window)); 23 | }); 24 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/pointerlock-api.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Pointer Lock API", 4 | "property": "pointerlock", 5 | "notes": [{ 6 | "name": "MDN documentation", 7 | "href": "https://developer.mozilla.org/en-US/docs/API/Pointer_Lock_API" 8 | }], 9 | "builderAliases": ["pointerlock_api"] 10 | } 11 | !*/ 12 | /* DOC 13 | Detects support the pointer lock API which allows you to lock the mouse cursor to the browser window. 14 | */ 15 | define(['Modernizr', 'prefixed'], function(Modernizr, prefixed) { 16 | // https://developer.mozilla.org/en-US/docs/API/Pointer_Lock_API 17 | Modernizr.addTest('pointerlock', !!prefixed('exitPointerLock', document)); 18 | }); 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/postmessage.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "postMessage", 4 | "property": "postmessage", 5 | "caniuse": "x-doc-messaging", 6 | "notes": [{ 7 | "name": "W3C Spec", 8 | "href": "http://www.w3.org/TR/html5/comms.html#posting-messages" 9 | }], 10 | "polyfills": ["easyxdm", "postmessage-jquery"] 11 | } 12 | !*/ 13 | /* DOC 14 | Detects support for the `window.postMessage` protocol for cross-document messaging. 15 | */ 16 | define(['Modernizr'], function(Modernizr) { 17 | Modernizr.addTest('postmessage', 'postMessage' in window); 18 | }); 19 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/queryselector.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "QuerySelector", 4 | "property": "queryselector", 5 | "caniuse": "queryselector", 6 | "tags": ["queryselector"], 7 | "authors": ["Andrew Betts (@triblondon)"], 8 | "notes": [{ 9 | "name" : "W3C Selectors reference", 10 | "href": "https://www.w3.org/TR/selectors-api/#queryselectorall" 11 | }], 12 | "polyfills": ["css-selector-engine"] 13 | } 14 | !*/ 15 | /* DOC 16 | Detects support for querySelector. 17 | */ 18 | define(['Modernizr'], function(Modernizr) { 19 | Modernizr.addTest('queryselector', 'querySelector' in document && 'querySelectorAll' in document); 20 | }); 21 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/quota-management-api.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "Quota Storage Management API", 4 | "property": "quotamanagement", 5 | "tags": ["storage"], 6 | "builderAliases": ["quota_management_api"], 7 | "notes": [{ 8 | "name": "W3C Spec", 9 | "href": "https://www.w3.org/TR/quota-api/" 10 | }] 11 | } 12 | !*/ 13 | /* DOC 14 | Detects the ability to request a specific amount of space for filesystem access 15 | */ 16 | define(['Modernizr', 'prefixed'], function(Modernizr, prefixed) { 17 | Modernizr.addTest('quotamanagement', function() { 18 | var tempStorage = prefixed('temporaryStorage', navigator); 19 | var persStorage = prefixed('persistentStorage', navigator); 20 | 21 | return !!(tempStorage && persStorage); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/requestanimationframe.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "requestAnimationFrame", 4 | "property": "requestanimationframe", 5 | "aliases": ["raf"], 6 | "caniuse": "requestanimationframe", 7 | "tags": ["animation"], 8 | "authors": ["Addy Osmani"], 9 | "notes": [{ 10 | "name": "W3C spec", 11 | "href": "https://www.w3.org/TR/animation-timing/" 12 | }], 13 | "polyfills": ["raf"] 14 | } 15 | !*/ 16 | /* DOC 17 | Detects support for the `window.requestAnimationFrame` API, for offloading animation repainting to the browser for optimized performance. 18 | */ 19 | define(['Modernizr', 'prefixed'], function(Modernizr, prefixed) { 20 | Modernizr.addTest('requestanimationframe', !!prefixed('requestAnimationFrame', window), {aliases: ['raf']}); 21 | }); 22 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/feature-detects/script/async.js: -------------------------------------------------------------------------------- 1 | /*! 2 | { 3 | "name": "script[async]", 4 | "property": "scriptasync", 5 | "caniuse": "script-async", 6 | "tags": ["script"], 7 | "builderAliases": ["script_async"], 8 | "authors": ["Theodoor van Donge"] 9 | } 10 | !*/ 11 | /* DOC 12 | Detects support for the `async` attribute on the ` 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/test/img/unit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/test/mocks/lib/build-query.js: -------------------------------------------------------------------------------- 1 | define([], function() { 2 | return function() { 3 | return '?--dontmin'; 4 | }; 5 | }); 6 | -------------------------------------------------------------------------------- /demo/bower_components/modernizr/test/node/lib/cli.js: -------------------------------------------------------------------------------- 1 | var root = require('find-parent-dir').sync(__dirname, 'package.json'); 2 | var expect = require('expect.js'); 3 | var cp = require('child_process'); 4 | var Modernizr = require(root + 'lib/cli'); 5 | 6 | 7 | describe('cli', function() { 8 | 9 | it('exposes a build function', function() { 10 | expect(Modernizr.build).to.be.a('function'); 11 | }); 12 | 13 | it('exposes a metadata function', function() { 14 | expect(Modernizr.metadata).to.be.a('function'); 15 | }); 16 | 17 | it('does not throw when being executed', function(done) { 18 | cp.exec('node ' + root + '/bin/modernizr -f adownload', done); 19 | }); 20 | 21 | }); 22 | -------------------------------------------------------------------------------- /demo/bower_components/raphael/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "raphael", 3 | "version": "2.1.1", 4 | "main": "raphael.js", 5 | "ignore": [ 6 | "eve", 7 | "**/.*", 8 | "*.html", 9 | "*.json", 10 | "*.markdown", 11 | "*.md", 12 | "copy.js", 13 | "Gruntfile.js", 14 | "raphael.core.js", 15 | "raphael.svg.js", 16 | "raphael.vml.js", 17 | "reference.js" 18 | ], 19 | "homepage": "https://github.com/DmitryBaranovskiy/raphael", 20 | "_release": "2.1.1", 21 | "_resolution": { 22 | "type": "version", 23 | "tag": "v2.1.1", 24 | "commit": "ea2562a6290c0a158c3db09f5c55042d6870c17c" 25 | }, 26 | "_source": "https://github.com/DmitryBaranovskiy/raphael.git", 27 | "_target": "2.1.1", 28 | "_originalSource": "raphael" 29 | } -------------------------------------------------------------------------------- /demo/bower_components/raphael/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "raphael", 3 | "version": "2.1.1", 4 | "main": "raphael.js", 5 | "ignore": [ 6 | "eve", 7 | "**/.*", 8 | "*.html", 9 | "*.json", 10 | "*.markdown", 11 | "*.md", 12 | "copy.js", 13 | "Gruntfile.js", 14 | "raphael.core.js", 15 | "raphael.svg.js", 16 | "raphael.vml.js", 17 | "reference.js" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /demo/bower_components/skeleton/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "skeleton", 3 | "version": "2.0.4", 4 | "homepage": "http://getskeleton.com/", 5 | "repository": { 6 | "type": "git", 7 | "url": "https://github.com/dhg/Skeleton" 8 | }, 9 | "authors": [ 10 | "Dave Gamache (http://davegamache.com/)" 11 | ], 12 | "description": "Skeleton is a dead-simple, responsive boilerplate to kickstart any responsive project.", 13 | "main": "css/skeleton.css", 14 | "keywords": [ 15 | "css", 16 | "skeleton", 17 | "responsive", 18 | "boilerplate" 19 | ], 20 | "license": "MIT", 21 | "_release": "2.0.4", 22 | "_resolution": { 23 | "type": "version", 24 | "tag": "2.0.4", 25 | "commit": "88f03612b05f093e3f235ced77cf89d3a8fcf846" 26 | }, 27 | "_source": "https://github.com/dhgamache/Skeleton.git", 28 | "_target": "2.0.4", 29 | "_originalSource": "skeleton" 30 | } -------------------------------------------------------------------------------- /demo/bower_components/skeleton/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store -------------------------------------------------------------------------------- /demo/bower_components/skeleton/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "skeleton", 3 | "version": "2.0.4", 4 | "homepage": "http://getskeleton.com/", 5 | "repository": { 6 | "type": "git", 7 | "url": "https://github.com/dhg/Skeleton" 8 | }, 9 | "authors": [ 10 | "Dave Gamache (http://davegamache.com/)" 11 | ], 12 | "description": "Skeleton is a dead-simple, responsive boilerplate to kickstart any responsive project.", 13 | "main": "css/skeleton.css", 14 | "keywords": [ 15 | "css", 16 | "skeleton", 17 | "responsive", 18 | "boilerplate" 19 | ], 20 | "license": "MIT" 21 | } -------------------------------------------------------------------------------- /demo/bower_components/skeleton/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/bower_components/skeleton/images/favicon.png -------------------------------------------------------------------------------- /demo/bower_components/underscore/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "underscore", 3 | "version": "1.7.0", 4 | "main": "underscore.js", 5 | "keywords": [ 6 | "util", 7 | "functional", 8 | "server", 9 | "client", 10 | "browser" 11 | ], 12 | "ignore": [ 13 | "docs", 14 | "test", 15 | "*.yml", 16 | "CNAME", 17 | "index.html", 18 | "favicon.ico", 19 | "CONTRIBUTING.md" 20 | ], 21 | "homepage": "https://github.com/jashkenas/underscore", 22 | "_release": "1.7.0", 23 | "_resolution": { 24 | "type": "version", 25 | "tag": "1.7.0", 26 | "commit": "da996e665deb0b69b257e80e3e257c04fde4191c" 27 | }, 28 | "_source": "https://github.com/jashkenas/underscore.git", 29 | "_target": "1.7.0", 30 | "_originalSource": "underscore" 31 | } -------------------------------------------------------------------------------- /demo/bower_components/underscore/.gitignore: -------------------------------------------------------------------------------- 1 | raw 2 | node_modules 3 | -------------------------------------------------------------------------------- /demo/bower_components/underscore/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "underscore", 3 | "version": "1.7.0", 4 | "main": "underscore.js", 5 | "keywords": ["util", "functional", "server", "client", "browser"], 6 | "ignore" : ["docs", "test", "*.yml", "CNAME", "index.html", "favicon.ico", "CONTRIBUTING.md"] 7 | } 8 | -------------------------------------------------------------------------------- /demo/bower_components/underscore/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "underscore", 3 | "description" : "JavaScript's functional programming helper library.", 4 | "keywords" : ["util", "functional", "server", "client", "browser"], 5 | "repo" : "jashkenas/underscore", 6 | "main" : "underscore.js", 7 | "scripts" : ["underscore.js"], 8 | "version" : "1.7.0", 9 | "license" : "MIT" 10 | } 11 | -------------------------------------------------------------------------------- /demo/midi/500_Miles.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/midi/500_Miles.mid -------------------------------------------------------------------------------- /demo/midi/Death Waltz.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/midi/Death Waltz.mid -------------------------------------------------------------------------------- /demo/midi/Disney_Themes_-_Bippity_Boppity_Boo.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/midi/Disney_Themes_-_Bippity_Boppity_Boo.mid -------------------------------------------------------------------------------- /demo/midi/Disney_Themes_-_It's_A_Small_World.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/midi/Disney_Themes_-_It's_A_Small_World.mid -------------------------------------------------------------------------------- /demo/midi/O-Zone_-_Dragostea_Din_Tei.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/midi/O-Zone_-_Dragostea_Din_Tei.mid -------------------------------------------------------------------------------- /demo/midi/Video_Game_Themes_-_Super_Mario_World.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/midi/Video_Game_Themes_-_Super_Mario_World.mid -------------------------------------------------------------------------------- /demo/midi/chopin.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/midi/chopin.mid -------------------------------------------------------------------------------- /demo/midi/simultaneous_notes_test.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/midi/simultaneous_notes_test.mid -------------------------------------------------------------------------------- /demo/midi/zelda.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/demo/midi/zelda.mid -------------------------------------------------------------------------------- /demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "midiplayerjs-demo", 3 | "version": "1.0.0", 4 | "description": "A web based MIDI player using MidiPlayerJS engine.", 5 | "main": "index.html", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [ 10 | "midi", 11 | "music" 12 | ], 13 | "author": "Garrett Grimm", 14 | "license": "MIT", 15 | "dependencies": { 16 | "react": "^15.4.2", 17 | "react-dom": "^15.4.2" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /docs/fonts/OpenSans-Bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-Bold-webfont.eot -------------------------------------------------------------------------------- /docs/fonts/OpenSans-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-Bold-webfont.woff -------------------------------------------------------------------------------- /docs/fonts/OpenSans-BoldItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-BoldItalic-webfont.eot -------------------------------------------------------------------------------- /docs/fonts/OpenSans-BoldItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-BoldItalic-webfont.woff -------------------------------------------------------------------------------- /docs/fonts/OpenSans-Italic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-Italic-webfont.eot -------------------------------------------------------------------------------- /docs/fonts/OpenSans-Italic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-Italic-webfont.woff -------------------------------------------------------------------------------- /docs/fonts/OpenSans-Light-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-Light-webfont.eot -------------------------------------------------------------------------------- /docs/fonts/OpenSans-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-Light-webfont.woff -------------------------------------------------------------------------------- /docs/fonts/OpenSans-LightItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-LightItalic-webfont.eot -------------------------------------------------------------------------------- /docs/fonts/OpenSans-LightItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-LightItalic-webfont.woff -------------------------------------------------------------------------------- /docs/fonts/OpenSans-Regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-Regular-webfont.eot -------------------------------------------------------------------------------- /docs/fonts/OpenSans-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-Regular-webfont.woff -------------------------------------------------------------------------------- /docs/fonts/OpenSans-Semibold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-Semibold-webfont.eot -------------------------------------------------------------------------------- /docs/fonts/OpenSans-Semibold-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-Semibold-webfont.ttf -------------------------------------------------------------------------------- /docs/fonts/OpenSans-Semibold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-Semibold-webfont.woff -------------------------------------------------------------------------------- /docs/fonts/OpenSans-SemiboldItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-SemiboldItalic-webfont.eot -------------------------------------------------------------------------------- /docs/fonts/OpenSans-SemiboldItalic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-SemiboldItalic-webfont.ttf -------------------------------------------------------------------------------- /docs/fonts/OpenSans-SemiboldItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grimmdude/MidiPlayerJS/b15c24d3af1052f67644f341c72fe78534d9bd50/docs/fonts/OpenSans-SemiboldItalic-webfont.woff -------------------------------------------------------------------------------- /docs/scripts/linenumber.js: -------------------------------------------------------------------------------- 1 | /*global document */ 2 | (function() { 3 | var source = document.getElementsByClassName('prettyprint source linenums'); 4 | var i = 0; 5 | var lineNumber = 0; 6 | var lineId; 7 | var lines; 8 | var totalLines; 9 | var anchorHash; 10 | 11 | if (source && source[0]) { 12 | anchorHash = document.location.hash.substring(1); 13 | lines = source[0].getElementsByTagName('li'); 14 | totalLines = lines.length; 15 | 16 | for (; i < totalLines; i++) { 17 | lineNumber++; 18 | lineId = 'line' + lineNumber; 19 | lines[i].id = lineId; 20 | if (lineId === anchorHash) { 21 | lines[i].className += ' selected'; 22 | } 23 | } 24 | } 25 | })(); 26 | -------------------------------------------------------------------------------- /docs/scripts/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", 2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /postinstall.js: -------------------------------------------------------------------------------- 1 | console.log('\x1b[36m%s\x1b[0m', "Please give MidiPlayerJS a ⭐ on GitHub if you found useful, thx!"); -------------------------------------------------------------------------------- /src/.babelrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["@babel/env", {"modules": false}] 4 | ] 5 | } -------------------------------------------------------------------------------- /src/constants.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Constants used in player. 3 | */ 4 | const Constants = { 5 | VERSION: '2.0.16', 6 | NOTES: [], 7 | HEADER_CHUNK_LENGTH: 14, 8 | CIRCLE_OF_FOURTHS: ['C', 'F', 'Bb', 'Eb', 'Ab', 'Db', 'Gb', 'Cb', 'Fb', 'Bbb', 'Ebb', 'Abb'], 9 | CIRCLE_OF_FIFTHS: ['C', 'G', 'D', 'A', 'E', 'B', 'F#', 'C#', 'G#', 'D#', 'A#', 'E#'] 10 | }; 11 | 12 | // Builds notes object for reference against binary values. 13 | const allNotes = [['C'], ['C#','Db'], ['D'], ['D#','Eb'], ['E'],['F'], ['F#','Gb'], ['G'], ['G#','Ab'], ['A'], ['A#','Bb'], ['B']]; 14 | var counter = 0; 15 | 16 | // All available octaves. 17 | for (let i = -1; i <= 9; i++) { 18 | allNotes.forEach(noteGroup => { 19 | noteGroup.forEach(note => Constants.NOTES[counter] = note + i); 20 | counter ++; 21 | }); 22 | } 23 | 24 | export {Constants}; -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import {Player} from './player'; 2 | import {Utils} from './utils'; 3 | import {Constants} from './constants'; 4 | 5 | export default { 6 | Player, 7 | Utils, 8 | Constants, 9 | } --------------------------------------------------------------------------------